Browse Source

Simplify super() calls

rafalp 6 years ago
parent
commit
b113253a5b
125 changed files with 190 additions and 192 deletions
  1. 2 2
      misago/acl/models.py
  2. 1 1
      misago/admin/testutils.py
  3. 3 3
      misago/categories/forms.py
  4. 1 1
      misago/categories/models.py
  5. 1 1
      misago/categories/tests/test_categories_admin_views.py
  6. 1 1
      misago/categories/tests/test_category_model.py
  7. 1 1
      misago/categories/tests/test_utils.py
  8. 1 1
      misago/categories/tests/test_views.py
  9. 1 1
      misago/categories/views/categoriesadmin.py
  10. 4 4
      misago/core/pgutils.py
  11. 1 1
      misago/core/tests/test_cachebuster.py
  12. 2 2
      misago/core/testutils.py
  13. 2 2
      misago/legal/forms.py
  14. 1 1
      misago/legal/tests/test_api.py
  15. 2 2
      misago/legal/tests/test_context_processors.py
  16. 1 1
      misago/legal/tests/test_required_agreement.py
  17. 3 3
      misago/legal/views/admin.py
  18. 1 1
      misago/markup/bbcode/blocks.py
  19. 1 1
      misago/markup/tests/test_api.py
  20. 1 1
      misago/search/tests/test_api.py
  21. 1 1
      misago/search/tests/test_views.py
  22. 1 1
      misago/threads/api/postingendpoint/category.py
  23. 1 1
      misago/threads/api/postingendpoint/emailnotification.py
  24. 1 1
      misago/threads/api/postingendpoint/savechanges.py
  25. 1 1
      misago/threads/models/attachment.py
  26. 1 1
      misago/threads/models/post.py
  27. 1 1
      misago/threads/models/thread.py
  28. 1 2
      misago/threads/paginator.py
  29. 1 1
      misago/threads/serializers/poll.py
  30. 3 3
      misago/threads/tests/test_anonymize_data.py
  31. 1 1
      misago/threads/tests/test_attachmentadmin_views.py
  32. 1 1
      misago/threads/tests/test_attachments_api.py
  33. 1 1
      misago/threads/tests/test_attachments_middleware.py
  34. 1 1
      misago/threads/tests/test_attachmenttypeadmin_views.py
  35. 1 1
      misago/threads/tests/test_attachmentview.py
  36. 1 1
      misago/threads/tests/test_delete_user_likes.py
  37. 1 1
      misago/threads/tests/test_emailnotification_middleware.py
  38. 1 1
      misago/threads/tests/test_floodprotection.py
  39. 1 1
      misago/threads/tests/test_gotoviews.py
  40. 1 1
      misago/threads/tests/test_post_mentions.py
  41. 1 1
      misago/threads/tests/test_posts_moderation.py
  42. 1 1
      misago/threads/tests/test_privatethread_patch_api.py
  43. 1 1
      misago/threads/tests/test_privatethread_reply_api.py
  44. 1 1
      misago/threads/tests/test_privatethread_start_api.py
  45. 1 1
      misago/threads/tests/test_privatethread_view.py
  46. 1 1
      misago/threads/tests/test_privatethreads.py
  47. 3 3
      misago/threads/tests/test_privatethreads_api.py
  48. 1 1
      misago/threads/tests/test_privatethreads_lists.py
  49. 2 2
      misago/threads/tests/test_search.py
  50. 3 3
      misago/threads/tests/test_subscription_middleware.py
  51. 1 1
      misago/threads/tests/test_sync_unread_private_threads.py
  52. 2 2
      misago/threads/tests/test_thread_bulkpatch_api.py
  53. 1 1
      misago/threads/tests/test_thread_editreply_api.py
  54. 1 1
      misago/threads/tests/test_thread_merge_api.py
  55. 4 4
      misago/threads/tests/test_thread_patch_api.py
  56. 1 1
      misago/threads/tests/test_thread_poll_api.py
  57. 1 1
      misago/threads/tests/test_thread_polldelete_api.py
  58. 1 1
      misago/threads/tests/test_thread_polledit_api.py
  59. 2 2
      misago/threads/tests/test_thread_pollvotes_api.py
  60. 1 1
      misago/threads/tests/test_thread_postbulkdelete_api.py
  61. 1 1
      misago/threads/tests/test_thread_postbulkpatch_api.py
  62. 2 2
      misago/threads/tests/test_thread_postdelete_api.py
  63. 2 2
      misago/threads/tests/test_thread_postedits_api.py
  64. 1 1
      misago/threads/tests/test_thread_postlikes_api.py
  65. 1 1
      misago/threads/tests/test_thread_postmerge_api.py
  66. 1 1
      misago/threads/tests/test_thread_postmove_api.py
  67. 2 2
      misago/threads/tests/test_thread_postpatch_api.py
  68. 1 1
      misago/threads/tests/test_thread_postread_api.py
  69. 1 1
      misago/threads/tests/test_thread_postsplit_api.py
  70. 1 1
      misago/threads/tests/test_thread_reply_api.py
  71. 1 1
      misago/threads/tests/test_thread_start_api.py
  72. 3 3
      misago/threads/tests/test_threads_api.py
  73. 1 1
      misago/threads/tests/test_threads_bulkdelete_api.py
  74. 4 4
      misago/threads/tests/test_threads_editor_api.py
  75. 1 1
      misago/threads/tests/test_threads_merge_api.py
  76. 2 2
      misago/threads/tests/test_threads_moderation.py
  77. 2 2
      misago/threads/tests/test_threadslists.py
  78. 1 1
      misago/threads/tests/test_threadview.py
  79. 1 1
      misago/threads/tests/test_utils.py
  80. 1 1
      misago/threads/tests/test_validate_post.py
  81. 1 2
      misago/threads/viewmodels/threads.py
  82. 1 1
      misago/threads/views/admin/attachments.py
  83. 2 2
      misago/threads/views/admin/attachmenttypes.py
  84. 1 1
      misago/threads/views/list.py
  85. 2 2
      misago/users/api/userendpoints/editdetails.py
  86. 4 4
      misago/users/forms/admin.py
  87. 2 2
      misago/users/forms/auth.py
  88. 3 3
      misago/users/forms/register.py
  89. 1 1
      misago/users/management/commands/createsuperuser.py
  90. 2 2
      misago/users/models/ban.py
  91. 1 1
      misago/users/models/datadownload.py
  92. 2 2
      misago/users/models/rank.py
  93. 2 2
      misago/users/models/user.py
  94. 2 2
      misago/users/tests/test_activepostersranking.py
  95. 3 3
      misago/users/tests/test_audittrail.py
  96. 1 1
      misago/users/tests/test_bio_profilefield.py
  97. 1 1
      misago/users/tests/test_datadownloads.py
  98. 1 1
      misago/users/tests/test_djangoadmin_user.py
  99. 1 1
      misago/users/tests/test_gender_profilefield.py
  100. 1 1
      misago/users/tests/test_joinip_profilefield.py
  101. 1 1
      misago/users/tests/test_lists_views.py
  102. 1 1
      misago/users/tests/test_online_utils.py
  103. 2 2
      misago/users/tests/test_options_views.py
  104. 1 1
      misago/users/tests/test_profile_views.py
  105. 2 2
      misago/users/tests/test_search.py
  106. 3 3
      misago/users/tests/test_social_pipeline.py
  107. 1 1
      misago/users/tests/test_twitter_profilefield.py
  108. 2 2
      misago/users/tests/test_user_avatar_api.py
  109. 1 1
      misago/users/tests/test_user_changeemail_api.py
  110. 1 1
      misago/users/tests/test_user_changepassword_api.py
  111. 1 1
      misago/users/tests/test_user_create_api.py
  112. 1 1
      misago/users/tests/test_user_datadownloads_api.py
  113. 1 1
      misago/users/tests/test_user_editdetails_api.py
  114. 2 2
      misago/users/tests/test_user_feeds_api.py
  115. 1 1
      misago/users/tests/test_user_middleware.py
  116. 1 1
      misago/users/tests/test_user_requestdatadownload_api.py
  117. 1 1
      misago/users/tests/test_user_signature_api.py
  118. 2 2
      misago/users/tests/test_user_username_api.py
  119. 1 1
      misago/users/tests/test_usernamechanges_api.py
  120. 11 11
      misago/users/tests/test_users_api.py
  121. 1 1
      misago/users/testutils.py
  122. 1 1
      misago/users/views/admin/bans.py
  123. 1 1
      misago/users/views/admin/datadownloads.py
  124. 1 1
      misago/users/views/admin/ranks.py
  125. 2 2
      misago/users/views/admin/users.py

+ 2 - 2
misago/acl/models.py

@@ -23,11 +23,11 @@ class BaseRole(models.Model):
     def save(self, *args, **kwargs):
         if self.pk:
             acl_version.invalidate()
