Browse Source

fix #636: changed import path, isorted imports

Rafał Pitoń 8 years ago
parent
commit
3dbe77d969
150 changed files with 211 additions and 188 deletions
  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
 from misago.admin.testutils import AdminTestCase
 
 

+ 1 - 1
misago/acl/views.py

@@ -1,6 +1,6 @@
 from django.contrib import messages
 from django.contrib import messages
-from django.core.urlresolvers import reverse
 from django.shortcuts import redirect
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 
 
 from misago.admin.views import generic
 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):
 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.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase
 from django.test import TestCase
+from django.urls import reverse
 
 
 from ..testutils import AdminTestCase
 from ..testutils import AdminTestCase
 from ..views import get_protected_namespace
 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
 from misago.users.testutils import SuperUserTestCase
 
 

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

@@ -1,5 +1,5 @@
 from django.conf import settings
 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 django.shortcuts import render as dj_render
 
 
 from .. import site
 from .. import site

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

@@ -1,8 +1,8 @@
 from django.contrib import messages
 from django.contrib import messages
 from django.core.paginator import EmptyPage, Paginator
 from django.core.paginator import EmptyPage, Paginator
-from django.core.urlresolvers import reverse
 from django.db import transaction
 from django.db import transaction
 from django.shortcuts import redirect
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 
 
 from misago.core.exceptions import ExplicitFirstPage
 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
 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.admin.testutils import AdminTestCase
 from misago.threads import testutils
 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.models import Role
 from misago.acl.testutils import fake_post_data
 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 datetime import timedelta
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 from django.utils import timezone
 
 
 from misago.acl.testutils import override_acl
 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.shortcuts import render
+from django.urls import reverse
 
 
 from ..serializers import CategorySerializer
 from ..serializers import CategorySerializer
 from ..utils import get_categories_tree
 from ..utils import get_categories_tree

+ 1 - 1
misago/conf/context_processors.py

@@ -1,6 +1,6 @@
 import json
 import json
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from .gateway import db_settings, dj_settings  # noqa
 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
 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 django.utils import six
 
 
 from rest_framework.exceptions import NotFound
 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.exceptions import PermissionDenied
-from django.core.urlresolvers import reverse
 from django.http import Http404, HttpResponsePermanentRedirect, JsonResponse
 from django.http import Http404, HttpResponsePermanentRedirect, JsonResponse
+from django.urls import reverse
 from django.utils import six
 from django.utils import six
 from django.utils.translation import gettext as _
 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 import template
 from django.template.loader import render_to_string
 from django.template.loader import render_to_string
 
 
-from crispy_forms.templatetags import crispy_forms_field, crispy_forms_filters
-
 
 
 register = template.Library()
 register = template.Library()
 
 

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

@@ -1,6 +1,6 @@
 from django import template
 from django import template
-from django.core.urlresolvers import reverse
 from django.template.loader import get_template
 from django.template.loader import get_template
+from django.urls import reverse
 
 
 
 
 register = template.Library()
 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.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase, override_settings
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
 
 
 
 @override_settings(ROOT_URLCONF='misago.core.testproject.urls')
 @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 import Client, TestCase, override_settings
 from django.test.client import RequestFactory
 from django.test.client import RequestFactory
+from django.urls import reverse
 
 
 from misago.users.models import AnonymousUser
 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.http import Http404
 from django.test import TestCase
 from django.test import TestCase
 from django.test.client import RequestFactory
 from django.test.client import RequestFactory
+from django.urls import reverse
 
 
 from misago.users.models import AnonymousUser
 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.contrib.auth import get_user_model
 from django.core import mail
 from django.core import mail
-from django.core.urlresolvers import reverse
 from django.test import TestCase, override_settings
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
 
 
 
 @override_settings(ROOT_URLCONF='misago.core.testproject.urls')
 @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.http import Http404
 from django.test import TestCase, override_settings
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
 
 from ..shortcuts import get_int_or_404
 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.test import TestCase
 from django.utils.six import StringIO
 from django.utils.six import StringIO
 
 
-
 from ..management.commands import testemailsetup
 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 import TestCase
 from django.test.client import RequestFactory
 from django.test.client import RequestFactory
