Просмотр исходного кода

fix #636: changed import path, isorted imports

Rafał Pitoń 8 лет назад
Родитель
Сommit
3dbe77d969
150 измененных файлов с 211 добавлено и 188 удалено
  1. 1 1
      misago/acl/tests/test_roleadmin_views.py
  2. 1 1
      misago/acl/views.py
  3. 1 1
      misago/admin/hierarchy.py
  4. 1 1
      misago/admin/tests/test_admin_views.py
  5. 1 1
      misago/admin/testutils.py
  6. 1 1
      misago/admin/views/__init__.py
  7. 1 1
      misago/admin/views/generic/list.py
  8. 1 1
      misago/categories/serializers.py
  9. 1 1
      misago/categories/tests/test_categories_admin_views.py
  10. 1 1
      misago/categories/tests/test_permissions_admin_views.py
  11. 1 1
      misago/categories/tests/test_views.py
  12. 1 1
      misago/categories/views/categorieslist.py
  13. 1 1
      misago/conf/context_processors.py
  14. 1 1
      misago/conf/tests/test_admin_views.py
  15. 2 1
      misago/core/apipaginator.py
  16. 1 1
      misago/core/exceptionhandler.py
  17. 2 2
      misago/core/templatetags/misago_forms.py
  18. 1 1
      misago/core/templatetags/misago_pagination.py
  19. 1 1
      misago/core/tests/test_decorators.py
  20. 1 1
      misago/core/tests/test_errorpages.py
  21. 1 1
      misago/core/tests/test_exceptionhandler_middleware.py
  22. 1 1
      misago/core/tests/test_mailer.py
  23. 1 1
      misago/core/tests/test_shortcuts.py
  24. 0 1
      misago/core/tests/test_testmailsetup.py
  25. 1 1
      misago/core/tests/test_threadstore.py
  26. 8 3
      misago/core/tests/test_utils.py
  27. 1 1
      misago/core/tests/test_views.py
  28. 3 2
      misago/core/utils.py
  29. 2 1
      misago/faker/management/commands/createfakebans.py
  30. 2 1
      misago/faker/management/commands/createfakecategories.py
  31. 2 1
      misago/faker/management/commands/createfakethreads.py
  32. 2 1
      misago/faker/management/commands/createfakeusers.py
  33. 1 1
      misago/legal/context_processors.py
  34. 1 1
      misago/legal/tests.py
  35. 2 1
      misago/markup/bbcode/blocks.py
  36. 1 1
      misago/markup/context_processors.py
  37. 1 0
      misago/markup/mentions.py
  38. 4 4
      misago/markup/parser.py
  39. 2 2
      misago/markup/pipeline.py
  40. 1 1
      misago/markup/tests/test_api.py
  41. 5 1
      misago/threads/admin.py
  42. 0 1
      misago/threads/api/attachments.py
  43. 2 1
      misago/threads/api/pollvotecreateendpoint.py
  44. 1 1
      misago/threads/api/postendpoints/edits.py
  45. 2 1
      misago/threads/api/postendpoints/merge.py
  46. 2 1
      misago/threads/api/postendpoints/move.py
  47. 1 0
      misago/threads/api/postendpoints/patch_event.py
  48. 1 0
      misago/threads/api/postendpoints/patch_post.py
  49. 2 1
      misago/threads/api/postendpoints/split.py
  50. 2 1
      misago/threads/api/postingendpoint/attachments.py
  51. 3 2
      misago/threads/api/postingendpoint/category.py
  52. 1 1
      misago/threads/api/postingendpoint/emailnotification.py
  53. 3 2
      misago/threads/api/postingendpoint/participants.py
  54. 0 1
      misago/threads/api/postingendpoint/privatethread.py
  55. 2 3
      misago/threads/api/postingendpoint/subscribe.py
  56. 1 2
      misago/threads/api/threadendpoints/list.py
  57. 2 1
      misago/threads/api/threadendpoints/merge.py
  58. 7 2
      misago/threads/api/threadpoll.py
  59. 2 3
      misago/threads/api/threadposts.py
  60. 1 1
      misago/threads/api/threads.py
  61. 1 1
      misago/threads/context_processors.py
  62. 3 2
      misago/threads/models/attachment.py
  63. 0 1
      misago/threads/models/poll.py
  64. 2 2
      misago/threads/models/post.py
  65. 2 1
      misago/threads/permissions/polls.py
  66. 1 1
      misago/threads/serializers/attachment.py
  67. 3 3
      misago/threads/serializers/poll.py
  68. 1 1
      misago/threads/serializers/pollvote.py
  69. 1 2
      misago/threads/serializers/post.py
  70. 1 1
      misago/threads/serializers/postedit.py
  71. 1 1
      misago/threads/serializers/postlike.py
  72. 1 1
      misago/threads/serializers/thread.py
  73. 1 1
      misago/threads/signals.py
  74. 2 1
      misago/threads/templatetags/misago_poststags.py
  75. 1 1
      misago/threads/tests/test_attachmentadmin_views.py
  76. 3 2
      misago/threads/tests/test_attachments_api.py
  77. 2 2
      misago/threads/tests/test_attachmenttypeadmin_views.py
  78. 1 1
      misago/threads/tests/test_attachmentview.py
  79. 1 1
      misago/threads/tests/test_floodprotection.py
  80. 1 1
      misago/threads/tests/test_participants.py
  81. 1 1
      misago/threads/tests/test_post_mentions.py
  82. 1 2
      misago/threads/tests/test_privatethread_start_api.py
  83. 2 3
      misago/threads/tests/test_subscription_middleware.py
  84. 1 1
      misago/threads/tests/test_thread_editreply_api.py
  85. 2 1
      misago/threads/tests/test_thread_merge_api.py
  86. 1 1
      misago/threads/tests/test_thread_poll_api.py
  87. 1 1
      misago/threads/tests/test_thread_pollcreate_api.py
  88. 1 1
      misago/threads/tests/test_thread_polldelete_api.py
  89. 1 1
      misago/threads/tests/test_thread_polledit_api.py
  90. 1 1
      misago/threads/tests/test_thread_pollvotes_api.py
  91. 1 1
      misago/threads/tests/test_thread_postdelete_api.py
  92. 1 1
      misago/threads/tests/test_thread_postedits_api.py
  93. 1 1
      misago/threads/tests/test_thread_postlikes_api.py
  94. 1 1
      misago/threads/tests/test_thread_postmerge_api.py
  95. 1 1
      misago/threads/tests/test_thread_postmove_api.py
  96. 1 1
      misago/threads/tests/test_thread_postpatch_api.py
  97. 1 1
      misago/threads/tests/test_thread_postread_api.py
  98. 1 1
      misago/threads/tests/test_thread_postsplit_api.py
  99. 1 1
      misago/threads/tests/test_thread_reply_api.py
  100. 1 1
      misago/threads/tests/test_threads_editor_api.py
  101. 1 1
      misago/threads/tests/test_threads_merge_api.py
  102. 1 1
      misago/threads/tests/test_threadslists.py
  103. 1 1
      misago/threads/threadtypes/privatethread.py
  104. 1 1
      misago/threads/threadtypes/thread.py
  105. 1 0
      misago/threads/threadtypes/treesmap.py
  106. 2 2
      misago/threads/urls/api.py
  107. 1 1
      misago/threads/utils.py
  108. 2 1
      misago/threads/validators.py
  109. 1 1
      misago/threads/viewmodels/category.py
  110. 1 3
      misago/threads/viewmodels/thread.py
  111. 1 1
      misago/threads/views/admin/attachments.py
  112. 1 1
      misago/threads/views/admin/attachmenttypes.py
  113. 0 1
      misago/threads/views/goto.py
  114. 2 4
      misago/threads/views/list.py
  115. 1 1
      misago/threads/views/thread.py
  116. 1 1
      misago/users/api/users.py
  117. 1 1
      misago/users/context_processors.py
  118. 8 8
      misago/users/djangoadmin.py
  119. 1 1
      misago/users/middleware.py
  120. 1 1
      misago/users/models/rank.py
  121. 1 1
      misago/users/models/user.py
  122. 1 1
      misago/users/serializers/user.py
  123. 1 1
      misago/users/templatetags/misago_avatars.py
  124. 1 1
      misago/users/tests/test_activation_views.py
  125. 1 1
      misago/users/tests/test_auth_views.py
  126. 1 1
      misago/users/tests/test_avatarserver_views.py
  127. 1 1
      misago/users/tests/test_banadmin_views.py
  128. 1 1
      misago/users/tests/test_captcha_api.py
  129. 1 1
      misago/users/tests/test_decorators.py
  130. 1 1
      misago/users/tests/test_djangoadmin_auth.py
  131. 1 1
      misago/users/tests/test_djangoadmin_user.py
  132. 1 1
      misago/users/tests/test_forgottenpassword_views.py
  133. 1 1
      misago/users/tests/test_lists_views.py
  134. 1 1
      misago/users/tests/test_options_views.py
  135. 1 1
      misago/users/tests/test_profile_views.py
  136. 1 1
      misago/users/tests/test_rankadmin_views.py
  137. 1 1
      misago/users/tests/test_rest_permissions.py
  138. 1 1
      misago/users/tests/test_testutils.py
  139. 1 1
      misago/users/tests/test_user_avatar_api.py
  140. 1 1
      misago/users/tests/test_user_create_api.py
  141. 1 1
      misago/users/tests/test_user_feeds_api.py
  142. 1 1
      misago/users/tests/test_useradmin_views.py
  143. 1 1
      misago/users/tests/test_warningadmin_views.py
  144. 1 1
      misago/users/testutils.py
  145. 1 1
      misago/users/views/activation.py
  146. 1 1
      misago/users/views/admin/ranks.py
  147. 1 1
      misago/users/views/forgottenpassword.py
  148. 1 1
      misago/users/views/lists.py
  149. 1 1
      misago/users/views/options.py
  150. 3 4
      misago/users/views/profile.py

