Exemple #1
0
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))
Exemple #2
0
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.")
Exemple #3
0
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))