-        return super(BaseRole, self).save(*args, **kwargs)
+        return super().save(*args, **kwargs)
 
     def delete(self, *args, **kwargs):
         acl_version.invalidate()
-        return super(BaseRole, self).delete(*args, **kwargs)
+        return super().delete(*args, **kwargs)
 
 
 class Role(BaseRole):

+ 1 - 1
misago/admin/testutils.py

@@ -5,7 +5,7 @@ from misago.users.testutils import SuperUserTestCase
 
 class AdminTestCase(SuperUserTestCase):
     def setUp(self):
-        super(AdminTestCase, self).setUp()
+        super().setUp()
         self.login_admin(self.user)
 
     def login_admin(self, user):

+ 3 - 3
misago/categories/forms.py

@@ -25,7 +25,7 @@ class AdminCategoryFieldMixin(object):
 
         kwargs.setdefault('queryset', queryset)
 
-        super(AdminCategoryFieldMixin, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
     def _get_level_indicator(self, obj):
         level = getattr(obj, obj._mptt_meta.level_attr) - self.base_level
@@ -135,7 +135,7 @@ class CategoryFormBase(forms.ModelForm):
         return data
 
     def clean(self):
-        data = super(CategoryFormBase, self).clean()
+        data = super().clean()
         self.instance.set_name(data.get('name'))
         return data
 
@@ -185,7 +185,7 @@ class DeleteCategoryFormBase(forms.ModelForm):
         fields = []
 
     def clean(self):
-        data = super(DeleteCategoryFormBase, self).clean()
+        data = super().clean()
 
         if data.get('move_threads_to'):
             if data['move_threads_to'].pk == self.instance.pk:

+ 1 - 1
misago/categories/models.py

@@ -116,7 +116,7 @@ class Category(MPTTModel):
     def delete(self, *args, **kwargs):
         Category.objects.clear_cache()
         acl_version.invalidate()
-        return super(Category, self).delete(*args, **kwargs)
+        return super().delete(*args, **kwargs)
 
     def synchronize(self):
         threads_queryset = self.thread_set.filter(is_hidden=False, is_unapproved=False)

+ 1 - 1
misago/categories/tests/test_categories_admin_views.py

@@ -342,7 +342,7 @@ class CategoryAdminDeleteViewTests(CategoryAdminTestCase):
           + Category F
         """
 
-        super(CategoryAdminDeleteViewTests, self).setUp()
+        super().setUp()
 
         self.root = Category.objects.root_category()
         self.first_category = Category.objects.get(slug='first-category')

+ 1 - 1
misago/categories/tests/test_category_model.py

@@ -47,7 +47,7 @@ class CategoryManagerTests(MisagoTestCase):
 
 class CategoryModelTests(MisagoTestCase):
     def setUp(self):
-        super(CategoryModelTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.all_categories()[:1][0]
 

+ 1 - 1
misago/categories/tests/test_utils.py

@@ -21,7 +21,7 @@ class CategoriesUtilsTests(AuthenticatedUserTestCase):
           + Subcategory F
         """
 
-        super(CategoriesUtilsTests, self).setUp()
+        super().setUp()
         threadstore.clear()
 
         self.root = Category.objects.root_category()

+ 1 - 1
misago/categories/tests/test_views.py

@@ -52,7 +52,7 @@ class CategoryViewsTests(AuthenticatedUserTestCase):
 
 class CategoryAPIViewsTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(CategoryAPIViewsTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
 

+ 1 - 1
misago/categories/views/categoriesadmin.py

@@ -17,7 +17,7 @@ class CategoryAdmin(generic.AdminBaseMixin):
     message_404 = _("Requested category does not exist.")
 
     def get_target(self, kwargs):
-        target = super(CategoryAdmin, self).get_target(kwargs)
+        target = super().get_target(kwargs)
 
         threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
 

+ 4 - 4
misago/core/pgutils.py

@@ -11,7 +11,7 @@ class PgPartialIndex(Index):
             raise ValueError('partial index requires WHERE clause')
         self.where = where
 
-        super(PgPartialIndex, self).__init__(fields, name)
+        super().__init__(fields, name)
 
     def set_name_with_model(self, model):
         table_name = model._meta.db_table
@@ -50,15 +50,15 @@ class PgPartialIndex(Index):
                 'where': "'{}'".format(', '.join(where_items)),
             }
         else:
-            return super(PgPartialIndex, self).__repr__()
+            return super().__repr__()
 
     def deconstruct(self):
-        path, args, kwargs = super(PgPartialIndex, self).deconstruct()
+        path, args, kwargs = super().deconstruct()
         kwargs['where'] = self.where
         return path, args, kwargs
 
     def get_sql_create_template_values(self, model, schema_editor, using):
-        parameters = super(PgPartialIndex, self).get_sql_create_template_values(
+        parameters = super().get_sql_create_template_values(
             model, schema_editor, '')
         parameters['extra'] = self.get_sql_extra(model, schema_editor)
         return parameters

+ 1 - 1
misago/core/tests/test_cachebuster.py

@@ -20,7 +20,7 @@ class CacheBusterTests(MisagoTestCase):
 
 class CacheBusterCacheTests(MisagoTestCase):
     def setUp(self):
-        super(CacheBusterCacheTests, self).setUp()
+        super().setUp()
 
         self.cache_name = 'eric_the_fish'
         cachebuster.register(self.cache_name)

+ 2 - 2
misago/core/testutils.py

@@ -12,9 +12,9 @@ class MisagoTestCase(TestCase):
         threadstore.clear()
 
     def setUp(self):
-        super(MisagoTestCase, self).setUp()
+        super().setUp()
         self.clear_state()
 
     def tearDown(self):
         self.clear_state()
-        super(MisagoTestCase, self).tearDown()
+        super().tearDown()

+ 2 - 2
misago/legal/forms.py

@@ -40,7 +40,7 @@ class AgreementForm(forms.ModelForm):
         fields = ['type', 'title', 'link', 'text', 'is_active']
 
     def clean(self):
-        data = super(AgreementForm, self).clean()
+        data = super().clean()
 
         if not data.get('link') and not data.get('text'):
             raise forms.ValidationError(_("Please fill in agreement link or text."))
@@ -48,7 +48,7 @@ class AgreementForm(forms.ModelForm):
         return data
 
     def save(self):
-        agreement = super(AgreementForm, self).save()
+        agreement = super().save()
         if agreement.is_active:
             set_agreement_as_active(agreement)
         Agreement.objects.invalidate_cache()

+ 1 - 1
misago/legal/tests/test_api.py

@@ -8,7 +8,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class SubmitAgreementTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(SubmitAgreementTests, self).setUp()
+        super().setUp()
 
         self.agreement = Agreement.objects.create(
             type=Agreement.TYPE_TOS,

+ 2 - 2
misago/legal/tests/test_context_processors.py

@@ -16,7 +16,7 @@ class MockRequest(object):
 
 class PrivacyPolicyTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(PrivacyPolicyTests, self).setUp()
+        super().setUp()
 
         Agreement.objects.invalidate_cache()
 
@@ -102,7 +102,7 @@ class PrivacyPolicyTests(AuthenticatedUserTestCase):
 
 class TermsOfServiceTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(TermsOfServiceTests, self).setUp()
+        super().setUp()
         
         Agreement.objects.invalidate_cache()
 

+ 1 - 1
misago/legal/tests/test_required_agreement.py

@@ -6,7 +6,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class RequiredAgreementTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(RequiredAgreementTests, self).setUp()
+        super().setUp()
 
         self.test_link = reverse('misago:index')
 

+ 3 - 3
misago/legal/views/admin.py

@@ -40,7 +40,7 @@ class AgreementsList(AgreementAdmin, generic.ListView):
     }, )
 
     def get_queryset(self):
-        qs = super(AgreementsList, self).get_queryset()
+        qs = super().get_queryset()
         return qs.select_related()
 
     def action_delete(self, request, items):
@@ -53,7 +53,7 @@ class NewAgreement(AgreementAdmin, generic.ModelFormView):
     message_submit = _('New agreement "%(title)s" has been saved.')
     
     def handle_form(self, form, request, target):
-        super(NewAgreement, self).handle_form(form, request, target)
+        super().handle_form(form, request, target)
 
         form.instance.set_created_by(request.user)
         form.instance.save()
@@ -63,7 +63,7 @@ class EditAgreement(AgreementAdmin, generic.ModelFormView):
     message_submit = _('Agreement "%(title)s" has been edited.')
 
     def handle_form(self, form, request, target):
-        super(EditAgreement, self).handle_form(form, request, target)
+        super().handle_form(form, request, target)
 
         form.instance.last_modified_on = timezone.now()
         form.instance.set_last_modified_by(request.user)

+ 1 - 1
misago/markup/bbcode/blocks.py

@@ -66,7 +66,7 @@ class QuotePreprocessor(Preprocessor):
 
 class QuoteBlockProcessor(BlockProcessor):
     def __init__(self, *args, **kwargs):
-        super(QuoteBlockProcessor, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
         self._title = None
         self._quote = 0
         self._children = []

+ 1 - 1
misago/markup/tests/test_api.py

@@ -5,7 +5,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ParseMarkupApiTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ParseMarkupApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse('misago:api:parse-markup')
 

+ 1 - 1
misago/search/tests/test_api.py

@@ -7,7 +7,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class SearchApiTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(SearchApiTests, self).setUp()
+        super().setUp()
 
         self.test_link = reverse('misago:api:search')
 

+ 1 - 1
misago/search/tests/test_views.py

@@ -7,7 +7,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class LandingTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(LandingTests, self).setUp()
+        super().setUp()
 
         self.test_link = reverse('misago:search')
 

+ 1 - 1
misago/threads/api/postingendpoint/category.py

@@ -51,7 +51,7 @@ class CategorySerializer(serializers.Serializer):
         self.user = user
         self.category_cache = None
 
-        super(CategorySerializer, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
     def validate_category(self, value):
         try:

+ 1 - 1
misago/threads/api/postingendpoint/emailnotification.py

@@ -8,7 +8,7 @@ from . import PostingEndpoint, PostingMiddleware
 
 class EmailNotificationMiddleware(PostingMiddleware):
     def __init__(self, **kwargs):
-        super(EmailNotificationMiddleware, self).__init__(**kwargs)
+        super().__init__(**kwargs)
 
         self.previous_last_post_on = self.thread.last_post_on
 

+ 1 - 1
misago/threads/api/postingendpoint/savechanges.py

@@ -7,7 +7,7 @@ from . import PostingMiddleware
 
 class SaveChangesMiddleware(PostingMiddleware):
     def __init__(self, **kwargs):
-        super(SaveChangesMiddleware, self).__init__(**kwargs)
+        super().__init__(**kwargs)
         self.reset_state()
 
     def reset_state(self):

+ 1 - 1
misago/threads/models/attachment.py

@@ -57,7 +57,7 @@ class Attachment(models.Model):
 
     def delete(self, *args, **kwargs):
         self.delete_files()
-        return super(Attachment, self).delete(*args, **kwargs)
+        return super().delete(*args, **kwargs)
 
     def delete_files(self):
         if self.thumbnail:

+ 1 - 1
misago/threads/models/post.py

@@ -114,7 +114,7 @@ class Post(models.Model):
         from misago.threads.signals import delete_post
         delete_post.send(sender=self)
 
-        super(Post, self).delete(*args, **kwargs)
+        super().delete(*args, **kwargs)
 
     def merge(self, other_post):
         if self.poster_id != other_post.poster_id:

+ 1 - 1
misago/threads/models/thread.py

@@ -148,7 +148,7 @@ class Thread(models.Model):
         from misago.threads.signals import delete_thread
         delete_thread.send(sender=self)
 
-        super(Thread, self).delete(*args, **kwargs)
+        super().delete(*args, **kwargs)
 
     def merge(self, other_thread):
         if self.pk == other_thread.pk:

+ 1 - 2
misago/threads/paginator.py

@@ -8,8 +8,7 @@ class PostsPaginator(Paginator):
         per_page = int(per_page) - 1
         if orphans:
             orphans += 1
-        super(PostsPaginator,
-              self).__init__(object_list, per_page, orphans, allow_empty_first_page)
+        super().__init__(object_list, per_page, orphans, allow_empty_first_page)
 
     def page(self, number):
         """returns a Page object for the given 1-based page number."""

+ 1 - 1
misago/threads/serializers/poll.py

@@ -160,7 +160,7 @@ class EditPollSerializer(serializers.ModelSerializer):
         if instance.choices:
             self.update_choices(instance, validated_data['choices'])
 
-        return super(EditPollSerializer, self).update(instance, validated_data)
+        return super().update(instance, validated_data)
 
     def update_choices(self, instance, cleaned_choices):
         removed_hashes = []

+ 3 - 3
misago/threads/tests/test_anonymize_data.py

@@ -22,7 +22,7 @@ def get_mock_user():
 
 class AnonymizeEventsTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(AnonymizeEventsTests, self).setUp()
+        super().setUp()
         self.factory = RequestFactory()
 
         category = Category.objects.get(slug='first-category')
@@ -173,7 +173,7 @@ class AnonymizeEventsTests(AuthenticatedUserTestCase):
 
 class AnonymizeLikesTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(AnonymizeLikesTests, self).setUp()
+        super().setUp()
         self.factory = RequestFactory()
 
     def get_request(self, user=None):
@@ -212,7 +212,7 @@ class AnonymizeLikesTests(AuthenticatedUserTestCase):
 
 class AnonymizePostsTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(AnonymizePostsTests, self).setUp()
+        super().setUp()
         self.factory = RequestFactory()
 
     def get_request(self, user=None):

+ 1 - 1
misago/threads/tests/test_attachmentadmin_views.py

@@ -8,7 +8,7 @@ from misago.threads.models import Attachment, AttachmentType
 
 class AttachmentAdminViewsTests(AdminTestCase):
     def setUp(self):
-        super(AttachmentAdminViewsTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.post = testutils.post_thread(category=self.category).first_post

+ 1 - 1
misago/threads/tests/test_attachments_api.py

@@ -21,7 +21,7 @@ TEST_CORRUPTEDIMG_PATH = os.path.join(TESTFILES_DIR, 'corrupted.gif')
 
 class AttachmentsApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(AttachmentsApiTestCase, self).setUp()
+        super().setUp()
 
         AttachmentType.objects.all().delete()
 

+ 1 - 1
misago/threads/tests/test_attachments_middleware.py

@@ -18,7 +18,7 @@ class RequestMock(object):
 
 class AttachmentsMiddlewareTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(AttachmentsMiddlewareTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_attachmenttypeadmin_views.py

@@ -7,7 +7,7 @@ from misago.threads.models import AttachmentType
 
 class AttachmentTypeAdminViewsTests(AdminTestCase):
     def setUp(self):
-        super(AttachmentTypeAdminViewsTests, self).setUp()
+        super().setUp()
         self.admin_link = reverse('misago:admin:system:attachment-types:index')
 
     def test_link_registered(self):

+ 1 - 1
misago/threads/tests/test_attachmentview.py

@@ -18,7 +18,7 @@ TEST_SMALLJPG_PATH = os.path.join(TESTFILES_DIR, 'small.jpg')
 
 class AttachmentViewTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(AttachmentViewTestCase, self).setUp()
+        super().setUp()
 
         AttachmentType.objects.all().delete()
 

+ 1 - 1
misago/threads/tests/test_delete_user_likes.py

@@ -19,7 +19,7 @@ def get_mock_user():
 
 class DeleteUserLikesTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(DeleteUserLikesTests, self).setUp()
+        super().setUp()
         self.factory = RequestFactory()
 
     def get_request(self, user=None):

+ 1 - 1
misago/threads/tests/test_emailnotification_middleware.py

@@ -18,7 +18,7 @@ UserModel = get_user_model()
 
 class EmailNotificationTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(EmailNotificationTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(

+ 1 - 1
misago/threads/tests/test_floodprotection.py

@@ -8,7 +8,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class PostMentionsTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(PostMentionsTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_gotoviews.py

@@ -14,7 +14,7 @@ GOTO_PAGE_URL = '%s%s/#post-%s'
 
 class GotoViewTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(GotoViewTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_post_mentions.py

@@ -14,7 +14,7 @@ UserModel = get_user_model()
 
 class PostMentionsTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(PostMentionsTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_posts_moderation.py

@@ -6,7 +6,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class PostsModerationTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(PostsModerationTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.all_categories()[:1][0]
         self.thread = testutils.post_thread(self.category)

+ 1 - 1
misago/threads/tests/test_privatethread_patch_api.py

@@ -15,7 +15,7 @@ UserModel = get_user_model()
 
 class PrivateThreadPatchApiTestCase(PrivateThreadsTestCase):
     def setUp(self):
-        super(PrivateThreadPatchApiTestCase, self).setUp()
+        super().setUp()
 
         self.thread = testutils.post_thread(self.category, poster=self.user)
         self.api_link = self.thread.get_api_url()

+ 1 - 1
misago/threads/tests/test_privatethread_reply_api.py

@@ -11,7 +11,7 @@ UserModel = get_user_model()
 
 class PrivateThreadReplyApiTestCase(PrivateThreadsTestCase):
     def setUp(self):
-        super(PrivateThreadReplyApiTestCase, self).setUp()
+        super().setUp()
 
         self.thread = testutils.post_thread(self.category, poster=self.user)
         self.api_link = self.thread.get_posts_api_url()

+ 1 - 1
misago/threads/tests/test_privatethread_start_api.py

@@ -14,7 +14,7 @@ UserModel = get_user_model()
 
 class StartPrivateThreadTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(StartPrivateThreadTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.private_threads()
         self.api_link = reverse('misago:api:private-thread-list')

+ 1 - 1
misago/threads/tests/test_privatethread_view.py

@@ -7,7 +7,7 @@ from .test_privatethreads import PrivateThreadsTestCase
 
 class PrivateThreadViewTests(PrivateThreadsTestCase):
     def setUp(self):
-        super(PrivateThreadViewTests, self).setUp()
+        super().setUp()
 
         self.thread = testutils.post_thread(self.category, poster=self.user)
         self.test_link = self.thread.get_absolute_url()

+ 1 - 1
misago/threads/tests/test_privatethreads.py

@@ -5,7 +5,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class PrivateThreadsTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(PrivateThreadsTestCase, self).setUp()
+        super().setUp()
         self.category = Category.objects.private_threads()
 
         override_acl(self.user, {

+ 3 - 3
misago/threads/tests/test_privatethreads_api.py

@@ -9,7 +9,7 @@ from .test_privatethreads import PrivateThreadsTestCase
 
 class PrivateThreadsListApiTests(PrivateThreadsTestCase):
     def setUp(self):
-        super(PrivateThreadsListApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse('misago:api:private-thread-list')
 
@@ -69,7 +69,7 @@ class PrivateThreadsListApiTests(PrivateThreadsTestCase):
 
 class PrivateThreadRetrieveApiTests(PrivateThreadsTestCase):
     def setUp(self):
-        super(PrivateThreadRetrieveApiTests, self).setUp()
+        super().setUp()
 
         self.thread = testutils.post_thread(self.category, poster=self.user)
         self.api_link = self.thread.get_api_url()
@@ -167,7 +167,7 @@ class PrivateThreadRetrieveApiTests(PrivateThreadsTestCase):
 
 class PrivateThreadDeleteApiTests(PrivateThreadsTestCase):
     def setUp(self):
-        super(PrivateThreadDeleteApiTests, self).setUp()
+        super().setUp()
 
         self.thread = testutils.post_thread(self.category, poster=self.user)
         self.api_link = self.thread.get_api_url()

+ 1 - 1
misago/threads/tests/test_privatethreads_lists.py

@@ -9,7 +9,7 @@ from .test_privatethreads import PrivateThreadsTestCase
 
 class PrivateThreadsListTests(PrivateThreadsTestCase):
     def setUp(self):
-        super(PrivateThreadsListTests, self).setUp()
+        super().setUp()
 
         self.test_link = reverse('misago:private-threads')
 

+ 2 - 2
misago/threads/tests/test_search.py

@@ -7,7 +7,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class SearchApiTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(SearchApiTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
 
@@ -209,7 +209,7 @@ class SearchApiTests(AuthenticatedUserTestCase):
 
 class SearchProviderApiTests(SearchApiTests):
     def setUp(self):
-        super(SearchProviderApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse(
             'misago:api:search', kwargs={

+ 3 - 3
misago/threads/tests/test_subscription_middleware.py

@@ -12,7 +12,7 @@ UserModel = get_user_model()
 
 class SubscriptionMiddlewareTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(SubscriptionMiddlewareTestCase, self).setUp()
+        super().setUp()
         self.category = Category.objects.get(slug='first-category')
         self.override_acl()
 
@@ -31,7 +31,7 @@ class SubscriptionMiddlewareTestCase(AuthenticatedUserTestCase):
 
 class SubscribeStartedThreadTests(SubscriptionMiddlewareTestCase):
     def setUp(self):
-        super(SubscribeStartedThreadTests, self).setUp()
+        super().setUp()
         self.api_link = reverse('misago:api:thread-list')
 
     def test_dont_subscribe(self):
@@ -100,7 +100,7 @@ class SubscribeStartedThreadTests(SubscriptionMiddlewareTestCase):
 
 class SubscribeRepliedThreadTests(SubscriptionMiddlewareTestCase):
     def setUp(self):
-        super(SubscribeRepliedThreadTests, self).setUp()
+        super().setUp()
         self.thread = testutils.post_thread(self.category)
         self.api_link = reverse(
             'misago:api:thread-post-list', kwargs={

+ 1 - 1
misago/threads/tests/test_sync_unread_private_threads.py

@@ -11,7 +11,7 @@ UserModel = get_user_model()
 
 class SyncUnreadPrivateThreadsTestCase(PrivateThreadsTestCase):
     def setUp(self):
-        super(SyncUnreadPrivateThreadsTestCase, self).setUp()
+        super().setUp()
 
         self.other_user = UserModel.objects.create_user(
             'BobBoberson', 'bob@boberson.com', 'pass123'

+ 2 - 2
misago/threads/tests/test_thread_bulkpatch_api.py

@@ -12,7 +12,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class ThreadsBulkPatchApiTestCase(ThreadsApiTestCase):
     def setUp(self):
-        super(ThreadsBulkPatchApiTestCase, self).setUp()
+        super().setUp()
 
         self.threads = list(reversed([
             testutils.post_thread(category=self.category),
@@ -243,7 +243,7 @@ class BulkThreadChangeTitleApiTests(ThreadsBulkPatchApiTestCase):
 
 class BulkThreadMoveApiTests(ThreadsBulkPatchApiTestCase):
     def setUp(self):
-        super(BulkThreadMoveApiTests, self).setUp()
+        super().setUp()
 
         Category(
             name='Category B',

+ 1 - 1
misago/threads/tests/test_thread_editreply_api.py

@@ -13,7 +13,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class EditReplyTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(EditReplyTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_thread_merge_api.py

@@ -11,7 +11,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class ThreadMergeApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(ThreadMergeApiTests, self).setUp()
+        super().setUp()
 
         Category(
             name='Category B',

+ 4 - 4
misago/threads/tests/test_thread_patch_api.py

@@ -443,7 +443,7 @@ class ThreadPinLocallyApiTests(ThreadPatchApiTestCase):
 
 class ThreadMoveApiTests(ThreadPatchApiTestCase):
     def setUp(self):
-        super(ThreadMoveApiTests, self).setUp()
+        super().setUp()
 
         Category(
             name='Category B',
@@ -1204,7 +1204,7 @@ class ThreadHideApiTests(ThreadPatchApiTestCase):
 
 class ThreadUnhideApiTests(ThreadPatchApiTestCase):
     def setUp(self):
-        super(ThreadUnhideApiTests, self).setUp()
+        super().setUp()
 
         self.thread.is_hidden = True
         self.thread.save()
@@ -1857,7 +1857,7 @@ class ThreadMarkBestAnswerApiTests(ThreadPatchApiTestCase):
 
 class ThreadChangeBestAnswerApiTests(ThreadPatchApiTestCase):
     def setUp(self):
-        super(ThreadChangeBestAnswerApiTests, self).setUp()
+        super().setUp()
 
         self.best_answer = testutils.reply_thread(self.thread)
         self.thread.set_best_answer(self.user, self.best_answer)
@@ -2150,7 +2150,7 @@ class ThreadChangeBestAnswerApiTests(ThreadPatchApiTestCase):
 
 class ThreadUnmarkBestAnswerApiTests(ThreadPatchApiTestCase):
     def setUp(self):
-        super(ThreadUnmarkBestAnswerApiTests, self).setUp()
+        super().setUp()
 
         self.best_answer = testutils.reply_thread(self.thread)
         self.thread.set_best_answer(self.user, self.best_answer)

+ 1 - 1
misago/threads/tests/test_thread_poll_api.py

@@ -10,7 +10,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ThreadPollApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadPollApiTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(self.category, poster=self.user)

+ 1 - 1
misago/threads/tests/test_thread_polldelete_api.py

@@ -10,7 +10,7 @@ from .test_thread_poll_api import ThreadPollApiTestCase
 
 class ThreadPollDeleteTests(ThreadPollApiTestCase):
     def setUp(self):
-        super(ThreadPollDeleteTests, self).setUp()
+        super().setUp()
 
         self.mock_poll()
 

+ 1 - 1
misago/threads/tests/test_thread_polledit_api.py

@@ -10,7 +10,7 @@ from .test_thread_poll_api import ThreadPollApiTestCase
 
 class ThreadPollEditTests(ThreadPollApiTestCase):
     def setUp(self):
-        super(ThreadPollEditTests, self).setUp()
+        super().setUp()
 
         self.mock_poll()
 

+ 2 - 2
misago/threads/tests/test_thread_pollvotes_api.py

@@ -14,7 +14,7 @@ UserModel = get_user_model()
 
 class ThreadGetVotesTests(ThreadPollApiTestCase):
     def setUp(self):
-        super(ThreadGetVotesTests, self).setUp()
+        super().setUp()
 
         self.mock_poll()
 
@@ -156,7 +156,7 @@ class ThreadGetVotesTests(ThreadPollApiTestCase):
 
 class ThreadPostVotesTests(ThreadPollApiTestCase):
     def setUp(self):
-        super(ThreadPostVotesTests, self).setUp()
+        super().setUp()
 
         self.mock_poll()
 

+ 1 - 1
misago/threads/tests/test_thread_postbulkdelete_api.py

@@ -12,7 +12,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class PostBulkDeleteApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(PostBulkDeleteApiTests, self).setUp()
+        super().setUp()
 
         self.posts = [
             testutils.reply_thread(self.thread, poster=self.user),

+ 1 - 1
misago/threads/tests/test_thread_postbulkpatch_api.py

@@ -13,7 +13,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ThreadPostBulkPatchApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadPostBulkPatchApiTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 2 - 2
misago/threads/tests/test_thread_postdelete_api.py

@@ -11,7 +11,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class PostDeleteApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(PostDeleteApiTests, self).setUp()
+        super().setUp()
 
         self.post = testutils.reply_thread(self.thread, poster=self.user)
 
@@ -176,7 +176,7 @@ class PostDeleteApiTests(ThreadsApiTestCase):
 
 class EventDeleteApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(EventDeleteApiTests, self).setUp()
+        super().setUp()
 
         self.event = testutils.reply_thread(self.thread, poster=self.user, is_event=True)
 

+ 2 - 2
misago/threads/tests/test_thread_postedits_api.py

@@ -7,7 +7,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class ThreadPostEditsApiTestCase(ThreadsApiTestCase):
     def setUp(self):
-        super(ThreadPostEditsApiTestCase, self).setUp()
+        super().setUp()
 
         self.post = testutils.reply_thread(self.thread, poster=self.user)
 
@@ -126,7 +126,7 @@ class ThreadPostGetEditTests(ThreadPostEditsApiTestCase):
 
 class ThreadPostPostEditTests(ThreadPostEditsApiTestCase):
     def setUp(self):
-        super(ThreadPostPostEditTests, self).setUp()
+        super().setUp()
         self.edits = self.mock_edit_record()
 
         self.override_acl({'can_edit_posts': 2})

+ 1 - 1
misago/threads/tests/test_thread_postlikes_api.py

@@ -8,7 +8,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class ThreadPostLikesApiTestCase(ThreadsApiTestCase):
     def setUp(self):
-        super(ThreadPostLikesApiTestCase, self).setUp()
+        super().setUp()
 
         self.post = testutils.reply_thread(self.thread, poster=self.user)
 

+ 1 - 1
misago/threads/tests/test_thread_postmerge_api.py

@@ -13,7 +13,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ThreadPostMergeApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadPostMergeApiTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_thread_postmove_api.py

@@ -13,7 +13,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ThreadPostMoveApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadPostMoveApiTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 2 - 2
misago/threads/tests/test_thread_postpatch_api.py

@@ -13,7 +13,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ThreadPostPatchApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadPostPatchApiTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)
@@ -1134,7 +1134,7 @@ class PostLikeApiTests(ThreadPostPatchApiTestCase):
 
 class ThreadEventPatchApiTestCase(ThreadPostPatchApiTestCase):
     def setUp(self):
-        super(ThreadEventPatchApiTestCase, self).setUp()
+        super().setUp()
 
         self.event = testutils.reply_thread(self.thread, poster=self.user, is_event=True)
 

+ 1 - 1
misago/threads/tests/test_thread_postread_api.py

@@ -8,7 +8,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class PostReadApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(PostReadApiTests, self).setUp()
+        super().setUp()
 
         self.post = testutils.reply_thread(
             self.thread,

+ 1 - 1
misago/threads/tests/test_thread_postsplit_api.py

@@ -13,7 +13,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ThreadPostSplitApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadPostSplitApiTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_thread_reply_api.py

@@ -9,7 +9,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ReplyThreadTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ReplyThreadTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_thread_start_api.py

@@ -7,7 +7,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class StartThreadTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(StartThreadTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.api_link = reverse('misago:api:thread-list')

+ 3 - 3
misago/threads/tests/test_threads_api.py

@@ -14,7 +14,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ThreadsApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadsApiTestCase, self).setUp()
+        super().setUp()
 
         threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
 
@@ -72,7 +72,7 @@ class ThreadsApiTestCase(AuthenticatedUserTestCase):
 
 class ThreadRetrieveApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(ThreadRetrieveApiTests, self).setUp()
+        super().setUp()
 
         self.tested_links = [
             self.api_link,
@@ -196,7 +196,7 @@ class ThreadRetrieveApiTests(ThreadsApiTestCase):
 
 class ThreadDeleteApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(ThreadDeleteApiTests, self).setUp()
+        super().setUp()
 
         self.last_thread = testutils.post_thread(category=self.category)
         self.api_link = self.last_thread.get_api_url()

+ 1 - 1
misago/threads/tests/test_threads_bulkdelete_api.py

@@ -15,7 +15,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class ThreadsBulkDeleteApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(ThreadsBulkDeleteApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse('misago:api:thread-list')
 

+ 4 - 4
misago/threads/tests/test_threads_editor_api.py

@@ -17,7 +17,7 @@ TEST_DOCUMENT_PATH = os.path.join(TESTFILES_DIR, 'document.pdf')
 
 class EditorApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(EditorApiTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
 
@@ -71,7 +71,7 @@ class EditorApiTestCase(AuthenticatedUserTestCase):
 
 class ThreadPostEditorApiTests(EditorApiTestCase):
     def setUp(self):
-        super(ThreadPostEditorApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse('misago:api:thread-editor')
 
@@ -257,7 +257,7 @@ class ThreadPostEditorApiTests(EditorApiTestCase):
 
 class ThreadReplyEditorApiTests(EditorApiTestCase):
     def setUp(self):
-        super(ThreadReplyEditorApiTests, self).setUp()
+        super().setUp()
 
         self.thread = testutils.post_thread(category=self.category)
         self.api_link = reverse(
@@ -400,7 +400,7 @@ class ThreadReplyEditorApiTests(EditorApiTestCase):
 
 class EditReplyEditorApiTests(EditorApiTestCase):
     def setUp(self):
-        super(EditReplyEditorApiTests, self).setUp()
+        super().setUp()
 
         self.thread = testutils.post_thread(category=self.category)
         self.post = testutils.reply_thread(self.thread, poster=self.user)

+ 1 - 1
misago/threads/tests/test_threads_merge_api.py

@@ -16,7 +16,7 @@ from .test_threads_api import ThreadsApiTestCase
 
 class ThreadsMergeApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(ThreadsMergeApiTests, self).setUp()
+        super().setUp()
         self.api_link = reverse('misago:api:thread-merge')
 
         Category(

+ 2 - 2
misago/threads/tests/test_threads_moderation.py

@@ -12,14 +12,14 @@ class MockRequest(object):
 
 class ThreadsModerationTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadsModerationTests, self).setUp()
+        super().setUp()
 
         self.request = MockRequest(self.user)
         self.category = Category.objects.all_categories()[:1][0]
         self.thread = testutils.post_thread(self.category)
 
     def tearDown(self):
-        super(ThreadsModerationTests, self).tearDown()
+        super().tearDown()
 
     def reload_thread(self):
         self.thread = Thread.objects.get(pk=self.thread.pk)

+ 2 - 2
misago/threads/tests/test_threadslists.py

@@ -31,7 +31,7 @@ class ThreadsListTestCase(AuthenticatedUserTestCase):
         Category E
           + Subcategory F
         """
-        super(ThreadsListTestCase, self).setUp()
+        super().setUp()
 
         self.api_link = reverse('misago:api:thread-list')
 
@@ -1530,7 +1530,7 @@ class UnapprovedListTests(ThreadsListTestCase):
 
 class OwnerOnlyThreadsVisibilityTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(OwnerOnlyThreadsVisibilityTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
 

+ 1 - 1
misago/threads/tests/test_threadview.py

@@ -17,7 +17,7 @@ class MockRequest(object):
 
 class ThreadViewTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ThreadViewTestCase, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.thread = testutils.post_thread(category=self.category)

+ 1 - 1
misago/threads/tests/test_utils.py

@@ -20,7 +20,7 @@ class AddCategoriesToItemsTests(MisagoTestCase):
           + Subcategory F
         """
 
-        super(AddCategoriesToItemsTests, self).setUp()
+        super().setUp()
 
         self.root = Category.objects.root_category()
 

+ 1 - 1
misago/threads/tests/test_validate_post.py

@@ -6,7 +6,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class ValidatePostTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ValidatePostTests, self).setUp()
+        super().setUp()
 
         self.category = Category.objects.get(slug='first-category')
         self.api_link = reverse('misago:api:thread-list')

+ 1 - 2
misago/threads/viewmodels/threads.py

@@ -164,8 +164,7 @@ class ForumThreads(ViewModel):
 
 class PrivateThreads(ViewModel):
     def get_base_queryset(self, request, threads_categories, list_type):
-        queryset = super(PrivateThreads, self).get_base_queryset(
-            request, threads_categories, list_type)
+        queryset = super().get_base_queryset(request, threads_categories, list_type)
 
         # limit queryset to threads we are participant of
         participated_threads = request.user.threadparticipant_set.values('thread_id')

+ 1 - 1
misago/threads/views/admin/attachments.py

@@ -14,7 +14,7 @@ class AttachmentAdmin(generic.AdminBaseMixin):
     message_404 = _("Requested attachment could not be found.")
 
     def get_queryset(self):
-        qs = super(AttachmentAdmin, self).get_queryset()
+        qs = super().get_queryset()
         return qs.select_related('filetype', 'uploader', 'post', 'post__thread', 'post__category')
 
 

+ 2 - 2
misago/threads/views/admin/attachmenttypes.py

@@ -20,7 +20,7 @@ class AttachmentTypeAdmin(generic.AdminBaseMixin):
             target.roles.add(*roles)
 
     def handle_form(self, form, request, target):
-        super(AttachmentTypeAdmin, self).handle_form(form, request, target)
+        super().handle_form(form, request, target)
         form.save()
 
 
@@ -28,7 +28,7 @@ class AttachmentTypesList(AttachmentTypeAdmin, generic.ListView):
     ordering = (('name', None), )
 
     def get_queryset(self):
-        queryset = super(AttachmentTypesList, self).get_queryset()
+        queryset = super().get_queryset()
         return queryset.annotate(num_files=Count('attachment'))
 
 

+ 1 - 1
misago/threads/views/list.py

@@ -73,7 +73,7 @@ class CategoryThreadsList(ForumThreadsList):
     template_name = 'misago/threadslist/category.html'
 
     def get_category(self, request, **kwargs):
-        category = super(CategoryThreadsList, self).get_category(request, **kwargs)
+        category = super().get_category(request, **kwargs)
         if not category.level:
             raise Http404()  # disallow root category access
         return category

+ 2 - 2
misago/users/api/userendpoints/editdetails.py

@@ -55,10 +55,10 @@ class DetailsForm(forms.Form):
         self.request = kwargs.pop('request')
         self.user = kwargs.pop('user')
 
-        super(DetailsForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
         profilefields.add_fields_to_form(self.request, self.user, self)
 
     def clean(self):
-        data = super(DetailsForm, self).clean()
+        data = super().clean()
         return profilefields.clean_form(self.request, self.user, self, data)

+ 4 - 4
misago/users/forms/admin.py

@@ -193,7 +193,7 @@ class EditUserForm(UserBaseForm):
     def __init__(self, *args, **kwargs):
         self.request = kwargs.pop('request')
 
-        super(EditUserForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
         profilefields.add_fields_to_admin_form(self.request, self.instance, self)
 
@@ -227,7 +227,7 @@ class EditUserForm(UserBaseForm):
         return data
 
     def clean(self):
-        data = super(EditUserForm, self).clean()
+        data = super().clean()
         return profilefields.clean_form(self.request, self.instance, self, data)
 
 
@@ -493,7 +493,7 @@ class BanUsersForm(forms.Form):
     def __init__(self, *args, **kwargs):
         users = kwargs.pop('users')
 
-        super(BanUsersForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
         self.fields['ban_type'].choices = [
             ('usernames', _('Usernames')),
@@ -672,7 +672,7 @@ class RequestDataDownloadsForm(forms.Form):
         return user_identifiers
 
     def clean(self):
-        data = super(RequestDataDownloadsForm, self).clean()
+        data = super().clean()
 
         if data.get('user_identifiers'):
             username_match = Q(slug__in=data['user_identifiers'])

+ 2 - 2
misago/users/forms/auth.py

@@ -91,7 +91,7 @@ class AdminAuthenticationForm(AuthenticationForm):
             'not_staff': _("Your account does not have admin privileges."),
         })
 
-        super(AdminAuthenticationForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
     def confirm_login_allowed(self, user):
         if not user.is_staff:
@@ -102,7 +102,7 @@ class GetUserForm(MisagoAuthMixin, forms.Form):
     email = forms.CharField()
 
     def clean(self):
-        data = super(GetUserForm, self).clean()
+        data = super().clean()
 
         email = data.get('email')
         if not email or len(email) > 250:

+ 3 - 3
misago/users/forms/register.py

@@ -21,7 +21,7 @@ class BaseRegisterForm(forms.Form):
     def __init__(self, *args, **kwargs):
         self.agreements = kwargs.pop('agreements')
         self.request = kwargs.pop('request')
-        super(BaseRegisterForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
     def clean_username(self):
         data = self.cleaned_data['username']
@@ -62,7 +62,7 @@ class BaseRegisterForm(forms.Form):
 
 class SocialAuthRegisterForm(BaseRegisterForm):
     def clean(self):
-        cleaned_data = super(SocialAuthRegisterForm, self).clean()
+        cleaned_data = super().clean()
 
         self.clean_agreements(cleaned_data)
         self.raise_if_ip_banned()
@@ -89,7 +89,7 @@ class RegisterForm(BaseRegisterForm):
             )
 
     def clean(self):
-        cleaned_data = super(RegisterForm, self).clean()
+        cleaned_data = super().clean()
 
         self.clean_agreements(cleaned_data)
         self.raise_if_ip_banned()

+ 1 - 1
misago/users/management/commands/createsuperuser.py

@@ -69,7 +69,7 @@ class Command(BaseCommand):
 
     def execute(self, *args, **options):
         self.stdin = options.get('stdin', sys.stdin)  # Used for testing
-        return super(Command, self).execute(*args, **options)
+        return super().execute(*args, **options)
 
     def handle(self, *args, **options):
         username = options.get('username')

+ 2 - 2
misago/users/models/ban.py

@@ -90,7 +90,7 @@ class Ban(models.Model):
         self.banned_value = self.banned_value.lower()
         self.is_checked = not self.is_expired
 
-        return super(Ban, self).save(*args, **kwargs)
+        return super().save(*args, **kwargs)
 
     def get_serialized_message(self):
         from misago.users.serializers import BanMessageSerializer
@@ -138,7 +138,7 @@ class BanCache(models.Model):
 
     def save(self, *args, **kwargs):
         try:
-            super(BanCache, self).save(*args, **kwargs)
+            super().save(*args, **kwargs)
         except IntegrityError:
             pass  # first come is first serve with ban cache
 

+ 1 - 1
misago/users/models/datadownload.py

@@ -50,4 +50,4 @@ class DataDownload(models.Model):
     def delete(self, *args, **kwargs):
         if self.file:
             self.file.delete(save=False)
-        super(DataDownload, self).delete(*args, **kwargs)
+        super().delete(*args, **kwargs)

+ 2 - 2
misago/users/models/rank.py

@@ -40,11 +40,11 @@ class Rank(models.Model):
             self.set_order()
         else:
             acl_version.invalidate()
-        return super(Rank, self).save(*args, **kwargs)
+        return super().save(*args, **kwargs)
 
     def delete(self, *args, **kwargs):
         acl_version.invalidate()
-        return super(Rank, self).delete(*args, **kwargs)
+        return super().delete(*args, **kwargs)
 
     def get_absolute_url(self):
         return reverse('misago:users-rank', kwargs={'slug': self.slug})

+ 2 - 2
misago/users/models/user.py

@@ -305,7 +305,7 @@ class User(AbstractBaseUser, PermissionsMixin):
 
         avatars.delete_avatar(self)
 
-        return super(User, self).delete(*args, **kwargs)
+        return super().delete(*args, **kwargs)
 
     def delete_content(self):
         from misago.users.signals import delete_user_content
@@ -479,7 +479,7 @@ class Online(models.Model):
 
     def save(self, *args, **kwargs):
         try:
-            super(Online, self).save(*args, **kwargs)
+            super().save(*args, **kwargs)
         except IntegrityError:
             pass  # first come is first serve in online tracker
 

+ 2 - 2
misago/users/tests/test_activepostersranking.py

@@ -17,7 +17,7 @@ UserModel = get_user_model()
 
 class TestActivePostersRanking(AuthenticatedUserTestCase):
     def setUp(self):
-        super(TestActivePostersRanking, self).setUp()
+        super().setUp()
 
         cache.clear()
         threadstore.clear()
@@ -25,7 +25,7 @@ class TestActivePostersRanking(AuthenticatedUserTestCase):
         self.category = Category.objects.get(slug='first-category')
 
     def tearDown(self):
-        super(TestActivePostersRanking, self).tearDown()
+        super().tearDown()
 
         cache.clear()
         threadstore.clear()

+ 3 - 3
misago/users/tests/test_audittrail.py

@@ -23,7 +23,7 @@ class MockRequest(object):
 
 class CreateAuditTrailTests(UserTestCase):
     def setUp(self):
-        super(CreateAuditTrailTests, self).setUp()
+        super().setUp()
 
         self.obj = UserModel.objects.create_user('BobBoberson', 'bob@example.com')
 
@@ -95,7 +95,7 @@ class CreateAuditTrailTests(UserTestCase):
 
 class CreateUserAuditTrailTests(UserTestCase):
     def setUp(self):
-        super(CreateUserAuditTrailTests, self).setUp()
+        super().setUp()
 
         self.obj = UserModel.objects.create_user('BobBoberson', 'bob@example.com')
 
@@ -161,7 +161,7 @@ class CreateUserAuditTrailTests(UserTestCase):
 
 class RemoveOldAuditTrailsTest(UserTestCase):
     def setUp(self):
-        super(RemoveOldAuditTrailsTest, self).setUp()
+        super().setUp()
 
         self.obj = UserModel.objects.create_user('BobBoberson', 'bob@example.com')
         

+ 1 - 1
misago/users/tests/test_bio_profilefield.py

@@ -9,7 +9,7 @@ UserModel = get_user_model()
 
 class BioProfileFieldTests(AdminTestCase):
     def setUp(self):
-        super(BioProfileFieldTests, self).setUp()
+        super().setUp()
 
         self.test_link = reverse(
             'misago:admin:users:accounts:edit',

+ 1 - 1
misago/users/tests/test_datadownloads.py

@@ -60,7 +60,7 @@ class ExpireUserDataDownloadTests(AuthenticatedUserTestCase):
 
 class PrepareUserDataDownload(AuthenticatedUserTestCase):
     def setUp(self):
-        super(PrepareUserDataDownload, self).setUp()
+        super().setUp()
         self.download = request_user_data_download(self.user)
 
     def assert_download_is_valid(self):

+ 1 - 1
misago/users/tests/test_djangoadmin_user.py

@@ -11,7 +11,7 @@ from misago.users.djangoadmin import UserAdminModel
 @override_settings(ROOT_URLCONF='misago.core.testproject.urls')
 class TestDjangoAdminUserForm(AdminTestCase):
     def setUp(self):
-        super(TestDjangoAdminUserForm, self).setUp()
+        super().setUp()
         self.test_user = get_user_model().objects.create_user(
             username='Bob',
             email='bob@test.com',

+ 1 - 1
misago/users/tests/test_gender_profilefield.py

@@ -9,7 +9,7 @@ UserModel = get_user_model()
 
 class GenderProfileFieldTests(AdminTestCase):
     def setUp(self):
-        super(GenderProfileFieldTests, self).setUp()
+        super().setUp()
 
         self.test_link = reverse(
             'misago:admin:users:accounts:edit',

+ 1 - 1
misago/users/tests/test_joinip_profilefield.py

@@ -10,7 +10,7 @@ UserModel = get_user_model()
 
 class JoinIpProfileFieldTests(AdminTestCase):
     def setUp(self):
-        super(JoinIpProfileFieldTests, self).setUp()
+        super().setUp()
 
         self.test_link = reverse(
             'misago:admin:users:accounts:edit',

+ 1 - 1
misago/users/tests/test_lists_views.py

@@ -14,7 +14,7 @@ UserModel = get_user_model()
 
 class UsersListTestCase(AuthenticatedUserTestCase):
     def setUp(self):
-        super(UsersListTestCase, self).setUp()
+        super().setUp()
         override_acl(self.user, {
             'can_browse_users_list': 1,
         })

+ 1 - 1
misago/users/tests/test_online_utils.py

@@ -10,7 +10,7 @@ UserModel = get_user_model()
 
 class GetUserStatusTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(GetUserStatusTests, self).setUp()
+        super().setUp()
         self.other_user = UserModel.objects.create_user('Tyrael', 't123@test.com', 'pass123')
 
     def test_user_hiding_presence(self):

+ 2 - 2
misago/users/tests/test_options_views.py

@@ -25,7 +25,7 @@ class OptionsViewsTests(AuthenticatedUserTestCase):
 
 class ConfirmChangeEmailTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ConfirmChangeEmailTests, self).setUp()
+        super().setUp()
         link = '/api/users/%s/change-email/' % self.user.pk
 
         response = self.client.post(
@@ -64,7 +64,7 @@ class ConfirmChangeEmailTests(AuthenticatedUserTestCase):
 
 class ConfirmChangePasswordTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(ConfirmChangePasswordTests, self).setUp()
+        super().setUp()
         link = '/api/users/%s/change-password/' % self.user.pk
 
         response = self.client.post(

+ 1 - 1
misago/users/tests/test_profile_views.py

@@ -13,7 +13,7 @@ UserModel = get_user_model()
 
 class UserProfileViewsTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(UserProfileViewsTests, self).setUp()
+        super().setUp()
         self.link_kwargs = {'slug': self.user.slug, 'pk': self.user.pk}
 
         self.category = Category.objects.get(slug='first-category')

+ 2 - 2
misago/users/tests/test_search.py

@@ -10,7 +10,7 @@ UserModel = get_user_model()
 
 class SearchApiTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(SearchApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse('misago:api:search')
 
@@ -138,7 +138,7 @@ class SearchApiTests(AuthenticatedUserTestCase):
 
 class SearchProviderApiTests(SearchApiTests):
     def setUp(self):
-        super(SearchProviderApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse(
             'misago:api:search', kwargs={

+ 3 - 3
misago/users/tests/test_social_pipeline.py

@@ -229,12 +229,12 @@ class CreateUser(PipelineTestCase):
 
 class CreateUserWithFormTests(PipelineTestCase):
     def setUp(self):
-        super(CreateUserWithFormTests, self).setUp()
+        super().setUp()
 
         Agreement.objects.invalidate_cache()
 
     def tearDown(self):
-        super(CreateUserWithFormTests, self).tearDown()
+        super().tearDown()
         
         Agreement.objects.invalidate_cache()
 
@@ -640,7 +640,7 @@ class GetUsernameTests(PipelineTestCase):
 
 class RequireActivationTests(PipelineTestCase):
     def setUp(self):
-        super(RequireActivationTests, self).setUp()
+        super().setUp()
 
         self.user.requires_activation = UserModel.ACTIVATION_ADMIN
         self.user.save()

+ 1 - 1
misago/users/tests/test_twitter_profilefield.py

@@ -9,7 +9,7 @@ UserModel = get_user_model()
 
 class TwitterProfileFieldTests(AdminTestCase):
     def setUp(self):
-        super(TwitterProfileFieldTests, self).setUp()
+        super().setUp()
 
         self.test_link = reverse(
             'misago:admin:users:accounts:edit',

+ 2 - 2
misago/users/tests/test_user_avatar_api.py

@@ -22,7 +22,7 @@ class UserAvatarTests(AuthenticatedUserTestCase):
     """tests for user avatar RPC (/api/users/1/avatar/)"""
 
     def setUp(self):
-        super(UserAvatarTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/avatar/' % self.user.pk
         self.client.post(self.link, data={'avatar': 'generated'})
 
@@ -297,7 +297,7 @@ class UserAvatarModerationTests(AuthenticatedUserTestCase):
     """tests for moderate user avatar RPC (/api/users/1/moderate-avatar/)"""
 
     def setUp(self):
-        super(UserAvatarModerationTests, self).setUp()
+        super().setUp()
 
         self.other_user = UserModel.objects.create_user("OtherUser", "other@user.com", "pass123")
 

+ 1 - 1
misago/users/tests/test_user_changeemail_api.py

@@ -12,7 +12,7 @@ class UserChangeEmailTests(AuthenticatedUserTestCase):
     """tests for user change email RPC (/api/users/1/change-email/)"""
 
     def setUp(self):
-        super(UserChangeEmailTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/change-email/' % self.user.pk
 
     def test_unsupported_methods(self):

+ 1 - 1
misago/users/tests/test_user_changepassword_api.py

@@ -8,7 +8,7 @@ class UserChangePasswordTests(AuthenticatedUserTestCase):
     """tests for user change password RPC (/api/users/1/change-password/)"""
 
     def setUp(self):
-        super(UserChangePasswordTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/change-password/' % self.user.pk
 
     def test_unsupported_methods(self):

+ 1 - 1
misago/users/tests/test_user_create_api.py

@@ -16,7 +16,7 @@ class UserCreateTests(UserTestCase):
     """tests for new user registration (POST to /api/users/)"""
 
     def setUp(self):
-        super(UserCreateTests, self).setUp()
+        super().setUp()
         
         Agreement.objects.invalidate_cache()
 

+ 1 - 1
misago/users/tests/test_user_datadownloads_api.py

@@ -4,7 +4,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class UserDataDownloadsApiTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(UserDataDownloadsApiTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/data-downloads/' % self.user.pk
 
     def test_get_other_user_exports_anonymous(self):

+ 1 - 1
misago/users/tests/test_user_editdetails_api.py

@@ -11,7 +11,7 @@ UserModel = get_user_model()
 
 class UserEditDetailsApiTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(UserEditDetailsApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse(
             'misago:api:user-edit-details',

+ 2 - 2
misago/users/tests/test_user_feeds_api.py

@@ -6,7 +6,7 @@ from misago.threads.tests.test_threads_api import ThreadsApiTestCase
 
 class UserThreadsApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(UserThreadsApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse(
             'misago:api:user-threads', kwargs={
@@ -92,7 +92,7 @@ class UserThreadsApiTests(ThreadsApiTestCase):
 
 class UserPostsApiTests(ThreadsApiTestCase):
     def setUp(self):
-        super(UserPostsApiTests, self).setUp()
+        super().setUp()
 
         self.api_link = reverse(
             'misago:api:user-posts', kwargs={

+ 1 - 1
misago/users/tests/test_user_middleware.py

@@ -7,7 +7,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class UserMiddlewareTest(AuthenticatedUserTestCase):
     def setUp(self):
-        super(UserMiddlewareTest, self).setUp()
+        super().setUp()
 
         self.api_link = reverse('misago:api:auth')
         self.test_link = reverse('misago:index')

+ 1 - 1
misago/users/tests/test_user_requestdatadownload_api.py

@@ -6,7 +6,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class UserRequestDataDownload(AuthenticatedUserTestCase):
     def setUp(self):
-        super(UserRequestDataDownload, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/request-data-download/' % self.user.pk
 
     def test_request_other_user_download_anonymous(self):

+ 1 - 1
misago/users/tests/test_user_signature_api.py

@@ -6,7 +6,7 @@ class UserSignatureTests(AuthenticatedUserTestCase):
     """tests for user signature RPC (POST to /api/users/1/signature/)"""
 
     def setUp(self):
-        super(UserSignatureTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/signature/' % self.user.pk
 
     def test_signature_no_permission(self):

+ 2 - 2
misago/users/tests/test_user_username_api.py

@@ -14,7 +14,7 @@ class UserUsernameTests(AuthenticatedUserTestCase):
     """tests for user change name RPC (POST to /api/users/1/username/)"""
 
     def setUp(self):
-        super(UserUsernameTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/username/' % self.user.pk
 
     def test_get_change_username_options(self):
@@ -109,7 +109,7 @@ class UserUsernameModerationTests(AuthenticatedUserTestCase):
     """tests for moderate username RPC (/api/users/1/moderate-username/)"""
 
     def setUp(self):
-        super(UserUsernameModerationTests, self).setUp()
+        super().setUp()
 
         self.other_user = UserModel.objects.create_user("OtherUser", "other@user.com", "pass123")
 

+ 1 - 1
misago/users/tests/test_usernamechanges_api.py

@@ -4,7 +4,7 @@ from misago.users.testutils import AuthenticatedUserTestCase
 
 class UsernameChangesApiTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(UsernameChangesApiTests, self).setUp()
+        super().setUp()
         self.link = '/api/username-changes/'
 
     def test_user_can_always_see_his_name_changes(self):

+ 11 - 11
misago/users/tests/test_users_api.py

@@ -24,7 +24,7 @@ class ActivePostersListTests(AuthenticatedUserTestCase):
     """tests for active posters list (GET /users/?list=active)"""
 
     def setUp(self):
-        super(ActivePostersListTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/?list=active'
 
         cache.clear()
@@ -71,7 +71,7 @@ class FollowersListTests(AuthenticatedUserTestCase):
     """tests for generic list (GET /users/) filtered by followers"""
 
     def setUp(self):
-        super(FollowersListTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/followers/'
 
     def test_nonexistent_user(self):
@@ -117,7 +117,7 @@ class FollowsListTests(AuthenticatedUserTestCase):
     """tests for generic list (GET /users/) filtered by follows"""
 
     def setUp(self):
-        super(FollowsListTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/follows/'
 
     def test_nonexistent_user(self):
@@ -163,7 +163,7 @@ class RankListTests(AuthenticatedUserTestCase):
     """tests for generic list (GET /users/) filtered by rank"""
 
     def setUp(self):
-        super(RankListTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/?rank=%s'
 
     def test_nonexistent_rank(self):
@@ -237,7 +237,7 @@ class SearchNamesListTests(AuthenticatedUserTestCase):
     """tests for generic list (GET /users/) filtered by username disallowing searches"""
 
     def setUp(self):
-        super(SearchNamesListTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/?&name='
 
     def test_empty_list(self):
@@ -253,7 +253,7 @@ class SearchNamesListTests(AuthenticatedUserTestCase):
 
 class UserRetrieveTests(AuthenticatedUserTestCase):
     def setUp(self):
-        super(UserRetrieveTests, self).setUp()
+        super().setUp()
 
         self.test_user = UserModel.objects.create_user('Tyrael', 't123@test.com', 'pass123')
         self.link = reverse(
@@ -289,7 +289,7 @@ class UserForumOptionsTests(AuthenticatedUserTestCase):
     """tests for user forum options RPC (POST to /api/users/1/forum-options/)"""
 
     def setUp(self):
-        super(UserForumOptionsTests, self).setUp()
+        super().setUp()
         self.link = '/api/users/%s/forum-options/' % self.user.pk
 
     def test_empty_request(self):
@@ -397,7 +397,7 @@ class UserFollowTests(AuthenticatedUserTestCase):
     """tests for user follow RPC (POST to /api/users/1/follow/)"""
 
     def setUp(self):
-        super(UserFollowTests, self).setUp()
+        super().setUp()
 
         self.other_user = UserModel.objects.create_user("OtherUser", "other@user.com", "pass123")
 
@@ -461,7 +461,7 @@ class UserBanTests(AuthenticatedUserTestCase):
     """tests for ban endpoint (GET to /api/users/1/ban/)"""
 
     def setUp(self):
-        super(UserBanTests, self).setUp()
+        super().setUp()
 
         self.other_user = UserModel.objects.create_user("OtherUser", "other@user.com", "pass123")
 
@@ -503,7 +503,7 @@ class UserBanTests(AuthenticatedUserTestCase):
 class UserDeleteOwnAccountTests(AuthenticatedUserTestCase):
     """tests for user request own account delete RPC (POST to /api/users/1/delete-own-account/)"""
     def setUp(self):
-        super(UserDeleteOwnAccountTests, self).setUp()
+        super().setUp()
         self.api_link = '/api/users/%s/delete-own-account/' % self.user.pk
 
     @override_settings(MISAGO_ENABLE_DELETE_OWN_ACCOUNT=False)
@@ -576,7 +576,7 @@ class UserDeleteTests(AuthenticatedUserTestCase):
     """tests for user delete RPC (POST to /api/users/1/delete/)"""
 
     def setUp(self):
-        super(UserDeleteTests, self).setUp()
+        super().setUp()
 
         self.other_user = UserModel.objects.create_user("OtherUser", "other@user.com", "pass123")
 

+ 1 - 1
misago/users/testutils.py

@@ -13,7 +13,7 @@ class UserTestCase(MisagoTestCase):
     USER_IP = '127.0.0.1'
 
     def setUp(self):
-        super(UserTestCase, self).setUp()
+        super().setUp()
         self.get_initial_user()
 
     def get_initial_user(self):

+ 1 - 1
misago/users/views/admin/bans.py

@@ -14,7 +14,7 @@ class BanAdmin(generic.AdminBaseMixin):
     message_404 = _("Requested ban does not exist.")
 
     def handle_form(self, form, request, target):
-        super(BanAdmin, self).handle_form(form, request, target)
+        super().handle_form(form, request, target)
         Ban.objects.invalidate_cache()
 
 

+ 1 - 1
misago/users/views/admin/datadownloads.py

@@ -38,7 +38,7 @@ class DataDownloadsList(DataDownloadAdmin, generic.ListView):
     ]
 
     def get_queryset(self):
-        qs = super(DataDownloadsList, self).get_queryset()
+        qs = super().get_queryset()
         return qs.select_related('user', 'requester')
         
     def get_search_form(self, request):

+ 1 - 1
misago/users/views/admin/ranks.py

@@ -21,7 +21,7 @@ class RankAdmin(generic.AdminBaseMixin):
             target.roles.add(*roles)
 
     def handle_form(self, form, request, target):
-        super(RankAdmin, self).handle_form(form, request, target)
+        super().handle_form(form, request, target)
         self.update_roles(target, form.cleaned_data['roles'])
 
 

+ 2 - 2
misago/users/views/admin/users.py

@@ -97,7 +97,7 @@ class UsersList(UserAdmin, generic.ListView):
     ]
 
     def get_queryset(self):
-        qs = super(UsersList, self).get_queryset()
+        qs = super().get_queryset()
         return qs.select_related('rank')
 
     def get_search_form(self, request):
@@ -278,7 +278,7 @@ class EditUser(UserAdmin, generic.ModelFormView):
     def real_dispatch(self, request, target):
         target.old_username = target.username
         target.old_is_avatar_locked = target.is_avatar_locked
-        return super(EditUser, self).real_dispatch(request, target)
+        return super().real_dispatch(request, target)
 
     def initialize_form(self, form, request, target):
         if request.method == 'POST':