Beispiel #1
0
    def create_user(self, name, email, password, site='', send_email=True, openid=None):
        """
        Create a new User, activate it, send email about password

        You can disable email_sending in settings: DISABLE_REGISTRATION_EMAIL=True
        """
        send_email = send_email and not getattr(settings, 'DISABLE_REGISTRATION_EMAIL', False)

        # Create the user.
        if openid:
            username = openid[7:37]
        else:
            username = email.replace('@', '-')
        try:
            while True:
                User.objects.get(username=username)
                username = username[:-2] + str(random.randrange(10, 100))
        except User.DoesNotExist:
            pass
        new_user = User(username=username, email=email, first_name=name)
        new_user.set_password(password)
        new_user.is_active = True
        new_user.site = site
        new_user.save()

        if send_email:
            current_domain = Site.objects.get_current().domain
            subject = "Your new account at %s has been created" % current_domain
            message_template = loader.get_template('accounts/created_email.txt')
            message_context = Context({'site_url': '%s://%s' % (settings.SITE_PROTOCOL, current_domain),
                                        'password': password,
                                        'user': new_user})
            message = message_template.render(message_context)
            new_user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
        return new_user
Beispiel #2
0
    def create_inactive_user(self,
                             name,
                             email,
                             password,
                             site='',
                             send_email=True):
        """
        Creates a new User and a new ActionRecord for that
        User, generates an activation key, and mails it.

        Pass ``send_email=False`` to disable sending the email.

        You can disable email_sending in settings: DISABLE_REGISTRATION_EMAIL=True

        """
        send_email = not getattr(settings, 'DISABLE_REGISTRATION_EMAIL', False)

        # Create the user.
        new_user = User(username=email.replace('@', '-'),
                        email=email,
                        first_name=name)
        new_user.set_password(password)
        new_user.is_active = False
        new_user.site = site
        new_user.save()

        # Generate a salted SHA1 hash to use as a key.
        salt = sha.new(str(random.random())).hexdigest()[:5]
        action_key = sha.new(salt + slugify(new_user.email)).hexdigest()

        # And finally create the record.
        new_record = self.create(user=new_user,
                                 action_key=action_key,
                                 type='A')
        if send_email:
            current_domain = Site.objects.get_current().domain
            subject = "Activate your new account at %s" % current_domain
            message_template = loader.get_template(
                'accounts/activation_email.txt')
            message_context = Context({
                'site_url':
                '%s://%s' % (settings.SITE_PROTOCOL, current_domain),
                'action_key':
                action_key,
                'expiration_days':
                settings.ACTION_RECORD_DAYS,
                'password':
                password,
                'user':
                new_user
            })
            message = message_template.render(message_context)
            new_user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
        return new_user
Beispiel #3
0
    def create_user(self,
                    name,
                    email,
                    password,
                    site='',
                    send_email=True,
                    openid=None):
        """
        Create a new User, activate it, send email about password

        You can disable email_sending in settings: DISABLE_REGISTRATION_EMAIL=True
        """
        send_email = send_email and not getattr(
            settings, 'DISABLE_REGISTRATION_EMAIL', False)

        # Create the user.
        if openid:
            username = openid[7:37]
        else:
            username = email.replace('@', '-')
        try:
            while True:
                User.objects.get(username=username)
                username = username[:-2] + str(random.randrange(10, 100))
        except User.DoesNotExist:
            pass
        new_user = User(username=username, email=email, first_name=name)
        new_user.set_password(password)
        new_user.is_active = True
        new_user.site = site
        new_user.save()

        if send_email:
            current_domain = Site.objects.get_current().domain
            subject = "Your new account at %s has been created" % current_domain
            message_template = loader.get_template(
                'accounts/created_email.txt')
            message_context = Context({
                'site_url':
                '%s://%s' % (settings.SITE_PROTOCOL, current_domain),
                'password':
                password,
                'user':
                new_user
            })
            message = message_template.render(message_context)
            new_user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
        return new_user
Beispiel #4
0
    def create_inactive_user(self, name, email, password, site='', send_email=True):
        """
        Creates a new User and a new ActionRecord for that
        User, generates an activation key, and mails it.

        Pass ``send_email=False`` to disable sending the email.

        You can disable email_sending in settings: DISABLE_REGISTRATION_EMAIL=True

        """
        from django.contrib.auth.models import User
        send_email = not getattr(settings, 'DISABLE_REGISTRATION_EMAIL', False)

        # Create the user.
        new_user = User(username=email.replace('@', '-'), email=email, first_name=name)
        new_user.set_password(password)
        new_user.is_active = False
        new_user.site = site
        new_user.save()

        # Generate a salted SHA1 hash to use as a key.
        salt = sha.new(str(random.random())).hexdigest()[:5]
        activation_key = sha.new(salt+slugify(new_user.email)).hexdigest()

        # And finally create the record.
        new_record = self.create(user=new_user,
                                 activation_key=activation_key,
                                 type='A')
        if send_email:
            if Site._meta.installed:
                current_site = Site.objects.get_current()
            else:
                current_site = RequestSite(request) #TODO import Site/RequestSite ?
            current_domain = current_site.domain
            subject = "Activate your new account at %s" % current_domain
            message_template = loader.get_template('accounts/activation_email.txt')
            message_context = Context({ 'site_url': '%s://%s' % (settings.SITE_PROTOCOL, current_domain),
                                        'activation_key': activation_key,
                                        'expiration_days': settings.ACTION_RECORD_DAYS,
                                        'password': password,
                                        'user': new_user})
            message = message_template.render(message_context)
            new_user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
        return new_user