Exemplo n.º 1
0
def request_unaffiliated_research_access(request):
    """ Submit request for unaffiliated research access """
    name = "%s %s" % (request.user.first_name, request.user.last_name)
    form = form_for_request(request,
                            UnaffiliatedResearchRequestForm,
                            initial={
                                'name': name,
                                'email': request.user.email
                            })

    if request.method == 'POST' and form.is_valid():
        # save request object
        form.instance.user = request.user
        form.save()

        # send notice emails
        message = loader.get_template(
            'research_request/emails/unaffiliated_request_email.txt').render({
                'data':
                form.cleaned_data,
            })
        subject = 'CAP independent research scholar application for {}'.format(
            name)
        send_contact_email(subject, message, request.user.email)

        return HttpResponseRedirect(
            reverse('unaffiliated-research-request-success'))

    return render(request,
                  'research_request/unaffiliated_research_request.html',
                  {'form': form})
Exemplo n.º 2
0
def resend_verification(request):
    """ Resend verification code """
    form = form_for_request(request, ResendVerificationForm)

    if request.method == 'POST' and form.is_valid():
        try:
            user = CapUser.objects.get(email=form.cleaned_data['email'])
        except CapUser.DoesNotExist:
            form.add_error('email', "User with that email does not exist.")
        else:
            if user.email_verified:
                form.add_error('email', "Email address is already verified.")
        if form.is_valid():
            resources.send_new_signup_email(request, user)
            return render(
                request, 'registration/sign-up-success.html', {
                    'status':
                    'Success!',
                    'message':
                    'Thank you. Please check your email %s for a verification link.'
                    % user.email
                })
    return render(request, 'registration/resend-nonce.html', {
        'info_email': settings.DEFAULT_FROM_EMAIL,
        'form': form,
    })
Exemplo n.º 3
0
def contact(request):
    form = form_for_request(request, ContactForm)

    if request.method == 'POST' and form.is_valid():
        data = form.data
        # Only send email if box2 is filled out and box1 is not.
        # box1 is display: none, so should never be filled out except by spam bots.
        if data.get('box2') and not data.get('box1'):
            send_contact_email(data.get('subject'), data.get('box2'),
                               data.get('email'))
            logger.info("sent contact email: %s" % data)
        else:
            logger.info("suppressing invalid contact email: %s" % data)
        return HttpResponseRedirect(reverse('contact-success'))

    email_from = request.user.email if request.user.is_authenticated else ""
    form.initial = {"email": email_from}

    return render(
        request, 'contact.html', {
            "form":
            form,
            "email":
            settings.DEFAULT_FROM_EMAIL,
            'page_image':
            'img/og_image/contact.png',
            'meta_description':
            'Email us at %s or fill out this form. ' %
            settings.DEFAULT_FROM_EMAIL,
        })
Exemplo n.º 4
0
def register_user(request):
    """ Create new user """
    if not request.user.is_anonymous:
        return HttpResponseRedirect(reverse('user-details'))

    form = form_for_request(request, RegisterUserForm)
    if request.method == 'POST' and form.is_valid():
        form.save()
        resources.send_new_signup_email(request, form.instance)
        return render(
            request, 'registration/sign-up-success.html', {
                'status':
                'Success!',
                'message':
                'Thank you. Please check your email for a verification link.',
            })

    return render(request, 'registration/register.html', {'form': form})
Exemplo n.º 5
0
def request_harvard_research_access(request):
    """ Sign Harvard-email based contract """
    name = "%s %s" % (request.user.first_name, request.user.last_name)
    form = form_for_request(request,
                            HarvardContractForm,
                            initial={
                                'name': name,
                                'email': request.user.email
                            })

    if request.method == 'POST' and form.is_valid():
        # save request object
        contract = form.instance
        contract.user = request.user
        contract.email = request.user.email
        contract.contract_html = loader.get_template(
            'research_request/contracts/harvard_rendered.html').render(
                {'form': form})
        form.save()
        request.user.harvard_access = True
        request.user.save()

        # send notice emails
        message = loader.get_template(
            'research_request/emails/harvard_contract_email.html').render({
                'contract_html':
                contract.contract_html,
                'signed_date':
                contract.user_signature_date,
            })
        subject = 'CAP Bulk Access Agreement for {}'.format(name)
        msg = EmailMessage(subject, message, settings.DEFAULT_FROM_EMAIL,
                           [settings.DEFAULT_FROM_EMAIL, request.user.email])
        msg.content_subtype = "html"  # Main content is text/html
        msg.send()

        return HttpResponseRedirect(
            reverse('harvard-research-request-success'))

    return render(request, 'research_request/harvard_research_request.html',
                  {'form': form})
Exemplo n.º 6
0
def request_affiliated_research_access(request):
    """ Sign academic/nonprofit based contract """
    name = "%s %s" % (request.user.first_name, request.user.last_name)
    form = form_for_request(request,
                            ResearchContractForm,
                            initial={
                                'name': name,
                                'email': request.user.email
                            })

    if request.method == 'POST' and form.is_valid():
        # save contract object
        form.instance.user = request.user
        form.instance.contract_html = loader.get_template(
            'research_request/contracts/affiliated_rendered.html').render(
                {'form': form})
        form.save()

        # send notice emails
        message = loader.get_template(
            'research_request/emails/contract_request_email.txt').render({
                'data':
                form.cleaned_data,
                'approval_url':
                reverse('research-approval', scheme='https'),
            })
        emails = [settings.DEFAULT_FROM_EMAIL] + \
                 [user.email for user in CapUser.objects.filter(groups__name='contract_approvers')]
        subject = 'CAP research scholar application for {}'.format(name)
        send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, emails)

        return HttpResponseRedirect(
            reverse('affiliated-research-request-success'))

    return render(request, 'research_request/affiliated_research_request.html',
                  {'form': form})