+ 1 - 1
misago/acl/tests/test_roleadmin_views.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.admin.testutils import AdminTestCase
 

+ 1 - 1
misago/acl/views.py

@@ -1,6 +1,6 @@
 from django.contrib import messages
-from django.core.urlresolvers import reverse
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 
 from misago.admin.views import generic

+ 1 - 1
misago/admin/hierarchy.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 class Node(object):

+ 1 - 1
misago/admin/tests/test_admin_views.py

@@ -1,6 +1,6 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase
+from django.urls import reverse
 
 from ..testutils import AdminTestCase
 from ..views import get_protected_namespace

+ 1 - 1
misago/admin/testutils.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.users.testutils import SuperUserTestCase
 

+ 1 - 1
misago/admin/views/__init__.py

@@ -1,5 +1,5 @@
 from django.conf import settings
-from django.core.urlresolvers import reverse, NoReverseMatch
+from django.urls import reverse, NoReverseMatch
 from django.shortcuts import render as dj_render
 
 from .. import site

+ 1 - 1
misago/admin/views/generic/list.py

@@ -1,8 +1,8 @@
 from django.contrib import messages
 from django.core.paginator import EmptyPage, Paginator
-from django.core.urlresolvers import reverse
 from django.db import transaction
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 
 from misago.core.exceptions import ExplicitFirstPage

+ 1 - 1
misago/categories/serializers.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from rest_framework import serializers
 

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.admin.testutils import AdminTestCase
 from misago.threads import testutils

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.acl.models import Role
 from misago.acl.testutils import fake_post_data

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

@@ -1,6 +1,6 @@
 from datetime import timedelta
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 
 from misago.acl.testutils import override_acl

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

@@ -1,5 +1,5 @@
-from django.core.urlresolvers import reverse
 from django.shortcuts import render
+from django.urls import reverse
 
 from ..serializers import CategorySerializer
 from ..utils import get_categories_tree

+ 1 - 1
misago/conf/context_processors.py

@@ -1,6 +1,6 @@
 import json
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from .gateway import db_settings, dj_settings  # noqa
 

+ 1 - 1
misago/conf/tests/test_admin_views.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.admin.testutils import AdminTestCase
 

+ 2 - 1
misago/core/apipaginator.py

@@ -1,4 +1,5 @@
-from django.core.paginator import Paginator as DjangoPaginator, InvalidPage
+from django.core.paginator import Paginator as DjangoPaginator
+from django.core.paginator import InvalidPage
 from django.utils import six
 
 from rest_framework.exceptions import NotFound

+ 1 - 1
misago/core/exceptionhandler.py

@@ -1,6 +1,6 @@
 from django.core.exceptions import PermissionDenied
-from django.core.urlresolvers import reverse
 from django.http import Http404, HttpResponsePermanentRedirect, JsonResponse
+from django.urls import reverse
 from django.utils import six
 from django.utils.translation import gettext as _
 

+ 2 - 2
misago/core/templatetags/misago_forms.py

@@ -1,8 +1,8 @@
+from crispy_forms.templatetags import crispy_forms_field, crispy_forms_filters
+
 from django import template
 from django.template.loader import render_to_string
 
-from crispy_forms.templatetags import crispy_forms_field, crispy_forms_filters
-
 
 register = template.Library()
 

