Exemple #1
0
def email_cc_notification(sender, instance, created, raw=False, **kwargs):
    """ Sends an email to a crew chief to notify them of being made one """
    if created and not raw:
        i = instance

        # generate our pdf
        event = i.event
        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        # generate an Outlook invite
        chief = EventAttendee(event, i.crew_chief)
        invite_filename = '%s.invite.ics' % slugify(event.event_name)
        invite = MIMEBase('text',
                          "calendar",
                          method="PUBLISH",
                          name=invite_filename)
        invite.set_payload(generate_ics([event], [chief]))
        encode_base64(invite)
        invite.add_header('Content-Description', invite_filename)
        invite.add_header('Content-class',
                          "urn:content-classes:calendarmessage")
        invite.add_header('Filename', invite_filename)
        invite.add_header('Path', invite_filename)
        attachments.append(invite)

        if i.setup_start:
            local = timezone.localtime(i.setup_start)
            local_formatted = local.strftime("%A %B %d at %I:%M %p")
        else:
            local_formatted = "a time of your choice "

        e = CcAddEmailGenerator(ccinstance=i, attachments=attachments)
        e.send()
Exemple #2
0
def remindall(request, id):
    event = get_object_or_404(Event, pk=id)
    if not (request.user.has_perm('events.review_event') or
            request.user.has_perm('events.review_event', event)):
        raise PermissionDenied
    if event.closed:
        messages.add_message(request, messages.ERROR, 'Event is closed.')
        return HttpResponseRedirect(reverse('events:detail', args=(event.id,)))
    if event.reviewed or not event.approved:
        messages.add_message(request, messages.ERROR, 'Can only send reminders for an event that is approved and not reviewed.')
        return HttpResponseRedirect(reverse('events:detail', args=(event.id,)))

    if event.num_crew_needing_reports == 0:
        messages.add_message(request, messages.INFO, 'All crew chiefs have already submitted reports.')
        return HttpResponseRedirect(reverse("events:review", args=(event.id,)))

    pdf_handle = generate_pdfs_standalone([event.id])
    filename = "%s.workorder.pdf" % slugify(event.event_name)
    attachments = [{"file_handle": pdf_handle, "name": filename}]

    for cci in event.crew_needing_reports:
        reminder = ReportReminder.objects.create(event=event, crew_chief=cci.crew_chief)
        email = ReportReminderEmailGenerator(reminder=reminder, attachments=attachments)
        email.send()

    messages.add_message(request, messages.INFO, 'Reminders sent to all crew chiefs needing reports for %s' % event.event_name)
    if 'next' in request.GET:
        return HttpResponseRedirect(request.GET['next'])
    else:
        return HttpResponseRedirect(reverse('events:detail', args=(event.id,)))
Exemple #3
0
def email_cc_notification(sender, instance, created, raw=False, **kwargs):
    """ Sends an email to a crew cheif to notify them of being made one """
    if created and not raw:
        i = instance

        # generate our pdf
        event = i.event
        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        if i.setup_start:
            local = timezone.localtime(i.setup_start)
            local_formatted = local.strftime("%A %B %d at %I:%M %p")
        else:
            local_formatted = "a time of your choice "

        email_body = """
            You\'ve been added as a crew chief to the event "%s". \n
            You have signed up to be crew chief for %s, with your setup starting on %s in the %s \n
            \n
            Please note that the attached Workorder PDF contains all services relating to the event,
             not just your assigned service.
            """ % (i.event.event_name, i.service, local_formatted, i.setup_location, )
        e = DLEG(subject="Crew Chief Add Notification", to_emails=[instance.crew_chief.email], body=email_body,
                 attachments=attachments)
        e.send()
Exemple #4
0
def reviewremind(request, id, uid):
    event = get_object_or_404(Event, pk=id)
    if not (request.user.has_perm('events.review_event') or
            request.user.has_perm('events.review_event', event)):
        raise PermissionDenied
    if event.closed:
        messages.add_message(request, messages.ERROR, 'Event is closed.')
        return HttpResponseRedirect(reverse('events:detail', args=(event.id,)))
    if event.reviewed or not event.approved:
        messages.add_message(request, messages.ERROR, 'Can only send reminders for an event that is approved and not reviewed.')
        return HttpResponseRedirect(reverse('events:detail', args=(event.id,)))

    cci = event.ccinstances.filter(crew_chief_id=uid)
    if cci:
        # only do heavy lifting if we need to

        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        cci = cci[0]
        reminder = ReportReminder.objects.create(event=cci.event, crew_chief=cci.crew_chief)
        email = ReportReminderEmailGenerator(reminder=reminder, attachments=attachments)
        email.send()
        messages.add_message(request, messages.INFO, 'Reminder Sent')
        return HttpResponseRedirect(reverse("events:review", args=(event.id,)))
    else:
        return HttpResponse("Bad Call")
Exemple #5
0
def reviewremind(request, id, uid):
    context = {}

    event = get_object_or_404(Event, pk=id)
    if event.closed or event.reviewed:
        return HttpResponse("Event Closed")

    cci = event.ccinstances.filter(crew_chief_id=uid)
    if cci:
        # only do heavy lifting if we need to

        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        cci = cci[0]
        ReportReminder.objects.create(event=cci.event, crew_chief=cci.crew_chief)
        email_body = 'This is a reminder that you have a pending crew chief report for "%s" \n' \
                     ' Please Visit %s%s to complete it' % (event.event_name,
                                                            request.get_host(),
                                                            reverse("my-ccreport", args=[event.id]))
        email = DLEG(subject="LNL Crew Chief Report Reminder Email", to_emails=[cci.crew_chief.email], body=email_body,
                     attachments=attachments)
        email.send()
        messages.add_message(request, messages.INFO, 'Reminder Sent')
        return HttpResponseRedirect(reverse('event-review', args=(event.id,)))
    else:
        return HttpResponse("Bad Call")
