Esempio n. 1
0
def create_user():
    """ Create a user with random data """
    User = get_user_model()
    password = random_token(10)
    username = random_token(8)
    user = User(username=username, email=username + '@example.com')
    user.set_password(password)
    user.is_active = True
    user.save()
    return user, password
Esempio n. 2
0
def create_user():
    """ Create a user with random data """
    User = get_user_model()
    password = random_token(10)
    username = random_token(8)
    user = User(username=username, email=username + "@example.com")
    user.set_password(password)
    user.is_active = True
    user.save()
    return user, password
Esempio n. 3
0
    def create_user(self, form):
        User = get_user_model()
        user = User()
        username = form.cleaned_data['username']

        self._check_username(username)
        user.username = username

        email_addr = form.cleaned_data['email']
        user.email = email_addr

        user.set_password(form.cleaned_data['password1'])
        user.is_active = False
        user.full_clean()

        try:
            user.save()

        except IntegrityError as e:
            if 'django_auth_unique_email' in str(e):
                # this was not caught by the form validation, but now validates
                # the DB's unique constraint
                raise DuplicateEmail(email_addr) from e
            else:
                raise

        user.profile.activation_key = random_token()
        user.profile.save()

        return user
Esempio n. 4
0
    def create_new_token(self, token_name):
        """ resets a token """

        if token_name not in TOKEN_NAMES:
            raise TokenException('Invalid token name %s' % token_name)

        setattr(self, token_name, random_token())
Esempio n. 5
0
    def create_user(self, form):
        User = get_user_model()
        user = User()
        username = form.cleaned_data['username']

        self._check_username(username)
        user.username = username

        email_addr = form.cleaned_data['email']
        user.email = email_addr

        user.set_password(form.cleaned_data['password1'])
        user.is_active = False
        user.full_clean()

        try:
            user.save()

        except IntegrityError as e:
            if 'django_auth_unique_email' in str(e):
                # this was not caught by the form validation, but now validates
                # the DB's unique constraint
                raise DuplicateEmail(email_addr) from e
            else:
                raise

        user.profile.activation_key = random_token()
        user.profile.save()

        return user
Esempio n. 6
0
    def create_user(self, form):
        User = get_user_model()
        user = User()
        user.username = form.cleaned_data['username']

        email_addr = form.cleaned_data['email']
        user.email = email_addr

        user.set_password(form.cleaned_data['password1'])
        user.is_active = False
        user.full_clean()

        try:
            user.save()

        except IntegrityError as e:
            if 'django_auth_unique_email' in str(e):
                # this was not caught by the form validation, but now validates
                # the DB's unique constraint
                raise ValidationError('The email address {0} is '
                                      'already in use.'.format(email_addr))
            else:
                raise

        user.profile.activation_key = random_token()
        user.profile.save()

        return user
Esempio n. 7
0
    def create_new_token(self, token_name):
        """ resets a token """

        if token_name not in TOKEN_NAMES:
            raise TokenException('Invalid token name %s' % token_name)

        setattr(self, token_name, random_token())
Esempio n. 8
0
def restore_password(request):

    if request.method == "GET":
        form = RestorePasswordForm()
        return render(request, "restore_password.html", {"form": form})

    form = RestorePasswordForm(request.POST)
    if not form.is_valid():
        return HttpResponseRedirect("/login/")

    try:
        user = UserProxy.objects.all().by_username_or_email(form.cleaned_data["username"], form.cleaned_data["email"])

    except UserProxy.DoesNotExist:
        messages.error(request, _("User does not exist."))
        return render(request, "password_reset_failed.html")

    if not user.is_active:
        send_activation_email(user, request)
        messages.error(request, _("Please activate your account first. " "We have just re-sent your activation email"))
        return HttpResponseRedirect(reverse("login"))

    site = RequestSite(request)
    pwd = random_token(length=16)
    user.set_password(pwd)
    user.save()
    subject = render_to_string("reset-pwd-subj.txt", {"site": site}).strip()
    message = render_to_string("reset-pwd-msg.txt", {"username": user.username, "site": site, "password": pwd})
    user.email_user(subject, message)
    return render(request, "password_reset.html")
Esempio n. 9
0
def subscribe(podcast, feedurl, huburl, base_url, mode='subscribe'):
    """ Subscribe to the feed at a Hub """

    logger.info('subscribing for {feed} at {hub}'.format(feed=feedurl,
                                                         hub=huburl))
    verify = 'sync'

    token_max_len = HubSubscription._meta.get_field('verify_token').max_length
    subscription, created = HubSubscription.objects.get_or_create(
        topic_url=feedurl,
        defaults={
            'verify_token': random_token(token_max_len),
            'mode': '',
            'podcast': podcast,
        }
    )

    if subscription.mode == mode:
        if subscription.verified:
            logger.info('subscription already exists')
            return

    else:
        logger.info('subscription exists but has wrong mode: ' +
                    'old: %(oldmode)s, new: %(newmode)s. Overwriting.' %
                    dict(oldmode=subscription.mode, newmode=mode))

    subscription.topic_url = feedurl
    subscription.mode = mode
    subscription.save()

    data = {
        "hub.callback":     callback_url(feedurl, base_url),
        "hub.mode":         mode,
        "hub.topic":        feedurl,
        "hub.verify":       verify,
        "hub.verify_token": subscription.verify_token,
    }

    data = urllib.urlencode(data.items())
    logger.debug('sending request: %s' % repr(data))

    resp = None

    try:
        resp = urllib2.urlopen(huburl, data)

    except urllib2.HTTPError, e:
        if e.code != 204:  # we actually expect a 204 return code
            msg = 'Could not send subscription to Hub: HTTP Error %d: %s' % \
                (e.code, e.reason)
            logger.warn(msg)
            raise SubscriptionError(msg)