+from django.urls import reverse
 
 
 from .. import threadstore
 from .. import threadstore
 from ..middleware.threadstore import ThreadStoreMiddleware
 from ..middleware.threadstore import ThreadStoreMiddleware

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

@@ -1,12 +1,17 @@
 #-*- coding: utf-8 -*-
 #-*- coding: utf-8 -*-
-from django.core.urlresolvers import reverse
 from django.test import TestCase
 from django.test import TestCase
 from django.test.client import RequestFactory
 from django.test.client import RequestFactory
+from django.urls import reverse
 from django.utils import timezone
 from django.utils import timezone
 
 
 from ..utils import (
 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 = (
 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.test import TestCase, override_settings
+from django.urls import reverse
 
 
 
 
 class MomentJSCatalogViewTests(TestCase):
 class MomentJSCatalogViewTests(TestCase):

+ 3 - 2
misago/core/utils.py

@@ -3,12 +3,13 @@ from datetime import datetime, timedelta
 import six
 import six
 from unidecode import unidecode
 from unidecode import unidecode
 
 
-from django.core.urlresolvers import resolve, reverse
 from django.http import Http404
 from django.http import Http404
 from django.template.defaultfilters import slugify as django_slugify
 from django.template.defaultfilters import slugify as django_slugify
+from django.urls import resolve, reverse
 from django.utils import html, timezone
 from django.utils import html, timezone
 from django.utils.encoding import force_text
 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):
 def slugify(string):

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

@@ -2,11 +2,12 @@ import random
 import sys
 import sys
 from datetime import timedelta
 from datetime import timedelta
 
 
+from faker import Factory
+
 from django.core.management.base import BaseCommand
 from django.core.management.base import BaseCommand
 from django.utils import timezone
 from django.utils import timezone
 from django.utils.six.moves import range
 from django.utils.six.moves import range
 
 
-from faker import Factory
 from misago.core.management.progressbar import show_progress
 from misago.core.management.progressbar import show_progress
 from misago.users.models import BAN_EMAIL, BAN_IP, BAN_USERNAME, Ban
 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 sys
 import time
 import time
 
 
+from faker import Factory
+
 from django.core.management.base import BaseCommand
 from django.core.management.base import BaseCommand
 from django.utils.six.moves import range
 from django.utils.six.moves import range
 
 
-from faker import Factory
 from misago.acl import version as acl_version
 from misago.acl import version as acl_version
 from misago.categories.models import Category, RoleCategoryACL
 from misago.categories.models import Category, RoleCategoryACL
 from misago.core.management.progressbar import show_progress
 from misago.core.management.progressbar import show_progress

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

@@ -1,6 +1,8 @@
 import random
 import random
 import time
 import time
 
 
+from faker import Factory
+
 from django.contrib.auth import get_user_model
 from django.contrib.auth import get_user_model
 from django.core.management.base import BaseCommand
 from django.core.management.base import BaseCommand
 from django.db.transaction import atomic
 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 import timezone
 from django.utils.six.moves import range
 from django.utils.six.moves import range
 
 
-from faker import Factory
 from misago.categories.models import Category
 from misago.categories.models import Category
 from misago.core.management.progressbar import show_progress
 from misago.core.management.progressbar import show_progress
 from misago.threads.checksums import update_post_checksum
 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 sys
 import time
 import time
 
 
+from faker import Factory
+
 from django.contrib.auth import get_user_model
 from django.contrib.auth import get_user_model
 from django.core.exceptions import ValidationError
 from django.core.exceptions import ValidationError
 from django.core.management.base import BaseCommand
 from django.core.management.base import BaseCommand
 from django.db import IntegrityError
 from django.db import IntegrityError
 from django.utils.six.moves import range
 from django.utils.six.moves import range
 
 
-from faker import Factory
 from misago.core.management.progressbar import show_progress
 from misago.core.management.progressbar import show_progress
 from misago.users.avatars import dynamic, gallery, get_avatar_hash
 from misago.users.avatars import dynamic, gallery, get_avatar_hash
 from misago.users.models import Rank
 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
 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.test import TestCase
+from django.urls import reverse
 
 
 from misago.conf import settings
 from misago.conf import settings
 
 

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

@@ -2,12 +2,13 @@ from __future__ import unicode_literals
 
 
 import re
 import re
 
 
-from django.utils.crypto import get_random_string
 import markdown
 import markdown
 from markdown.blockprocessors import BlockProcessor, HRProcessor
 from markdown.blockprocessors import BlockProcessor, HRProcessor
 from markdown.preprocessors import Preprocessor
 from markdown.preprocessors import Preprocessor
 from markdown.util import etree
 from markdown.util import etree
 
 
+from django.utils.crypto import get_random_string
+
 
 
 QUOTE_START = get_random_string(32)
 QUOTE_START = get_random_string(32)
 QUOTE_END = 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):
 def preload_api_url(request):

