Example #1
0
 def activate(self, request):
     if request.user.is_authenticated():
         auth.logout(request)
     form = ActivateForm(data=request.query_params)
     if form.is_valid():
         user = form.validated_data['email']
         user.backend = 'django.contrib.auth.backends.ModelBackend'
         auth.login(request, user)
         activate_role = UserValidateEmailRole.objects.filter(
             user=user).order_by("-datetime")[0]
         activate_role.confirm()
         activate_role.save()
         logger.info('user activated')
         # create redirect with subdomain inserted
         redirect_url = insert_or_change_subdomain(
             settings.ASCRIBE_URL_FRONTEND + '?first_time=1',
             form.validated_data['subdomain'])
         return HttpResponseRedirect(redirect_url)
     else:
         qp = request.query_params.copy()
         qp.pop('token', None)
         redirect_url = insert_or_change_subdomain(
             settings.ASCRIBE_URL_FRONTEND + 'login?' + qp.urlencode(),
             request.query_params.get('subdomain', 'www'))
         return HttpResponseRedirect(redirect_url)
Example #2
0
 def request_reset_password(self, request):
     serializer = RequestResetPasswordForm(data=request.data)
     if serializer.is_valid():
         user = serializer.validated_data['email']
         if user:
             role = UserRequestResetPasswordRole.create(user)
             role.save()
             subdomain = extract_subdomain(
                 request.META['HTTP_ORIGIN']) if request.META.has_key(
                     'HTTP_ORIGIN') else 'www'
             redirect_url = insert_or_change_subdomain(
                 settings.ASCRIBE_URL_FRONTEND + 'password_reset',
                 subdomain)
             lang = translation.get_language() or settings.LANGUAGE_CODE
             send_ascribe_email.delay(
                 msg_cls='PasswordResetEmailMessage',
                 to=user.email,
                 token=role.token,
                 redirect_url=redirect_url,
                 lang=lang,
             )
         return Response({'success': True}, status=status.HTTP_200_OK)
     else:
         return Response({
             'success': False,
             'errors': serializer.errors
         },
                         status=status.HTTP_400_BAD_REQUEST)
Example #3
0
def email_submit_prize(receiver, piece, subdomain):
    subject = u'Thanks for submitting to '
    template_path = 'emails/'
    text_content = u"\n".join([""] + [" -%s" % settings.EMAIL_SIGNATURE])
    redirect_url = insert_or_change_subdomain(settings.ASCRIBE_URL_FRONTEND,
                                              subdomain)
    if subdomain == 'sluice':
        subject += u'Sluice_screens ↄc'
        template_path += 'sluice/email_submit.html'
        d = Context({
            'receiver': receiver,
            'editions': [piece],
            'redirect_url': redirect_url,
            'subject': subject,
        })
        htmly = get_template(template_path)
        html_content = htmly.render(d)
        html_message = inline_css(html_content)
    elif subdomain == 'portfolioreview':
        subject += u'Portfolio Review 2016'
        template_path += 'portfolioreview/email_submit.html'
        d = Context({
            'receiver':
            receiver,
            'piece':
            piece,
            'subject':
            subject,
            'signup_or_login_link':
            get_signup_or_login_link(receiver.email, subdomain)
        })
        htmly = get_template(template_path)
        html_content = htmly.render(d)
        html_message = inline_css(html_content)
    send_mail(subject, text_content, receiver.email, html_message=html_message)
Example #4
0
def emailOwnerOnDenyLoanPiece(loanee, piece, subdomain):
    if settings.EMAIL_ENABLED:
        email_to = piece.user_registered.email
        subject = "Loan Request Rejected - " + piece.title
        s = []
        s += ["Hello,"] + [""]
        s += ["The following loan requests have been denied."] + []
        s += [
            "Ascribe user %s denied loaning "
            "%s"
            "." % (loanee.username, piece.title)
        ] + [""]
        s += [" -%s" % settings.EMAIL_SIGNATURE]
        text_content = "\n".join(s)

        redirect_url = insert_or_change_subdomain(
            settings.ASCRIBE_URL_FRONTEND, subdomain)
        d = Context({
            'owner': piece.user_registered.username,
            'piece': piece,
            'loanee': loanee.username,
            'email': email_to,
            'redirect_url': redirect_url
        })
        htmly = get_template('emails/owner_ondenyloan.html')
        html_content = htmly.render(d)

        send_mail(subject, text_content, email_to, html_message=html_content)
