예제 #1
0
    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)
예제 #2
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #3
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #4
0
 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
예제 #5
0
파일: forms.py 프로젝트: Dpetters/Umeqo
    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)
예제 #6
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #7
0
    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()
예제 #8
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #9
0
파일: models.py 프로젝트: Dpetters/Umeqo
    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)
예제 #10
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #11
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #12
0
    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()
예제 #13
0
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
예제 #14
0
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
예제 #15
0
    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)
예제 #16
0
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")
예제 #17
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #18
0
파일: signals.py 프로젝트: Dpetters/Umeqo
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")
예제 #19
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #20
0
파일: views.py 프로젝트: Dpetters/Umeqo
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")
예제 #21
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #22
0
파일: views.py 프로젝트: Dpetters/Umeqo
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
예제 #23
0
파일: views.py 프로젝트: Dpetters/Umeqo
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")
예제 #24
0
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)
예제 #25
0
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)
예제 #26
0
파일: models.py 프로젝트: Dpetters/Umeqo
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)
예제 #27
0
파일: views.py 프로젝트: Dpetters/Umeqo
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