+ 1 - 0
misago/markup/mentions.py

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

+ 4 - 4
misago/markup/parser.py

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

+ 2 - 2
misago/markup/pipeline.py

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

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

@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from misago.users.testutils import AuthenticatedUserTestCase
 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.attachments import AttachmentsList, DeleteAttachment
 from .views.admin.attachmenttypes import (
 from .views.admin.attachmenttypes import (
-    AttachmentTypesList, DeleteAttachmentType, EditAttachmentType, NewAttachmentType)
+    AttachmentTypesList,
+    DeleteAttachmentType,
+    EditAttachmentType,
+    NewAttachmentType
+)
 
 
 
 
 class MisagoAdminExtension(object):
 class MisagoAdminExtension(object):

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

@@ -107,4 +107,3 @@ def is_upload_image(upload):
         if filename.endswith('.%s' % extension):
         if filename.endswith('.%s' % extension):
             return True
             return True
     return False
     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.core.exceptions import ValidationError
 from django.utils import six
 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
 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 misago.users.online.utils import make_users_status_aware
 
 
 from ...checksums import update_post_checksum
 from ...checksums import update_post_checksum
-from ...serializers import PostSerializer, PostEditSerializer
+from ...serializers import PostEditSerializer, PostSerializer
 
 
 
 
 def get_edit_endpoint(request, post):
 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.conf import settings
 from django.core.exceptions import PermissionDenied
 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
 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.conf import settings
 from django.core.exceptions import PermissionDenied
 from django.core.exceptions import PermissionDenied
 from django.http import Http404
 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
 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.acl import add_acl
 from misago.core.apipatch import ApiPatch
 from misago.core.apipatch import ApiPatch
+
 from ...moderation import posts as moderation
 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.acl import add_acl
 from misago.core.apipatch import ApiPatch
 from misago.core.apipatch import ApiPatch
+
 from ...models import PostLike
 from ...models import PostLike
 from ...moderation import posts as moderation
 from ...moderation import posts as moderation
 from ...permissions.threads import allow_approve_post, allow_hide_post, allow_protect_post, allow_unhide_post
 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.conf import settings
 from django.core.exceptions import PermissionDenied
 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 import serializers
 from rest_framework.response import Response
 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.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
 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.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 rest_framework import serializers
 
 
 from misago.acl import add_acl
 from misago.acl import add_acl
 from misago.categories.models import THREADS_ROOT_NAME, Category
 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 . import PostingEndpoint, PostingMiddleware
 from ...permissions.threads import allow_start_thread
 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 misago.core.mail import build_mail, send_messages
 
 
-from ...permissions.threads import can_see_thread, can_see_post
 from . import PostingEndpoint, PostingMiddleware
 from . import PostingEndpoint, PostingMiddleware
+from ...permissions.threads import can_see_post, can_see_thread
 
 
 
 
 class EmailNotificationMiddleware(PostingMiddleware):
 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.contrib.auth import get_user_model
 from django.core.exceptions import PermissionDenied
 from django.core.exceptions import PermissionDenied
 from django.utils import six
 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 rest_framework import serializers
 
 
 from misago.categories.models import PRIVATE_THREADS_ROOT_NAME
 from misago.categories.models import PRIVATE_THREADS_ROOT_NAME
 
 
 from . import PostingEndpoint, PostingMiddleware
 from . import PostingEndpoint, PostingMiddleware
-from ...participants import set_owner, add_participants
+from ...participants import add_participants, set_owner
 from ...permissions import allow_message_user
 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
         # assign category to thread and post
         self.thread.category = category
         self.thread.category = category
         self.post.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 . import PostingEndpoint, PostingMiddleware
