def create_user(self, username, email, password=None, set_default_avatar=False, **extra_fields): from misago.users.validators import (validate_email, validate_password, validate_username) with transaction.atomic(): if not email: raise ValueError(_("User must have an email address.")) if not password: raise ValueError(_("User must have a password.")) validate_username(username) validate_email(email) validate_password(password) if not 'joined_from_ip' in extra_fields: extra_fields['joined_from_ip'] = '127.0.0.1' if not 'timezone' in extra_fields: extra_fields['timezone'] = settings.default_timezone WATCH_DICT = { 'no': AUTO_SUBSCRIBE_NONE, 'watch': AUTO_SUBSCRIBE_WATCH, 'watch_email': AUTO_SUBSCRIBE_WATCH_AND_EMAIL, } if not 'subscribe_to_started_threads' in extra_fields: new_value = WATCH_DICT[settings.subscribe_start] extra_fields['subscribe_to_started_threads'] = new_value if not 'subscribe_to_replied_threads' in extra_fields: new_value = WATCH_DICT[settings.subscribe_reply] extra_fields['subscribe_to_replied_threads'] = new_value now = timezone.now() user = self.model(is_staff=False, is_superuser=False, last_login=now, joined_on=now, **extra_fields) user.set_username(username) user.set_email(email) user.set_password(password) if not 'rank' in extra_fields: user.rank = Rank.objects.get_default() user.save(using=self._db) if set_default_avatar: avatars.set_default_avatar(user) authenticated_role = Role.objects.get(special_role='authenticated') if authenticated_role not in user.roles.all(): user.roles.add(authenticated_role) user.update_acl_key() user.save(update_fields=['acl_key']) return user
def create_user(self, username, email, password=None, set_default_avatar=False, **extra_fields): from misago.users.validators import validate_email, validate_password, validate_username with transaction.atomic(): if not email: raise ValueError(_("User must have an email address.")) if not password: raise ValueError(_("User must have a password.")) validate_username(username) validate_email(email) validate_password(password) if not "joined_from_ip" in extra_fields: extra_fields["joined_from_ip"] = "127.0.0.1" WATCH_DICT = { "no": AUTO_SUBSCRIBE_NONE, "watch": AUTO_SUBSCRIBE_WATCH, "watch_email": AUTO_SUBSCRIBE_WATCH_AND_EMAIL, } if not "subscribe_to_started_threads" in extra_fields: new_value = WATCH_DICT[settings.subscribe_start] extra_fields["subscribe_to_started_threads"] = new_value if not "subscribe_to_replied_threads" in extra_fields: new_value = WATCH_DICT[settings.subscribe_reply] extra_fields["subscribe_to_replied_threads"] = new_value now = timezone.now() user = self.model(is_staff=False, is_superuser=False, last_login=now, joined_on=now, **extra_fields) user.set_username(username) user.set_email(email) user.set_password(password) if not "rank" in extra_fields: user.rank = Rank.objects.get_default() user.save(using=self._db) if set_default_avatar: avatars.set_default_avatar(user) user.avatar_hash = avatars.get_avatar_hash(user) else: user.avatar_hash = "abcdef01" authenticated_role = Role.objects.get(special_role="authenticated") if authenticated_role not in user.roles.all(): user.roles.add(authenticated_role) user.update_acl_key() user.save(update_fields=["avatar_hash", "acl_key"]) return user
def test_default_avatar_gravatar_fallback_dynamic(self): """default gravatar fails but fallback dynamic works""" gibberish_email = '%s@%s.%s' % ( get_random_string(6), get_random_string(6), get_random_string(3)) self.user.set_email(gibberish_email) self.user.save() self.assertNoAvatarIsSet() set_default_avatar(self.user, 'gravatar', 'dynamic') self.assertAvatarWasSet()
def test_default_avatar_gravatar_fallback_empty_gallery(self): """default both gravatar and fallback fail set""" gibberish_email = '%s@%s.%s' % ( get_random_string(6), get_random_string(6), get_random_string(3)) self.user.set_email(gibberish_email) self.user.save() self.assertNoAvatarIsSet() self.user.save() set_default_avatar(self.user, 'gravatar', 'gallery') self.assertAvatarWasSet()
def test_default_avatar_gravatar_fallback_empty_gallery(self): """default both gravatar and fallback fail set""" gibberish_email = '%s@%s.%s' % ( get_random_string(6), get_random_string(6), get_random_string(3) ) self.user.set_email(gibberish_email) self.user.save() self.assertNoAvatarIsSet() self.user.save() set_default_avatar(self.user, 'gravatar', 'gallery') self.assertAvatarWasSet()
def test_default_avatar_gravatar_fallback_dynamic(self): """default gravatar fails but fallback dynamic works""" gibberish_email = '%s@%s.%s' % ( get_random_string(6), get_random_string(6), get_random_string(3) ) self.user.set_email(gibberish_email) self.user.save() self.assertNoAvatarIsSet() set_default_avatar(self.user, 'gravatar', 'dynamic') self.assertAvatarWasSet()
def create_user(self, username, email, password=None, set_default_avatar=False, **extra_fields): from misago.users.validators import validate_email, validate_username email = self.normalize_email(email) username = self.model.normalize_username(username) if not email: raise ValueError(_("User must have an email address.")) if not password: raise ValueError(_("User must have a password.")) if not 'joined_from_ip' in extra_fields: extra_fields['joined_from_ip'] = '127.0.0.1' WATCH_DICT = { 'no': self.model.SUBSCRIBE_NONE, 'watch': self.model.SUBSCRIBE_NOTIFY, 'watch_email': self.model.SUBSCRIBE_ALL, } if not 'subscribe_to_started_threads' in extra_fields: new_value = WATCH_DICT[settings.subscribe_start] extra_fields['subscribe_to_started_threads'] = new_value if not 'subscribe_to_replied_threads' in extra_fields: new_value = WATCH_DICT[settings.subscribe_reply] extra_fields['subscribe_to_replied_threads'] = new_value extra_fields.update({'is_staff': False, 'is_superuser': False}) now = timezone.now() user = self.model(last_login=now, joined_on=now, **extra_fields) user.set_username(username) user.set_email(email) user.set_password(password) validate_username(username) validate_email(email) validate_password(password, user=user) if not 'rank' in extra_fields: user.rank = Rank.objects.get_default() user.save(using=self._db) if set_default_avatar: avatars.set_default_avatar(user, settings.default_avatar, settings.default_gravatar_fallback) else: # just for test purposes user.avatars = [{'size': 400, 'url': '/placekitten.com/400/400'}] authenticated_role = Role.objects.get(special_role='authenticated') if authenticated_role not in user.roles.all(): user.roles.add(authenticated_role) user.update_acl_key() user.save(update_fields=['avatars', 'acl_key']) # populate online tracker with default value Online.objects.create( user=user, current_ip=extra_fields['joined_from_ip'], last_click=now, ) return user
def create_user(self, username, email, password=None, set_default_avatar=False, **extra_fields): from misago.users.validators import (validate_email, validate_password, validate_username) with transaction.atomic(): if not email: raise ValueError(_("User must have an email address.")) if not password: raise ValueError(_("User must have a password.")) validate_username(username) validate_email(email) validate_password(password) if not 'joined_from_ip' in extra_fields: extra_fields['joined_from_ip'] = '127.0.0.1' WATCH_DICT = { 'no': AUTO_SUBSCRIBE_NONE, 'watch': AUTO_SUBSCRIBE_WATCH, 'watch_email': AUTO_SUBSCRIBE_WATCH_AND_EMAIL, } if not 'subscribe_to_started_threads' in extra_fields: new_value = WATCH_DICT[settings.subscribe_start] extra_fields['subscribe_to_started_threads'] = new_value if not 'subscribe_to_replied_threads' in extra_fields: new_value = WATCH_DICT[settings.subscribe_reply] extra_fields['subscribe_to_replied_threads'] = new_value now = timezone.now() user = self.model(is_staff=False, is_superuser=False, last_login=now, joined_on=now, **extra_fields) user.set_username(username) user.set_email(email) user.set_password(password) if not 'rank' in extra_fields: user.rank = Rank.objects.get_default() user.save(using=self._db) if set_default_avatar: avatars.set_default_avatar(user) user.avatar_hash = avatars.get_avatar_hash(user) else: user.avatar_hash = 'abcdef01' authenticated_role = Role.objects.get(special_role='authenticated') if authenticated_role not in user.roles.all(): user.roles.add(authenticated_role) user.update_acl_key() user.save(update_fields=['avatar_hash', 'acl_key']) return user
def create_user( self, username, email, password=None, set_default_avatar=False, **extra_fields ): from misago.users.validators import validate_email, validate_username email = self.normalize_email(email) username = self.model.normalize_username(username) if not email: raise ValueError(_("User must have an email address.")) if not password: raise ValueError(_("User must have a password.")) if not 'joined_from_ip' in extra_fields: extra_fields['joined_from_ip'] = '127.0.0.1' WATCH_DICT = { 'no': self.model.SUBSCRIBE_NONE, 'watch': self.model.SUBSCRIBE_NOTIFY, 'watch_email': self.model.SUBSCRIBE_ALL, } if not 'subscribe_to_started_threads' in extra_fields: new_value = WATCH_DICT[settings.subscribe_start] extra_fields['subscribe_to_started_threads'] = new_value if not 'subscribe_to_replied_threads' in extra_fields: new_value = WATCH_DICT[settings.subscribe_reply] extra_fields['subscribe_to_replied_threads'] = new_value extra_fields.update({'is_staff': False, 'is_superuser': False}) now = timezone.now() user = self.model(last_login=now, joined_on=now, **extra_fields) user.set_username(username) user.set_email(email) user.set_password(password) validate_username(username) validate_email(email) validate_password(password, user=user) if not 'rank' in extra_fields: user.rank = Rank.objects.get_default() user.save(using=self._db) if set_default_avatar: avatars.set_default_avatar( user, settings.default_avatar, settings.default_gravatar_fallback ) else: # just for test purposes user.avatars = [{'size': 400, 'url': '/placekitten.com/400/400'}] authenticated_role = Role.objects.get(special_role='authenticated') if authenticated_role not in user.roles.all(): user.roles.add(authenticated_role) user.update_acl_key() user.save(update_fields=['avatars', 'acl_key']) # populate online tracker with default value Online.objects.create( user=user, current_ip=extra_fields['joined_from_ip'], last_click=now, ) return user
def test_default_avatar_gravatar(self): """default gravatar gets set""" self.assertNoAvatarIsSet() set_default_avatar(self.user, 'gravatar', 'dynamic') self.assertAvatarWasSet()