def send_async_template_mail(self, request, queryset): """ Sends template email asynchronously. """ return mail.send_template_mail_admin_action( lambda obj: [ (obj.email, {'obj': obj, 'info': info.as_dict()}) ], True, request, queryset)
def send_mail(self, request, queryset): """ Allows to send email. """ return mail.send_mail_admin_action( lambda obj: [ (obj.email, {'obj': obj, 'info': info.as_dict()}) ], request, queryset)
def create_context(base_info): """ Creates invitation object and returns context. """ invitation = models.Invitation() invitation.base = base_info invitation.payment = base_info.payment invitation.save() return [(base_info.email, { 'base_info': base_info, 'info': info.as_dict(), 'invitation': invitation, 'invitation_id': invitation.id, 'current_site': unicode(Site.objects.get_current()), })]
def download_sheet(self, request, queryset, default_div, template): """ Download registration sheet as pdf. """ from collections import defaultdict groups = defaultdict(list) if not info.session_is_program_based: def add(student): if student.assigned_session_group: title = student.assigned_session_group.title else: title = _(u'Unknown') groups[title].append(student) else: raise NotImplemented for student in queryset: add(student) sorted_groups = {} for title, group in sorted(groups.items()): students = list(enumerate(sorted( group, key=lambda x: (x.last_name, x.first_name)))) length = len(students) div = default_div if length > div: while 0 < (length % div) < 3: div -= 1 sgroup = [] for i in range(0, length, div): sgroup.append(students[i:i+div]) sorted_groups[title] = sgroup return render_to_pdf( template, { 'info': info.as_dict(), 'logo_path': settings.NMA_LOGO_IMAGE, 'font_path': settings.UBUNTU_FONT, 'pagesize':'A4', 'students': queryset, 'groups': sorted_groups, })