Browse Source

small cleanup, unified args order for user status adnotations with rest of API

Rafał Pitoń 9 years ago
parent
commit
d54de4b851

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

@@ -28,7 +28,7 @@ class ViewModel(object):
         add_acl(request.user, posts)
 
         make_posts_read_aware(request.user, thread.thread, posts)
-        make_users_status_aware(posters, request.user.acl)
+        make_users_status_aware(request.user, posters)
 
         self.posts = posts
         self.paginator = paginator

+ 2 - 3
misago/users/api/userendpoints/list.py

@@ -23,8 +23,7 @@ Paginator = ApiPaginator(settings.MISAGO_USERS_PER_PAGE, 4)
 
 def active(request):
     ranking = get_active_posters_ranking()
-    make_users_status_aware(
-        ranking['users'], request.user.acl, fetch_state=True)
+    make_users_status_aware(request.user, ranking['users'], fetch_state=True)
 
     return Response({
         'tracked_period': settings.MISAGO_RANKING_LENGTH,
@@ -59,7 +58,7 @@ def generic(request):
     paginator = Paginator()
     users = paginator.paginate_queryset(queryset.order_by('slug'), request)
 
-    make_users_status_aware(users, request.user.acl)
+    make_users_status_aware(request.user, users)
     return paginator.get_paginated_response(
         UserSerializer(users, many=True).data)
 

+ 18 - 36
misago/users/api/users.py

@@ -21,23 +21,17 @@ from misago.users.bans import get_user_ban
 from misago.users.forms.options import ForumOptionsForm
 from misago.users.online.utils import get_user_status
 from misago.users.permissions.delete import allow_delete_user
-from misago.users.permissions.moderation import (
-    allow_rename_user, allow_moderate_avatar)
-from misago.users.permissions.profiles import (
-    allow_browse_users_list, allow_follow_user, allow_see_ban_details)
+from misago.users.permissions.moderation import allow_rename_user, allow_moderate_avatar
+from misago.users.permissions.profiles import allow_browse_users_list, allow_follow_user, allow_see_ban_details
 
-from misago.users.rest_permissions import (
-    BasePermission, IsAuthenticatedOrReadOnly, UnbannedAnonOnly)
-from misago.users.serializers import (
-    UserSerializer, UserProfileSerializer, BanDetailsSerializer)
+from misago.users.rest_permissions import BasePermission, IsAuthenticatedOrReadOnly, UnbannedAnonOnly
+from misago.users.serializers import UserSerializer, UserProfileSerializer, BanDetailsSerializer
 
 from misago.users.api.userendpoints.list import list_endpoint
-from misago.users.api.userendpoints.avatar import (
-    avatar_endpoint, moderate_avatar_endpoint)
+from misago.users.api.userendpoints.avatar import avatar_endpoint, moderate_avatar_endpoint
 from misago.users.api.userendpoints.create import create_endpoint
 from misago.users.api.userendpoints.signature import signature_endpoint
-from misago.users.api.userendpoints.username import (
-    username_endpoint, moderate_username_endpoint)
+from misago.users.api.userendpoints.username import username_endpoint, moderate_username_endpoint
 from misago.users.api.userendpoints.changeemail import change_email_endpoint
 from misago.users.api.userendpoints.changepassword import change_password_endpoint
 
@@ -53,8 +47,7 @@ class UserViewSetPermission(BasePermission):
 
 def allow_self_only(user, pk, message):
     if user.is_anonymous():
-        raise PermissionDenied(
-            _("You have to sign in to perform this action."))
+        raise PermissionDenied(_("You have to sign in to perform this action."))
     if user.pk != int(pk):
         raise PermissionDenied(message)
 
@@ -69,9 +62,7 @@ class UserViewSet(viewsets.GenericViewSet):
         return self.queryset.select_related(*relations)
 
     def get_user(self, pk):
-        return get_object_or_404(self.get_queryset(),
-            pk=get_int_or_404(pk)
-        )
+        return get_object_or_404(self.get_queryset(), pk=get_int_or_404(pk))
 
     def list(self, request):
         allow_browse_users_list(request.user)
@@ -84,25 +75,22 @@ class UserViewSet(viewsets.GenericViewSet):
         profile = self.get_user(pk)
 
         add_acl(request.user, profile)
-        profile.status = get_user_status(profile, request.user.acl)
+        profile.status = get_user_status(request.user, profile)
 
-        serializer = UserProfileSerializer(
-            profile, context={'user': request.user})
+        serializer = UserProfileSerializer(profile, context={'user': request.user})
         return Response(serializer.data)
 
     @detail_route(methods=['get', 'post'])
     def avatar(self, request, pk=None):
         get_int_or_404(pk)
-        allow_self_only(request.user, pk,
-                        _("You can't change other users avatars."))
+        allow_self_only(request.user, pk, _("You can't change other users avatars."))
 
         return avatar_endpoint(request)
 
     @detail_route(methods=['post'])
     def forum_options(self, request, pk=None):
         get_int_or_404(pk)
-        allow_self_only(
-            request.user, pk, _("You can't change other users options."))
+        allow_self_only(request.user, pk, _("You can't change other users options."))
 
         form = ForumOptionsForm(request.data, instance=request.user)
         if form.is_valid():
@@ -116,32 +104,28 @@ class UserViewSet(viewsets.GenericViewSet):
     @detail_route(methods=['get', 'post'])
     def username(self, request, pk=None):
         get_int_or_404(pk)
-        allow_self_only(request.user, pk,
-                        _("You can't change other users names."))
+        allow_self_only(request.user, pk, _("You can't change other users names."))
 
         return username_endpoint(request)
 
     @detail_route(methods=['get', 'post'])
     def signature(self, request, pk=None):
         get_int_or_404(pk)
-        allow_self_only(request.user, pk,
-                        _("You can't change other users signatures."))
+        allow_self_only(request.user, pk, _("You can't change other users signatures."))
 
         return signature_endpoint(request)
 
     @detail_route(methods=['post'])
     def change_password(self, request, pk=None):
         get_int_or_404(pk)
-        allow_self_only(request.user, pk,
-                        _("You can't change other users passwords."))
+        allow_self_only(request.user, pk, _("You can't change other users passwords."))
 
         return change_password_endpoint(request)
 
     @detail_route(methods=['post'])
     def change_email(self, request, pk=None):
         get_int_or_404(pk)
-        allow_self_only(request.user, pk,
-                        _("You can't change other users e-mail addresses."))
+        allow_self_only(request.user, pk, _("You can't change other users e-mail addresses."))
 
         return change_email_endpoint(request)
 
@@ -182,7 +166,7 @@ class UserViewSet(viewsets.GenericViewSet):
         allow_see_ban_details(request.user, profile)
 
         ban = get_user_ban(profile)
-        if (ban):
+        if ban:
             return Response(BanDetailsSerializer(ban).data)
         else:
             return Response({})
@@ -227,9 +211,7 @@ class UserViewSet(viewsets.GenericViewSet):
                         post.thread.synchronize()
                         post.thread.save()
 
-                    categories = Category.objects.filter(
-                        id__in=categories_to_sync)
-
+                    categories = Category.objects.filter(id__in=categories_to_sync)
                     for category in categories.iterator():
                         category.synchronize()
                         category.save()

+ 5 - 5
misago/users/online/utils.py

@@ -9,7 +9,7 @@ from misago.users.models import Online, BanCache
 ACTIVITY_CUTOFF = timedelta(minutes=2)
 
 
-def get_user_status(user, acl):
+def get_user_status(viewer, user):
     user_status = {
         'is_banned': False,
         'is_hidden': user.is_hiding_presence,
@@ -29,7 +29,7 @@ def get_user_status(user, acl):
 
     try:
         online_tracker = user.online_tracker
-        is_hidden = user.is_hiding_presence and not acl['can_see_hidden_users']
+        is_hidden = user.is_hiding_presence and not viewer.acl['can_see_hidden_users']
 
         if online_tracker and not is_hidden:
             if online_tracker.last_click >= timezone.now() - ACTIVITY_CUTOFF:
@@ -39,7 +39,7 @@ def get_user_status(user, acl):
         pass
 
     if user_status['is_hidden']:
-        if acl['can_see_hidden_users']:
+        if viewer.acl['can_see_hidden_users']:
             user_status['is_hidden'] = False
             if user_status['is_online']:
                 user_status['is_online_hidden'] = True
@@ -58,7 +58,7 @@ def get_user_status(user, acl):
     return user_status
 
 
-def make_users_status_aware(users, acl, fetch_state=False):
+def make_users_status_aware(viewer, users, fetch_state=False):
     users_dict = {}
     for user in users:
         users_dict[user.pk] = user
@@ -74,4 +74,4 @@ def make_users_status_aware(users, acl, fetch_state=False):
 
     # Fill user states
     for user in users:
-        user.status = get_user_status(user, acl)
+        user.status = get_user_status(viewer, user)

+ 6 - 11
misago/users/views/profile.py

@@ -10,8 +10,7 @@ from django.utils.translation import ugettext as _
 
 from misago.acl import add_acl
 from misago.core.decorators import require_POST
-from misago.core.shortcuts import (
-    get_object_or_404, paginate, pagination_dict, validate_slug)
+from misago.core.shortcuts import get_object_or_404, paginate, pagination_dict, validate_slug
 from misago.core.utils import clean_return_path
 from misago.threads.permissions import allow_message_user
 
@@ -19,13 +18,10 @@ from misago.users.bans import get_user_ban
 from misago.users.decorators import deny_guests
 from misago.users.online.utils import get_user_status
 from misago.users.pages import user_profile
-from misago.users.permissions.profiles import (
-    allow_follow_user, allow_block_user)
-from misago.users.serializers import (
-    UserSerializer, UserProfileSerializer, BanDetailsSerializer)
+from misago.users.permissions.profiles import allow_follow_user, allow_block_user
+from misago.users.serializers import UserSerializer, UserProfileSerializer, BanDetailsSerializer
 from misago.users.serializers.usernamechange import  UsernameChangeSerializer
-from misago.users.warnings import (
-    get_warning_levels, get_user_warning_level, get_user_warning_obj)
+from misago.users.warnings import get_warning_levels, get_user_warning_level, get_user_warning_obj
 
 
 def profile_view(f):
@@ -80,16 +76,15 @@ def render(request, template, context):
         is_authenticated_user = False
     context['is_authenticated_user'] = is_authenticated_user
 
-    user_acl = request.user.acl
     if request.user.is_authenticated():
         if is_authenticated_user:
             context['show_email'] = True
         else:
-            context['show_email'] = user_acl['can_see_users_emails']
+            context['show_email'] = request.user.acl['can_see_users_emails']
     else:
         context['show_email'] = False
 
-    context['profile'].status = get_user_status(context['profile'], user_acl)
+    context['profile'].status = get_user_status(request.user, context['profile'])
 
     if request.user.is_authenticated():
         try: