Beispiel #1
0
def migrate_usernames(stream=None, quiet=False):
    """
    Migrate all existing users to django-email-as-username hashed usernames.
    If any users cannot be migrated an exception will be raised and the
    migration will not run.
    """
    stream = stream or (quiet and open(os.devnull, 'w') or sys.stdout)

    # Check all users can be migrated before applying migration
    emails = set()
    errors = []
    for user in User.objects.all():
        if not user.email:
            errors.append("Cannot convert user '%s' because email is not "
                          "set." % (user._username, ))
        elif user.email.lower() in emails:
            errors.append("Cannot convert user '%s' because email '%s' "
                          "already exists." % (user._username, user.email))
        else:
            emails.add(user.email.lower())

    # Cannot migrate.
    if errors:
        [stream.write(error + '\n') for error in errors]
        raise Exception('django-email-as-username migration failed.')

    # Can migrate just fine.
    total = User.objects.count()
    for user in User.objects.all():
        user.username = _email_to_username(user.email)
        user.save()

    stream.write("Successfully migrated usernames for all %d users\n"
                 % (total, ))
    def handle_noargs(self, **options):
        """Upgrade the existing User table to be usable by django-email-as-username.

        This is specifically designed for versions 1.3 and above of the package."""

        title = "Upgrading User table for django-email-as-username"
        sys.stdout.write("=====\n" + title + "\n=====\n")
        sys.stdout.flush()

        total = User.objects.count()
        failed = 0

        for user in User.objects.all():
            user.username = _email_to_username(user.email)
            try:
                sid = transaction.savepoint()
                user.save()
                transaction.savepoint_commit(sid)
            except IntegrityError:
                failed += 1
                sys.stdout.write(
                    "Could not convert user with username '%s' because the email "
                    "<%s> is already taken.\n" % (user.username, user.email)
                    )
                sys.stdout.flush()
                transaction.savepoint_rollback(sid)

        sys.stdout.write("Converted %d of %d users (%d failed).\n" % (total - failed, total, failed))
Beispiel #3
0
def migrate_usernames(stream=None, quiet=False):
    """
    Migrate all existing users to django-email-as-username hashed usernames.
    If any users cannot be migrated an exception will be raised and the
    migration will not run.
    """
    stream = stream or (quiet and open(os.devnull, 'w') or sys.stdout)

    # Check all users can be migrated before applying migration
    emails = set()
    errors = []
    for user in User.objects.all():
        if not user.email:
            errors.append("Cannot convert user '%s' because email is not "
                          "set." % (user._username, ))
        elif user.email.lower() in emails:
            errors.append("Cannot convert user '%s' because email '%s' "
                          "already exists." % (user._username, user.email))
        else:
            emails.add(user.email.lower())

    # Cannot migrate.
    if errors:
        [stream.write(error + '\n') for error in errors]
        raise Exception('django-email-as-username migration failed.')

    # Can migrate just fine.
    total = User.objects.count()
    for user in User.objects.all():
        user.username = _email_to_username(user.email)
        user.save()

    stream.write("Successfully migrated usernames for all %d users\n" %
                 (total, ))
Beispiel #4
0
def get_user(email, queryset=None):
    """
    Return the user with given email address.
    Note that email address matches are case-insensitive.
    """
    if queryset is None:
        queryset = User.objects
    return queryset.get(username=_email_to_username(email))
Beispiel #5
0
def get_user(email, queryset=None):
    """
    Return the user with given email address.
    Note that email address matches are case-insensitive.
    """
    if queryset is None:
        queryset = User.objects
    return queryset.get(username=_email_to_username(email))
Beispiel #6
0
def user_save_patch(self, *args, **kwargs):
    email_as_username = (self.username.lower() == self.email.lower())
    if self.pk is not None:
        old_user = self.__class__.objects.get(pk=self.pk)
        email_as_username = (email_as_username
                             or ('@' in self.username
                                 and old_user.username == old_user.email))

    if email_as_username:
        self.username = _email_to_username(self.email)
    try:
        super(User, self).save_base(*args, **kwargs)
    finally:
        if email_as_username:
            self.username = self.email
