Rafał Pitoń 10 лет назад
Родитель
Сommit
dbe729f924
2 измененных файлов с 24 добавлено и 7 удалено
  1. 1 1
      misago/notifications/api.py
  2. 23 6
      misago/users/views/profile.py

+ 1 - 1
misago/notifications/api.py

@@ -60,7 +60,7 @@ def _real_read_user_notification(user, trigger):
             # Cos no. of changed rows returned via update()
             # Cos no. of changed rows returned via update()
             # isn't always accurate
             # isn't always accurate
             user.new_notifications = 0
             user.new_notifications = 0
-    user.save(update_fields=['new_notifications'])
+        user.save(update_fields=['new_notifications'])
 
 
 
 
 def read_all_user_alerts(user):
 def read_all_user_alerts(user):

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

@@ -1,5 +1,6 @@
 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.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 redirect, render as django_render
 from django.shortcuts import redirect, render as django_render
@@ -9,6 +10,7 @@ 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, validate_slug
 from misago.core.shortcuts import get_object_or_404, paginate, validate_slug
 from misago.core.utils import clean_return_path
 from misago.core.utils import clean_return_path
+from misago.notifications import notify_user, read_user_notification
 
 
 from misago.users.bans import get_user_ban
 from misago.users.bans import get_user_ban
 from misago.users.decorators import deny_guests
 from misago.users.decorators import deny_guests
@@ -43,6 +45,9 @@ def profile_view(f):
         else:
         else:
             profile.is_blocked = False
             profile.is_blocked = False
 
 
+        if request.user.is_authenticated and request.method == "GET":
+            read_user_notification(request.user, "followed_%s" % profile.pk)
+
         return f(request, *args, **kwargs)
         return f(request, *args, **kwargs)
     return decorator
     return decorator
 
 
@@ -230,18 +235,30 @@ def follow_user(request, profile):
         followed = True
         followed = True
         request.user.follows.add(profile)
         request.user.follows.add(profile)
 
 
-    profile.followers = profile.followed_by.count()
-    profile.save(update_fields=['followers'])
-
-    user_locked.following = user_locked.follows.count()
-    user_locked.save(update_fields=['following'])
-
     if followed:
     if followed:
         message = _("You are now following %(user)s.")
         message = _("You are now following %(user)s.")
+        notify_user(profile,
+            _("%(user)s is now following you."),
+            reverse(user_profile.get_default_link(), kwargs={
+                'user_slug': user_locked.slug, 'user_id': user_locked.id
+            }),
+            "followed_%s" % user_locked.pk,
+            formats={'user': user_locked.username},
+            sender=user_locked,
+            update_user=False)
     else:
     else:
         message = _("You have stopped following %(user)s.")
         message = _("You have stopped following %(user)s.")
     message = message % {'user': profile.username}
     message = message % {'user': profile.username}
 
 
+    profile.followers = profile.followed_by.count()
+    if followed:
+        profile.save(update_fields=['followers', 'new_notifications'])
+    else:
+        profile.save(update_fields=['followers'])
+
+    user_locked.following = user_locked.follows.count()
+    user_locked.save(update_fields=['following'])
+
     if request.is_ajax:
     if request.is_ajax:
         return {'is_following': followed, 'message': message}
         return {'is_following': followed, 'message': message}
     else:
     else: