Browse Source

Fix misago.users and misago.legal builds after latest REST changes

Rafał Pitoń 7 years ago
parent
commit
ee1500e6b4

+ 5 - 0
misago/categories/context_processors.py

@@ -7,6 +7,11 @@ from .models import Category
 
 
 
 
 def preload_categories_json(request):
 def preload_categories_json(request):
+    try:
+        user_acl_key = request.user.acl_key
+    except AttributeError:
+        return {}
+        
     cache_key = 'misago_categories_json_{}'.format(request.user.acl_key)
     cache_key = 'misago_categories_json_{}'.format(request.user.acl_key)
     categories_json = cache.get(cache_key, 'nada')
     categories_json = cache.get(cache_key, 'nada')
     if categories_json == 'nada':
     if categories_json == 'nada':

+ 40 - 8
misago/legal/tests.py

@@ -51,7 +51,11 @@ class PrivacyPolicyTests(TestCase):
         request = MockRequest()
         request = MockRequest()
 
 
         context_dict = legal_links(request)
         context_dict = legal_links(request)
-        self.assertFalse(context_dict)
+
+        self.assertEqual(context_dict, {
+            'privacy_policy': None,
+            'terms_of_service': None,
+        })
         self.assertEqual(request.frontend_context['url'], {})
         self.assertEqual(request.frontend_context['url'], {})
 
 
     def test_context_processor_misago_policy(self):
     def test_context_processor_misago_policy(self):
@@ -59,8 +63,12 @@ class PrivacyPolicyTests(TestCase):
         request = MockRequest()
         request = MockRequest()
 
 
         settings.override_setting('privacy_policy', 'Lorem ipsum')
         settings.override_setting('privacy_policy', 'Lorem ipsum')
-        legal_links(request)
+        context_dict = legal_links(request)
 
 
+        self.assertEqual(context_dict, {
+            'privacy_policy': 'Lorem ipsum',
+            'terms_of_service': None,
+        })
         self.assertEqual(request.frontend_context['url'], {
         self.assertEqual(request.frontend_context['url'], {
             'privacy_policy': reverse('misago:privacy-policy'),
             'privacy_policy': reverse('misago:privacy-policy'),
         })
         })
@@ -70,16 +78,24 @@ class PrivacyPolicyTests(TestCase):
         request = MockRequest()
         request = MockRequest()
 
 
         settings.override_setting('privacy_policy_link', 'http://test.com')
         settings.override_setting('privacy_policy_link', 'http://test.com')
-        legal_links(request)
+        context_dict = legal_links(request)
 
 
+        self.assertEqual(context_dict, {
+            'privacy_policy': 'http://test.com',
+            'terms_of_service': None,
+        })
         self.assertEqual(request.frontend_context['url'], {
         self.assertEqual(request.frontend_context['url'], {
             'privacy_policy': 'http://test.com',
             'privacy_policy': 'http://test.com',
         })
         })
 
 
         # set misago view too
         # set misago view too
         settings.override_setting('privacy_policy', 'Lorem ipsum')
         settings.override_setting('privacy_policy', 'Lorem ipsum')
-        legal_links(request)
+        context_dict = legal_links(request)
 
 
+        self.assertEqual(context_dict, {
+            'privacy_policy': 'http://test.com',
+            'terms_of_service': None,
+        })
         self.assertEqual(request.frontend_context['url'], {
         self.assertEqual(request.frontend_context['url'], {
             'privacy_policy': 'http://test.com',
             'privacy_policy': 'http://test.com',
         })
         })
@@ -125,7 +141,11 @@ class TermsOfServiceTests(TestCase):
         request = MockRequest()
         request = MockRequest()
 
 
         context_dict = legal_links(request)
         context_dict = legal_links(request)
-        self.assertFalse(context_dict)
+
+        self.assertEqual(context_dict, {
+            'privacy_policy': None,
+            'terms_of_service': None,
+        })
         self.assertEqual(request.frontend_context['url'], {})
         self.assertEqual(request.frontend_context['url'], {})
 
 
     def test_context_processor_misago_tos(self):
     def test_context_processor_misago_tos(self):
@@ -133,8 +153,12 @@ class TermsOfServiceTests(TestCase):
         request = MockRequest()
         request = MockRequest()
 
 
         settings.override_setting('terms_of_service', 'Lorem ipsum')
         settings.override_setting('terms_of_service', 'Lorem ipsum')