+from ...models import Subscription
 
 
 
 
 class SubscribeMiddleware(PostingMiddleware):
 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 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
 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.core.exceptions import PermissionDenied, ValidationError
 from django.http import Http404
 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
 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 ..models import Poll
 from ..permissions.polls import (
 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 ..viewmodels import ForumThread
 from .pollvotecreateendpoint import poll_vote_create
 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 ..models import Post
 from ..moderation import posts as moderation
 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 ..serializers import AttachmentSerializer, PostSerializer
 from ..viewmodels import ForumThread, ThreadPost, ThreadPosts
 from ..viewmodels import ForumThread, ThreadPost, ThreadPosts
-from .postingendpoint import PostingEndpoint
 from .postendpoints.edits import get_edit_endpoint, revert_post_endpoint
 from .postendpoints.edits import get_edit_endpoint, revert_post_endpoint
 from .postendpoints.likes import likes_list_endpoint
 from .postendpoints.likes import likes_list_endpoint
 from .postendpoints.merge import posts_merge_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.patch_post import post_patch_endpoint
 from .postendpoints.read import post_read_endpoint
 from .postendpoints.read import post_read_endpoint
 from .postendpoints.split import posts_split_endpoint
 from .postendpoints.split import posts_split_endpoint
+from .postingendpoint import PostingEndpoint
 
 
 
 
 class ViewSet(viewsets.ViewSet):
 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 ..viewmodels import ForumThread
 from .postingendpoint import PostingEndpoint
 from .postingendpoint import PostingEndpoint
 from .threadendpoints.editor import thread_start_editor
 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.merge import thread_merge_endpoint, threads_merge_endpoint
 from .threadendpoints.patch import thread_patch_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):
 def preload_threads_urls(request):

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

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

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

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

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

@@ -3,11 +3,11 @@ from __future__ import unicode_literals
 import copy
 import copy
 
 
 from django.contrib.postgres.fields import JSONField
 from django.contrib.postgres.fields import JSONField
-from django.core.urlresolvers import reverse
 from django.db import models
 from django.db import models
 from django.dispatch import receiver
 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 import six, timezone
+from django.utils.encoding import python_2_unicode_compatible
 
 
 from misago.conf import settings
 from misago.conf import settings
 from misago.core.utils import parse_iso8601_string
 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.core.exceptions import PermissionDenied
 from django.utils import timezone
 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 import algebra
 from misago.acl.decorators import return_boolean
 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
 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.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
 from rest_framework import serializers
 
 
@@ -194,4 +195,3 @@ class NewPollSerializer(EditPollSerializer):
 class PollChoiceSerializer(serializers.Serializer):
 class PollChoiceSerializer(serializers.Serializer):
     hash = serializers.CharField(required=True, min_length=12, max_length=12)
     hash = serializers.CharField(required=True, min_length=12, max_length=12)
     label = serializers.CharField(required=True, max_length=255)
     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
 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
 from rest_framework import serializers
 
 
@@ -206,4 +206,3 @@ class PostFeedSerializer(PostSerializer):
             return CategoryFeedSerializer(obj.top_category).data
             return CategoryFeedSerializer(obj.top_category).data
         except AttributeError:
         except AttributeError:
             return None
             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
 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
 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
 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.core.pgutils import batch_delete, batch_update
 from misago.users.signals import delete_user_content, username_changed
 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()
 delete_post = Signal()

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

@@ -1,7 +1,8 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
 from django import template
 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
 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.admin.testutils import AdminTestCase
 from misago.categories.models import Category
 from misago.categories.models import Category

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

@@ -1,11 +1,12 @@
 import json
 import json
 import os
 import os
 
 
+from PIL import Image
+
 from django.conf import settings
 from django.conf import settings
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import six
 from django.utils import six
 from django.utils.encoding import smart_str
 from django.utils.encoding import smart_str
-from PIL import Image
 
 
 from misago.acl.models import Role
 from misago.acl.models import Role
 from misago.acl.testutils import override_acl
 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.acl.models import Role
+from misago.admin.testutils import AdminTestCase
 
 
 from ..models import AttachmentType
 from ..models import AttachmentType
 
 

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

