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

Sync profile stats in profile views

Rafał Pitoń 10 лет назад
Родитель
Сommit
42c4df55db
2 измененных файлов с 11 добавлено и 3 удалено
  1. 1 1
      misago/users/models/user.py
  2. 10 2
      misago/users/views/profile.py

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

@@ -190,8 +190,8 @@ class User(AbstractBaseUser, PermissionsMixin):
     warning_level = models.PositiveIntegerField(default=0)
     warning_level_update_on = models.DateTimeField(null=True, blank=True)
 
-    following = models.PositiveIntegerField(default=0)
     followers = models.PositiveIntegerField(default=0)
+    following = models.PositiveIntegerField(default=0)
 
     follows = models.ManyToManyField(
         'self', related_name='followed_by', symmetrical=False)

+ 10 - 2
misago/users/views/profile.py

@@ -99,10 +99,14 @@ def threads(request, profile, page=0):
 
 @profile_view
 def followers(request, profile, page=0):
-    followers_qs = profile.followed_by.order_by('slug').select_related('rank')
+    followers_qs = profile.followed_by.order_by('slug')
     followers = paginate(followers_qs, page, 12, 2)
     items_left = followers.paginator.count - followers.end_index()
 
+    if followers.paginator.count != profile.followers:
+        profile.followers = followers.paginator.count
+        profile.save(update_fields=['followers'])
+
     return render(request, 'misago/profile/followers.html', {
         'profile': profile,
         'followers': followers,
@@ -112,10 +116,14 @@ def followers(request, profile, page=0):
 
 @profile_view
 def follows(request, profile, page=0):
-    followers_qs = profile.follows.order_by('slug').select_related('rank')
+    followers_qs = profile.follows.order_by('slug')
     followers = paginate(followers_qs, page, 12, 2)
     items_left = followers.paginator.count - followers.end_index()
 
+    if followers.paginator.count != profile.following:
+        profile.following = followers.paginator.count
+        profile.save(update_fields=['following'])
+
     return render(request, 'misago/profile/follows.html', {
         'profile': profile,
         'followers': followers,