Exemple #6
0
def email_cc_notification(sender, instance, created, raw=False, **kwargs):
    """ Sends an email to a crew cheif to notify them of being made one """
    if created and not raw:
        i = instance

        # generate our pdf
        event = i.event
        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        local = timezone.localtime(i.setup_start)
        local_formatted = local.strftime("%A %B %d at %I:%M %p")
        email_body = """
            You\'ve been added as a crew chief to the event "%s". \n
            You have signed up to be crew chief for %s, with your setup starting on %s in the %s \n
            \n
            Please note that the attached Workorder PDF contains all services relating to the event,
             not just your assigned service.
            """ % (
            i.event.event_name,
            i.service,
            local_formatted,
            i.setup_location,
        )
        e = DLEG(subject="Crew Chief Add Notification",
                 to_emails=[instance.crew_chief.email],
                 body=email_body,
                 attachments=attachments)
        e.send()
Exemple #7
0
def reviewremind(request, id, uid):
    event = get_object_or_404(Event, pk=id)
    if event.closed or event.reviewed:
        return HttpResponse("Event Closed")

    cci = event.ccinstances.filter(crew_chief_id=uid)
    if cci:
        # only do heavy lifting if we need to

        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        cci = cci[0]
        ReportReminder.objects.create(event=cci.event, crew_chief=cci.crew_chief)
        email_body = 'This is a reminder that you have a pending crew chief report for "%s" \n' \
                     ' Please Visit %s%s to complete it' % (event.event_name,
                                                            request.get_host(),
                                                            reverse("my-ccreport", args=[event.id]))
        email = DLEG(subject="LNL Crew Chief Report Reminder Email", to_emails=[cci.crew_chief.email], body=email_body,
                     attachments=attachments)
        email.send()
        messages.add_message(request, messages.INFO, 'Reminder Sent')
        return HttpResponseRedirect(reverse('event-review', args=(event.id,)))
    else:
        return HttpResponse("Bad Call")
Exemple #8
0
def email_cc_notification(sender, instance, created, raw=False, **kwargs):
    """ Sends an email to a crew chief to notify them of being made one """
    if created and not raw:
        i = instance

        # generate our pdf
        event = i.event
        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        # generate an Outlook invite
        chief = i.crew_chief
        cal = icalendar.Calendar()
        cal['method'] = 'PUBLISH'
        cal['prodid'] = '-//WPI Lens and Lights//LNLDB//EN'
        cal['version'] = '2.0'
        vevent = icalendar.Event()
        vevent['summary'] = event.event_name
        vevent['description'] = event.cal_desc()
        vevent['uid'] = event.cal_guid()
        vevent['dtstart'] = event.datetime_start.strftime('%Y%m%dT%H%M%SZ')
        vevent['dtend'] = event.datetime_end.strftime('%Y%m%dT%H%M%SZ')
        vevent['dtstamp'] = timezone.now().strftime('%Y%m%dT%H%M%SZ')
        vevent['location'] = event.location.name
        vevent['url'] = event.cal_link()
        vevent.add('attendee',
                   'MAILTO:%s' % chief.email,
                   parameters={
                       'RSVP': 'FALSE',
                       'CN': chief.name
                   })
        cal.add_component(vevent)

        invite_filename = '%s.invite.ics' % slugify(event.event_name)
        invite = MIMEBase('text',
                          "calendar",
                          method="PUBLISH",
                          name=invite_filename)
        invite.set_payload(cal.to_ical())
        encode_base64(invite)
        invite.add_header('Content-Description', invite_filename)
        invite.add_header('Content-class',
                          "urn:content-classes:calendarmessage")
        invite.add_header('Filename', invite_filename)
        invite.add_header('Path', invite_filename)
        attachments.append(invite)

        if i.setup_start:
            local = timezone.localtime(i.setup_start)
            local_formatted = local.strftime("%A %B %d at %I:%M %p")
        else:
            local_formatted = "a time of your choice "

        e = CcAddEmailGenerator(ccinstance=i, attachments=attachments)
        e.send()
Exemple #9
0
def email_cc_notification(sender, instance, created, raw=False, **kwargs):
    """ Sends an email to a crew chief to notify them of being made one """
    if created and not raw:
        i = instance

        # generate our pdf
        event = i.event
        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        if i.setup_start:
            local = timezone.localtime(i.setup_start)
            local_formatted = local.strftime("%A %B %d at %I:%M %p")
        else:
            local_formatted = "a time of your choice "

        e = CcAddEmailGenerator(ccinstance=i, attachments=attachments)
        e.send()
Exemple #10
0
def email_cc_notification(sender, instance, created, raw=False, **kwargs):
    """ Sends an email to a crew chief to notify them of being made one """
    if created and not raw:
        i = instance

        # generate our pdf
        event = i.event
        pdf_handle = generate_pdfs_standalone([event.id])
        filename = "%s.workorder.pdf" % slugify(event.event_name)
        attachments = [{"file_handle": pdf_handle, "name": filename}]

        if i.setup_start:
            local = timezone.localtime(i.setup_start)
            local_formatted = local.strftime("%A %B %d at %I:%M %p")
        else:
            local_formatted = "a time of your choice "

        e = CcAddEmailGenerator(ccinstance=i, attachments=attachments)
        e.send()