def user_save_patch(self, *args, **kwargs):
    email_as_username = (self.username.lower() == self.email.lower())
    if self.pk is not None:
        old_user = self.__class__.objects.get(pk=self.pk)
        email_as_username = (
            email_as_username or
            ('@' in self.username and old_user.username == old_user.email)
        )

    if email_as_username:
        self.username = _email_to_username(self.email)
    try:
        super(User, self).save_base(*args, **kwargs)
    finally:
        if email_as_username:
            self.username = self.email
def user_save_patch(self, *args, **kwargs):
    email_as_username = (self.username.lower() == self.email.lower())
    if self.pk is not None:
        try:
            old_user = self.__class__.objects.get(pk=self.pk)
        except ObjectDoesNotExist:
            pass

        email_as_username = (email_as_username
                             or ('@' in self.username
                                 and old_user.username == old_user.email))

    if email_as_username:
        self.username = _email_to_username(self.email)
    try:
        super(get_user_model(), self).save_base(*args, **kwargs)
    finally:
        if email_as_username:
            self.username = self.email
def user_save_patch(self, *args, **kwargs):
    # If no email, ensure username is a unique string
    if settings.ALLOW_EMPTY and not self.email:
        if not self.username or not self.username.startswith(settings.EMPTY_PREFIX):
            self.username = '******' % (settings.EMPTY_PREFIX, self.pk or '')
        # If no email but has a username, leave for other auth backends
    else:
        self.username = _email_to_username(self.email)
    
    super(User, self).save_base(*args, **kwargs)
    
    if settings.ALLOW_EMPTY and not self.email:
        # Convert temporary to permanent
        if self.username == settings.EMPTY_PREFIX:
            self.username = '******' % (settings.EMPTY_PREFIX, self.pk)
            super(User, self).save_base(*args, **kwargs)
            
    else:
        self.username = self.email
def user_save_patch(self, *args, **kwargs):
    email_as_username = (self.username.lower() == self.email.lower())
    if self.pk is not None:
        try:
            old_user = self.__class__.objects.get(pk=self.pk)
        except ObjectDoesNotExist: pass

        email_as_username = (
            email_as_username or
            ('@' in self.username and old_user.username == old_user.email)
        )

    if email_as_username:
        self.username = _email_to_username(self.email)
    try:
        super(get_user_model(), self).save_base(*args, **kwargs)
    finally:
        if email_as_username:
            self.username = self.email
def user_init_patch(self, *args, **kwargs):
    super(User, self).__init__(*args, **kwargs)
    self._username = self.username
    if self.username == _email_to_username(self.email):
        # Username should be replaced by email, since the hashes match
        self.username = self.email
def user_save_patch(self, *args, **kwargs):
    self.username = _email_to_username(self.email)
    super(User, self).save(*args, **kwargs)
    self.username = self.email
Beispiel #13
0
 def save(self, commit=True):
     user = super(EmailUserCreationForm, self).save(commit=False)
     user.username = _email_to_username(self.cleaned_data['email'])
     if commit:
         user.save()
     return user
def user_init_patch(self, *args, **kwargs):
    super(get_user_model(), self).__init__(*args, **kwargs)
    self._username = self.username
    if self.username == _email_to_username(self.email):
        # Username should be replaced by email, since the hashes match
        self.username = self.email
def user_save_patch(self, *args, **kwargs):
    self.username = _email_to_username(self.email)
    super(User, self).save_base(*args, **kwargs)
    self.username = self.email
Beispiel #16
0
 def save(self, commit=True):
     user = super(EmailUserCreationForm, self).save(commit=False)
     user.username = _email_to_username(self.cleaned_data['email'])
     if commit:
         user.save()
     return user