def post(self): settings = Settings.get_by_key_name('settings') for invites, output in helpers.invite_iterator(): name = invites[0].name to_email = '{} <{}>'.format(name, invites[0].email) body = const.EMAIL_TEMPLATE.format(student=name, body=output) try: mail.send_mail(settings.admin_email, to_email, const.EMAIL_SUBJECT, body) now = datetime.datetime.now() for invite in invites: invite.email_sent = now invite.put() except apiproxy_errors.OverQuotaError: taskqueue.add(url='/admin/email', countdown=60) return self.response.set_status(200)
def download_email_json(self, limit=100): data = {'template': const.EMAIL_TEMPLATE, 'emails': []} now = datetime.datetime.now() for invites, output in helpers.invite_iterator(limit=100): name = invites[0].name email = '{} <{}>'.format(name, invites[0].email) cur = {'name': invites[0].name, 'email': email, 'output': output} data['emails'].append(cur) for invite in invites: invite.email_sent = now invite.put() if data['emails']: cd = 'attachement; filename="emails.json"' self.response.headers['Content-Type'] = 'text/plain' self.response.headers['Content-Disposition'] = cd self.response.out.write(json.dumps(data)) else: self.get(warnings=('No more emails to send.',))