def send_email_alert(): hoy = timezone.now() # para cada responsables for pers_pk in Responsable.objects.values_list('persona', flat=True).distinct(): persona = Persona.objects.get(pk=pers_pk) realizados = Asistencia.objects.filter( fecha=hoy, proyecto__responsable_rel__persona_id=pers_pk).values_list("proyecto", flat=True) pendiente = Proyecto.con_personas.filter(responsable_rel__persona_id=pers_pk).exclude(id__in=realizados) try: if persona.usuario.email and persona.usuario.alertar_faltantes and pendiente: send_html_mail(subject="{} - Alerta de asistencia faltante".format(persona), template_name='email/send_alert.html', dictionary={'proyectos': pendiente, 'responsable': persona}, to=[persona.usuario.email],) logger.info("Enviando email a {}".format(persona)) except AttributeError: logger.info("Persona sin usuario asociado: {}".format(persona))
def send_notification(asistencia, **kwargs): try: user = asistencia.proyecto.responsable_rel.persona.usuario to = [] if user.email and user.notificar_alta_individual: to.append(asistencia.proyecto.responsable_rel.persona.usuario.email) cc = list(User.objects.filter(rol=User.SUPERVISOR, notificar_alta_individual=True).values_list('email', flat=True)) pdf = PdfPrintAltaAsistencia().get_pdf(asistencia) if any([to, cc, ]): send_html_mail(subject="Alta de asistencia - {}".format(asistencia.proyecto), template_name='email/send_notification.html', dictionary={'object': asistencia}, to=to, cc=cc, attachments=[{'name': asistencia.filename_report, 'content': pdf, 'content_type': 'application/pdf'}]) except Exception as e: client.captureException() messages.add_message( request=kwargs.get('request', None), level=messages.WARNING, message="El responsable no tiene asociado un usuario o el usuario no tiene email.")
def send_email_all_asistencia(): hoy = timezone.now() # para cada responsables for pers_pk in Responsable.objects.values_list('persona', flat=True).distinct(): persona = Persona.objects.get(pk=pers_pk) try: if persona.usuario.email and persona.usuario.notificar_alta_diario: realizados = Asistencia.objects.filter(fecha=hoy, proyecto__responsable_rel__persona_id=pers_pk) if realizados: attachs = list() for asis in realizados: pdf = PdfPrintAltaAsistencia().get_pdf(asis) attachs.append({ 'name': asis.filename_report, 'content': pdf, 'content_type': 'application/pdf'}) send_html_mail(subject="Resumen de asistencia diario - ".format(hoy.strftime("d%-%m-%Y")), template_name='email/send_notification_daily.html', dictionary={'proyectos': realizados}, to=[persona.usuario.email], attachments=attachs) except AttributeError: logger.info("Persona sin usuario asociado: {}".format(persona))