@@ -1,7 +1,7 @@
 import os
 import os
 
 
 from django.conf import settings
 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.models import Role
 from misago.acl.testutils import override_acl
 from misago.acl.testutils import override_acl

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

@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 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.acl.testutils import override_acl
 from misago.categories.models import Category
 from misago.categories.models import Category

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

@@ -10,7 +10,7 @@ from ..participants import (
     make_participants_aware,
     make_participants_aware,
     remove_participant,
     remove_participant,
     set_owner,
     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 __future__ import unicode_literals
 
 
 from django.contrib.auth import get_user_model
 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.test.client import BOUNDARY, MULTIPART_CONTENT, encode_multipart
+from django.urls import reverse
 
 
 from misago.acl.testutils import override_acl
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category
 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.acl.testutils import override_acl
 from misago.categories.models import Category
 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 misago.users.testutils import AuthenticatedUserTestCase
 
 
 from ..models import Thread, ThreadParticipant
 from ..models import Thread, ThreadParticipant

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

@@ -1,12 +1,11 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 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.acl.testutils import override_acl
 from misago.categories.models import Category
 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 misago.users.testutils import AuthenticatedUserTestCase
 
 
 from .. import testutils
 from .. import testutils

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

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

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

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

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

@@ -1,6 +1,6 @@
 import json
 import json
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from misago.acl.testutils import override_acl
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category
 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 ..models import Poll
 from ..serializers.poll import MAX_POLL_OPTIONS
 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 datetime import timedelta
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 from django.utils import timezone
 
 
 from ..models import Poll, PollVote
 from ..models import Poll, PollVote

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

@@ -1,6 +1,6 @@
 from datetime import timedelta
 from datetime import timedelta
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 from django.utils import timezone
 
 
 from ..serializers.poll import MAX_POLL_OPTIONS
 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 datetime import timedelta
 
 
 from django.contrib.auth import get_user_model
 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 django.utils import timezone
 
 
 from ..models import Poll
 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 .. import testutils
 from ..models import Post, Thread
 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
 import json
 from datetime import timedelta
 from datetime import timedelta
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from misago.acl.testutils import override_acl
 from misago.acl.testutils import override_acl
 from misago.categories.models import Category
 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 .. import testutils
 from ..serializers import PostLikeSerializer
 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
 import json
 from datetime import timedelta
 from datetime import timedelta
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 from django.utils import timezone
 from django.utils.encoding import smart_str
 from django.utils.encoding import smart_str
 from django.utils.six.moves import range
 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
 import json
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.six.moves import range
 from django.utils.six.moves import range
 
 
 from misago.acl.testutils import override_acl
 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
 import json
 from datetime import timedelta
 from datetime import timedelta
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 from django.utils import timezone
 
 
 from misago.acl.testutils import override_acl
 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 django.utils import timezone
 
 
 from .. import testutils
 from .. import testutils

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

@@ -3,7 +3,7 @@ from __future__ import unicode_literals
 
 
 import json
 import json
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 from django.utils.encoding import smart_str
 from django.utils.six.moves import range
 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
 import json
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 from django.utils.encoding import smart_str
 
 
 from misago.acl.testutils import override_acl
 from misago.acl.testutils import override_acl

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

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

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

@@ -1,6 +1,6 @@
 import json
 import json
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.six.moves import range
 from django.utils.six.moves import range
 
 
 from misago.acl import add_acl
 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 json import loads as json_loads
 
 
 from django.conf import settings
 from django.conf import settings
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import timezone
 from django.utils import timezone
 from django.utils.encoding import smart_str
 from django.utils.encoding import smart_str
 from django.utils.six.moves import range
 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 django.utils.translation import ugettext_lazy as _
 
 
 from . import ThreadType
 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 django.utils.translation import ugettext_lazy as _
 
 
 from . import ThreadType
 from . import ThreadType

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

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

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

@@ -1,9 +1,9 @@
 from misago.core.apirouter import MisagoApiRouter
 from misago.core.apirouter import MisagoApiRouter
 
 
 from ..api.attachments import AttachmentViewSet
 from ..api.attachments import AttachmentViewSet
-from ..api.threadposts import ThreadPostsViewSet, PrivateThreadPostsViewSet
-from ..api.threads import ThreadViewSet, PrivateThreadViewSet
 from ..api.threadpoll import ThreadPollViewSet
 from ..api.threadpoll import ThreadPollViewSet
+from ..api.threadposts import PrivateThreadPostsViewSet, ThreadPostsViewSet
+from ..api.threads import PrivateThreadViewSet, ThreadViewSet
 
 
 
 
 router = MisagoApiRouter()
 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 import six
 from django.utils.six.moves.urllib.parse import urlparse
 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.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.models import THREADS_ROOT_NAME, Category
 from misago.categories.permissions import can_browse_category, can_see_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.models import Category
 from misago.categories.permissions import allow_browse_category, allow_see_category
 from misago.categories.permissions import allow_browse_category, allow_see_category
 from misago.categories.serializers import BasicCategorySerializer
 from misago.categories.serializers import BasicCategorySerializer
-from misago.core.viewmodel import ViewModel as BaseViewModel
 from misago.core.shortcuts import validate_slug
 from misago.core.shortcuts import validate_slug
+from misago.core.viewmodel import ViewModel as BaseViewModel
 
 
 from ..permissions import allow_use_private_threads
 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 django.utils.translation import gettext as _
 
 
 from misago.acl import add_acl
 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.shortcuts import validate_slug
 from misago.core.viewmodel import ViewModel as BaseViewModel
 from misago.core.viewmodel import ViewModel as BaseViewModel
 from misago.readtracker.threadstracker import make_read_aware
 from misago.readtracker.threadstracker import make_read_aware
@@ -139,4 +138,3 @@ class PrivateThread(ViewModel):
 
 
     def get_root_name(self):
     def get_root_name(self):
         return _("Private threads")
         return _("Private threads")
-

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

@@ -1,8 +1,8 @@
 from django.contrib import messages
 from django.contrib import messages
-from django.core.urlresolvers import reverse
 from django.db import transaction
 from django.db import transaction
 from django.db.models import Count
 from django.db.models import Count
 from django.shortcuts import redirect
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 
 
 from misago.admin.views import generic
 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.contrib import messages
-from django.core.urlresolvers import reverse
 from django.db.models import Count
 from django.db.models import Count
 from django.shortcuts import redirect
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 
 
 from misago.admin.views import generic
 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()
             return posts_queryset.filter(posted_on__gt=thread.last_read_on).order_by('id').first()
         else:
         else:
             return posts_queryset.order_by('id').last()
             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.conf import settings
-from django.core.urlresolvers import reverse
 from django.http import Http404
 from django.http import Http404
 from django.shortcuts import render
 from django.shortcuts import render
+from django.urls import reverse
 from django.views.generic import View
 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):
 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.shortcuts import render