-        legal_links(request)
+        context_dict = legal_links(request)
 
 
+        self.assertEqual(context_dict, {
+            'privacy_policy': None,
+            'terms_of_service': 'Lorem ipsum',
+        })
         self.assertEqual(
         self.assertEqual(
             request.frontend_context['url'], {
             request.frontend_context['url'], {
                 'tos': reverse('misago:terms-of-service'),
                 'tos': reverse('misago:terms-of-service'),
@@ -146,16 +170,24 @@ class TermsOfServiceTests(TestCase):
         request = MockRequest()
         request = MockRequest()
 
 
         settings.override_setting('terms_of_service_link', 'http://test.com')
         settings.override_setting('terms_of_service_link', 'http://test.com')
-        legal_links(request)
+        context_dict = legal_links(request)
 
 
+        self.assertEqual(context_dict, {
+            'privacy_policy': None,
+            'terms_of_service': 'http://test.com',
+        })
         self.assertEqual(request.frontend_context['url'], {
         self.assertEqual(request.frontend_context['url'], {
             'tos': 'http://test.com',
             'tos': 'http://test.com',
         })
         })
 
 
         # set misago view too
         # set misago view too
         settings.override_setting('terms_of_service', 'Lorem ipsum')
         settings.override_setting('terms_of_service', 'Lorem ipsum')
-        legal_links(request)
+        context_dict = legal_links(request)
 
 
+        self.assertEqual(context_dict, {
+            'privacy_policy': None,
+            'terms_of_service': 'http://test.com',
+        })
         self.assertEqual(request.frontend_context['url'], {
         self.assertEqual(request.frontend_context['url'], {
             'tos': 'http://test.com',
             'tos': 'http://test.com',
         })
         })

+ 3 - 3
misago/users/api/auth.py

@@ -9,8 +9,8 @@ from django.shortcuts import get_object_or_404
 from misago.conf import settings
 from misago.conf import settings
 from misago.core.mail import mail_user
 from misago.core.mail import mail_user
 from misago.users.serializers import (
 from misago.users.serializers import (
-    AnonymousUserSerializer, AuthenticatedUserSerializer, LoginSerializer,
-    ResendActivationSerializer, SendPasswordFormSerializer, ChangePasswordSerializer)
+    AnonymousUserSerializer, AuthenticatedUserSerializer, ChangeForgottenPasswordSerializer,
+    LoginSerializer, ResendActivationSerializer, SendPasswordFormSerializer)
 from misago.users.tokens import (
 from misago.users.tokens import (
     make_activation_token, make_password_change_token)
     make_activation_token, make_password_change_token)
 
 
@@ -161,7 +161,7 @@ def change_forgotten_password(request, pk):
     will change forgotten password
     will change forgotten password
     """
     """
     user = get_object_or_404(UserModel, pk=pk, is_active=True)
     user = get_object_or_404(UserModel, pk=pk, is_active=True)
-    serializer = ChangePasswordSerializer(user, data=request.data)
+    serializer = ChangeForgottenPasswordSerializer(user, data=request.data)
     serializer.is_valid(raise_exception=True)
     serializer.is_valid(raise_exception=True)
 
 
     serializer.save()
     serializer.save()

+ 14 - 8
misago/users/serializers/__init__.py

@@ -1,8 +1,14 @@
-from .ban import *
-from .moderation import *
-from .options import *
-from .rank import *
-from .user import *
-from .auth import *
-from .register import *
-from .usernamechange import *
+from .ban import BanMessageSerializer, BanDetailsSerializer
+from .moderation import ModerateAvatarSerializer, ModerateSignatureSerializer
+from .options import (
+    ForumOptionsSerializer, EditSignatureSerializer, ChangeUsernameSerializer,
+    ChangePasswordSerializer, ChangeEmailSerializer
+)
+from .rank import RankSerializer
+from .user import StatusSerializer, UserCardSerializer, UserSerializer
+from .auth import (
+    AuthenticatedUserSerializer, AnonymousUserSerializer, LoginSerializer,
+    ResendActivationSerializer, SendPasswordFormSerializer, ChangeForgottenPasswordSerializer
+)
+from .register import RegisterUserSerializer
+from .usernamechange import UsernameChangeSerializer

+ 1 - 10
misago/users/serializers/auth.py

@@ -15,15 +15,6 @@ from .user import UserSerializer
 
 
 UserModel = get_user_model()
 UserModel = get_user_model()
 
 
-__all__ = [
-    'AuthenticatedUserSerializer',
-    'AnonymousUserSerializer',
-    'LoginSerializer',
-    'ResendActivationSerializer',
-    'SendPasswordFormSerializer',
-    'ChangePasswordSerializer',
-]
-
 
 
 class AuthenticatedUserSerializer(UserSerializer):
 class AuthenticatedUserSerializer(UserSerializer):
     email = serializers.SerializerMethodField()
     email = serializers.SerializerMethodField()
@@ -128,7 +119,7 @@ class SendPasswordFormSerializer(GetUserSerializer):
         self.confirm_user_active(user)
         self.confirm_user_active(user)
 
 
 
 
-class ChangePasswordSerializer(serializers.Serializer, AuthMixin):
+class ChangeForgottenPasswordSerializer(serializers.Serializer, AuthMixin):
     password = serializers.CharField(
     password = serializers.CharField(
         max_length=255,
         max_length=255,
         trim_whitespace=False,
         trim_whitespace=False,

+ 0 - 6
misago/users/serializers/ban.py

@@ -6,12 +6,6 @@ from misago.core.utils import format_plaintext_for_html
 from misago.users.models import Ban
 from misago.users.models import Ban
 
 
 
 
-__all__ = [
-    'BanMessageSerializer',
-    'BanDetailsSerializer',
-]
-
-
 def serialize_message(message):
 def serialize_message(message):
     if message:
     if message:
         return {
         return {

+ 0 - 5
misago/users/serializers/moderation.py

@@ -8,11 +8,6 @@ from misago.conf import settings
 
 
 UserModel = get_user_model()
 UserModel = get_user_model()
 
 
-__all__ = [
-    'ModerateAvatarSerializer',
-    'ModerateSignatureSerializer',
-]
-
 
 
 class ModerateAvatarSerializer(serializers.ModelSerializer):
 class ModerateAvatarSerializer(serializers.ModelSerializer):
     class Meta:
     class Meta:

+ 0 - 8
misago/users/serializers/options.py

@@ -10,14 +10,6 @@ from misago.users.validators import validate_email, validate_username
 
 
 UserModel = get_user_model()
 UserModel = get_user_model()
 
 
-__all__ = [
-    'ForumOptionsSerializer',
-    'EditSignatureSerializer',
-    'ChangeUsernameSerializer',
-    'ChangePasswordSerializer',
-    'ChangeEmailSerializer',
-]
-
 
 
 class ForumOptionsSerializer(serializers.ModelSerializer):
 class ForumOptionsSerializer(serializers.ModelSerializer):
     class Meta:
     class Meta:

+ 0 - 3
misago/users/serializers/rank.py

@@ -4,9 +4,6 @@ from misago.core.utils import format_plaintext_for_html
 from misago.users.models import Rank
 from misago.users.models import Rank
 
 
 
 
-__all__ = ['RankSerializer']
-
-
 class RankSerializer(serializers.ModelSerializer):
 class RankSerializer(serializers.ModelSerializer):
     description = serializers.SerializerMethodField()
     description = serializers.SerializerMethodField()
     url = serializers.SerializerMethodField()
     url = serializers.SerializerMethodField()

+ 0 - 3
misago/users/serializers/register.py

@@ -13,9 +13,6 @@ from misago.users.bans import get_email_ban, get_ip_ban, get_username_ban
 UserModel = get_user_model()
 UserModel = get_user_model()
 
 
 
 
-__all__ = ['RegisterUserSerializer']
-
-
 class RegisterUserSerializer(serializers.Serializer):
 class RegisterUserSerializer(serializers.Serializer):
     username = serializers.CharField(
     username = serializers.CharField(
         max_length=255,
         max_length=255,

+ 0 - 2
misago/users/serializers/user.py

@@ -10,8 +10,6 @@ from . import RankSerializer
 
 
 UserModel = get_user_model()
 UserModel = get_user_model()
 
 
-__all__ = ['StatusSerializer', 'UserSerializer', 'UserCardSerializer']
-
 
 
 class StatusSerializer(serializers.Serializer):
 class StatusSerializer(serializers.Serializer):
     is_offline = serializers.BooleanField()
     is_offline = serializers.BooleanField()

+ 0 - 2
misago/users/serializers/usernamechange.py

@@ -5,8 +5,6 @@ from misago.users.models import UsernameChange
 from .user import UserSerializer as BaseUserSerializer
 from .user import UserSerializer as BaseUserSerializer
 
 
 
 
-__all__ = ['UsernameChangeSerializer']
-
 UserSerializer = BaseUserSerializer.subset_fields('id', 'username', 'avatars', 'url')
 UserSerializer = BaseUserSerializer.subset_fields('id', 'username', 'avatars', 'url')
 
 
 
 

+ 7 - 4
misago/users/tests/test_options_views.py

@@ -29,10 +29,13 @@ class ConfirmChangeEmailTests(AuthenticatedUserTestCase):
         link = '/api/users/%s/change-email/' % self.user.pk
         link = '/api/users/%s/change-email/' % self.user.pk
 
 
         response = self.client.post(
         response = self.client.post(
-            link, data={'new_email': 'n3w@email.com',
-                        'password': self.USER_PASSWORD}
+            link,
+            data={
+                'new_email': 'n3w@email.com',
+                'password': self.USER_PASSWORD,
+            },
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
             if line.startswith('http://'):
             if line.startswith('http://'):
@@ -74,7 +77,7 @@ class ConfirmChangePasswordTests(AuthenticatedUserTestCase):
                 'password': self.USER_PASSWORD,
                 'password': self.USER_PASSWORD,
             },
             },
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
             if line.startswith('http://'):
             if line.startswith('http://'):

+ 2 - 4
misago/users/tests/test_user_changeemail_api.py

@@ -95,7 +95,7 @@ class UserChangeEmailTests(AuthenticatedUserTestCase):
                 'password': self.USER_PASSWORD,
                 'password': self.USER_PASSWORD,
             },
             },
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         self.assertIn('Confirm e-mail change', mail.outbox[0].subject)
         self.assertIn('Confirm e-mail change', mail.outbox[0].subject)
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
@@ -122,8 +122,6 @@ class UserChangeEmailTests(AuthenticatedUserTestCase):
     def test_change_email_user_password_whitespace(self):
     def test_change_email_user_password_whitespace(self):
         """api supports users with whitespace around their passwords"""
         """api supports users with whitespace around their passwords"""
         user_password = ' old password '
         user_password = ' old password '
-        new_password = ' N3wP@55w0rd '
-
         new_email = 'new@email.com'
         new_email = 'new@email.com'
 
 
         self.user.set_password(user_password)
         self.user.set_password(user_password)
@@ -138,7 +136,7 @@ class UserChangeEmailTests(AuthenticatedUserTestCase):
                 'password': user_password,
                 'password': user_password,
             },
             },
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         self.assertIn('Confirm e-mail change', mail.outbox[0].subject)
         self.assertIn('Confirm e-mail change', mail.outbox[0].subject)
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:

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

@@ -87,7 +87,7 @@ class UserChangePasswordTests(AuthenticatedUserTestCase):
                 'password': self.USER_PASSWORD,
                 'password': self.USER_PASSWORD,
             },
             },
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         self.assertIn('Confirm password change', mail.outbox[0].subject)
         self.assertIn('Confirm password change', mail.outbox[0].subject)
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
@@ -125,7 +125,7 @@ class UserChangePasswordTests(AuthenticatedUserTestCase):
                 'password': old_password,
                 'password': old_password,
             },
             },
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         self.assertIn('Confirm password change', mail.outbox[0].subject)
         self.assertIn('Confirm password change', mail.outbox[0].subject)
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
         for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:

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

@@ -346,7 +346,7 @@ class UserForumOptionsTests(AuthenticatedUserTestCase):
                 'subscribe_to_replied_threads': 1,
                 'subscribe_to_replied_threads': 1,
             }
             }
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         self.reload_user()
         self.reload_user()
 
 
@@ -364,7 +364,7 @@ class UserForumOptionsTests(AuthenticatedUserTestCase):
                 'subscribe_to_replied_threads': 1,
                 'subscribe_to_replied_threads': 1,
             }
             }
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         self.reload_user()
         self.reload_user()
 
 
@@ -382,7 +382,7 @@ class UserForumOptionsTests(AuthenticatedUserTestCase):
                 'subscribe_to_replied_threads': 1,
                 'subscribe_to_replied_threads': 1,
             }
             }
         )
         )
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 204)
 
 
         self.reload_user()
         self.reload_user()