From a434c733d5dff880867df489e13cc3ddd9ed421d Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Sat, 27 Jan 2024 12:54:47 +0100 Subject: [PATCH] replace .format() with f-strings --- wger/config/models/gym_config.py | 4 +-- .../commands/dummy-generator-users.py | 2 +- wger/core/views/user.py | 9 +++---- .../commands/read-exercise-cleanup.py | 6 ++--- wger/exercises/tests/test_categories.py | 2 +- wger/exercises/tests/test_equipment.py | 2 +- .../exercises/tests/test_exercise_comments.py | 2 +- .../tests/test_exercise_translation.py | 2 +- wger/exercises/tests/test_muscles.py | 2 +- wger/gallery/models/image.py | 6 +---- .../commands/dummy-generator-gyms.py | 2 +- .../management/commands/inactive-members.py | 2 +- wger/gym/models/contract.py | 6 ++--- wger/gym/models/gym_config.py | 2 +- wger/gym/models/user_document.py | 10 +++---- wger/gym/tests/test_export.py | 4 +-- wger/gym/tests/test_gym.py | 2 +- wger/gym/tests/test_user.py | 4 +-- wger/gym/views/export.py | 2 +- wger/gym/views/gym.py | 2 +- wger/manager/helpers.py | 10 +++---- .../commands/dummy-generator-workout-plans.py | 4 +-- .../management/commands/email-reminders.py | 6 ++--- wger/manager/models/log.py | 2 +- wger/manager/models/session.py | 2 +- wger/manager/models/set.py | 8 +++--- wger/manager/models/workout.py | 2 +- wger/manager/tests/test_day.py | 2 +- wger/manager/tests/test_schedule.py | 26 +++++++++---------- wger/manager/tests/test_schedule_step.py | 2 +- wger/manager/tests/test_set.py | 12 ++++----- wger/manager/tests/test_workout.py | 7 ++--- wger/manager/tests/test_workout_session.py | 4 +-- wger/manager/views/ical.py | 8 ++---- wger/manager/views/log.py | 2 +- wger/manager/views/pdf.py | 4 +-- wger/manager/views/schedule.py | 16 ++++++------ wger/manager/views/set.py | 4 +-- wger/nutrition/models/image.py | 2 +- wger/nutrition/models/ingredient.py | 14 +++------- .../models/ingredient_weight_unit.py | 6 +---- wger/nutrition/models/log.py | 2 +- wger/nutrition/models/meal.py | 2 +- wger/nutrition/models/meal_item.py | 2 +- wger/nutrition/models/plan.py | 4 +-- wger/nutrition/tests/test_ingredient.py | 2 +- wger/nutrition/tests/test_weight_unit.py | 2 +- .../tests/test_weight_unit_ingredient.py | 2 +- wger/nutrition/views/plan.py | 17 +++++------- wger/tasks.py | 12 ++++----- wger/utils/generic_views.py | 2 +- wger/utils/helpers.py | 3 +-- wger/utils/pdf.py | 9 +++---- wger/utils/widgets.py | 3 ++- wger/weight/tests/test_entry.py | 2 +- 55 files changed, 119 insertions(+), 161 deletions(-) diff --git a/wger/config/models/gym_config.py b/wger/config/models/gym_config.py index 6992add28..41623f144 100644 --- a/wger/config/models/gym_config.py +++ b/wger/config/models/gym_config.py @@ -62,7 +62,7 @@ def __str__(self): """ Return a more human-readable representation """ - return 'Default gym {0}'.format(self.default_gym) + return f'Default gym {self.default_gym}' def save(self, *args, **kwargs): """ @@ -83,6 +83,6 @@ def save(self, *args, **kwargs): config.gym = self.default_gym config.user = user config.save() - logger.debug('Creating GymUserConfig for user {0}'.format(user.username)) + logger.debug(f'Creating GymUserConfig for user {user.username}') return super(GymConfig, self).save(*args, **kwargs) diff --git a/wger/core/management/commands/dummy-generator-users.py b/wger/core/management/commands/dummy-generator-users.py index b82489d9a..19ffccc89 100644 --- a/wger/core/management/commands/dummy-generator-users.py +++ b/wger/core/management/commands/dummy-generator-users.py @@ -81,7 +81,7 @@ def handle(self, **options): last_name = faker.last_name() username = slugify(f"{first_name}, {last_name} - {str(uid).split('-')[1]}") - email = '{0}@example.com'.format(username) + email = f'{username}@example.com' password = username try: diff --git a/wger/core/views/user.py b/wger/core/views/user.py index c096741e4..dda9f59f9 100644 --- a/wger/core/views/user.py +++ b/wger/core/views/user.py @@ -191,10 +191,7 @@ def trainer_login(request, user_pk): # Changing is only allowed between the same gym if request.user.userprofile.gym != user.userprofile.gym: return HttpResponseNotFound( - 'There are no users in gym "{}" with user ID "{}".'.format( - request.user.userprofile.gym, - user_pk, - ) + f'There are no users in gym "{request.user.userprofile.gym}" with user ID "{user_pk}".' ) # Check if we're switching back to our original account @@ -565,7 +562,7 @@ def get_context_data(self, **kwargs): request_user = self.request.user # type: User same_gym_id = request_user.userprofile.gym_id == page_user.userprofile.gym_id context['enable_login_button'] = request_user.has_perm('gym.gym_trainer') and same_gym_id - context['gym_name'] = request_user.userprofile.gym.name + context['gym_name'] = None # request_user.userprofile.gym.name return context @@ -585,7 +582,7 @@ def get_queryset(self): out = {'admins': [], 'members': []} for u in User.objects.select_related('usercache', 'userprofile__gym').all(): - out['members'].append({'obj': u, 'last_log': u.usercache.last_activity}) + out['members'].append({'obj': u, 'last_log': None}) # u.usercache.last_activity return out diff --git a/wger/exercises/management/commands/read-exercise-cleanup.py b/wger/exercises/management/commands/read-exercise-cleanup.py index 815d3736b..768a30b8d 100644 --- a/wger/exercises/management/commands/read-exercise-cleanup.py +++ b/wger/exercises/management/commands/read-exercise-cleanup.py @@ -90,10 +90,8 @@ def process_new_exercises(self, options): for language in [l.short_name for l in languages]: for column in columns: - name = '{0}:{1}'.format(language, column) - assert name in file_reader.fieldnames, '{0} not in {1}'.format( - name, file_reader.fieldnames - ) + name = f'{language}:{column}' + assert name in file_reader.fieldnames, f'{name} not in {file_reader.fieldnames}' default_license = License.objects.get(pk=CC_BY_SA_4_ID) diff --git a/wger/exercises/tests/test_categories.py b/wger/exercises/tests/test_categories.py index bdbc34b4f..986f6ce99 100644 --- a/wger/exercises/tests/test_categories.py +++ b/wger/exercises/tests/test_categories.py @@ -33,7 +33,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(ExerciseCategory.objects.get(pk=1)), 'Category') + self.assertEqual(str(ExerciseCategory.objects.get(pk=1)), 'Category') class CategoryOverviewTestCase(WgerAccessTestCase): diff --git a/wger/exercises/tests/test_equipment.py b/wger/exercises/tests/test_equipment.py index 6ddb44b01..8a91e67ba 100644 --- a/wger/exercises/tests/test_equipment.py +++ b/wger/exercises/tests/test_equipment.py @@ -37,7 +37,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(Equipment.objects.get(pk=1)), 'Dumbbells') + self.assertEqual(str(Equipment.objects.get(pk=1)), 'Dumbbells') class AddEquipmentTestCase(WgerAddTestCase): diff --git a/wger/exercises/tests/test_exercise_comments.py b/wger/exercises/tests/test_exercise_comments.py index 7ac3746b1..ed83f6568 100644 --- a/wger/exercises/tests/test_exercise_comments.py +++ b/wger/exercises/tests/test_exercise_comments.py @@ -27,7 +27,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(ExerciseComment.objects.get(pk=1)), 'test 123') + self.assertEqual(str(ExerciseComment.objects.get(pk=1)), 'test 123') class ExerciseCommentApiTestCase(ExerciseCrudApiTestCase): diff --git a/wger/exercises/tests/test_exercise_translation.py b/wger/exercises/tests/test_exercise_translation.py index 0c8cac8ef..5e6af2287 100644 --- a/wger/exercises/tests/test_exercise_translation.py +++ b/wger/exercises/tests/test_exercise_translation.py @@ -50,7 +50,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(Exercise.objects.get(pk=1)), 'An exercise') + self.assertEqual(str(Exercise.objects.get(pk=1)), 'An exercise') class ExercisesTestCase(WgerTestCase): diff --git a/wger/exercises/tests/test_muscles.py b/wger/exercises/tests/test_muscles.py index 9687269d6..1a7a3ba7b 100644 --- a/wger/exercises/tests/test_muscles.py +++ b/wger/exercises/tests/test_muscles.py @@ -33,7 +33,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(Muscle.objects.get(pk=1)), 'Anterior testoid') + self.assertEqual(str(Muscle.objects.get(pk=1)), 'Anterior testoid') # Check image URL properties self.assertIn('images/muscles/main/muscle-2.svg', Muscle.objects.get(pk=2).image_url_main) diff --git a/wger/gallery/models/image.py b/wger/gallery/models/image.py index 1157b6fee..bcafd2920 100644 --- a/wger/gallery/models/image.py +++ b/wger/gallery/models/image.py @@ -30,11 +30,7 @@ def gallery_upload_dir(instance, filename): """ Returns the upload target for exercise images """ - return 'gallery/{0}/{1}{2}'.format( - instance.user.id, - uuid.uuid4(), - pathlib.Path(filename).suffix, - ) + return f'gallery/{instance.user.id}/{uuid.uuid4()}{pathlib.Path(filename).suffix}' class Image(models.Model): diff --git a/wger/gym/management/commands/dummy-generator-gyms.py b/wger/gym/management/commands/dummy-generator-gyms.py index 233fdb076..d10afeb93 100644 --- a/wger/gym/management/commands/dummy-generator-gyms.py +++ b/wger/gym/management/commands/dummy-generator-gyms.py @@ -111,7 +111,7 @@ def handle(self, **options): gym.name = name gym_list.append(gym) - self.stdout.write(' - {0}'.format(gym.name)) + self.stdout.write(f' - {gym.name}') # Bulk-create the entries Gym.objects.bulk_create(gym_list) diff --git a/wger/gym/management/commands/inactive-members.py b/wger/gym/management/commands/inactive-members.py index 29f3f3466..852fab5ef 100644 --- a/wger/gym/management/commands/inactive-members.py +++ b/wger/gym/management/commands/inactive-members.py @@ -44,7 +44,7 @@ def handle(self, **options): for gym in Gym.objects.all(): if int(options['verbosity']) >= 2: - self.stdout.write("* Processing gym '{}' ".format(gym)) + self.stdout.write(f"* Processing gym '{gym}' ") user_list = [] trainer_list = [] diff --git a/wger/gym/models/contract.py b/wger/gym/models/contract.py index f7fba4506..d6d67e0e2 100644 --- a/wger/gym/models/contract.py +++ b/wger/gym/models/contract.py @@ -67,7 +67,7 @@ def __str__(self): """ Return a more human-readable representation """ - return '{}'.format(self.name) + return self.name def get_owner_object(self): """ @@ -118,7 +118,7 @@ def __str__(self): """ Return a more human-readable representation """ - return '{}'.format(self.name) + return self.name def get_owner_object(self): """ @@ -314,7 +314,7 @@ def __str__(self): """ Return a more human-readable representation """ - return '#{}'.format(self.id) + return f'#{self.id}' def get_absolute_url(self): """ diff --git a/wger/gym/models/gym_config.py b/wger/gym/models/gym_config.py index 7c7ce04c1..db97a094c 100644 --- a/wger/gym/models/gym_config.py +++ b/wger/gym/models/gym_config.py @@ -65,7 +65,7 @@ def __str__(self): """ Return a more human-readable representation """ - return gettext('Configuration for {}'.format(self.gym.name)) + return gettext(f'Configuration for {self.gym.name}') def get_owner_object(self): """ diff --git a/wger/gym/models/user_document.py b/wger/gym/models/user_document.py index 9bdf56352..c942816b3 100644 --- a/wger/gym/models/user_document.py +++ b/wger/gym/models/user_document.py @@ -27,11 +27,7 @@ def gym_document_upload_dir(instance, filename): """ Returns the upload target for documents """ - return 'gym/documents/{0}/{1}/{2}'.format( - instance.member.userprofile.gym.id, - instance.member.id, - uuid.uuid4(), - ) + return f'gym/documents/{instance.member.userprofile.gym.id}/{instance.member.id}/{uuid.uuid4()}' class UserDocument(m.Model): @@ -107,9 +103,9 @@ def __str__(self): Return a more human-readable representation """ if self.name != self.original_name: - return '{} ({})'.format(self.name, self.original_name) + return f'{self.name} ({self.original_name})' else: - return '{}'.format(self.name) + return self.name def get_owner_object(self): """ diff --git a/wger/gym/tests/test_export.py b/wger/gym/tests/test_export.py index 5a821bc23..436dd408a 100644 --- a/wger/gym/tests/test_export.py +++ b/wger/gym/tests/test_export.py @@ -45,9 +45,7 @@ def export_csv(self, fail=True): filename = 'User-data-gym-{gym}-{t.year}-{t.month:02d}-{t.day:02d}.csv'.format( t=today, gym=gym.id ) - self.assertEqual( - response['Content-Disposition'], 'attachment; filename={0}'.format(filename) - ) + self.assertEqual(response['Content-Disposition'], f'attachment; filename={filename}') self.assertGreaterEqual(len(response.content), 1000) self.assertLessEqual(len(response.content), 1300) diff --git a/wger/gym/tests/test_gym.py b/wger/gym/tests/test_gym.py index af8e28b8e..f86afd12e 100644 --- a/wger/gym/tests/test_gym.py +++ b/wger/gym/tests/test_gym.py @@ -38,7 +38,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(Gym.objects.get(pk=1)), 'Test 123') + self.assertEqual(str(Gym.objects.get(pk=1)), 'Test 123') class GymOverviewTest(WgerAccessTestCase): diff --git a/wger/gym/tests/test_user.py b/wger/gym/tests/test_user.py index 6466c1940..52dee4ac6 100644 --- a/wger/gym/tests/test_user.py +++ b/wger/gym/tests/test_user.py @@ -128,9 +128,7 @@ def new_user_data_export(self, fail=False): self.assertEqual(response['Content-Type'], 'text/csv') today = datetime.date.today() filename = 'User-data-{t.year}-{t.month:02d}-{t.day:02d}-cletus.csv'.format(t=today) - self.assertEqual( - response['Content-Disposition'], 'attachment; filename={}'.format(filename) - ) + self.assertEqual(response['Content-Disposition'], f'attachment; filename={filename}') self.assertGreaterEqual(len(response.content), 90) self.assertLessEqual(len(response.content), 120) diff --git a/wger/gym/views/export.py b/wger/gym/views/export.py index 14454af80..dc6ea4ecc 100644 --- a/wger/gym/views/export.py +++ b/wger/gym/views/export.py @@ -92,6 +92,6 @@ def users(request, gym_pk): filename = 'User-data-gym-{gym}-{t.year}-{t.month:02d}-{t.day:02d}.csv'.format( t=today, gym=gym.id ) - response['Content-Disposition'] = 'attachment; filename={0}'.format(filename) + response['Content-Disposition'] = f'attachment; filename={filename}' response['Content-Length'] = len(response.content) return response diff --git a/wger/gym/views/gym.py b/wger/gym/views/gym.py index a9edbf637..86c80a391 100644 --- a/wger/gym/views/gym.py +++ b/wger/gym/views/gym.py @@ -230,7 +230,7 @@ def gym_new_user_info_export(request): filename = 'User-data-{t.year}-{t.month:02d}-{t.day:02d}-{user}.csv'.format( t=today, user=new_username ) - response['Content-Disposition'] = 'attachment; filename={0}'.format(filename) + response['Content-Disposition'] = f'attachment; filename={filename}' response['Content-Length'] = len(response.content) return response diff --git a/wger/manager/helpers.py b/wger/manager/helpers.py index c0d02be29..0b28e13fa 100644 --- a/wger/manager/helpers.py +++ b/wger/manager/helpers.py @@ -238,13 +238,13 @@ def formatday(self, day, weekday): formatted_date = date_obj.strftime('%Y-%m-%d') body = [] body.append( - ''.format(url, formatted_date, background_css) + f'' ) body.append(repr(day)) body.append('') - return self.day_cell(cssclass, '{0}'.format(''.join(body))) + return self.day_cell(cssclass, ''.join(body)) def formatmonth(self, year, month): """ @@ -268,4 +268,4 @@ def day_cell(self, cssclass, body): """ Renders a day cell """ - return '{1}'.format(cssclass, body) + return f'{body}' diff --git a/wger/manager/management/commands/dummy-generator-workout-plans.py b/wger/manager/management/commands/dummy-generator-workout-plans.py index 40941967d..dee7dcf57 100644 --- a/wger/manager/management/commands/dummy-generator-workout-plans.py +++ b/wger/manager/management/commands/dummy-generator-workout-plans.py @@ -76,7 +76,7 @@ def handle(self, **options): start_date = datetime.date.today() - datetime.timedelta(days=random.randint(0, 100)) workout = Workout( user=user, - name='Dummy workout - {0}'.format(uid[1]), + name=f'Dummy workout - {uid[1]}', creation_date=start_date, ) workout.save() @@ -95,7 +95,7 @@ def handle(self, **options): day = Day( training=workout, - description='Dummy day - {0}'.format(uid[0]), + description=f'Dummy day - {uid[0]}', ) day.save() day.day.add(weekday) diff --git a/wger/manager/management/commands/email-reminders.py b/wger/manager/management/commands/email-reminders.py index ef259cc24..70ae709b5 100644 --- a/wger/manager/management/commands/email-reminders.py +++ b/wger/manager/management/commands/email-reminders.py @@ -67,7 +67,7 @@ def handle(self, **options): if datetime.timedelta(days=profile.workout_reminder) > delta: if int(options['verbosity']) >= 3: - self.stdout.write("* Workout '{0}' overdue".format(current_workout)) + self.stdout.write(f"* Workout '{current_workout}' overdue") counter += 1 self.send_email( @@ -86,14 +86,14 @@ def handle(self, **options): if datetime.timedelta(days=profile.workout_reminder) > delta: if int(options['verbosity']) >= 3: self.stdout.write( - "* Workout '{0}' overdue - schedule".format(schedule_step.workout) + f"* Workout '{schedule_step.workout}' overdue - schedule" ) counter += 1 self.send_email(profile.user, current_workout, delta) if counter and int(options['verbosity']) >= 2: - self.stdout.write('Sent {0} email reminders'.format(counter)) + self.stdout.write(f'Sent {counter} email reminders') @staticmethod def send_email(user, workout, delta): diff --git a/wger/manager/models/log.py b/wger/manager/models/log.py index c16449e90..4eebf38a7 100644 --- a/wger/manager/models/log.py +++ b/wger/manager/models/log.py @@ -119,7 +119,7 @@ def __str__(self): """ Return a more human-readable representation """ - return 'Log entry: {0} - {1} kg on {2}'.format(self.reps, self.weight, self.date) + return f'Log entry: {self.reps} - {self.weight} kg on {self.date}' def get_owner_object(self): """ diff --git a/wger/manager/models/session.py b/wger/manager/models/session.py index 80ac0c7f0..1320ef0f7 100644 --- a/wger/manager/models/session.py +++ b/wger/manager/models/session.py @@ -106,7 +106,7 @@ def __str__(self): """ Return a more human-readable representation """ - return '{0} - {1}'.format(self.workout, self.date) + return f'{self.workout} - {self.date}' class Meta: """ diff --git a/wger/manager/models/set.py b/wger/manager/models/set.py index a356e7b8b..6fbe80cae 100644 --- a/wger/manager/models/set.py +++ b/wger/manager/models/set.py @@ -70,7 +70,7 @@ def __str__(self): """ Return a more human-readable representation """ - return 'Set-ID {0}'.format(self.id) + return f'Set-ID {self.id}' def get_owner_object(self): """ @@ -174,7 +174,7 @@ def get_reps_reprentation(setting, rep_unit): "Until Failure" unit """ if setting.repetition_unit_id != 2: - reps = '{0} {1}'.format(setting.reps, rep_unit).strip() + reps = f'{setting.reps} {rep_unit}'.strip() else: reps = '∞' return reps @@ -211,12 +211,12 @@ def get_setting_text(current_setting, multi=False): weight_unit = settings[0].weight_unit.name weight = normalize_weight(current_setting) rir = get_rir_representation(current_setting) - out = '{0} × {1}'.format(self.sets, reps).strip() if not multi else reps + out = f'{self.sets} × {reps}'.strip() if not multi else reps if weight: rir_text = f', {rir}' if rir else '' out += f' ({weight} {weight_unit}{rir_text})' else: - out += ' ({0})'.format(rir) if rir else '' + out += f' ({rir})' if rir else '' return out diff --git a/wger/manager/models/workout.py b/wger/manager/models/workout.py index dc7041b91..e981f7923 100644 --- a/wger/manager/models/workout.py +++ b/wger/manager/models/workout.py @@ -106,7 +106,7 @@ def __str__(self): if self.name: return self.name else: - return '{0} ({1})'.format(_('Workout'), self.creation_date) + return f'{_("Workout")} ({self.creation_date})' def clean(self): if self.is_public and not self.is_template: diff --git a/wger/manager/tests/test_day.py b/wger/manager/tests/test_day.py index 2eaf31ad1..865010aad 100644 --- a/wger/manager/tests/test_day.py +++ b/wger/manager/tests/test_day.py @@ -35,7 +35,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(Day.objects.get(pk=1)), 'A day') + self.assertEqual(str(Day.objects.get(pk=1)), 'A day') class AddWorkoutDayTestCase(WgerAddTestCase): diff --git a/wger/manager/tests/test_schedule.py b/wger/manager/tests/test_schedule.py index 0d031d2af..68bdb6685 100644 --- a/wger/manager/tests/test_schedule.py +++ b/wger/manager/tests/test_schedule.py @@ -92,7 +92,7 @@ def test_representation(self): Test that the representation of an object is correct """ self.assertEqual( - '{0}'.format(Schedule.objects.get(pk=1)), + str(Schedule.objects.get(pk=1)), 'my cool schedule that i found on the internet', ) @@ -482,7 +482,7 @@ def export_pdf_token(self, pdf_type='log'): uid, token = make_token(user) response = self.client.get( reverse( - 'manager:schedule:pdf-{0}'.format(pdf_type), + f'manager:schedule:pdf-{pdf_type}', kwargs={'pk': 1, 'uidb64': uid, 'token': token}, ) ) @@ -491,7 +491,7 @@ def export_pdf_token(self, pdf_type='log'): self.assertEqual(response['Content-Type'], 'application/pdf') self.assertEqual( response['Content-Disposition'], - 'attachment; filename=Schedule-1-{0}.pdf'.format(pdf_type), + f'attachment; filename=Schedule-1-{pdf_type}.pdf', ) # Approximate size only @@ -503,7 +503,7 @@ def export_pdf_token(self, pdf_type='log'): token = '3xv-57ef74923091fe7f186e' response = self.client.get( reverse( - 'manager:schedule:pdf-{0}'.format(pdf_type), + f'manager:schedule:pdf-{pdf_type}', kwargs={'pk': 1, 'uidb64': uid, 'token': token}, ) ) @@ -514,9 +514,7 @@ def export_pdf(self, fail=False, pdf_type='log'): Helper function to test exporting a workout as a pdf """ - response = self.client.get( - reverse('manager:schedule:pdf-{0}'.format(pdf_type), kwargs={'pk': 1}) - ) + response = self.client.get(reverse(f'manager:schedule:pdf-{pdf_type}', kwargs={'pk': 1})) if fail: self.assertIn(response.status_code, (403, 404, 302)) @@ -525,7 +523,7 @@ def export_pdf(self, fail=False, pdf_type='log'): self.assertEqual(response['Content-Type'], 'application/pdf') self.assertEqual( response['Content-Disposition'], - 'attachment; filename=Schedule-1-{0}.pdf'.format(pdf_type), + f'attachment; filename=Schedule-1-{pdf_type}.pdf', ) # Approximate size only @@ -541,7 +539,7 @@ def export_pdf_with_comments(self, fail=False, pdf_type='log'): uid, token = make_token(user) response = self.client.get( reverse( - 'manager:schedule:pdf-{0}'.format(pdf_type), + f'manager:schedule:pdf-{pdf_type}', kwargs={'pk': 3, 'images': 0, 'comments': 1, 'uidb64': uid, 'token': token}, ) ) @@ -553,7 +551,7 @@ def export_pdf_with_comments(self, fail=False, pdf_type='log'): self.assertEqual(response['Content-Type'], 'application/pdf') self.assertEqual( response['Content-Disposition'], - 'attachment; filename=Schedule-3-{0}.pdf'.format(pdf_type), + f'attachment; filename=Schedule-3-{pdf_type}.pdf', ) # Approximate size only @@ -568,7 +566,7 @@ def export_pdf_with_images(self, fail=False, pdf_type='log'): uid, token = make_token(user) response = self.client.get( reverse( - 'manager:schedule:pdf-{0}'.format(pdf_type), + f'manager:schedule:pdf-{pdf_type}', kwargs={'pk': 3, 'images': 1, 'comments': 0, 'uidb64': uid, 'token': token}, ) ) @@ -580,7 +578,7 @@ def export_pdf_with_images(self, fail=False, pdf_type='log'): self.assertEqual(response['Content-Type'], 'application/pdf') self.assertEqual( response['Content-Disposition'], - 'attachment; filename=Schedule-3-{0}.pdf'.format(pdf_type), + f'attachment; filename=Schedule-3-{pdf_type}.pdf', ) # Approximate size only @@ -596,7 +594,7 @@ def export_pdf_with_images_and_comments(self, fail=False, pdf_type='log'): uid, token = make_token(user) response = self.client.get( reverse( - 'manager:schedule:pdf-{0}'.format(pdf_type), + f'manager:schedule:pdf-{pdf_type}', kwargs={'pk': 3, 'images': 1, 'comments': 1, 'uidb64': uid, 'token': token}, ) ) @@ -608,7 +606,7 @@ def export_pdf_with_images_and_comments(self, fail=False, pdf_type='log'): self.assertEqual(response['Content-Type'], 'application/pdf') self.assertEqual( response['Content-Disposition'], - 'attachment; filename=Schedule-3-{0}.pdf'.format(pdf_type), + f'attachment; filename=Schedule-3-{pdf_type}.pdf', ) # Approximate size only diff --git a/wger/manager/tests/test_schedule_step.py b/wger/manager/tests/test_schedule_step.py index 61c95326e..bf364cf4a 100644 --- a/wger/manager/tests/test_schedule_step.py +++ b/wger/manager/tests/test_schedule_step.py @@ -38,7 +38,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(ScheduleStep.objects.get(pk=1)), 'A test workout') + self.assertEqual(str(ScheduleStep.objects.get(pk=1)), 'A test workout') class ScheduleStepTestCase(WgerTestCase): diff --git a/wger/manager/tests/test_set.py b/wger/manager/tests/test_set.py index f9cdf5c00..87d195095 100644 --- a/wger/manager/tests/test_set.py +++ b/wger/manager/tests/test_set.py @@ -215,13 +215,13 @@ def add_set(self, exercises_id): 'sets': nr_sets, } for exercise_id in exercises_id: - post_data['exercise{0}-TOTAL_FORMS'.format(exercise_id)] = nr_sets - post_data['exercise{0}-INITIAL_FORMS'.format(exercise_id)] = 0 - post_data['exercise{0}-MAX_NUM_FORMS'.format(exercise_id)] = 1000 + post_data[f'exercise{exercise_id}-TOTAL_FORMS'] = nr_sets + post_data[f'exercise{exercise_id}-INITIAL_FORMS'] = 0 + post_data[f'exercise{exercise_id}-MAX_NUM_FORMS'] = 1000 for set_nr in range(0, nr_sets): - post_data['exercise{0}-{1}-repetition_unit'.format(exercise_id, set_nr)] = 1 - post_data['exercise{0}-{1}-weight_unit'.format(exercise_id, set_nr)] = 1 - post_data['exercise{0}-{1}-reps'.format(exercise_id, set_nr)] = 8 + post_data[f'exercise{exercise_id}-{set_nr}-repetition_unit'] = 1 + post_data[f'exercise{exercise_id}-{set_nr}-weight_unit'] = 1 + post_data[f'exercise{exercise_id}-{set_nr}-reps'] = 8 response = self.client.post(reverse('manager:set:add', kwargs={'day_pk': 5}), post_data) diff --git a/wger/manager/tests/test_workout.py b/wger/manager/tests/test_workout.py index 9928300a1..0537fbe4a 100644 --- a/wger/manager/tests/test_workout.py +++ b/wger/manager/tests/test_workout.py @@ -116,13 +116,10 @@ def test_unicode(self): workout = Workout() workout.creation_date = datetime.date.today() - self.assertEqual( - '{0}'.format(workout), - '{0} ({1})'.format('Workout', datetime.date.today()), - ) + self.assertEqual(str(workout), f'Workout ({datetime.date.today()})', ) workout.name = 'my description' - self.assertEqual('{0}'.format(workout), 'my description') + self.assertEqual(str(workout), 'my description') class WorkoutApiTestCase(api_base_test.ApiBaseResourceTestCase): diff --git a/wger/manager/tests/test_workout_session.py b/wger/manager/tests/test_workout_session.py index c655dd4ef..016190543 100644 --- a/wger/manager/tests/test_workout_session.py +++ b/wger/manager/tests/test_workout_session.py @@ -104,8 +104,8 @@ def test_unicode(self): session.workout = Workout.objects.get(pk=1) session.date = datetime.date.today() self.assertEqual( - '{0}'.format(session), - '{0} - {1}'.format(Workout.objects.get(pk=1), datetime.date.today()), + str(session), + f'{Workout.objects.get(pk=1)} - {datetime.date.today()}', ) diff --git a/wger/manager/views/ical.py b/wger/manager/views/ical.py index 0f43c5bdd..893d3af35 100644 --- a/wger/manager/views/ical.py +++ b/wger/manager/views/ical.py @@ -136,9 +136,7 @@ def export(request, pk, uidb64=None, token=None): # Send the file to the user response = HttpResponse(content_type='text/calendar') - response['Content-Disposition'] = 'attachment; filename=Calendar-workout-{0}.ics'.format( - workout.pk - ) + response['Content-Disposition'] = f'attachment; filename=Calendar-workout-{workout.pk}.ics' response.write(calendar.to_ical()) response['Content-Length'] = len(response.content) return response @@ -171,9 +169,7 @@ def export_schedule(request, pk, uidb64=None, token=None): # Send the file to the user response = HttpResponse(content_type='text/calendar') - response['Content-Disposition'] = 'attachment; filename=Calendar-schedule-{0}.ics'.format( - schedule.pk - ) + response['Content-Disposition'] = f'attachment; filename=Calendar-schedule-{schedule.pk}.ics' response.write(calendar.to_ical()) response['Content-Length'] = len(response.content) return response diff --git a/wger/manager/views/log.py b/wger/manager/views/log.py index 45e4fb084..909e59732 100644 --- a/wger/manager/views/log.py +++ b/wger/manager/views/log.py @@ -344,7 +344,7 @@ def day(request, username, year, month, day): try: date = datetime.date(int(year), int(month), int(day)) except ValueError as e: - logger.error('Error on date: {0}'.format(e)) + logger.error(f'Error on date: {e}') return HttpResponseForbidden() context['logs'] = group_log_entries(user, date.year, date.month, date.day) context['date'] = date diff --git a/wger/manager/views/pdf.py b/wger/manager/views/pdf.py index 2ad54d906..5885bccc6 100644 --- a/wger/manager/views/pdf.py +++ b/wger/manager/views/pdf.py @@ -118,7 +118,7 @@ def workout_log(request, id, images=False, comments=False, uidb64=None, token=No doc.build(elements) # Create the HttpResponse object with the appropriate PDF headers. - response['Content-Disposition'] = 'attachment; filename=Workout-{0}-log.pdf'.format(id) + response['Content-Disposition'] = f'attachment; filename=Workout-{id}-log.pdf' response['Content-Length'] = len(response.content) return response @@ -191,6 +191,6 @@ def workout_view(request, id, images=False, comments=False, uidb64=None, token=N doc.build(elements) # Create the HttpResponse object with the appropriate PDF headers. - response['Content-Disposition'] = 'attachment; filename=Workout-{0}-table.pdf'.format(id) + response['Content-Disposition'] = f'attachment; filename=Workout-{id}-table.pdf' response['Content-Length'] = len(response.content) return response diff --git a/wger/manager/views/schedule.py b/wger/manager/views/schedule.py index e7074b162..4ab31f927 100644 --- a/wger/manager/views/schedule.py +++ b/wger/manager/views/schedule.py @@ -150,21 +150,21 @@ def export_pdf_log(request, pk, images=False, comments=False, uidb64=None, token bottomMargin=0.5 * cm, title=_('Workout'), author='wger Workout Manager', - subject='Schedule for {0}'.format(request.user.username), + subject=f'Schedule for {request.user.username}', ) # container for the 'Flowable' objects elements = [] # Set the title - p = Paragraph('{0}'.format(schedule), styleSheet['HeaderBold']) + p = Paragraph(f'{schedule}', styleSheet['HeaderBold']) elements.append(p) elements.append(Spacer(10 * cm, 0.5 * cm)) # Iterate through the Workout and render the training days for step in schedule.schedulestep_set.all(): p = Paragraph( - '{0} {1}'.format(step.duration, _('Weeks')), + f'{step.duration} {_("Weeks")}', styleSheet['HeaderBold'], ) elements.append(p) @@ -183,7 +183,7 @@ def export_pdf_log(request, pk, images=False, comments=False, uidb64=None, token # write the document and send the response to the browser doc.build(elements) - response['Content-Disposition'] = 'attachment; filename=Schedule-{0}-log.pdf'.format(pk) + response['Content-Disposition'] = f'attachment; filename=Schedule-{pk}-log.pdf' response['Content-Length'] = len(response.content) return response @@ -220,21 +220,21 @@ def export_pdf_table(request, pk, images=False, comments=False, uidb64=None, tok bottomMargin=0.5 * cm, title=_('Workout'), author='wger Workout Manager', - subject='Schedule for {0}'.format(request.user.username), + subject=f'Schedule for {request.user.username}', ) # container for the 'Flowable' objects elements = [] # Set the title - p = Paragraph('{0}'.format(schedule), styleSheet['HeaderBold']) + p = Paragraph(f'{schedule}', styleSheet['HeaderBold']) elements.append(p) elements.append(Spacer(10 * cm, 0.5 * cm)) # Iterate through the Workout and render the training days for step in schedule.schedulestep_set.all(): p = Paragraph( - '{0} {1}'.format(step.duration, _('Weeks')), + f'{step.duration} {_("Weeks")}', styleSheet['HeaderBold'], ) elements.append(p) @@ -259,7 +259,7 @@ def export_pdf_table(request, pk, images=False, comments=False, uidb64=None, tok # write the document and send the response to the browser doc.build(elements) - response['Content-Disposition'] = 'attachment; filename=Schedule-{0}-table.pdf'.format(pk) + response['Content-Disposition'] = f'attachment; filename=Schedule-{pk}-table.pdf' response['Content-Length'] = len(response.content) return response diff --git a/wger/manager/views/set.py b/wger/manager/views/set.py index 400fce968..5bb6d0a06 100644 --- a/wger/manager/views/set.py +++ b/wger/manager/views/set.py @@ -188,13 +188,13 @@ def edit(request, pk): formsets = [] for base in set_obj.exercise_bases: queryset = Setting.objects.filter(set=set_obj, exercise_base=base) - formset = SettingFormsetEdit(queryset=queryset, prefix='exercise{0}'.format(base.id)) + formset = SettingFormsetEdit(queryset=queryset, prefix=f'exercise{base.id}') formsets.append({'base': base, 'formset': formset}) if request.method == 'POST': formsets = [] for base in set_obj.exercise_bases: - formset = SettingFormsetEdit(request.POST, prefix='exercise{0}'.format(base.id)) + formset = SettingFormsetEdit(request.POST, prefix=f'exercise{base.id}') formsets.append({'base': base, 'formset': formset}) # If all formsets validate, save them diff --git a/wger/nutrition/models/image.py b/wger/nutrition/models/image.py index 9bbf5462e..00877b077 100644 --- a/wger/nutrition/models/image.py +++ b/wger/nutrition/models/image.py @@ -33,7 +33,7 @@ def ingredient_image_upload_dir(instance, filename): Returns the upload target for exercise images """ ext = pathlib.Path(filename).suffix - return 'ingredients/{0}/{1}{2}'.format(instance.ingredient.pk, instance.uuid, ext) + return f'ingredients/{instance.ingredient.pk}/{instance.uuid}{ext}' class Image(AbstractLicenseModel, models.Model, BaseImage): diff --git a/wger/nutrition/models/ingredient.py b/wger/nutrition/models/ingredient.py index 7dc26f786..ac12126ef 100644 --- a/wger/nutrition/models/ingredient.py +++ b/wger/nutrition/models/ingredient.py @@ -301,13 +301,9 @@ def clean(self): if not ((energy_upper > energy_calculated) and (energy_calculated > energy_lower)): raise ValidationError( _( - 'The total energy ({energy}kcal) is not the approximate sum of the ' - 'energy provided by protein, carbohydrates and fat ({energy_calculated}kcal' - ' +/-{energy_approx}%)'.format( - energy=self.energy, - energy_calculated=energy_calculated, - energy_approx=self.ENERGY_APPROXIMATION, - ) + f'The total energy ({self.energy}kcal) is not the approximate sum of the ' + f'energy provided by protein, carbohydrates and fat ({energy_calculated}kcal' + f' +/-{self.ENERGY_APPROXIMATION}%)' ) ) @@ -411,9 +407,7 @@ def set_author(self, request): # Send email to administrator subject = _('New user submitted ingredient') message = _( - """The user {0} submitted a new ingredient "{1}".""".format( - request.user.username, self.name - ) + f'The user {request.user.username} submitted a new ingredient "{self.name}".' ) mail.mail_admins(subject, message, fail_silently=True) diff --git a/wger/nutrition/models/ingredient_weight_unit.py b/wger/nutrition/models/ingredient_weight_unit.py index 6bcedc93c..defd0f8b2 100644 --- a/wger/nutrition/models/ingredient_weight_unit.py +++ b/wger/nutrition/models/ingredient_weight_unit.py @@ -66,8 +66,4 @@ def __str__(self): Return a more human-readable representation """ - return '{0}{1} ({2}g)'.format( - self.amount if self.amount > 1 else '', - self.unit.name, - self.gram, - ) + return f'{self.amount if self.amount > 1 else ""}{self.unit.name} ({self.gram}g)' diff --git a/wger/nutrition/models/log.py b/wger/nutrition/models/log.py index 74a7dbfc6..4a9566bb9 100644 --- a/wger/nutrition/models/log.py +++ b/wger/nutrition/models/log.py @@ -113,7 +113,7 @@ def __str__(self): """ Return a more human-readable representation """ - return 'Diary entry for {}, plan {}'.format(self.datetime, self.plan.pk) + return f'Diary entry for {self.datetime}, plan {self.plan.pk}' def get_owner_object(self): """ diff --git a/wger/nutrition/models/meal.py b/wger/nutrition/models/meal.py index b97d8fc3e..3a386117b 100644 --- a/wger/nutrition/models/meal.py +++ b/wger/nutrition/models/meal.py @@ -74,7 +74,7 @@ def __str__(self): """ Return a more human-readable representation """ - return '{0} Meal'.format(self.order) + return f'{self.order} Meal' def get_owner_object(self): """ diff --git a/wger/nutrition/models/meal_item.py b/wger/nutrition/models/meal_item.py index 1f9688ae0..f6cc1314b 100644 --- a/wger/nutrition/models/meal_item.py +++ b/wger/nutrition/models/meal_item.py @@ -77,7 +77,7 @@ def __str__(self): """ Return a more human-readable representation """ - return '{0}g ingredient {1}'.format(self.amount, self.ingredient_id) + return f'{self.amount}g ingredient {self.ingredient_id}' def get_owner_object(self): """ diff --git a/wger/nutrition/models/plan.py b/wger/nutrition/models/plan.py index 2ef3c0be0..4bd37eb3f 100644 --- a/wger/nutrition/models/plan.py +++ b/wger/nutrition/models/plan.py @@ -101,9 +101,9 @@ def __str__(self): Return a more human-readable representation """ if self.description: - return '{0}'.format(self.description) + return self.description else: - return '{0}'.format(_('Nutrition plan')) + return str(_('Nutrition plan')) def get_absolute_url(self): """ diff --git a/wger/nutrition/tests/test_ingredient.py b/wger/nutrition/tests/test_ingredient.py index c486a6042..51afabd4d 100644 --- a/wger/nutrition/tests/test_ingredient.py +++ b/wger/nutrition/tests/test_ingredient.py @@ -57,7 +57,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(Ingredient.objects.get(pk=1)), 'Test ingredient 1') + self.assertEqual(str(Ingredient.objects.get(pk=1)), 'Test ingredient 1') class DeleteIngredientTestCase(WgerDeleteTestCase): diff --git a/wger/nutrition/tests/test_weight_unit.py b/wger/nutrition/tests/test_weight_unit.py index c0c71daef..e3e9f682e 100644 --- a/wger/nutrition/tests/test_weight_unit.py +++ b/wger/nutrition/tests/test_weight_unit.py @@ -37,7 +37,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(WeightUnit.objects.get(pk=1)), 'Scheibe') + self.assertEqual(str(WeightUnit.objects.get(pk=1)), 'Scheibe') class AddWeightUnitTestCase(WgerAddTestCase): diff --git a/wger/nutrition/tests/test_weight_unit_ingredient.py b/wger/nutrition/tests/test_weight_unit_ingredient.py index 0dc8dc2d4..4fc75e13d 100644 --- a/wger/nutrition/tests/test_weight_unit_ingredient.py +++ b/wger/nutrition/tests/test_weight_unit_ingredient.py @@ -42,7 +42,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(IngredientWeightUnit.objects.get(pk=1)), 'Spoon (109g)') + self.assertEqual(str(IngredientWeightUnit.objects.get(pk=1)), 'Spoon (109g)') class AddWeightUnitIngredientTestCase(WgerAddTestCase): diff --git a/wger/nutrition/views/plan.py b/wger/nutrition/views/plan.py index c8558a525..86af162e7 100644 --- a/wger/nutrition/views/plan.py +++ b/wger/nutrition/views/plan.py @@ -54,6 +54,7 @@ logger = logging.getLogger(__name__) + # ************************ # Plan functions # ************************ @@ -139,18 +140,14 @@ def export_pdf(request, id: int): if not meal.time: p = Paragraph( - '{nr} {meal_nr}'.format( - nr=_('Nr.'), meal_nr=i - ), + f'{_("Nr.")} {i}', styleSheet['SubHeader'], ) else: p = Paragraph( - '' - '{nr} {meal_nr} - {meal_time}' - ''.format( - nr=_('Nr.'), meal_nr=i, meal_time=meal.time.strftime('%H:%M') - ), + f'' + f'{_("Nr.")} {i} - {meal.time.strftime("%H:%M")}' + f'', styleSheet['SubHeader'], ) data.append([p]) @@ -159,7 +156,7 @@ def export_pdf(request, id: int): for item in meal.mealitem_set.select_related(): ingredient_markers.append(len(data)) - p = Paragraph('{0}'.format(item.ingredient.name), styleSheet['Normal']) + p = Paragraph(f'{item.ingredient.name}', styleSheet['Normal']) if item.get_unit_type() == MEALITEM_WEIGHT_GRAM: unit_name = 'g' else: @@ -222,7 +219,7 @@ def export_pdf(request, id: int): data.append( [ Paragraph( - '{0}'.format(_('Nutritional data')), + f'{_("Nutritional data")}', styleSheet['SubHeaderBlack'], ) ] diff --git a/wger/tasks.py b/wger/tasks.py index 7c935d529..81669a12f 100644 --- a/wger/tasks.py +++ b/wger/tasks.py @@ -60,7 +60,7 @@ def start(context, address='localhost', port=8000, settings_path=None, extra_arg if extra_args != '': for argument in extra_args.split(' '): argv.append(argument) - argv.append('{0}:{1}'.format(address, port)) + argv.append(f'{address}:{port}') execute_from_command_line(argv) @@ -114,7 +114,7 @@ def create_settings( settings_path = get_path('settings.py') settings_module = os.path.dirname(settings_path) - print('*** Creating settings file at {0}'.format(settings_module)) + print(f'*** Creating settings file at {settings_module}') if database_path is None: database_path = get_path('database.sqlite').as_posix() @@ -289,9 +289,9 @@ def config_location(context): Returns the default location for the settings file and the data folder """ print('Default locations:') - print('* settings: {0}'.format(get_path('settings.py'))) - print('* media folder: {0}'.format(get_path('media'))) - print('* database path: {0}'.format(get_path('database.sqlite'))) + print(f'* settings: {get_path("settings.py")}') + print(f'* media folder: {get_path("media")}') + print(f'* database path: {get_path("database.sqlite")}') # @@ -323,7 +323,7 @@ def setup_django_environment(settings_path): # Use default settings if the user didn't specify something else if settings_path is None: settings_path = get_path('settings.py').as_posix() - print('*** No settings given, using {0}'.format(settings_path)) + print(f'*** No settings given, using {settings_path}') # Find out file path and fine name of settings and setup django settings_file = os.path.basename(settings_path) diff --git a/wger/utils/generic_views.py b/wger/utils/generic_views.py index c140161cd..41d8a25bf 100644 --- a/wger/utils/generic_views.py +++ b/wger/utils/generic_views.py @@ -93,7 +93,7 @@ def dispatch(self, request, *args, **kwargs): if self.login_required or self.permission_required: if not request.user.is_authenticated: return HttpResponseRedirect( - reverse_lazy('core:user:login') + '?next={0}'.format(request.path) + reverse_lazy('core:user:login') + f'?next={request.path}' ) if self.permission_required: diff --git a/wger/utils/helpers.py b/wger/utils/helpers.py index f66f0d0f7..1c20fa0bd 100644 --- a/wger/utils/helpers.py +++ b/wger/utils/helpers.py @@ -85,7 +85,6 @@ def disable_for_loaddata(signal_handler): @wraps(signal_handler) def wrapper(*args, **kwargs): if kwargs['raw']: - # print "Skipping signal for {0} {1}".format(args, kwargs) return signal_handler(*args, **kwargs) @@ -145,7 +144,7 @@ def check_token(uidb64, token): try: uid = int(urlsafe_base64_decode(uidb64)) except ValueError as e: - logger.info('Could not decode UID: {0}'.format(e)) + logger.info(f'Could not decode UID: {e}') return False try: diff --git a/wger/utils/pdf.py b/wger/utils/pdf.py index a995e543b..f915a8657 100644 --- a/wger/utils/pdf.py +++ b/wger/utils/pdf.py @@ -74,12 +74,9 @@ def render_footer(url, date=None): date = datetime.date.today().strftime('%d.%m.%Y') p = Paragraph( - """ - {date} - - {url} - - wger Workout Manager - {version} - """.format(date=date, url=url, version=get_version()), + f""" + {date} - {url} - wger Workout Manager {get_version()} + """, styleSheet['Normal'], ) return p diff --git a/wger/utils/widgets.py b/wger/utils/widgets.py index b743f8d46..2ab2e53cd 100644 --- a/wger/utils/widgets.py +++ b/wger/utils/widgets.py @@ -40,6 +40,7 @@ logger = logging.getLogger(__name__) + # # Date and time related fields # @@ -192,7 +193,7 @@ class CheckboxChoiceInputTranslatedOriginal(CheckboxInput): def __init__(self, name, value, attrs, choice, index): if _(choice[1]) != choice[1]: - choice = (choice[0], '{0} ({1})'.format(choice[1], _(choice[1]))) + choice = (choice[0], f'{choice[1]} ({_(choice[1])})') else: choice = (choice[0], _(choice[1])) diff --git a/wger/weight/tests/test_entry.py b/wger/weight/tests/test_entry.py index 3c0761076..8af3955d0 100644 --- a/wger/weight/tests/test_entry.py +++ b/wger/weight/tests/test_entry.py @@ -40,7 +40,7 @@ def test_representation(self): """ Test that the representation of an object is correct """ - self.assertEqual('{0}'.format(WeightEntry.objects.get(pk=1)), '2012-10-01: 77.00 kg') + self.assertEqual(str(WeightEntry.objects.get(pk=1)), '2012-10-01: 77.00 kg') class AddWeightEntryTestCase(WgerAddTestCase):