+ 1 - 1
misago/core/templatetags/misago_pagination.py

@@ -1,6 +1,6 @@
 from django import template
-from django.core.urlresolvers import reverse
 from django.template.loader import get_template
+from django.urls import reverse
 
 
 register = template.Library()

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

@@ -1,6 +1,6 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
 
 @override_settings(ROOT_URLCONF='misago.core.testproject.urls')

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

@@ -1,6 +1,6 @@
-from django.core.urlresolvers import reverse
 from django.test import Client, TestCase, override_settings
 from django.test.client import RequestFactory
+from django.urls import reverse
 
 from misago.users.models import AnonymousUser
 

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

@@ -1,7 +1,7 @@
-from django.core.urlresolvers import reverse
 from django.http import Http404
 from django.test import TestCase
 from django.test.client import RequestFactory
+from django.urls import reverse
 
 from misago.users.models import AnonymousUser
 

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

@@ -1,7 +1,7 @@
 from django.contrib.auth import get_user_model
 from django.core import mail
-from django.core.urlresolvers import reverse
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
 
 @override_settings(ROOT_URLCONF='misago.core.testproject.urls')

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

@@ -1,6 +1,6 @@
-from django.core.urlresolvers import reverse
 from django.http import Http404
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
 from ..shortcuts import get_int_or_404
 

+ 0 - 1
misago/core/tests/test_testmailsetup.py

@@ -3,7 +3,6 @@ from django.core.management import call_command
 from django.test import TestCase
 from django.utils.six import StringIO
 
-
 from ..management.commands import testemailsetup
 
 

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

@@ -1,6 +1,6 @@
-from django.core.urlresolvers import reverse
 from django.test import TestCase
 from django.test.client import RequestFactory
+from django.urls import reverse
 
 from .. import threadstore
 from ..middleware.threadstore import ThreadStoreMiddleware

+ 8 - 3
misago/core/tests/test_utils.py

@@ -1,12 +1,17 @@
 #-*- coding: utf-8 -*-
-from django.core.urlresolvers import reverse
 from django.test import TestCase
 from django.test.client import RequestFactory
