def set_default_avatar(user): try: SET_DEFAULT_AVATAR[settings.default_avatar](user) except RuntimeError: if gallery.galleries_exist(): SET_DEFAULT_AVATAR[settings.default_gravatar_fallback](user) else: dynamic.set_avatar(user)
def handle(self, *args, **options): try: fake_users_to_create = int(args[0]) except IndexError: fake_users_to_create = 5 except ValueError: self.stderr.write("\nOptional argument should be integer.") sys.exit(1) fake = Factory.create() User = get_user_model() ranks = [r for r in Rank.objects.all()] message = 'Creating %s fake user accounts...\n' self.stdout.write(message % fake_users_to_create) message = '\n\nSuccessfully created %s fake user accounts in %s' created_count = 0 start_time = time.time() show_progress(self, created_count, fake_users_to_create) for i in range(fake_users_to_create): try: kwargs = { 'rank': random.choice(ranks), } user = User.objects.create_user(fake.first_name(), fake.email(), 'pass123', set_default_avatar=False, **kwargs) if random.randint(0, 100) > 90: dynamic.set_avatar(user) else: gallery.set_random_avatar(user) user.avatar_hash = get_avatar_hash(user) user.save(update_fields=['avatar_hash']) except (ValidationError, IntegrityError): pass else: created_count += 1 show_progress(self, created_count, fake_users_to_create, start_time) total_time = time.time() - start_time total_humanized = time.strftime('%H:%M:%S', time.gmtime(total_time)) self.stdout.write(message % (created_count, total_humanized))
def handle(self, *args, **options): try: fake_users_to_create = int(args[0]) except IndexError: fake_users_to_create = 5 except ValueError: self.stderr.write("\nOptional argument should be integer.") sys.exit(1) fake = Factory.create() User = get_user_model() ranks = [r for r in Rank.objects.all()] message = 'Creating %s fake user accounts...\n' self.stdout.write(message % fake_users_to_create) message = '\n\nSuccessfully created %s fake user accounts in %s' created_count = 0 start_time = time.time() show_progress(self, created_count, fake_users_to_create) for i in range(fake_users_to_create): try: kwargs = { 'rank': random.choice(ranks), } user = User.objects.create_user( fake.first_name(), fake.email(), 'pass123', set_default_avatar=False, **kwargs) if random.randint(0, 100) > 90: dynamic.set_avatar(user) else: gallery.set_random_avatar(user) user.avatar_hash = get_avatar_hash(user) user.save(update_fields=['avatar_hash']) except (ValidationError, IntegrityError): pass else: created_count += 1 show_progress( self, created_count, fake_users_to_create, start_time) total_time = time.time() - start_time total_humanized = time.strftime('%H:%M:%S', time.gmtime(total_time)) self.stdout.write(message % (created_count, total_humanized))
def handle(self, *args, **options): items_to_create = options['users'] fake = Factory.create() ranks = [r for r in Rank.objects.all()] message = 'Creating %s fake user accounts...\n' self.stdout.write(message % items_to_create) created_count = 0 start_time = time.time() show_progress(self, created_count, items_to_create) while created_count < items_to_create: try: possible_usernames = [ fake.first_name(), fake.last_name(), fake.name().replace(' ', ''), fake.user_name(), ] user = UserModel.objects.create_user( random.choice(possible_usernames), fake.email(), 'pass123', set_default_avatar=False, rank=random.choice(ranks), ) dynamic.set_avatar(user) user.save(update_fields=['avatars']) except (ValidationError, IntegrityError): pass else: created_count += 1 show_progress(self, created_count, items_to_create, start_time) total_time = time.time() - start_time total_humanized = time.strftime('%H:%M:%S', time.gmtime(total_time)) message = '\n\nSuccessfully created %s fake user accounts in %s' self.stdout.write(message % (created_count, total_humanized))
def handle(self, *args, **options): items_to_create = options['users'] fake = Factory.create() ranks = [r for r in Rank.objects.all()] message = 'Creating %s fake user accounts...\n' self.stdout.write(message % items_to_create) message = '\n\nSuccessfully created %s fake user accounts in %s' created_count = 0 start_time = time.time() show_progress(self, created_count, items_to_create) while created_count < items_to_create: try: kwargs = { 'rank': random.choice(ranks), } user = UserModel.objects.create_user(fake.first_name(), fake.email(), 'pass123', set_default_avatar=False, **kwargs) if random.randint(0, 100) > 90: dynamic.set_avatar(user) else: gallery.set_random_avatar(user) user.save(update_fields=['avatars']) except (ValidationError, IntegrityError): pass else: created_count += 1 show_progress(self, created_count, items_to_create, start_time) total_time = time.time() - start_time total_humanized = time.strftime('%H:%M:%S', time.gmtime(total_time)) self.stdout.write(message % (created_count, total_humanized))
def move_avatars(stdout, style): for old_user in fetch_assoc('SELECT * FROM misago_user ORDER BY id'): user = UserModel.objects.get(pk=movedids.get('user', old_user['id'])) if old_user['avatar_ban'] or old_user['avatar_type'] == 'gallery': dynamic.set_avatar(user) else: if old_user['avatar_type'] == 'gravatar': try: gravatar.set_avatar(user) except gravatar.GravatarError: dynamic.set_avatar(user) print_warning('%s: failed to download Gravatar' % user, stdout, style) else: try: if not old_user['avatar_original'] or not old_user[ 'avatar_crop']: raise ValidationError("Invalid avatar upload data.") image_path = os.path.join(OLD_FORUM['MEDIA'], 'avatars', old_user['avatar_original']) image = uploaded.validate_dimensions(image_path) cleaned_crop = convert_crop(image, old_user) uploaded.clean_crop(image, cleaned_crop) store.store_temporary_avatar(user, image) uploaded.crop_source_image(user, 'tmp', cleaned_crop) except ValidationError as e: dynamic.set_avatar(user) print_warning('%s: %s' % (user, e.args[0]), stdout, style) user.save()
def handle(self, *args, **options): items_to_create = options['users'] fake = Factory.create() ranks = [r for r in Rank.objects.all()] message = 'Creating %s fake user accounts...\n' self.stdout.write(message % items_to_create) message = '\n\nSuccessfully created %s fake user accounts in %s' created_count = 0 start_time = time.time() show_progress(self, created_count, items_to_create) while created_count < items_to_create: try: user = UserModel.objects.create_user( fake.first_name(), fake.email(), 'pass123', set_default_avatar=False, rank=random.choice(ranks), ) if random.randint(0, 100) > 90: dynamic.set_avatar(user) else: gallery.set_random_avatar(user) user.save(update_fields=['avatars']) except (ValidationError, IntegrityError): pass else: created_count += 1 show_progress(self, created_count, items_to_create, start_time) total_time = time.time() - start_time total_humanized = time.strftime('%H:%M:%S', time.gmtime(total_time)) self.stdout.write(message % (created_count, total_humanized))
def test_delete_avatar_on_delete(self): """account deletion for user also deletes their avatar file""" user = User.objects.create_user('Bob', '*****@*****.**', 'Pass.123') dynamic.set_avatar(user) user.save() user_avatars = [] for avatar in user.avatar_set.all(): avatar_path = Path(avatar.image.path) self.assertTrue(avatar_path.exists()) self.assertTrue(avatar_path.isfile()) user_avatars.append(avatar) self.assertNotEqual(user_avatars, []) user.delete() for removed_avatar in user_avatars: avatar_path = Path(removed_avatar.image.path) self.assertFalse(avatar_path.exists()) self.assertFalse(avatar_path.isfile()) with self.assertRaises(Avatar.DoesNotExist): Avatar.objects.get(pk=removed_avatar.pk)
def test_dynamic_avatar(self): """dynamic avatar gets created""" self.assertNoAvatarIsSet() dynamic.set_avatar(self.user) self.assertAvatarWasSet()