+from django.urls import reverse
 from django.views.generic import View
 from django.views.generic import View
 
 
 from ..viewmodels import ForumThread, PrivateThread, ThreadPosts
 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 ..permissions.profiles import allow_browse_users_list, allow_follow_user, allow_see_ban_details
 from ..serializers import BanDetailsSerializer, UserProfileSerializer, UserSerializer
 from ..serializers import BanDetailsSerializer, UserProfileSerializer, UserSerializer
 from ..viewmodels import UserPosts, UserThreads
 from ..viewmodels import UserPosts, UserThreads
+from .rest_permissions import BasePermission, UnbannedAnonOnly
 from .userendpoints.avatar import avatar_endpoint, moderate_avatar_endpoint
 from .userendpoints.avatar import avatar_endpoint, moderate_avatar_endpoint
 from .userendpoints.changeemail import change_email_endpoint
 from .userendpoints.changeemail import change_email_endpoint
 from .userendpoints.changepassword import change_password_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.list import list_endpoint
 from .userendpoints.signature import signature_endpoint
 from .userendpoints.signature import signature_endpoint
 from .userendpoints.username import moderate_username_endpoint, username_endpoint
 from .userendpoints.username import moderate_username_endpoint, username_endpoint
-from .rest_permissions import BasePermission, UnbannedAnonOnly
 
 
 
 
 class UserViewSetPermission(BasePermission):
 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 .pages import user_profile, usercp, users_list
 from .serializers import AnonymousUserSerializer, AuthenticatedUserSerializer
 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.
 admin panel.
 
 
 The model supposed to be used for interaction of third party django apps with
 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 import admin
 from django.contrib.auth import get_user_model
 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.html import format_html
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 
 
