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()
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,)))
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()
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")
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")
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()
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")
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()
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()