+from django.urls import reverse
 from django.utils import timezone
 
 from ..utils import (
-    clean_return_path, format_plaintext_for_html, is_referer_local, is_request_to_misago,
-    parse_iso8601_string, slugify)
+    clean_return_path,
+    format_plaintext_for_html,
+    is_referer_local,
+    is_request_to_misago,
+    parse_iso8601_string,
+    slugify
+)
 
 
 VALID_PATHS = (

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

@@ -1,5 +1,5 @@
-from django.core.urlresolvers import reverse
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
 
 class MomentJSCatalogViewTests(TestCase):

+ 3 - 2
misago/core/utils.py

@@ -3,12 +3,13 @@ from datetime import datetime, timedelta
 import six
 from unidecode import unidecode
 
-from django.core.urlresolvers import resolve, reverse
 from django.http import Http404
 from django.template.defaultfilters import slugify as django_slugify
+from django.urls import resolve, reverse
 from django.utils import html, timezone
 from django.utils.encoding import force_text
-from django.utils.translation import ugettext_lazy as _, ungettext_lazy
+from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ungettext_lazy
 
 
 def slugify(string):

+ 2 - 1
misago/faker/management/commands/createfakebans.py

@@ -2,11 +2,12 @@ import random
 import sys
 from datetime import timedelta
 
+from faker import Factory
+
 from django.core.management.base import BaseCommand
 from django.utils import timezone
 from django.utils.six.moves import range
 
-from faker import Factory
 from misago.core.management.progressbar import show_progress
 from misago.users.models import BAN_EMAIL, BAN_IP, BAN_USERNAME, Ban
 

+ 2 - 1
misago/faker/management/commands/createfakecategories.py

@@ -2,10 +2,11 @@ import random
 import sys
 import time
 
+from faker import Factory
+
 from django.core.management.base import BaseCommand
 from django.utils.six.moves import range
 
-from faker import Factory
 from misago.acl import version as acl_version
 from misago.categories.models import Category, RoleCategoryACL
 from misago.core.management.progressbar import show_progress

+ 2 - 1
misago/faker/management/commands/createfakethreads.py

@@ -1,6 +1,8 @@
 import random
 import time
 
+from faker import Factory
+
 from django.contrib.auth import get_user_model
 from django.core.management.base import BaseCommand
 from django.db.transaction import atomic
@@ -8,7 +10,6 @@ from django.template.defaultfilters import linebreaks_filter
 from django.utils import timezone
 from django.utils.six.moves import range
 
-from faker import Factory
 from misago.categories.models import Category
 from misago.core.management.progressbar import show_progress
 from misago.threads.checksums import update_post_checksum

+ 2 - 1
misago/faker/management/commands/createfakeusers.py

@@ -2,13 +2,14 @@ import random
 import sys
 import time
 
+from faker import Factory
+
 from django.contrib.auth import get_user_model
 from django.core.exceptions import ValidationError
 from django.core.management.base import BaseCommand
 from django.db import IntegrityError
 from django.utils.six.moves import range
 
-from faker import Factory
 from misago.core.management.progressbar import show_progress
 from misago.users.avatars import dynamic, gallery, get_avatar_hash
 from misago.users.models import Rank

+ 1 - 1
misago/legal/context_processors.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.conf import settings
 

+ 1 - 1
misago/legal/tests.py

@@ -1,5 +1,5 @@
-from django.core.urlresolvers import reverse
 from django.test import TestCase
+from django.urls import reverse
 
 from misago.conf import settings
 

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

@@ -2,12 +2,13 @@ from __future__ import unicode_literals
 
 import re
 
-from django.utils.crypto import get_random_string
 import markdown
 from markdown.blockprocessors import BlockProcessor, HRProcessor
 from markdown.preprocessors import Preprocessor
 from markdown.util import etree
 
+from django.utils.crypto import get_random_string
+
 
 QUOTE_START = get_random_string(32)
 QUOTE_END = get_random_string(32)

+ 1 - 1
misago/markup/context_processors.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 def preload_api_url(request):

+ 1 - 0
misago/markup/mentions.py

@@ -1,6 +1,7 @@
 import re
 
 from bs4 import BeautifulSoup, NavigableString
+
 from django.contrib.auth import get_user_model
 from django.utils import six
 

+ 4 - 4
misago/markup/parser.py

@@ -1,13 +1,13 @@
 from __future__ import unicode_literals
 
-import markdown
-
 import bleach
+import markdown
 from bs4 import BeautifulSoup
-from django.core.urlresolvers import resolve
+from htmlmin.minify import html_minify
+
 from django.http import Http404
+from django.urls import resolve
 from django.utils import six
-from htmlmin.minify import html_minify
 
 from .bbcode import blocks, inline
 from .md.shortimgs import ShortImagesExtension

+ 2 - 2
misago/markup/pipeline.py

@@ -1,10 +1,10 @@
 from importlib import import_module
 
+from bs4 import BeautifulSoup
+
 from django.conf import settings
 from django.utils import six
 
-from bs4 import BeautifulSoup
-
 
 class MarkupPipeline(object):
     """

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

@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.users.testutils import AuthenticatedUserTestCase
 

+ 5 - 1
misago/threads/admin.py

@@ -3,7 +3,11 @@ from django.utils.translation import ugettext_lazy as _
 
 from .views.admin.attachments import AttachmentsList, DeleteAttachment
 from .views.admin.attachmenttypes import (
-    AttachmentTypesList, DeleteAttachmentType, EditAttachmentType, NewAttachmentType)
+    AttachmentTypesList,
+    DeleteAttachmentType,
+    EditAttachmentType,
+    NewAttachmentType
+)
 
 
 class MisagoAdminExtension(object):

+ 0 - 1
misago/threads/api/attachments.py

@@ -107,4 +107,3 @@ def is_upload_image(upload):
         if filename.endswith('.%s' % extension):
             return True
     return False
-

+ 2 - 1
misago/threads/api/pollvotecreateendpoint.py

@@ -2,7 +2,8 @@ from copy import deepcopy
 
 from django.core.exceptions import ValidationError
 from django.utils import six
-from django.utils.translation import gettext as _, ungettext
+from django.utils.translation import gettext as _
+from django.utils.translation import ungettext
 
 from rest_framework.response import Response
 

+ 1 - 1
misago/threads/api/postendpoints/edits.py

@@ -12,7 +12,7 @@ from misago.markup import common_flavour
 from misago.users.online.utils import make_users_status_aware
 
 from ...checksums import update_post_checksum
-from ...serializers import PostSerializer, PostEditSerializer
+from ...serializers import PostEditSerializer, PostSerializer
 
 
 def get_edit_endpoint(request, post):

+ 2 - 1
misago/threads/api/postendpoints/merge.py

@@ -1,6 +1,7 @@
 from django.conf import settings
 from django.core.exceptions import PermissionDenied
-from django.utils.translation import ugettext as _, ungettext
+from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
 
 from rest_framework.response import Response
 

+ 2 - 1
misago/threads/api/postendpoints/move.py

@@ -1,7 +1,8 @@
 from django.conf import settings
 from django.core.exceptions import PermissionDenied
 from django.http import Http404
-from django.utils.translation import ugettext as _, ungettext
+from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
 
 from rest_framework.response import Response
 

+ 1 - 0
misago/threads/api/postendpoints/patch_event.py

@@ -3,6 +3,7 @@ from django.utils.translation import gettext as _
 
 from misago.acl import add_acl
 from misago.core.apipatch import ApiPatch
+
 from ...moderation import posts as moderation
 
 

+ 1 - 0
misago/threads/api/postendpoints/patch_post.py

@@ -3,6 +3,7 @@ from django.utils.translation import gettext as _
 
 from misago.acl import add_acl
 from misago.core.apipatch import ApiPatch
+
 from ...models import PostLike
 from ...moderation import posts as moderation
 from ...permissions.threads import allow_approve_post, allow_hide_post, allow_protect_post, allow_unhide_post

+ 2 - 1
misago/threads/api/postendpoints/split.py

@@ -1,6 +1,7 @@
 from django.conf import settings
 from django.core.exceptions import PermissionDenied
-from django.utils.translation import ugettext as _, ungettext
+from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
 
 from rest_framework import serializers
 from rest_framework.response import Response

+ 2 - 1
misago/threads/api/postingendpoint/attachments.py

@@ -1,5 +1,6 @@
 from django.conf import settings
-from django.utils.translation import ugettext as _, ungettext
+from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
 
 from rest_framework import serializers
 

+ 3 - 2
misago/threads/api/postingendpoint/category.py

@@ -1,11 +1,12 @@
 from django.core.exceptions import PermissionDenied
-from django.utils.translation import ugettext as _, ugettext_lazy
+from django.utils.translation import ugettext as _
+from django.utils.translation import ugettext_lazy
 
 from rest_framework import serializers
 
 from misago.acl import add_acl
 from misago.categories.models import THREADS_ROOT_NAME, Category
-from misago.categories.permissions import can_see_category, can_browse_category
+from misago.categories.permissions import can_browse_category, can_see_category
 
 from . import PostingEndpoint, PostingMiddleware
 from ...permissions.threads import allow_start_thread

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

@@ -2,8 +2,8 @@ from django.utils.translation import ugettext as _
 
 from misago.core.mail import build_mail, send_messages
 
-from ...permissions.threads import can_see_thread, can_see_post
 from . import PostingEndpoint, PostingMiddleware
+from ...permissions.threads import can_see_post, can_see_thread
 
 
 class EmailNotificationMiddleware(PostingMiddleware):

+ 3 - 2
misago/threads/api/postingendpoint/participants.py

@@ -1,14 +1,15 @@
 from django.contrib.auth import get_user_model
 from django.core.exceptions import PermissionDenied
 from django.utils import six
-from django.utils.translation import ugettext as _, ungettext
+from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
 
 from rest_framework import serializers
 
 from misago.categories.models import PRIVATE_THREADS_ROOT_NAME
 
 from . import PostingEndpoint, PostingMiddleware
-from ...participants import set_owner, add_participants
+from ...participants import add_participants, set_owner
 from ...permissions import allow_message_user
 
 

+ 0 - 1
misago/threads/api/postingendpoint/privatethread.py

@@ -25,4 +25,3 @@ class PrivateThreadMiddleware(PostingMiddleware):
         # assign category to thread and post
         self.thread.category = category
         self.post.category = category
-

+ 2 - 3
misago/threads/api/postingendpoint/subscribe.py

@@ -1,8 +1,7 @@
-from misago.users.models import (
-    AUTO_SUBSCRIBE_NONE, AUTO_SUBSCRIBE_NOTIFY, AUTO_SUBSCRIBE_NOTIFY_AND_EMAIL)
+from misago.users.models import AUTO_SUBSCRIBE_NONE, AUTO_SUBSCRIBE_NOTIFY, AUTO_SUBSCRIBE_NOTIFY_AND_EMAIL
 
-from ...models import Subscription
 from . import PostingEndpoint, PostingMiddleware
+from ...models import Subscription
 
 
 class SubscribeMiddleware(PostingMiddleware):

+ 1 - 2
misago/threads/api/threadendpoints/list.py

@@ -2,8 +2,7 @@ from rest_framework.response import Response
 
 from misago.core.shortcuts import get_int_or_404
 
-from ...viewmodels.category import (
-    ThreadsCategory, ThreadsRootCategory, PrivateThreadsCategory)
+from ...viewmodels.category import PrivateThreadsCategory, ThreadsCategory, ThreadsRootCategory
 from ...viewmodels.threads import ForumThreads, PrivateThreads
 
 

+ 2 - 1
misago/threads/api/threadendpoints/merge.py

@@ -1,6 +1,7 @@
 from django.core.exceptions import PermissionDenied, ValidationError
 from django.http import Http404
-from django.utils.translation import gettext as _, ungettext
+from django.utils.translation import gettext as _
+from django.utils.translation import ungettext
 
 from rest_framework.response import Response
 

+ 7 - 2
misago/threads/api/threadpoll.py

@@ -12,8 +12,13 @@ from misago.core.shortcuts import get_int_or_404
 
 from ..models import Poll
 from ..permissions.polls import (
-    allow_see_poll_votes, allow_start_poll, allow_edit_poll, allow_delete_poll, can_start_poll)
-from ..serializers import PollSerializer, PollVoteSerializer, NewPollSerializer, EditPollSerializer
+    allow_delete_poll,
+    allow_edit_poll,
+    allow_see_poll_votes,
+    allow_start_poll,
+    can_start_poll
+)
+from ..serializers import EditPollSerializer, NewPollSerializer, PollSerializer, PollVoteSerializer
 from ..viewmodels import ForumThread
 from .pollvotecreateendpoint import poll_vote_create
 

+ 2 - 3
misago/threads/api/threadposts.py

@@ -12,11 +12,9 @@ from misago.users.online.utils import make_users_status_aware
 
 from ..models import Post
 from ..moderation import posts as moderation
-from ..permissions.threads import (
-    allow_delete_event, allow_delete_post, allow_edit_post, allow_reply_thread)
+from ..permissions.threads import allow_delete_event, allow_delete_post, allow_edit_post, allow_reply_thread
 from ..serializers import AttachmentSerializer, PostSerializer
 from ..viewmodels import ForumThread, ThreadPost, ThreadPosts
-from .postingendpoint import PostingEndpoint
 from .postendpoints.edits import get_edit_endpoint, revert_post_endpoint
 from .postendpoints.likes import likes_list_endpoint
 from .postendpoints.merge import posts_merge_endpoint
@@ -25,6 +23,7 @@ from .postendpoints.patch_event import event_patch_endpoint
 from .postendpoints.patch_post import post_patch_endpoint
 from .postendpoints.read import post_read_endpoint
 from .postendpoints.split import posts_split_endpoint
+from .postingendpoint import PostingEndpoint
 
 
 class ViewSet(viewsets.ViewSet):

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

@@ -15,7 +15,7 @@ from ..permissions import allow_use_private_threads
 from ..viewmodels import ForumThread
 from .postingendpoint import PostingEndpoint
 from .threadendpoints.editor import thread_start_editor
-from .threadendpoints.list import threads_list_endpoint, private_threads_list_endpoint
+from .threadendpoints.list import private_threads_list_endpoint, threads_list_endpoint
 from .threadendpoints.merge import thread_merge_endpoint, threads_merge_endpoint
 from .threadendpoints.patch import thread_patch_endpoint
 

+ 1 - 1
misago/threads/context_processors.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 def preload_threads_urls(request):

+ 3 - 2
misago/threads/models/attachment.py

@@ -2,15 +2,16 @@ import os
 from hashlib import md5
 from io import BytesIO
 
+from PIL import Image
+
 from django.conf import settings
 from django.core.files import File
 from django.core.files.base import ContentFile
-from django.core.urlresolvers import reverse
 from django.db import models
+from django.urls import reverse
 from django.utils import timezone
 from django.utils.crypto import get_random_string
 from django.utils.encoding import python_2_unicode_compatible
-from PIL import Image
 
 from misago.core.utils import slugify
 

+ 0 - 1
misago/threads/models/poll.py

@@ -99,4 +99,3 @@ class Poll(models.Model):
                 'proc': proc
             })
         return view_choices
-

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

@@ -3,11 +3,11 @@ from __future__ import unicode_literals
 import copy
 
 from django.contrib.postgres.fields import JSONField
-from django.core.urlresolvers import reverse
 from django.db import models
 from django.dispatch import receiver
-from django.utils.encoding import python_2_unicode_compatible
+from django.urls import reverse
 from django.utils import six, timezone
+from django.utils.encoding import python_2_unicode_compatible
 
 from misago.conf import settings
 from misago.core.utils import parse_iso8601_string

+ 2 - 1
misago/threads/permissions/polls.py

@@ -1,6 +1,7 @@
 from django.core.exceptions import PermissionDenied
 from django.utils import timezone
-from django.utils.translation import ugettext_lazy as _, ungettext
+from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ungettext
 
 from misago.acl import algebra
 from misago.acl.decorators import return_boolean

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from rest_framework import serializers
 

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

@@ -1,6 +1,7 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.crypto import get_random_string
-from django.utils.translation import ugettext as _, ungettext
+from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
 
 from rest_framework import serializers
 
@@ -194,4 +195,3 @@ class NewPollSerializer(EditPollSerializer):
 class PollChoiceSerializer(serializers.Serializer):
     hash = serializers.CharField(required=True, min_length=12, max_length=12)
     label = serializers.CharField(required=True, max_length=255)
-

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from rest_framework import serializers
 

+ 1 - 2
misago/threads/serializers/post.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from rest_framework import serializers
 
@@ -206,4 +206,3 @@ class PostFeedSerializer(PostSerializer):
             return CategoryFeedSerializer(obj.top_category).data
         except AttributeError:
             return None
-

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from rest_framework import serializers
 

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from rest_framework import serializers
 

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from rest_framework import serializers
 

+ 1 - 1
misago/threads/signals.py

@@ -8,7 +8,7 @@ from misago.categories.signals import delete_category_content, move_category_con
 from misago.core.pgutils import batch_delete, batch_update
 from misago.users.signals import delete_user_content, username_changed
 
-from .models import Attachment, Post, PostEdit, PostLike, Thread, Poll, PollVote
+from .models import Attachment, Poll, PollVote, Post, PostEdit, PostLike, Thread
 
 
 delete_post = Signal()

+ 2 - 1
misago/threads/templatetags/misago_poststags.py

@@ -1,7 +1,8 @@
 from __future__ import unicode_literals
 
 from django import template
-from django.utils.translation import gettext as _, ngettext
+from django.utils.translation import gettext as _
+from django.utils.translation import ngettext
 
 from misago.conf import settings
 

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.admin.testutils import AdminTestCase
 from misago.categories.models import Category

+ 3 - 2
misago/threads/tests/test_attachments_api.py

@@ -1,11 +1,12 @@
 import json
 import os
 
+from PIL import Image
+
 from django.conf import settings
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import six
 from django.utils.encoding import smart_str
-from PIL import Image
 
 from misago.acl.models import Role
 from misago.acl.testutils import override_acl

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

@@ -1,7 +1,7 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
-from misago.admin.testutils import AdminTestCase
 from misago.acl.models import Role
+from misago.admin.testutils import AdminTestCase
 
 from ..models import AttachmentType
 

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

@@ -1,7 +1,7 @@
 import os
 
 from django.conf import settings
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.acl.models import Role
 from misago.acl.testutils import override_acl

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

@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category

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

@@ -10,7 +10,7 @@ from ..participants import (
     make_participants_aware,
     remove_participant,
     set_owner,
-    set_users_unread_private_threads_sync,
+    set_users_unread_private_threads_sync
 )
 
 

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

@@ -2,8 +2,8 @@
 from __future__ import unicode_literals
 
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test.client import BOUNDARY, MULTIPART_CONTENT, encode_multipart
+from django.urls import reverse
 
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category

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

@@ -10,8 +10,7 @@ from django.utils.encoding import smart_str
 
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category
-from misago.users.models import (
-    LIMITS_PRIVATE_THREAD_INVITES_TO_FOLLOWED, LIMITS_PRIVATE_THREAD_INVITES_TO_NOBODY)
+from misago.users.models import LIMITS_PRIVATE_THREAD_INVITES_TO_FOLLOWED, LIMITS_PRIVATE_THREAD_INVITES_TO_NOBODY
 from misago.users.testutils import AuthenticatedUserTestCase
 
 from ..models import Thread, ThreadParticipant

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

@@ -1,12 +1,11 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category
-from misago.users.models import (
-    AUTO_SUBSCRIBE_NONE, AUTO_SUBSCRIBE_NOTIFY, AUTO_SUBSCRIBE_NOTIFY_AND_EMAIL)
+from misago.users.models import AUTO_SUBSCRIBE_NONE, AUTO_SUBSCRIBE_NOTIFY, AUTO_SUBSCRIBE_NOTIFY_AND_EMAIL
 from misago.users.testutils import AuthenticatedUserTestCase
 
 from .. import testutils

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

@@ -3,8 +3,8 @@ from __future__ import unicode_literals
 
 import json
 
-from django.core.urlresolvers import reverse
 from django.test.client import BOUNDARY, MULTIPART_CONTENT, encode_multipart
+from django.urls import reverse
 from django.utils.encoding import smart_str
 
 from misago.acl.testutils import override_acl

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

@@ -1,6 +1,6 @@
 import json
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 
 from misago.acl.testutils import override_acl
@@ -10,6 +10,7 @@ from .. import testutils
 from ..models import Poll, PollVote, Thread
 from .test_threads_api import ThreadsApiTestCase
 
+
 class ThreadMergeApiTests(ThreadsApiTestCase):
     def setUp(self):
         super(ThreadMergeApiTests, self).setUp()

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

@@ -1,6 +1,6 @@
 import json
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from ..models import Poll
 from ..serializers.poll import MAX_POLL_OPTIONS

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

@@ -1,6 +1,6 @@
 from datetime import timedelta
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 
 from ..models import Poll, PollVote

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

@@ -1,6 +1,6 @@
 from datetime import timedelta
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 
 from ..serializers.poll import MAX_POLL_OPTIONS

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

@@ -1,7 +1,7 @@
 from datetime import timedelta
 
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 
 from ..models import Poll

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from .. import testutils
 from ..models import Post, Thread

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

@@ -4,7 +4,7 @@ from __future__ import unicode_literals
 import json
 from datetime import timedelta
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from .. import testutils
 from ..serializers import PostLikeSerializer

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

@@ -4,7 +4,7 @@ from __future__ import unicode_literals
 import json
 from datetime import timedelta
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 from django.utils.encoding import smart_str
 from django.utils.six.moves import range

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

@@ -3,7 +3,7 @@ from __future__ import unicode_literals
 
 import json
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.six.moves import range
 
 from misago.acl.testutils import override_acl

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

@@ -4,7 +4,7 @@ from __future__ import unicode_literals
 import json
 from datetime import timedelta
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 
 from misago.acl.testutils import override_acl

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 
 from .. import testutils

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

@@ -3,7 +3,7 @@ from __future__ import unicode_literals
 
 import json
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 from django.utils.six.moves import range
 

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

@@ -3,7 +3,7 @@ from __future__ import unicode_literals
 
 import json
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 
 from misago.acl.testutils import override_acl

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

@@ -1,7 +1,7 @@
 import json
 import os
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 
 from misago.acl import add_acl

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

@@ -1,6 +1,6 @@
 import json
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.six.moves import range
 
 from misago.acl import add_acl

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

@@ -2,7 +2,7 @@ from datetime import timedelta
 from json import loads as json_loads
 
 from django.conf import settings
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 from django.utils.encoding import smart_str
 from django.utils.six.moves import range

+ 1 - 1
misago/threads/threadtypes/privatethread.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 
 from . import ThreadType

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 
 from . import ThreadType

+ 1 - 0
misago/threads/threadtypes/treesmap.py

@@ -1,4 +1,5 @@
 from importlib import import_module
+
 from django.conf import settings
 
 

+ 2 - 2
misago/threads/urls/api.py

@@ -1,9 +1,9 @@
 from misago.core.apirouter import MisagoApiRouter
 
 from ..api.attachments import AttachmentViewSet
-from ..api.threadposts import ThreadPostsViewSet, PrivateThreadPostsViewSet
-from ..api.threads import ThreadViewSet, PrivateThreadViewSet
 from ..api.threadpoll import ThreadPollViewSet
+from ..api.threadposts import PrivateThreadPostsViewSet, ThreadPostsViewSet
+from ..api.threads import PrivateThreadViewSet, ThreadViewSet
 
 
 router = MisagoApiRouter()

+ 1 - 1
misago/threads/utils.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import resolve
+from django.urls import resolve
 from django.utils import six
 from django.utils.six.moves.urllib.parse import urlparse
 

+ 2 - 1
misago/threads/validators.py

@@ -1,5 +1,6 @@
 from django.core.exceptions import ValidationError
-from django.utils.translation import ugettext as _, ungettext
+from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
 
 from misago.categories.models import THREADS_ROOT_NAME, Category
 from misago.categories.permissions import can_browse_category, can_see_category

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

@@ -4,8 +4,8 @@ from misago.acl import add_acl
 from misago.categories.models import Category
 from misago.categories.permissions import allow_browse_category, allow_see_category
 from misago.categories.serializers import BasicCategorySerializer
-from misago.core.viewmodel import ViewModel as BaseViewModel
 from misago.core.shortcuts import validate_slug
+from misago.core.viewmodel import ViewModel as BaseViewModel
 
 from ..permissions import allow_use_private_threads
 

+ 1 - 3
misago/threads/viewmodels/thread.py

@@ -2,8 +2,7 @@ from django.shortcuts import get_object_or_404
 from django.utils.translation import gettext as _
 
 from misago.acl import add_acl
-from misago.categories.models import (
-    PRIVATE_THREADS_ROOT_NAME, THREADS_ROOT_NAME, Category)
+from misago.categories.models import PRIVATE_THREADS_ROOT_NAME, THREADS_ROOT_NAME, Category
 from misago.core.shortcuts import validate_slug
 from misago.core.viewmodel import ViewModel as BaseViewModel
 from misago.readtracker.threadstracker import make_read_aware
@@ -139,4 +138,3 @@ class PrivateThread(ViewModel):
 
     def get_root_name(self):
         return _("Private threads")
-

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

@@ -1,8 +1,8 @@
 from django.contrib import messages
-from django.core.urlresolvers import reverse
 from django.db import transaction
 from django.db.models import Count
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 
 from misago.admin.views import generic

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

@@ -1,7 +1,7 @@
 from django.contrib import messages
-from django.core.urlresolvers import reverse
 from django.db.models import Count
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 
 from misago.admin.views import generic

+ 0 - 1
misago/threads/views/goto.py

@@ -123,4 +123,3 @@ class PrivateThreadGotoNewView(GotoView):
             return posts_queryset.filter(posted_on__gt=thread.last_read_on).order_by('id').first()
         else:
             return posts_queryset.order_by('id').last()
-

+ 2 - 4
misago/threads/views/list.py

@@ -1,12 +1,10 @@
 from django.conf import settings
-from django.core.urlresolvers import reverse
 from django.http import Http404
 from django.shortcuts import render
+from django.urls import reverse
 from django.views.generic import View
 
-from ..viewmodels import (
-    PrivateThreadsCategory, ThreadsCategory, ThreadsRootCategory,
-    ForumThreads, PrivateThreads)
+from ..viewmodels import ForumThreads, PrivateThreads, PrivateThreadsCategory, ThreadsCategory, ThreadsRootCategory
 
 
 class ListBase(View):

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

@@ -1,5 +1,5 @@
-from django.core.urlresolvers import reverse
 from django.shortcuts import render
+from django.urls import reverse
 from django.views.generic import View
 
 from ..viewmodels import ForumThread, PrivateThread, ThreadPosts

+ 1 - 1
misago/users/api/users.py

@@ -26,6 +26,7 @@ from ..permissions.moderation import allow_moderate_avatar, allow_rename_user
 from ..permissions.profiles import allow_browse_users_list, allow_follow_user, allow_see_ban_details
 from ..serializers import BanDetailsSerializer, UserProfileSerializer, UserSerializer
 from ..viewmodels import UserPosts, UserThreads
+from .rest_permissions import BasePermission, UnbannedAnonOnly
 from .userendpoints.avatar import avatar_endpoint, moderate_avatar_endpoint
 from .userendpoints.changeemail import change_email_endpoint
 from .userendpoints.changepassword import change_password_endpoint
@@ -33,7 +34,6 @@ from .userendpoints.create import create_endpoint
 from .userendpoints.list import list_endpoint
 from .userendpoints.signature import signature_endpoint
 from .userendpoints.username import moderate_username_endpoint, username_endpoint
-from .rest_permissions import BasePermission, UnbannedAnonOnly
 
 
 class UserViewSetPermission(BasePermission):

+ 1 - 1
misago/users/context_processors.py

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from .pages import user_profile, usercp, users_list
 from .serializers import AnonymousUserSerializer, AuthenticatedUserSerializer

+ 8 - 8
misago/users/djangoadmin.py

@@ -1,5 +1,5 @@
 """
-Defines `UserAdminModel` for registration of Misago `User` model in django 
+Defines `UserAdminModel` for registration of Misago `User` model in django
 admin panel.
 
 The model supposed to be used for interaction of third party django apps with
@@ -11,7 +11,7 @@ Test for the model is placed in :mod:`misago.users.tests.test_djangoadmin_user`.
 """
 from django.contrib import admin
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.html import format_html
 from django.utils.translation import ugettext as _
 
@@ -24,16 +24,16 @@ User = get_user_model()
 
 class UserAdminForm(forms.ModelForm):
     """
-    This form adds `edit_from_misago_link` pseudo-field, that renders 
+    This form adds `edit_from_misago_link` pseudo-field, that renders
     itself like an html hyperlink to a user edit page in misago admin panel.
 
     This could be done with `User` edit template overwrite, but
-    it is kind of overkill - overwrite the whole template just to add one 
+    it is kind of overkill - overwrite the whole template just to add one
     button - isn't it?
     """
     #: pseudo-field
     edit_from_misago_link = forms.Field()
-    
+
     def __init__(self, *args, **kwargs):
         # noinspection PyArgumentList
         super(UserAdminForm, self).__init__(*args, **kwargs)
@@ -67,7 +67,7 @@ class UserAdminForm(forms.ModelForm):
         link_html = format_html(link_html_template, link_url)
 
         return link_html
-    
+
     class Meta:
         model = User
         fields = ['edit_from_misago_link']
@@ -75,8 +75,8 @@ class UserAdminForm(forms.ModelForm):
 
 class UserAdminModel(admin.ModelAdmin):
     """
-    Redeclare most of the model fields like read-only. 
-    Prevents new/delete actions (users should use misago admin panel for 
+    Redeclare most of the model fields like read-only.
+    Prevents new/delete actions (users should use misago admin panel for
     that).
     Replaces default form with custom `UserAdminForm`.
     """

+ 1 - 1
misago/users/middleware.py

@@ -2,7 +2,7 @@ import pytz
 
 from django.contrib.auth import logout
 from django.contrib.auth.models import AnonymousUser as DjAnonymousUser
-from django.core.urlresolvers import resolve
+from django.urls import resolve
 
 from misago.conf import settings
 

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

@@ -1,5 +1,5 @@
-from django.core.urlresolvers import reverse
 from django.db import models, transaction
+from django.urls import reverse
 from django.utils.encoding import python_2_unicode_compatible
 
 from misago.acl import version as acl_version

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

@@ -4,9 +4,9 @@ from django.contrib.auth.models import AnonymousUser as DjangoAnonymousUser
 from django.contrib.auth.models import UserManager as BaseUserManager
 from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
 from django.core.mail import send_mail
-from django.core.urlresolvers import reverse
 from django.db import IntegrityError, models, transaction
 from django.dispatch import receiver
+from django.urls import reverse
 from django.utils import timezone
 from django.utils.translation import ugettext_lazy as _
 

+ 1 - 1
misago/users/serializers/user.py

@@ -1,5 +1,5 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from rest_framework import serializers
 

+ 1 - 1
misago/users/templatetags/misago_avatars.py

@@ -1,5 +1,5 @@
 from django import template
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 register = template.Library()

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

@@ -1,6 +1,6 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase
+from django.urls import reverse
 
 from ..models import BAN_USERNAME, Ban
 from ..tokens import make_activation_token

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

@@ -1,8 +1,8 @@
 import json
 
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase
+from django.urls import reverse
 from django.utils.encoding import smart_str
 
 

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

@@ -1,7 +1,7 @@
 from django.conf import settings
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase
+from django.urls import reverse
 
 from ..views.avatarserver import clean_size
 

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

@@ -1,6 +1,6 @@
 from datetime import date, datetime, timedelta
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.six.moves import range
 
 from misago.admin.testutils import AdminTestCase

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

@@ -1,7 +1,7 @@
 import json
 
-from django.core.urlresolvers import reverse
 from django.test import TestCase
+from django.urls import reverse
 from django.utils.encoding import smart_str
 
 from misago.conf import settings

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from ..models import BAN_IP, Ban
 from ..testutils import UserTestCase

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

@@ -1,5 +1,5 @@
-from django.core.urlresolvers import reverse
 from django.test import override_settings
+from django.urls import reverse
 
 from misago.admin.testutils import AdminTestCase
 

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

@@ -1,7 +1,7 @@
 from django.contrib.auth import get_user_model
 from django.contrib.auth.models import Permission
-from django.core.urlresolvers import reverse
 from django.test import override_settings
+from django.urls import reverse
 from django.utils import formats
 
 from misago.admin.testutils import AdminTestCase

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

@@ -1,5 +1,5 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from ..models import BAN_USERNAME, Ban
 from ..testutils import UserTestCase

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

@@ -1,5 +1,5 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.six.moves import range
 
 from misago.acl.testutils import override_acl

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

@@ -1,5 +1,5 @@
 from django.core import mail
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from ..testutils import AuthenticatedUserTestCase
 

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

@@ -1,5 +1,5 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.six.moves import range
 
 from misago.acl.testutils import override_acl

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.acl.models import Role
 from misago.admin.testutils import AdminTestCase

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from ..models import BAN_IP, Ban
 from ..testutils import UserTestCase

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

@@ -1,6 +1,6 @@
 import json
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 
 from ..testutils import AuthenticatedUserTestCase, SuperUserTestCase, UserTestCase

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

@@ -3,7 +3,7 @@ import json
 from path import Path
 
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 
 from misago.acl.testutils import override_acl

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

@@ -1,6 +1,6 @@
 from django.contrib.auth import get_user_model
 from django.core import mail
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.conf import settings
 

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.threads import testutils
 from misago.threads.tests.test_threads_api import ThreadsApiTestCase

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

@@ -2,7 +2,7 @@ import json
 
 from django.contrib.auth import get_user_model
 from django.core import mail
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import six
 from django.utils.encoding import smart_str
 from django.utils.six.moves import range

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

@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.admin.testutils import AdminTestCase
 

+ 1 - 1
misago/users/testutils.py

@@ -1,5 +1,5 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from misago.core.testutils import MisagoTestCase
 

+ 1 - 1
misago/users/views/activation.py

@@ -1,6 +1,6 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.shortcuts import get_object_or_404, render
+from django.urls import reverse
 from django.utils.translation import ugettext as _
 
 from misago.conf import settings

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

@@ -1,6 +1,6 @@
 from django.contrib import messages
-from django.core.urlresolvers import reverse
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 
 from misago.admin.views import generic

+ 1 - 1
misago/users/views/forgottenpassword.py

@@ -1,6 +1,6 @@
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.shortcuts import get_object_or_404, render
+from django.urls import reverse
 from django.utils.translation import ugettext as _
 
 from misago.core.exceptions import Banned

+ 1 - 1
misago/users/views/lists.py

@@ -2,9 +2,9 @@ import six
 
 from django.conf import settings
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.shortcuts import render as django_render
 from django.shortcuts import redirect
+from django.urls import reverse
 
 from misago.core.shortcuts import get_object_or_404, paginate, pagination_dict
 from misago.core.utils import format_plaintext_for_html

+ 1 - 1
misago/users/views/options.py

@@ -1,7 +1,7 @@
 from django.contrib.auth import update_session_auth_hash
-from django.core.urlresolvers import reverse
 from django.db import IntegrityError
 from django.shortcuts import render
+from django.urls import reverse
 from django.utils import six
 from django.utils.translation import ugettext as _
 

+ 3 - 4
misago/users/views/profile.py

@@ -2,18 +2,17 @@ from django.conf import settings
 from django.contrib import messages
 from django.contrib.auth import get_user_model
 from django.core.exceptions import PermissionDenied
-from django.core.urlresolvers import reverse
 from django.db.transaction import atomic
 from django.http import Http404, JsonResponse
 from django.shortcuts import render as django_render
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils import six
 from django.utils.translation import ugettext as _
 
 from misago.acl import add_acl
 from misago.core.decorators import require_POST
-from misago.core.shortcuts import (
-    get_object_or_404, paginate, pagination_dict, validate_slug)
+from misago.core.shortcuts import get_object_or_404, paginate, pagination_dict, validate_slug
 from misago.core.utils import clean_return_path
 from misago.threads.permissions import allow_message_user
 
@@ -24,8 +23,8 @@ from ..pages import user_profile
 from ..permissions.profiles import allow_block_user, allow_follow_user
 from ..serializers import BanDetailsSerializer, UserProfileSerializer, UserSerializer
 from ..serializers.usernamechange import UsernameChangeSerializer
-from ..warnings import get_user_warning_level, get_user_warning_obj, get_warning_levels
 from ..viewmodels import UserPosts, UserThreads
+from ..warnings import get_user_warning_level, get_user_warning_obj, get_warning_levels
 
 
 def profile_view(f):