Skip to content

Commit

Permalink
Improve emails send in vacations
Browse files Browse the repository at this point in the history
  • Loading branch information
Heibert committed Jul 9, 2024
1 parent 3928bfa commit d32916b
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 34 deletions.
8 changes: 7 additions & 1 deletion INSIGHTSAPI/users/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import os
import logging
import requests
import sys
from rest_framework.decorators import api_view
from django.conf import settings
from django.core.mail import mail_admins
from rest_framework.response import Response
from users.models import User
Expand Down Expand Up @@ -117,9 +119,13 @@ def update_profile(request):
status=400,
)

if "test" in sys.argv or settings.DEBUG:
url = "https://staffnet-api-dev.cyc-bpo.com/update"
else:
url = "https://staffnet-api.cyc-bpo.com/update"
# Make the request
response = requests.patch(
"https://staffnet-api-dev.cyc-bpo.com/update",
url,
json=data,
cookies={"StaffNet": os.environ["StaffNetToken"]},
)
Expand Down
1 change: 0 additions & 1 deletion INSIGHTSAPI/vacation/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ def validate(self, attrs):
raise serializers.ValidationError(
"No puedes solicitar vacaciones para el mes actual."
)

if attrs["start_date"] > attrs["end_date"]:
raise serializers.ValidationError(
"La fecha de inicio no puede ser mayor a la fecha de fin."
Expand Down
86 changes: 54 additions & 32 deletions INSIGHTSAPI/vacation/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ def create(self, request, *args, **kwargs):
Nos complace informarte que se ha creado una solicitud de vacaciones a tu nombre para las fechas del {datetime.datetime.strptime(response.data['start_date'], "%Y-%m-%d").strftime("%d de %B del %Y")} al {datetime.datetime.strptime(response.data['end_date'], "%Y-%m-%d").strftime("%d de %B del %Y")}.
Información Adicional:
1. **Aprobación Pendiente**: Tu solicitud está pendiente de aprobación. Recibirás una notificación por correo electrónico una vez que tu solicitud sea aprobada o rechazada.
2. **Política de Vacaciones**: Recuerda que es tu responsabilidad familiarizarte con nuestra política de vacaciones. Puedes encontrar el documento completo en la intranet sección "Gestión documental" > "POLÍTICA DISFRUTE DE VACACIONES".
3. **Planificación de Proyectos**: Si tienes proyectos pendientes o tareas que necesitan seguimiento durante tu ausencia, por favor coordina con tu equipo para asegurar una transición sin problemas.
1. Aprobación Pendiente: Tu solicitud está pendiente de aprobación. Recibirás una notificación por correo electrónico una vez que tu solicitud sea aprobada o rechazada.
2. Política de Vacaciones: Recuerda que es tu responsabilidad familiarizarte con nuestra política de vacaciones. Puedes encontrar el documento completo en la intranet sección "Gestión documental" -> "POLÍTICA DISFRUTE DE VACACIONES".
3. Planificación de Proyectos: Si tienes proyectos pendientes o tareas que necesitan seguimiento durante tu ausencia, por favor coordina con tu equipo para asegurar una transición sin problemas.
Si tienes alguna pregunta o necesitas asistencia adicional, no dudes en ponerte en contacto con la Gerencia de Recursos Humanos.
Expand All @@ -43,21 +43,11 @@ def create(self, request, *args, **kwargs):
Saludos cordiales,
"""
html_message = f"""
<!DOCTYPE html>
<html>
<head>
<style>
body {{
font-family: Arial, sans-serif;
}}
.container {{
margin: 0 auto;
padding: 20px;
max-width: 600px;
border: 1px solid #ccc;
border-radius: 10px;
background-color: #f9f9f9;
}}
h2 {{
color: #2c3e50;
}}
Expand Down Expand Up @@ -87,27 +77,20 @@ def create(self, request, *args, **kwargs):
</style>
</head>
<body>
<div class="container">
<h2>Hola {response.data["user"]},</h2>
<p>Nos complace informarte que se ha creado una solicitud de vacaciones a tu nombre para las fechas del <strong>{datetime.datetime.strptime(response.data["start_date"], "%Y-%m-%d").strftime("%d de %B del %Y")}</strong> al <strong>{datetime.datetime.strptime(response.data["end_date"], "%Y-%m-%d").strftime("%d de %B del %Y")}</strong>.</p>
<h3>Información Adicional</h3>
<ul>
<li><strong>Aprobación Pendiente</strong>: Tu solicitud está pendiente de aprobación. Recibirás una notificación por correo electrónico una vez que tu solicitud sea aprobada o rechazada.</li>
<li><strong>Política de Vacaciones</strong>: Recuerda que es tu responsabilidad familiarizarte con nuestra política de vacaciones. Puedes encontrar el documento completo en la intranet sección "Gestión documental" > "POLÍTICA DISFRUTE DE VACACIONES".</li>
<li><strong>Planificación de Proyectos</strong>: Si tienes proyectos pendientes o tareas que necesitan seguimiento durante tu ausencia, por favor coordina con tu equipo para asegurar una transición sin problemas.</li>
</ul>
<p>Si tienes alguna pregunta o necesitas asistencia adicional, no dudes en ponerte en contacto con la Gerencia de Recursos Humanos.</p>
<p>¡Esperamos que tu solicitud sea aprobada y que disfrutes de unas vacaciones relajantes! ⛱</p>
<div class="footer">
<p>Saludos cordiales,</p>
</div>
<h2>Hola {response.data["user"]},</h2>
<p>Nos complace informarte que se ha creado una solicitud de vacaciones a tu nombre para las fechas del <strong>{datetime.datetime.strptime(response.data["start_date"], "%Y-%m-%d").strftime("%d de %B del %Y")}</strong> al <strong>{datetime.datetime.strptime(response.data["end_date"], "%Y-%m-%d").strftime("%d de %B del %Y")}</strong>.</p>
<h3>Información Adicional</h3>
<ul>
<li><strong>Aprobación Pendiente</strong>: Tu solicitud está pendiente de aprobación. Recibirás una notificación por correo electrónico una vez que tu solicitud sea aprobada o rechazada.</li>
<li><strong>Política de Vacaciones</strong>: Recuerda que es tu responsabilidad familiarizarte con nuestra política de vacaciones. Puedes encontrar el documento completo en la intranet sección "Gestión documental" -> "POLÍTICA DISFRUTE DE VACACIONES".</li>
<li><strong>Planificación de Proyectos</strong>: Si tienes proyectos pendientes o tareas que necesitan seguimiento durante tu ausencia, por favor coordina con tu equipo para asegurar una transición sin problemas.</li>
</ul>
<p>Si tienes alguna pregunta o necesitas asistencia adicional, no dudes en ponerte en contacto con la Gerencia de Recursos Humanos.</p>
<p>¡Esperamos que tu solicitud sea aprobada y que disfrutes de unas vacaciones relajantes! ⛱</p>
<div class="footer">
<p>Saludos cordiales,</p>
</div>
</body>
</html>
"""
send_mail(
"Solicitud de vacaciones",
Expand Down Expand Up @@ -168,6 +151,19 @@ def partial_update(self, request, *args, **kwargs):
f"{request.user.get_full_name()} ha aprobado la solicitud de vacaciones de {response.data['user']}. Ahora necesita tu aprobación.",
hr_user,
)
hr_message = f"""
Hola {hr_user.get_full_name()} 👋,
{request.user.get_full_name()} ha aprobado la solicitud de vacaciones de {response.data["user"]} la cual fue solicitada para el {datetime.datetime.strptime(response.data["start_date"], "%Y-%m-%d").strftime("%d de %B del %Y")} al {datetime.datetime.strptime(response.data["end_date"], "%Y-%m-%d").strftime("%d de %B del %Y")}.
Ahora esta a la espera de tu aprobación. Por favor revisa la solicitud y apruébala si estas de acuerdo con las fechas solicitadas.
"""
send_mail(
"Solicitud de vacaciones aprobada por un gerente",
hr_message,
None,
[str(hr_user.email)],
)
payroll_user = User.objects.filter(
user_permissions__codename="payroll_approbation"
).first()
Expand All @@ -182,6 +178,19 @@ def partial_update(self, request, *args, **kwargs):
f"La solicitud de vacaciones de {response.data['user']} ha sido aprobada por {request.user.get_full_name()}. Ahora sera revisada por la Gerencia de Recursos Humanos.",
payroll_user,
)
payroll_message = f"""
Hola {payroll_user.get_full_name()} 👋,
{request.user.get_full_name()} ha aprobado la solicitud de vacaciones de {response.data["user"]} la cual fue solicitada para el {datetime.datetime.strptime(response.data["start_date"], "%Y-%m-%d").strftime("%d de %B del %Y")} al {datetime.datetime.strptime(response.data["end_date"], "%Y-%m-%d").strftime("%d de %B del %Y")}.
Ahora esta a la espera de la aprobación de la Gerencia de Recursos Humanos.
"""
send_mail(
"Una solicitud de vacaciones ha sido aprobada por un gerente",
payroll_message,
None,
[str(payroll_user.email)],
)
return response

else:
Expand Down Expand Up @@ -220,6 +229,19 @@ def partial_update(self, request, *args, **kwargs):
f"La Gerencia de Recursos Humanos ha aprobado la solicitud de vacaciones de {response.data['user']}. Ahora necesita tu aprobación.",
payroll_user,
)
payroll_message = f"""
Hola {payroll_user.get_full_name()} 👋,
La Gerencia de Recursos Humanos ha aprobado la solicitud de vacaciones de {response.data["user"]} la cual fue solicitada para el {datetime.datetime.strptime(response.data["start_date"], "%Y-%m-%d").strftime("%d de %B del %Y")} al {datetime.datetime.strptime(response.data["end_date"], "%Y-%m-%d").strftime("%d de %B del %Y")}.
Ahora esta a la espera de tu aprobación final. Por favor revisa la solicitud y apruébala si estas de acuerdo con las fechas solicitadas.
"""
send_mail(
"Solicitud de vacaciones en espera de tu aprobación",
payroll_message,
None,
[str(payroll_user.email)],
)
return response
else:
return Response(
Expand Down

0 comments on commit d32916b

Please sign in to comment.