def save(self, domain_override=None, email_template_name='registration/password_reset_email.html', use_https=False, token_generator=default_token_generator, from_email=None, request=None): """ Generates a one-use only link for resetting password and sends to the user """ for user in self.users_cache: html_email_template_name = email_template_name text_email_template_name = 'password_reset_email.txt' text_email_body_template = loader.get_template( text_email_template_name) html_email_body_template = loader.get_template( html_email_template_name) context = Context({ 'email': user.email, 'uid': int_to_base36(user.id), 'first_name': user.first_name, 'token': token_generator.make_token(user), }) context.update(get_basic_email_context()) subject = ''.join( render_to_string('email_subject.txt', { 'message': "Password Reset" }, context).splitlines()) text_email_body = text_email_body_template.render(Context(context)) html_email_body = html_email_body_template.render(Context(context)) send_email(subject, text_email_body, [user.email], html_email_body)
def employer_new(request, form_class=CreateEmployerForm, extra_context=None): if not (request.user.is_authenticated() and hasattr(request.user, "campusorg") or hasattr(request.user, "student")): raise Http403("You must be logged in.") if request.method == 'POST': form = form_class(data=request.POST) if form.is_valid(): new_employer = form.save() recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({'first_name':request.user.first_name, 'last_name': request.user.last_name, 'email':request.user.email, 'new_employer':new_employer, 'new_employer_industries':" ".join(map(lambda x: x.name, new_employer.industries.all()))}) context.update(get_basic_email_context()) body = render_to_string('employer_new_email_body.txt', context) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "New Employer: %s" % new_employer }, context).splitlines()) send_email(subject, body, recipients) data = {"name": new_employer.name, "id": new_employer.id} else: data = {'errors': form.errors } return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: form = form_class() context = {'form': form } context.update(extra_context or {}) return context
def account_request(request, form_class = AccountRequestForm, extra_context=None): if request.method=="POST": form = form_class(data = request.POST) if form.is_valid(): data = [] recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({}) context.update(get_basic_email_context()) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "Account Request" }, context).splitlines()) subscription_email_context = {'form':form} email_body = render_to_string('account_request_email_body.txt', subscription_email_context) send_email(subject, email_body, recipients) else: data = {'errors':form.errors} return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: context = {} subscription_type = request.GET.get('subscription_type', 'basic') initial = {'message_body':render_to_string('account_request_body.html', {'subscription_type':subscription_type})} context['form'] = form_class(initial=initial) context.update(extra_context or {}) return context
def handle(self, *args, **options): for student in Student.objects.visible(): try: PdfFileReader(file("%s%s" % (s.MEDIA_ROOT, str(student.resume)), "rb"),) except Exception as e: try: student.deactivate() managers = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({ 'student_first_name': student.first_name, 'student_last_name': student.last_name, 'student_email': student.user.email }) context.update(get_basic_email_context()) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "Faulty resume" }, context).splitlines()) body = render_to_string('faulty_resume_email_body.txt', context) send_email(subject, body, managers) except Exception as e: print e
def save(self, domain_override=None, email_template_name='registration/password_reset_email.html', use_https=False, token_generator=default_token_generator, from_email=None, request=None): """ Generates a one-use only link for resetting password and sends to the user """ for user in self.users_cache: html_email_template_name = email_template_name text_email_template_name='password_reset_email.txt' text_email_body_template = loader.get_template(text_email_template_name) html_email_body_template = loader.get_template(html_email_template_name) context = Context({ 'email': user.email, 'uid': int_to_base36(user.id), 'first_name': user.first_name, 'token': token_generator.make_token(user), }) context.update(get_basic_email_context()) subject = ''.join(render_to_string('email_subject.txt', { 'message': "Password Reset" }, context).splitlines()) text_email_body = text_email_body_template.render(Context(context)) html_email_body = html_email_body_template.render(Context(context)) send_email(subject, text_email_body, [user.email], html_email_body)
def student_create_campus_org(request, form_class=CreateCampusOrganizationForm, extra_context=None): if request.method == 'POST': form = form_class(data=request.POST) if form.is_valid(): new_campus_org = form.save() recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({'first_name':request.user.student.first_name, \ 'last_name':request.user.student.last_name, \ 'email':request.user.email, \ 'new_campus_org':new_campus_org}) context.update(get_basic_email_context()) txt_email_body = render_to_string('new_campus_org_email_body.txt', context) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "New Campus Org: %s" % new_campus_org }, context).splitlines()) send_email(subject, txt_email_body, recipients) data = {"type": new_campus_org.type.name, "name": new_campus_org.name, "id": new_campus_org.id} else: data = {'errors': form.errors } return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: form = form_class() context = {'form': form } context.update(extra_context or {}) return context
def handle(self, *args, **options): #employers = Employer.objects.visible().filter(feature_in_monthly_newsletter=True) all_events_and_deadlines = Event.objects.filter( include_in_monthly_newsletter=True) events = filter(lambda x: not x.is_deadline() and not x.is_past(), all_events_and_deadlines) deadlines = filter(lambda x: x.is_deadline(), all_events_and_deadlines) if events or deadlines: year = datetime.now().strftime("%Y") month = datetime.now().strftime("%B") for i, student in enumerate( Student.objects.filter( user__is_active=True, user__userattributes__is_verified=True, studentpreferences__receive_monthly_newsletter=True, first_name="Dmitrij")): if i % 5 == 0: time.sleep(1) context = Context({ 'first_name': student.first_name, 'student': student, #'employer':employers, 'events': events, 'deadlines': deadlines, 'month': month, 'year': year }) context.update(get_basic_email_context()) text_email_body = render_to_string("monthly_newsletter.txt", context) html_email_body = render_to_string("monthly_newsletter.html", context) html_email_body = Pynliner().from_string(html_email_body).run() subject = ''.join( render_to_string('email_subject.txt', { 'message': "%s Newsletter" % month }, context).splitlines()) send_email(subject, text_email_body, [student.user.email]) newsletter_path = "%s/newsletter/templates/%s/" % (s.ROOT, year) if not os.path.exists(newsletter_path): os.makedirs(newsletter_path) context['first_name'] = None context['student'] = None body = render_to_string("monthly_newsletter.html", context) body = Pynliner().from_string(body).run() f = open("%s%s.html" % (newsletter_path, month), "w") f.write(body) f.close()
def employer_resume_book_email(request, extra_context=None): if not request.POST.has_key("emails"): raise Http400("Request POST is missing the emails.") if request.POST.has_key("resume_book_id") and request.POST["resume_book_id"]: redelivering = True try: resume_book = ResumeBook.objects.get(id=request.POST["resume_book_id"]) except ResumeBook.DoesNotExist: raise Http404("No resume book exists with id of %s" % request.POST["resume_book_id"]) else: redelivering = False try: resume_book, created = ResumeBook.objects.get_or_create(recruiter=request.user.recruiter, delivered=False) except ResumeBook.MultipleObjectsReturned: resume_books = ResumeBook.objects.filter(recruiter=request.user.recruiter, delivered=False) for i, rb in enumerate(resume_books): if i != 0: rb.delete() else: resume_book = rb reg = re.compile(r"\s*[;, \n]\s*") recipients = reg.split(request.POST["emails"]) site = get_current_site(request) subject = "[%s] Resume Book Delivery" % (site.name) f = open("%s%s" % (s.MEDIA_ROOT, resume_book.resume_book.name), "rb") content = f.read() if request.POST.has_key("name") and request.POST["name"]: filename = request.POST["name"] else: filename = os.path.basename(resume_book.name) context = get_basic_email_context() context["deliverer_fullname"] = "%s %s" % (request.user.first_name, request.user.last_name) context["deliverer_email"] = request.user.email for recipient in recipients: context["first_name"] = recipient.split("@")[0] text_email_body = render_to_string("resume_book_email_body.txt", context) html_email_body = render_to_string("resume_book_email_body.html", context) send_email( subject, text_email_body, recipients, html_email_body, "%s.pdf" % (filename), content, "application/pdf" ) if redelivering: resume_book.last_updated = datetime.now() else: resume_book.name = filename resume_book.delivered = True resume_book.save() context = {} context.update(extra_context or {}) return context
def send_activation_email(self, site, first_name, last_name): if not first_name: first_name = self.user.email.split("@")[0] context = Context({"activation_key": self.activation_key, "first_name": first_name}) context.update(get_basic_email_context()) subject = "".join( render_to_string("email_subject.txt", {"message": "Account Activation"}, context).splitlines() ) text_email_body = render_to_string("activation_email.txt", context) html_email_body = render_to_string("activation_email.html", context) send_email(subject, text_email_body, [self.user.email], html_email_body)
def employer_resume_book_email(request, extra_context=None): if not request.POST.has_key('emails'): raise Http400("Request POST is missing the emails.") if request.POST.has_key("resume_book_id") and request.POST['resume_book_id']: redelivering = True try: resume_book = ResumeBook.objects.get(id=request.POST["resume_book_id"]) except ResumeBook.DoesNotExist: raise Http404("No resume book exists with id of %s" % request.POST["resume_book_id"]) else: redelivering = False try: resume_book, created = ResumeBook.objects.get_or_create(recruiter = request.user.recruiter, delivered=False) except ResumeBook.MultipleObjectsReturned: resume_books = ResumeBook.objects.filter(recruiter=request.user.recruiter, delivered=False) for i, rb in enumerate(resume_books): if i != 0: rb.delete() else: resume_book = rb reg = re.compile(r"\s*[;, \n]\s*") recipients = reg.split(request.POST['emails']) site = get_current_site(request) subject = "[%s] Resume Book Delivery" % (site.name) f = open("%s%s" % (s.MEDIA_ROOT, resume_book.resume_book.name), "rb") content = f.read() if request.POST.has_key('name') and request.POST['name']: filename = request.POST['name'] else: filename = os.path.basename(resume_book.name) context = get_basic_email_context() context['deliverer_fullname'] = "%s %s" % (request.user.first_name, request.user.last_name) context['deliverer_email'] = request.user.email for recipient in recipients: context['first_name'] = recipient.split("@")[0] text_email_body = render_to_string('resume_book_email_body.txt', context) html_email_body = render_to_string('resume_book_email_body.html', context) send_email(subject, text_email_body, recipients, html_email_body, "%s.pdf" % (filename), content, "application/pdf") if redelivering: resume_book.last_updated = datetime.now() else: resume_book.name = filename resume_book.delivered = True resume_book.save() context = {} context.update(extra_context or {}) return context
def event_list_export(request, form_class = EventExportForm, extra_context=None): if request.method == 'POST': form = form_class(data=request.POST) if form.is_valid(): format = form.cleaned_data["export_format"] event = Event.objects.get(id=form.cleaned_data["event_id"]) list = form.cleaned_data['event_list'] reg = re.compile(r"\s*[;, \n]\s*") recipients = reg.split(request.POST['emails']) context = Context({'deliverer_fullname': "%s %s" % (request.user.first_name, request.user.last_name), 'deliverer_email': request.user.email}) context.update(get_basic_email_context()) subject = ''.join(render_to_string('email_subject.txt', { 'message': "Event List Delivery" }, context).splitlines()) txt_email_body = render_to_string('event_list_export_email_body.txt', context) html_email_body = render_to_string('event_list_export_email_body.html', context) file = StringIO.StringIO() if format == core_enums.CSV: filename = export_event_list_csv(file, event, list) extension = "csv" file_contents = file.getvalue() mimetype = "text/csv" #elif format == core_enums.XLS: # filename = export_event_list_xls(file, event, list) # file_contents = file.getvalue() # mimetype = "application/vnd.ms-excel" elif format == core_enums.TEXT: filename = export_event_list_text(file, event, list) extension = "txt" file_contents = file.getvalue() mimetype = "text/plain" else: raise Http500("The request format '%s' is not supported" % format) send_email(subject, txt_email_body, recipients, html_email_body, "%s.%s" % (filename, extension), file_contents, mimetype) context = {'filename': filename, 'TEMPLATE':'event_list_export_completed.html'} context.update(extra_context or {}) return context else: data = {'errors':form.errors} return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: form = form_class(initial={'emails':request.user.email, 'event_id':request.GET['event_id'], 'event_list':request.GET['event_list']}) context = {'form': form, 'TEMPLATE':'event_list_export.html'} context.update(extra_context or {}) return context
def handle(self, *args, **options): #employers = Employer.objects.visible().filter(feature_in_monthly_newsletter=True) all_events_and_deadlines = Event.objects.filter(include_in_monthly_newsletter=True) events = filter(lambda x: not x.is_deadline() and not x.is_past(), all_events_and_deadlines) deadlines = filter(lambda x: x.is_deadline(), all_events_and_deadlines) if events or deadlines: year = datetime.now().strftime("%Y") month = datetime.now().strftime("%B") for i, student in enumerate(Student.objects.filter(user__is_active=True, user__userattributes__is_verified=True, studentpreferences__receive_monthly_newsletter=True, first_name="Dmitrij")): if i % 5 == 0: time.sleep(1) context = Context({ 'first_name':student.first_name, 'student':student, #'employer':employers, 'events':events, 'deadlines':deadlines, 'month':month, 'year':year }) context.update(get_basic_email_context()) text_email_body = render_to_string("monthly_newsletter.txt", context) html_email_body = render_to_string("monthly_newsletter.html", context) html_email_body = Pynliner().from_string(html_email_body).run() subject = ''.join(render_to_string('email_subject.txt', { 'message': "%s Newsletter" % month }, context).splitlines()) send_email(subject, text_email_body, [student.user.email]) newsletter_path = "%s/newsletter/templates/%s/" % (s.ROOT, year) if not os.path.exists(newsletter_path): os.makedirs(newsletter_path) context['first_name'] = None context['student'] = None body = render_to_string("monthly_newsletter.html", context) body = Pynliner().from_string(body).run() f = open("%s%s.html" % (newsletter_path, month), "w") f.write(body) f.close()
def register_student(request, **args): new_user = RegistrationBackend().register(request, **args) new_user.userattributes.has_agreed_to_terms() domain = new_user.email.split("@")[1] if not DomainName.objects.filter(domain=domain).exists(): #make new domain name DomainName.objects.create(domain=domain) #send email #gets email of [email protected] recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({'domain': domain}) context.update(get_basic_email_context()) txt_email_body = render_to_string('new_domain_email_body.txt', context) subject = ''.join( render_to_string('email_admin_subject.txt', { 'message': "New Domain: %s" % domain }, context).splitlines()) send_email(subject, txt_email_body, recipients) if new_user.first_name and new_user.last_name: student = Student(user=new_user, first_name=new_user.first_name, last_name=new_user.last_name) else: student = Student(user=new_user) umeqo = Employer.objects.get(name="Umeqo") student.save() if args.has_key("course"): try: course = Course.objects.get(id=args["course"]) except: Course.DoesNotExist else: student.first_major = course student.subscriptions.add(umeqo) student.save() return student
def register_student(request, **args): new_user = RegistrationBackend().register(request, **args) new_user.userattributes.has_agreed_to_terms() domain = new_user.email.split("@")[1] if not DomainName.objects.filter(domain=domain).exists(): #make new domain name DomainName.objects.create(domain=domain) #send email #gets email of [email protected] recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({'domain':domain}) context.update(get_basic_email_context()) txt_email_body = render_to_string('new_domain_email_body.txt', context) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "New Domain: %s" % domain }, context).splitlines()) send_email(subject, txt_email_body, recipients) if new_user.first_name and new_user.last_name: student = Student(user=new_user, first_name = new_user.first_name, last_name = new_user.last_name) else: student = Student(user=new_user) umeqo = Employer.objects.get(name="Umeqo") student.save() if args.has_key("course"): try: course = Course.objects.get(id=args["course"]) except: Course.DoesNotExist else: student.first_major=course student.subscriptions.add(umeqo) student.save() return student
def send_activation_email(self, site, first_name, last_name): if not first_name: first_name = self.user.email.split("@")[0] context = Context({ 'activation_key': self.activation_key, 'first_name': first_name }) context.update(get_basic_email_context()) subject = ''.join( render_to_string('email_subject.txt', { 'message': "Account Activation" }, context).splitlines()) text_email_body = render_to_string('activation_email.txt', context) html_email_body = render_to_string('activation_email.html', context) send_email(subject, text_email_body, [self.user.email], html_email_body)
def send_receipt(*args, **kwargs): stripe.api_key = s.STRIPE_SECRET # Get the invoice id charge = kwargs['full_json']['data']['object'] charge = Struct(**charge) invoice = stripe.Invoice.retrieve(charge.invoice) try: customer = stripe.Customer.retrieve(charge.customer) except APIConnectionError as e: logger.warning( "Customer %s paid for charge %s but did not get the receipt because the customer object could not be retrieved." % (charge.customer, charge.id)) else: employer_name = customer.description # We want to email all recruiters at the company users = User.objects.filter(recruiter__employer__name=employer_name) logger.warning(str(users)) recipients = map(lambda x: x.email, users) # Create receipt PDF attachment receipt_file_path = get_or_create_receipt_pdf(charge, invoice, employer_name) pdf_file = open(receipt_file_path, "rb") receipt_file_name = receipt_file_path.split("/")[-1] content = pdf_file.read() pdf_file.close() context = Context({}) context.update(get_basic_email_context()) subject = ''.join( render_to_string('email_subject.txt', { 'message': "Purchase Receipt" }, context).splitlines()) txt_email_body = render_to_string("receipt_email_body.txt", context) html_email_body = render_to_string("receipt_email_body.html", context) send_email(subject, txt_email_body, recipients, html_email_body, receipt_file_name, content, "application/pdf")
def employer_new(request, form_class=CreateEmployerForm, extra_context=None): if not (request.user.is_authenticated() and hasattr(request.user, "campusorg") or hasattr(request.user, "student")): raise Http403("You must be logged in.") if request.method == "POST": form = form_class(data=request.POST) if form.is_valid(): new_employer = form.save() recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context( { "first_name": request.user.first_name, "last_name": request.user.last_name, "email": request.user.email, "new_employer": new_employer, "new_employer_industries": " ".join(map(lambda x: x.name, new_employer.industries.all())), } ) context.update(get_basic_email_context()) body = render_to_string("employer_new_email_body.txt", context) subject = "".join( render_to_string( "email_admin_subject.txt", {"message": "New Employer: %s" % new_employer}, context ).splitlines() ) send_email(subject, body, recipients) data = {"name": new_employer.name, "id": new_employer.id} else: data = {"errors": form.errors} return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: form = form_class() context = {"form": form} context.update(extra_context or {}) return context
def send_receipt(*args, **kwargs): stripe.api_key = s.STRIPE_SECRET # Get the invoice id charge = kwargs['full_json']['data']['object'] charge = Struct(**charge) invoice = stripe.Invoice.retrieve(charge.invoice) try: customer = stripe.Customer.retrieve(charge.customer) except APIConnectionError as e: logger.warning("Customer %s paid for charge %s but did not get the receipt because the customer object could not be retrieved." % (charge.customer, charge.id)) else: employer_name = customer.description # We want to email all recruiters at the company users = User.objects.filter(recruiter__employer__name=employer_name) logger.warning(str(users)) recipients = map(lambda x: x.email, users) # Create receipt PDF attachment receipt_file_path = get_or_create_receipt_pdf(charge, invoice, employer_name) pdf_file = open(receipt_file_path, "rb") receipt_file_name = receipt_file_path.split("/")[-1] content = pdf_file.read() pdf_file.close() context = Context({}) context.update(get_basic_email_context()) subject = ''.join(render_to_string('email_subject.txt', { 'message': "Purchase Receipt" }, context).splitlines()) txt_email_body = render_to_string("receipt_email_body.txt", context) html_email_body = render_to_string("receipt_email_body.html", context) send_email(subject, txt_email_body, recipients, html_email_body, receipt_file_name, content, "application/pdf")
def student_create_language(request, form_class=CreateLanguageForm, extra_context=None): if request.method == 'POST': form = form_class(data=request.POST) if form.is_valid(): new_language_name = form.cleaned_data['name'] basic = Language.objects.create(name_and_level=new_language_name + " (Basic)", name=new_language_name) proficient = Language.objects.create(name_and_level=new_language_name + " (Proficient)", name=new_language_name) fluent = Language.objects.create(name_and_level=new_language_name + " (Fluent)", name=new_language_name) recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({'first_name':request.user.student.first_name, \ 'last_name':request.user.student.last_name, \ 'email':request.user.email, \ 'new_language':new_language_name}) context.update(get_basic_email_context()) body = render_to_string('new_language_email_body.txt', context) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "New Language: %s" % new_language_name }, context).splitlines()) send_email(subject, body, recipients) data = {"name":new_language_name, "fluent_id":fluent.id, "proficient_id":proficient.id, "basic_id":basic.id} else: data = {'errors':form.errors} return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: form = form_class() context = { 'form': form } context.update(extra_context or {}) return context
def event_checkin(request, event_id): event = Event.objects.get(pk=event_id) if request.method == 'GET': return HttpResponse(simplejson.dumps(get_attendees(event)), mimetype="application/json") else: email = request.POST.get('email', None).strip() if not is_valid_email(email): data = { 'valid': False, 'error': 'Please enter a valid .edu email!' } return HttpResponse(simplejson.dumps(data), mimetype="application/json") name = request.POST.get('name', None) student = None user = None if User.objects.filter(email=email).exists(): user = User.objects.get(email=email) if hasattr(user, 'student'): student = user.student if not name and not student: data = { 'valid': False, 'error': "This email isn't registered with Umeqo. Please enter your name!" } return HttpResponse(simplejson.dumps(data), mimetype="application/json") if Attendee.objects.filter(event=event, email=email).exists(): data = { 'valid': False, 'error': 'You\'ve already checked in!' } return HttpResponse(simplejson.dumps(data), mimetype="application/json") if not name and user and user.student and user.student.first_name and user.student.last_name: name = "%s %s" % (user.student.first_name, user.student.last_name) attendee = Attendee(email=email, name=name, student=student, event=event) try: attendee.save() except IntegrityError: data = { 'valid': False, 'error': 'Duplicate checkin!' } return HttpResponse(simplejson.dumps(data), mimetype="application/json") if not student or student and not student.profile_created: if not student: txt_email_body_template = 'checkin_follow_up_email_body.txt' html_email_body_template = 'checkin_follow_up_email_body.html' if student and not student.profile_created: txt_email_body_template = 'checkin_follow_up_profile_email_body.txt' html_email_body_template = 'checkin_follow_up_profile_email_body.html' first_name = None if name: first_name = name.split(" ")[0] context = Context({'first_name':first_name, 'event':event, 'campus_org_event': is_campus_org(event.owner)}) context.update(get_basic_email_context()) subject = ''.join(render_to_string('email_subject.txt', { 'message': "Event Check-In Follow-up" }, context).splitlines()) recipients = [email] txt_email_body = render_to_string(txt_email_body_template, context) html_email_body = render_to_string(html_email_body_template, context) send_email(subject, txt_email_body, recipients, html_email_body) output = { 'valid': True, 'email': email } if student and student.first_name and student.last_name: output['name'] = student.first_name + ' ' + student.last_name else: output['name'] = name return HttpResponse(simplejson.dumps(output), mimetype="application/json")
def event_list_export(request, form_class=EventExportForm, extra_context=None): if request.method == 'POST': form = form_class(data=request.POST) if form.is_valid(): format = form.cleaned_data["export_format"] event = Event.objects.get(id=form.cleaned_data["event_id"]) list = form.cleaned_data['event_list'] reg = re.compile(r"\s*[;, \n]\s*") recipients = reg.split(request.POST['emails']) context = Context({ 'deliverer_fullname': "%s %s" % (request.user.first_name, request.user.last_name), 'deliverer_email': request.user.email }) context.update(get_basic_email_context()) subject = ''.join( render_to_string('email_subject.txt', { 'message': "Event List Delivery" }, context).splitlines()) txt_email_body = render_to_string( 'event_list_export_email_body.txt', context) html_email_body = render_to_string( 'event_list_export_email_body.html', context) file = StringIO.StringIO() if format == core_enums.CSV: filename = export_event_list_csv(file, event, list) extension = "csv" file_contents = file.getvalue() mimetype = "text/csv" #elif format == core_enums.XLS: # filename = export_event_list_xls(file, event, list) # file_contents = file.getvalue() # mimetype = "application/vnd.ms-excel" elif format == core_enums.TEXT: filename = export_event_list_text(file, event, list) extension = "txt" file_contents = file.getvalue() mimetype = "text/plain" else: raise Http500("The request format '%s' is not supported" % format) send_email(subject, txt_email_body, recipients, html_email_body, "%s.%s" % (filename, extension), file_contents, mimetype) context = { 'filename': filename, 'TEMPLATE': 'event_list_export_completed.html' } context.update(extra_context or {}) return context else: data = {'errors': form.errors} return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: form = form_class( initial={ 'emails': request.user.email, 'event_id': request.GET['event_id'], 'event_list': request.GET['event_list'] }) context = {'form': form, 'TEMPLATE': 'event_list_export.html'} context.update(extra_context or {}) return context
def event_upload_recruiters_list(request, form_class=EventUploadRecruitersForm, extra_context=None): if request.method == 'POST': form = form_class(data=request.POST, files=request.FILES) data = {} if form.is_valid(): event_id = form.cleaned_data.get('event_id', '') try: event = Event.objects.get(id=event_id) except Event.DoesNotExist: raise Http404("The event with event id %s does not exist" % event_id) if request.user != event.owner: raise Http403( "You must be the event owner in order to perform this action." ) open_csv_file = csv.DictReader(request.FILES['csv_file']) for i, fieldname in enumerate(open_csv_file.fieldnames): open_csv_file.fieldnames[i] = fieldname.lower() recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({}) context.update(get_basic_email_context()) event.attending_employers.clear() def send_event_company_representative_access_instructions(): context['event'] = event text_body = render_to_string( 'recruiter_event_participant_access_instructions.txt', context) html_body = render_to_string( 'recruiter_event_participant_access_instructions.html', context) subject = ''.join( render_to_string('email_subject.txt', { 'message': "%s Student Browsing Instructions" % event.name }, context).splitlines()) send_email(subject, text_body, recipients, html_body) for row in open_csv_file: email = row.get('email', '') user = None try: user = User.objects.get(email=email) except User.DoesNotExist: password = User.objects.make_random_password() email = row['email'].lower() user = User.objects.create( first_name=row['first name'], last_name=row['last name'], email=email, username=email, ) user.set_password(password) user.save() user.userattributes.is_verified = True user.userattributes.save() employer, created = Employer.objects.get_or_create( name=row['employer']) if created: recipients = [ mail_tuple[1] for mail_tuple in s.MANAGERS ] context = Context({ 'first_name': request.user.first_name, 'last_name': request.user.last_name, 'email': request.user.email, 'new_employer': employer }) context.update(get_basic_email_context()) body = render_to_string('employer_new_email_body.txt', context) subject = ''.join( render_to_string( 'email_admin_subject.txt', { 'message': "New Employer: %s" % employer }, context).splitlines()) send_email(subject, body, recipients) Recruiter.objects.create(employer=employer, user=user) event.attending_employers.add(employer) recipients = [user.email] context.update({ "first_name": user.first_name, "email": user.email, "username": user.email, "password": password, "has_account": False, }) send_event_company_representative_access_instructions() else: if is_recruiter(user): if not user.recruiter.employer in event.attending_employers.all( ): employer = user.recruiter.employer event.attending_employers.add(employer) recipients = [user.email] context.update({ "first_name": user.first_name, "email": user.email, "has_account": True, }) send_event_company_representative_access_instructions( ) else: context.update({ "first_name": row.get("first name", ""), "last_name": row.get("last name", ""), "email": row.get("email", ""), "supposed_employer": row.get("employer", "") }) body = render_to_string( 'attending_recruiter_problem.txt', context) subject = ''.join( render_to_string( 'email_admin_subject.txt', { 'message': "%s has a problem with a recruiter" % event.name }, context).splitlines()) send_email(subject, body, recipients) else: data['errors'] = form.errors return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: form = form_class(initial={'event_id': request.GET['event_id']}) context = {'form': form, 'TEMPLATE': 'event_upload_recruiters_list.html'} context.update(extra_context or {}) return context
def event_checkin(request, event_id): event = Event.objects.get(pk=event_id) if request.method == 'GET': return HttpResponse(simplejson.dumps(get_attendees(event)), mimetype="application/json") else: email = request.POST.get('email', None).strip() if not is_valid_email(email): data = { 'valid': False, 'error': 'Please enter a valid .edu email!' } return HttpResponse(simplejson.dumps(data), mimetype="application/json") name = request.POST.get('name', None) student = None user = None if User.objects.filter(email=email).exists(): user = User.objects.get(email=email) if hasattr(user, 'student'): student = user.student if not name and not student: data = { 'valid': False, 'error': "This email isn't registered with Umeqo. Please enter your name!" } return HttpResponse(simplejson.dumps(data), mimetype="application/json") if Attendee.objects.filter(event=event, email=email).exists(): data = {'valid': False, 'error': 'You\'ve already checked in!'} return HttpResponse(simplejson.dumps(data), mimetype="application/json") if not name and user and user.student and user.student.first_name and user.student.last_name: name = "%s %s" % (user.student.first_name, user.student.last_name) attendee = Attendee(email=email, name=name, student=student, event=event) try: attendee.save() except IntegrityError: data = {'valid': False, 'error': 'Duplicate checkin!'} return HttpResponse(simplejson.dumps(data), mimetype="application/json") if not student or student and not student.profile_created: if not student: txt_email_body_template = 'checkin_follow_up_email_body.txt' html_email_body_template = 'checkin_follow_up_email_body.html' if student and not student.profile_created: txt_email_body_template = 'checkin_follow_up_profile_email_body.txt' html_email_body_template = 'checkin_follow_up_profile_email_body.html' first_name = None if name: first_name = name.split(" ")[0] context = Context({ 'first_name': first_name, 'event': event, 'campus_org_event': is_campus_org(event.owner) }) context.update(get_basic_email_context()) subject = ''.join( render_to_string('email_subject.txt', { 'message': "Event Check-In Follow-up" }, context).splitlines()) recipients = [email] txt_email_body = render_to_string(txt_email_body_template, context) html_email_body = render_to_string(html_email_body_template, context) send_email(subject, txt_email_body, recipients, html_email_body) output = {'valid': True, 'email': email} if student and student.first_name and student.last_name: output['name'] = student.first_name + ' ' + student.last_name else: output['name'] = name return HttpResponse(simplejson.dumps(output), mimetype="application/json")
authhandler = urllib2.HTTPBasicAuthHandler(passwdmgr) opener = urllib2.build_opener(authhandler) urllib2.install_opener(opener) for server_type, url in urls: start = datetime.datetime.now() try: print url urllib2.urlopen(url) except urllib2.HTTPError as resp: if (resp != None and resp.code != 200): context = Context({ 'server_type': server_type, 'response_code': resp.code }) context.update(get_basic_email_context()) subject = ''.join( render_to_string('email_admin_subject.txt', { 'message': "%s DOWN" % server_type }, context).splitlines()) text_email_template_name = 'server_down.txt' text_email_body_template = loader.get_template( text_email_template_name) text_email_body = text_email_body_template.render(context) send_email(subject, text_email_body, managers) else: print "%s is up. Time taken to check: %s" % ( server_type, datetime.datetime.now() - start)
username = '******' password = '******' passwdmgr = urllib2.HTTPPasswordMgrWithDefaultRealm() passwdmgr.add_password(None, staging_url, username, password) authhandler = urllib2.HTTPBasicAuthHandler(passwdmgr) opener = urllib2.build_opener(authhandler) urllib2.install_opener(opener) for server_type, url in urls: start = datetime.datetime.now() try: print url urllib2.urlopen(url) except urllib2.HTTPError as resp: if (resp != None and resp.code != 200): context = Context({'server_type':server_type, 'response_code':resp.code}) context.update(get_basic_email_context()) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "%s DOWN" % server_type }, context).splitlines()) text_email_template_name='server_down.txt' text_email_body_template = loader.get_template(text_email_template_name) text_email_body = text_email_body_template.render(context) send_email(subject, text_email_body, managers) else: print "%s is up. Time taken to check: %s" % (server_type, datetime.datetime.now() - start)
def send_now(users, label, extra_context=None, on_site=True, sender=None): """ Creates a new notice. This is intended to be how other apps create new notices. notification.send(user, 'friends_invite_sent', { 'spam': 'eggs', 'foo': 'bar', ) You can pass in on_site=False to prevent the notice emitted from being displayed on the site. """ if extra_context is None: extra_context = {} notice_type = NoticeType.objects.get(label=label) protocol = getattr(settings, "DEFAULT_HTTP_PROTOCOL", "http") current_site = Site.objects.get_current() notices_url = u"%s://%s%s" % ( protocol, unicode(current_site), reverse("notification_notices"), ) current_language = get_language() formats = ( 'short.txt', 'email_body.html', 'email_body.txt', 'notice.html', 'full.html', 'email_subject.txt' ) for user in users: recipients = [] # get user language for user from language store defined in # NOTIFICATION_LANGUAGE_MODULE setting try: language = get_notification_language(user) except LanguageStoreNotAvailable: language = None if language is not None: # activate the user's language activate(language) # update context with user specific translations context = Context({ "first_name":user.first_name, "sender": sender, "notice": ugettext(notice_type.display), "notices_url": notices_url, }) context.update(get_basic_email_context()) context.update(extra_context) # get prerendered format messages messages = get_formatted_messages(formats, label, context) # Strip newlines from subject subject = ''.join(render_to_string('email_subject.txt', { 'message': messages['email_subject.txt'] }, context).splitlines()) html_email_body = messages['email_body.html'] txt_email_body = messages['email_body.txt'] Notice.objects.create(recipient=user, message=messages['notice.html'], message_full=messages['full.html'], notice_type=notice_type, on_site=on_site, sender=sender) if should_send(user, notice_type, "1") and user.email and user.is_active: # Email recipients.append(user.email) send_email(subject, txt_email_body, recipients, html_email_body) # reset environment to original language activate(current_language)
def event_upload_recruiters_list(request, form_class = EventUploadRecruitersForm, extra_context=None): if request.method == 'POST': form = form_class(data=request.POST, files=request.FILES) data = {} if form.is_valid(): event_id = form.cleaned_data.get('event_id', '') try: event = Event.objects.get(id=event_id) except Event.DoesNotExist: raise Http404("The event with event id %s does not exist" % event_id) if request.user != event.owner: raise Http403("You must be the event owner in order to perform this action.") open_csv_file = csv.DictReader(request.FILES['csv_file']) for i, fieldname in enumerate(open_csv_file.fieldnames): open_csv_file.fieldnames[i] = fieldname.lower() recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({}) context.update(get_basic_email_context()) event.attending_employers.clear() def send_event_company_representative_access_instructions(): context['event'] = event text_body = render_to_string('recruiter_event_participant_access_instructions.txt', context) html_body = render_to_string('recruiter_event_participant_access_instructions.html', context) subject = ''.join(render_to_string('email_subject.txt', { 'message': "%s Student Browsing Instructions" % event.name }, context).splitlines()) send_email(subject, text_body, recipients, html_body) for row in open_csv_file: email = row.get('email', '') user = None try: user = User.objects.get(email=email) except User.DoesNotExist: password = User.objects.make_random_password() email = row['email'].lower() user = User.objects.create(first_name = row['first name'], last_name = row['last name'], email = email, username = email, ) user.set_password(password) user.save() user.userattributes.is_verified = True user.userattributes.save() employer, created = Employer.objects.get_or_create(name=row['employer']) if created: recipients = [mail_tuple[1] for mail_tuple in s.MANAGERS] context = Context({'first_name' : request.user.first_name, 'last_name' : request.user.last_name, 'email' : request.user.email, 'new_employer' : employer}) context.update(get_basic_email_context()) body = render_to_string('employer_new_email_body.txt', context) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "New Employer: %s" % employer }, context).splitlines()) send_email(subject, body, recipients) Recruiter.objects.create(employer=employer, user=user) event.attending_employers.add(employer) recipients = [user.email] context.update({ "first_name": user.first_name, "email": user.email, "username": user.email, "password": password, "has_account": False, }) send_event_company_representative_access_instructions() else: if is_recruiter(user): if not user.recruiter.employer in event.attending_employers.all(): employer = user.recruiter.employer event.attending_employers.add(employer) recipients = [user.email] context.update({ "first_name": user.first_name, "email": user.email, "has_account": True, }) send_event_company_representative_access_instructions() else: context.update({ "first_name": row.get("first name", ""), "last_name": row.get("last name", ""), "email": row.get("email", ""), "supposed_employer": row.get("employer","") }) body = render_to_string('attending_recruiter_problem.txt', context) subject = ''.join(render_to_string('email_admin_subject.txt', { 'message': "%s has a problem with a recruiter" % event.name }, context).splitlines()) send_email(subject, body, recipients) else: data['errors'] = form.errors return HttpResponse(simplejson.dumps(data), mimetype="application/json") else: form = form_class(initial={'event_id':request.GET['event_id']}); context = {'form': form, 'TEMPLATE':'event_upload_recruiters_list.html'} context.update(extra_context or {}) return context