@@ -24,16 +24,16 @@ User = get_user_model()
 
 
 class UserAdminForm(forms.ModelForm):
 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.
     itself like an html hyperlink to a user edit page in misago admin panel.
 
 
     This could be done with `User` edit template overwrite, but
     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?
     button - isn't it?
     """
     """
     #: pseudo-field
     #: pseudo-field
     edit_from_misago_link = forms.Field()
     edit_from_misago_link = forms.Field()
-    
+
     def __init__(self, *args, **kwargs):
     def __init__(self, *args, **kwargs):
         # noinspection PyArgumentList
         # noinspection PyArgumentList
         super(UserAdminForm, self).__init__(*args, **kwargs)
         super(UserAdminForm, self).__init__(*args, **kwargs)
@@ -67,7 +67,7 @@ class UserAdminForm(forms.ModelForm):
         link_html = format_html(link_html_template, link_url)
         link_html = format_html(link_html_template, link_url)
 
 
         return link_html
         return link_html
-    
+
     class Meta:
     class Meta:
         model = User
         model = User
         fields = ['edit_from_misago_link']
         fields = ['edit_from_misago_link']
@@ -75,8 +75,8 @@ class UserAdminForm(forms.ModelForm):
 
 
 class UserAdminModel(admin.ModelAdmin):
 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).
     that).
     Replaces default form with custom `UserAdminForm`.
     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 import logout
 from django.contrib.auth.models import AnonymousUser as DjAnonymousUser
 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
 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.db import models, transaction
+from django.urls import reverse
 from django.utils.encoding import python_2_unicode_compatible
 from django.utils.encoding import python_2_unicode_compatible
 
 
 from misago.acl import version as acl_version
 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 UserManager as BaseUserManager
 from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
 from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
 from django.core.mail import send_mail
 from django.core.mail import send_mail
-from django.core.urlresolvers import reverse
 from django.db import IntegrityError, models, transaction
 from django.db import IntegrityError, models, transaction
 from django.dispatch import receiver
 from django.dispatch import receiver
+from django.urls import reverse
 from django.utils import timezone
 from django.utils import timezone
 from django.utils.translation import ugettext_lazy as _
 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.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from rest_framework import serializers
 from rest_framework import serializers
 
 

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

@@ -1,5 +1,5 @@
 from django import template
 from django import template
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 
 
 register = template.Library()
 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.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase
 from django.test import TestCase
+from django.urls import reverse
 
 
 from ..models import BAN_USERNAME, Ban
 from ..models import BAN_USERNAME, Ban
 from ..tokens import make_activation_token
 from ..tokens import make_activation_token

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

@@ -1,8 +1,8 @@
 import json
 import json
 
 
 from django.contrib.auth import get_user_model
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase
 from django.test import TestCase
+from django.urls import reverse
 from django.utils.encoding import smart_str
 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.conf import settings
 from django.contrib.auth import get_user_model
 from django.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.test import TestCase
 from django.test import TestCase
+from django.urls import reverse
 
 
 from ..views.avatarserver import clean_size
 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 datetime import date, datetime, timedelta
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.six.moves import range
 from django.utils.six.moves import range
 
 
 from misago.admin.testutils import AdminTestCase
 from misago.admin.testutils import AdminTestCase

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

@@ -1,7 +1,7 @@
 import json
 import json
 
 
-from django.core.urlresolvers import reverse
 from django.test import TestCase
 from django.test import TestCase
+from django.urls import reverse
 from django.utils.encoding import smart_str
 from django.utils.encoding import smart_str
 
 
 from misago.conf import settings
 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 ..models import BAN_IP, Ban
 from ..testutils import UserTestCase
 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.test import override_settings
+from django.urls import reverse
 
 
 from misago.admin.testutils import AdminTestCase
 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 import get_user_model
 from django.contrib.auth.models import Permission
 from django.contrib.auth.models import Permission
-from django.core.urlresolvers import reverse
 from django.test import override_settings
 from django.test import override_settings