Esempio n. 10
0
def restore_password(request):

    if request.method == 'GET':
        form = RestorePasswordForm()
        return render(request, 'restore_password.html', {
            'form': form,
        })


    form = RestorePasswordForm(request.POST)
    if not form.is_valid():
        return HttpResponseRedirect('/login/')

    try:
        user = UserProxy.objects.all().by_username_or_email(
                form.cleaned_data['username'],
                form.cleaned_data['email']
            )

    except UserProxy.DoesNotExist:
        messages.error(request, _('User does not exist.'))
        return render(request, 'password_reset_failed.html')

    if not user.is_active:
        send_activation_email(user, request)
        messages.error(request, _('Please activate your account first. '
            'We have just re-sent your activation email'))
        return HttpResponseRedirect(reverse('login'))

    site = RequestSite(request)
    pwd = random_token(length=16)
    user.set_password(pwd)
    user.save()
    subject = render_to_string('reset-pwd-subj.txt', {'site': site}).strip()
    message = render_to_string('reset-pwd-msg.txt', {
        'username': user.username,
        'site': site,
        'password': pwd,
    })
    user.email_user(subject, message)
    return render(request, 'password_reset.html')
Esempio n. 11
0
def restore_password(request):

    if request.method == 'GET':
        form = RestorePasswordForm()
        return render(request, 'restore_password.html', {
            'form': form,
        })


    form = RestorePasswordForm(request.POST)
    if not form.is_valid():
        return HttpResponseRedirect('/login/')

    try:
        user = UserProxy.objects.all().by_username_or_email(
                form.cleaned_data['username'],
                form.cleaned_data['email']
            )

    except UserProxy.DoesNotExist:
        messages.error(request, _('User does not exist.'))
        return render(request, 'password_reset_failed.html')

    if not user.is_active:
        send_activation_email(user, request)
        messages.error(request, _('Please activate your account first. '
            'We have just re-sent your activation email'))
        return HttpResponseRedirect(reverse('login'))

    site = RequestSite(request)
    pwd = random_token(length=16)
    user.set_password(pwd)
    user.save()
    subject = render_to_string('reset-pwd-subj.txt', {'site': site}).strip()
    message = render_to_string('reset-pwd-msg.txt', {
        'username': user.username,
        'site': site,
        'password': pwd,
    })
    user.email_user(subject, message)
    return render(request, 'password_reset.html')
Esempio n. 12
0
def restore_password(request):

    if request.method == "GET":
        form = RestorePasswordForm()
        return render(request, "restore_password.html", {"form": form})

    form = RestorePasswordForm(request.POST)
    if not form.is_valid():
        return HttpResponseRedirect("/login/")

    try:
        user = UserProxy.objects.all().by_username_or_email(
            form.cleaned_data["username"], form.cleaned_data["email"])

    except UserProxy.DoesNotExist:
        messages.error(request, _("User does not exist."))
        return render(request, "password_reset_failed.html")

    if not user.is_active:
        send_activation_email(user, request)
        messages.error(
            request,
            _("Please activate your account first. "
              "We have just re-sent your activation email"),
        )
        return HttpResponseRedirect(reverse("login"))

    site = RequestSite(request)
    pwd = random_token(length=16)
    user.set_password(pwd)
    user.save()
    subject = render_to_string("reset-pwd-subj.txt", {"site": site}).strip()
    message = render_to_string("reset-pwd-msg.txt", {
        "username": user.username,
        "site": site,
        "password": pwd
    })
    user.email_user(subject, message)
    return render(request, "password_reset.html")
Esempio n. 13
0
def subscribe(podcast, feedurl, huburl, base_url, mode="subscribe"):
    """Subscribe to the feed at a Hub"""

    logger.info("subscribing for {feed} at {hub}".format(feed=feedurl, hub=huburl))
    verify = "sync"

    token_max_len = HubSubscription._meta.get_field("verify_token").max_length
    subscription, created = HubSubscription.objects.get_or_create(
        topic_url=feedurl,
        defaults={
            "verify_token": random_token(token_max_len),
            "mode": "",
            "podcast": podcast,
        },
    )

    if subscription.mode == mode:
        if subscription.verified:
            logger.info("subscription already exists")
            return

    else:
        logger.info(
            "subscription exists but has wrong mode: "
            + "old: %(oldmode)s, new: %(newmode)s. Overwriting."
            % dict(oldmode=subscription.mode, newmode=mode)
        )

    subscription.topic_url = feedurl
    subscription.mode = mode
    subscription.save()

    data = {
        "hub.callback": callback_url(feedurl, base_url),
        "hub.mode": mode,
        "hub.topic": feedurl,
        "hub.verify": verify,
        "hub.verify_token": subscription.verify_token,
    }

    data = urllib.parse.urlencode(list(data.items()))
    logger.debug("sending request: %s" % repr(data))

    resp = None

    try:
        resp = urllib.request.urlopen(huburl, data)

    except urllib.error.HTTPError as e:
        if e.code != 204:  # we actually expect a 204 return code
            msg = "Could not send subscription to Hub: HTTP Error %d: %s" % (
                e.code,
                e.reason,
            )
            logger.warning(msg)
            raise SubscriptionError(msg)

    except Exception as e:
        msg = "Could not send subscription to Hub: %s" % repr(e)
        logger.warning(msg)
        raise SubscriptionError(msg)

    if resp:
        status = resp.code
        if status != 204:
            logger.warning("received incorrect status %d" % status)
            raise SubscriptionError("Subscription has not been accepted by " "the Hub")