Example #5
0
def email_invite_judge(user, subdomain):
    wl_settings = WhitelabelSettings.objects.get(subdomain=subdomain)
    prize_display_name = wl_settings.name
    subject = u'Invitation to judge for %s' % prize_display_name
    redirect_url = insert_or_change_subdomain(
        settings.ASCRIBE_URL_FRONTEND + 'login', subdomain)

    email_safe = urllib.quote_plus(user.email.encode("utf-8"))

    text_content = u"We would like to invite you to be a jury member for %s.\n" % prize_display_name
    text_content += u"Use this link to log in:\n"
    text_content += u' %s?&email=%s&subdomain=%s \n\n' % (
        redirect_url, email_safe, subdomain)
    text_content += _('Thank you and enjoy, \n')
    email_signature = settings.EMAIL_SIGNATURE % {
        'ascribe_team': _('The ascribe Team')
    }
    text_content += '\n -%s' % email_signature

    context = Context({
        'username': user.username,
        'email': user.email,
        'email_safe': email_safe,
        'subdomain': subdomain,
        'host': redirect_url
    })
    if subdomain == 'sluice':
        htmly = get_template('emails/sluice/email_invite_judge.html')
    elif subdomain == 'portfolioreview':
        htmly = get_template('emails/portfolioreview/email_invite_judge.html')
    html_content = inline_css(htmly.render(context))
    send_mail(subject, text_content, user.email, html_message=html_content)
Example #6
0
 def redirect_url(self):
     """
     For "whitelabel markets", we want to redirect a receiver of a transfer
     email (read: a buyer) to ascribe's main wallet instead of the consignment
     wallet.
     """
     return insert_or_change_subdomain(settings.ASCRIBE_URL_FRONTEND, 'www')
Example #7
0
    def create(self, request):
        serializer = self.get_serializer(data=request.data)

        if serializer.is_valid():
            data = serializer.validated_data

            application = None
            if hasattr(request.auth, 'token'):
                application = AccessToken.objects.get(
                    token=request.auth.token).application

            lang = translation.get_language() or settings.LANGUAGE_CODE
            # TODO clarify whether we'll need the LANGUAGE_SESSION_KEY at all
            # if hasattr(request, "session") and request.session.has_key(translation.LANGUAGE_SESSION_KEY):
            #    lang = request.session[translation.LANGUAGE_SESSION_KEY]

            subdomain = extract_subdomain(
                request.META['HTTP_ORIGIN']) if request.META.has_key(
                    'HTTP_ORIGIN') else 'www'
            token = data['token'] if 'token' in data.keys() else None

            user = UserEndpoint._createNewUser(data['email'],
                                               data['password'],
                                               application=application,
                                               lang=lang,
                                               subdomain=subdomain,
                                               token=token)
            if not token:
                serializer = self.get_serializer(user)
                return Response(
                    {
                        'success': True,
                        self.json_name[:-1]: serializer.data
                    },
                    status=status.HTTP_201_CREATED)
            else:
                user.backend = 'django.contrib.auth.backends.ModelBackend'
                auth.login(request, user)
                redirect_url = insert_or_change_subdomain(
                    settings.ASCRIBE_URL_FRONTEND + '?first_time=1', subdomain)
                return Response({
                    'success': True,
                    'redirect': redirect_url
                },
                                status=status.HTTP_201_CREATED)
        else:
            return Response({
                'success': False,
                'errors': serializer.errors
            },
                            status=status.HTTP_400_BAD_REQUEST)
Example #8
0
def get_signup_or_login_link(email_to, subdomain):
    email_safe = urllib.quote_plus(email_to.encode('ascii'))
    redirect_url = insert_or_change_subdomain(settings.ASCRIBE_URL_FRONTEND, subdomain)
    try:
        user = User.objects.get(email=email_to)
    except User.DoesNotExist:
        # user has not been created, send to signup without token
        return '{}?email={}&subdomain={}&redirect=signup'.format(redirect_url, email_safe, subdomain)
    try:
        UserNeedsToRegisterRole.objects.get(user=user,
                                            type="UserNeedsToRegisterRole")
    except UserNeedsToRegisterRole.DoesNotExist:
        # user has signed up, send to login
        return '{}?email={}&subdomain={}&redirect=login'.format(redirect_url, email_safe, subdomain)

    else:
        # user was invited, send to signup with token for implicit email validation
        # validation only requires the last created token
        validate_role = UserValidateEmailRole.create(user=user)
        validate_role.save()
        return '{}?token={}&email={}&subdomain={}&redirect=signup'.format(redirect_url, validate_role.token, email_safe,
                                                                          subdomain)
Example #9
0
 def redirect_url(self):
     return insert_or_change_subdomain(settings.ASCRIBE_URL_FRONTEND,
                                       self.subdomain)