+from django.urls import reverse
 from django.utils import formats
 from django.utils import formats
 
 
 from misago.admin.testutils import AdminTestCase
 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.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from ..models import BAN_USERNAME, Ban
 from ..models import BAN_USERNAME, Ban
 from ..testutils import UserTestCase
 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.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 django.utils.six.moves import range
 
 
 from misago.acl.testutils import override_acl
 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 import mail
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from ..testutils import AuthenticatedUserTestCase
 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.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 django.utils.six.moves import range
 
 
 from misago.acl.testutils import override_acl
 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.acl.models import Role
 from misago.admin.testutils import AdminTestCase
 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 ..models import BAN_IP, Ban
 from ..testutils import UserTestCase
 from ..testutils import UserTestCase

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

@@ -1,6 +1,6 @@
 import json
 import json
 
 
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils.encoding import smart_str
 from django.utils.encoding import smart_str
 
 
 from ..testutils import AuthenticatedUserTestCase, SuperUserTestCase, UserTestCase
 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 path import Path
 
 
 from django.contrib.auth import get_user_model
 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 django.utils.encoding import smart_str
 
 
 from misago.acl.testutils import override_acl
 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.contrib.auth import get_user_model
 from django.core import mail
 from django.core import mail
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from misago.conf import settings
 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 import testutils
 from misago.threads.tests.test_threads_api import ThreadsApiTestCase
 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.contrib.auth import get_user_model
 from django.core import mail
 from django.core import mail
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 from django.utils import six
 from django.utils import six
 from django.utils.encoding import smart_str
 from django.utils.encoding import smart_str
 from django.utils.six.moves import range
 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
 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.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 from misago.core.testutils import MisagoTestCase
 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.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.shortcuts import get_object_or_404, render
 from django.shortcuts import get_object_or_404, render
+from django.urls import reverse
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 
 
 from misago.conf import settings
 from misago.conf import settings

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

@@ -1,6 +1,6 @@
 from django.contrib import messages
 from django.contrib import messages
-from django.core.urlresolvers import reverse
 from django.shortcuts import redirect
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 
 
 from misago.admin.views import generic
 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.contrib.auth import get_user_model
-from django.core.urlresolvers import reverse
 from django.shortcuts import get_object_or_404, render
 from django.shortcuts import get_object_or_404, render
+from django.urls import reverse
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 
 
 from misago.core.exceptions import Banned
 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.conf import settings
 from django.contrib.auth import get_user_model
 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 render as django_render
 from django.shortcuts import redirect
 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.shortcuts import get_object_or_404, paginate, pagination_dict
 from misago.core.utils import format_plaintext_for_html
 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.contrib.auth import update_session_auth_hash
-from django.core.urlresolvers import reverse
 from django.db import IntegrityError
 from django.db import IntegrityError
 from django.shortcuts import render
 from django.shortcuts import render
+from django.urls import reverse
 from django.utils import six
 from django.utils import six
 from django.utils.translation import ugettext as _
 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 import messages
 from django.contrib.auth import get_user_model
 from django.contrib.auth import get_user_model
 from django.core.exceptions import PermissionDenied
 from django.core.exceptions import PermissionDenied
-from django.core.urlresolvers import reverse
 from django.db.transaction import atomic
 from django.db.transaction import atomic
 from django.http import Http404, JsonResponse
 from django.http import Http404, JsonResponse
 from django.shortcuts import render as django_render
 from django.shortcuts import render as django_render
 from django.shortcuts import redirect
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.utils import six
 from django.utils import six
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 
 
 from misago.acl import add_acl
 from misago.acl import add_acl
 from misago.core.decorators import require_POST
 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.core.utils import clean_return_path
 from misago.threads.permissions import allow_message_user
 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 ..permissions.profiles import allow_block_user, allow_follow_user
 from ..serializers import BanDetailsSerializer, UserProfileSerializer, UserSerializer
 from ..serializers import BanDetailsSerializer, UserProfileSerializer, UserSerializer
 from ..serializers.usernamechange import UsernameChangeSerializer
 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 ..viewmodels import UserPosts, UserThreads
+from ..warnings import get_user_warning_level, get_user_warning_obj, get_warning_levels
 
 
 
 
 def profile_view(f):
 def profile_view(f):