From f003f3332a6c2da02e568b4508768fbfd8a5310b Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Fri, 7 Jan 2022 22:37:18 +0100 Subject: [PATCH] Update syntax to Python 3.7+ --- auditlog/diff.py | 2 +- auditlog/mixins.py | 6 +++--- auditlog/models.py | 8 ++++---- auditlog/registry.py | 2 +- auditlog_tests/tests.py | 12 +++++------- setup.py | 2 +- 6 files changed, 15 insertions(+), 17 deletions(-) diff --git a/auditlog/diff.py b/auditlog/diff.py index 8f7953f..508a908 100644 --- a/auditlog/diff.py +++ b/auditlog/diff.py @@ -115,7 +115,7 @@ def model_instance_diff(old, new, fields_to_check=None): model_fields = None if fields_to_check: - fields = set([field for field in fields if field.name in fields_to_check]) + fields = {field for field in fields if field.name in fields_to_check} # Check if fields must be filtered if ( diff --git a/auditlog/mixins.py b/auditlog/mixins.py index d8eaadd..436f830 100644 --- a/auditlog/mixins.py +++ b/auditlog/mixins.py @@ -11,7 +11,7 @@ from auditlog.models import LogEntry MAX = 75 -class LogEntryAdminMixin(object): +class LogEntryAdminMixin: def created(self, obj): return obj.timestamp.strftime("%Y-%m-%d %H:%M:%S") @@ -20,7 +20,7 @@ class LogEntryAdminMixin(object): def user_url(self, obj): if obj.actor: app_label, model = settings.AUTH_USER_MODEL.split(".") - viewname = "admin:%s_%s_change" % (app_label, model.lower()) + viewname = f"admin:{app_label}_{model.lower()}_change" try: link = urlresolvers.reverse(viewname, args=[obj.actor.pk]) except NoReverseMatch: @@ -33,7 +33,7 @@ class LogEntryAdminMixin(object): def resource_url(self, obj): app_label, model = obj.content_type.app_label, obj.content_type.model - viewname = "admin:%s_%s_change" % (app_label, model) + viewname = f"admin:{app_label}_{model}_change" try: args = [obj.object_pk] if obj.object_id is None else [obj.object_id] link = urlresolvers.reverse(viewname, args=args) diff --git a/auditlog/models.py b/auditlog/models.py index 582f2a6..606c604 100644 --- a/auditlog/models.py +++ b/auditlog/models.py @@ -359,7 +359,7 @@ class LogEntry(models.Model): pass # check if length is longer than 140 and truncate with ellipsis if len(value) > 140: - value = "{}...".format(value[:140]) + value = f"{value[:140]}..." values_display.append(value) verbose_name = model_fields["mapping_fields"].get( @@ -399,14 +399,14 @@ class AuditlogHistoryField(GenericRelation): kwargs["content_type_field"] = "content_type" self.delete_related = delete_related - super(AuditlogHistoryField, self).__init__(**kwargs) + super().__init__(**kwargs) def bulk_related_objects(self, objs, using=DEFAULT_DB_ALIAS): """ Return all objects related to ``objs`` via this ``GenericRelation``. """ if self.delete_related: - return super(AuditlogHistoryField, self).bulk_related_objects(objs, using) + return super().bulk_related_objects(objs, using) # When deleting, Collector.collect() finds related objects using this # method. However, because we don't want to delete these related @@ -418,7 +418,7 @@ class AuditlogHistoryField(GenericRelation): try: from south.modelsinspector import add_introspection_rules - add_introspection_rules([], ["^auditlog\.models\.AuditlogHistoryField"]) + add_introspection_rules([], [r"^auditlog\.models\.AuditlogHistoryField"]) raise DeprecationWarning( "South support will be dropped in django-auditlog 0.4.0 or later." ) diff --git a/auditlog/registry.py b/auditlog/registry.py index 08af299..edf4352 100644 --- a/auditlog/registry.py +++ b/auditlog/registry.py @@ -7,7 +7,7 @@ from django.db.models.signals import ModelSignal, post_delete, post_save, pre_sa DispatchUID = Tuple[int, str, int] -class AuditlogModelRegistry(object): +class AuditlogModelRegistry: """ A registry that keeps track of the models that use Auditlog to track changes. """ diff --git a/auditlog_tests/tests.py b/auditlog_tests/tests.py index 0589afc..fc96d8e 100644 --- a/auditlog_tests/tests.py +++ b/auditlog_tests/tests.py @@ -798,7 +798,7 @@ class CharfieldTextfieldModelTest(TestCase): def test_changes_display_dict_longchar(self): self.assertTrue( self.obj.history.latest().changes_display_dict["longchar"][1] - == "{}...".format(self.PLACEHOLDER_LONGCHAR[:140]), + == f"{self.PLACEHOLDER_LONGCHAR[:140]}...", msg="The string should be truncated at 140 characters with an ellipsis at the end.", ) SHORTENED_PLACEHOLDER = self.PLACEHOLDER_LONGCHAR[:139] @@ -813,7 +813,7 @@ class CharfieldTextfieldModelTest(TestCase): def test_changes_display_dict_longtextfield(self): self.assertTrue( self.obj.history.latest().changes_display_dict["longtextfield"][1] - == "{}...".format(self.PLACEHOLDER_LONGTEXTFIELD[:140]), + == f"{self.PLACEHOLDER_LONGTEXTFIELD[:140]}...", msg="The string should be truncated at 140 characters with an ellipsis at the end.", ) SHORTENED_PLACEHOLDER = self.PLACEHOLDER_LONGTEXTFIELD[:139] @@ -883,13 +883,11 @@ class AdminPanelTest(TestCase): assert res.status_code == 200 res = self.client.get("/admin/auditlog/logentry/add/") assert res.status_code == 200 - res = self.client.get( - "/admin/auditlog/logentry/{}/".format(log_pk), follow=True - ) + res = self.client.get(f"/admin/auditlog/logentry/{log_pk}/", follow=True) assert res.status_code == 200 - res = self.client.get("/admin/auditlog/logentry/{}/delete/".format(log_pk)) + res = self.client.get(f"/admin/auditlog/logentry/{log_pk}/delete/") assert res.status_code == 200 - res = self.client.get("/admin/auditlog/logentry/{}/history/".format(log_pk)) + res = self.client.get(f"/admin/auditlog/logentry/{log_pk}/history/") assert res.status_code == 200 diff --git a/setup.py b/setup.py index 54a182d..206eab9 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ import os from setuptools import setup # Readme as long description -with open(os.path.join(os.path.dirname(__file__), "README.md"), "r") as readme_file: +with open(os.path.join(os.path.dirname(__file__), "README.md")) as readme_file: long_description = readme_file.read() setup(