Browse Source

Improved Monitor's API

Ralfp 12 years ago
parent
commit
c09af4cbcb

+ 4 - 4
misago/apps/admin/bans/views.py

@@ -58,7 +58,7 @@ class List(ListWidget):
 
     def action_delete(self, items, checked):
         Ban.objects.filter(id__in=checked).delete()
-        self.request.monitor['bans_version'] = int(self.request.monitor['bans_version']) + 1
+        self.request.monitor.increase('bans_version')
         return Message(_('Selected bans have been lifted successfully.'), 'success'), reverse('admin_bans')
 
 
@@ -87,7 +87,7 @@ class New(FormWidget):
                       expires=form.cleaned_data['expires']
                      )
         new_ban.save(force_insert=True)
-        self.request.monitor['bans_version'] = int(self.request.monitor['bans_version']) + 1
+        self.request.monitor.increase('bans_version')
         return new_ban, Message(_('New Ban has been set.'), 'success')
 
 
@@ -126,7 +126,7 @@ class Edit(FormWidget):
         target.reason_admin = form.cleaned_data['reason_admin']
         target.expires = form.cleaned_data['expires']
         target.save(force_update=True)
-        self.request.monitor['bans_version'] = int(self.request.monitor['bans_version']) + 1
+        self.request.monitor.increase('bans_version')
         return target, Message(_('Changes in ban have been saved.'), 'success')
 
 
@@ -141,7 +141,7 @@ class Delete(ButtonWidget):
 
     def action(self, target):
         target.delete()
-        self.request.monitor['bans_version'] = int(self.request.monitor['bans_version']) + 1
+        self.request.monitor.increase('bans_version')
         if target.test == 0:
             return Message(_('E-mail and username Ban "%(ban)s" has been lifted.') % {'ban': target.ban}, 'success'), False
         if target.test == 1:

+ 3 - 3
misago/apps/admin/forumroles/views.py

@@ -40,7 +40,7 @@ class List(ListWidget):
                 )
 
     def action_delete(self, items, checked):
-        self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+        self.request.monitor.increase('acl_version')
         Role.objects.filter(id__in=checked).delete()
         return Message(_('Selected forum roles have been deleted successfully.'), 'success'), reverse('admin_roles_forums')
 
@@ -127,7 +127,7 @@ class ACL(FormWidget):
             raw_acl[perm] = form.cleaned_data[perm]
         target.permissions = raw_acl
         target.save(force_update=True)
-        self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+        self.request.monitor.increase('acl_version')
 
         return target, Message(_('Forum Role "%(name)s" permissions have been changed.') % {'name': self.original_name}, 'success')
 
@@ -140,5 +140,5 @@ class Delete(ButtonWidget):
 
     def action(self, target):
         target.delete()
-        self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+        self.request.monitor.increase('acl_version')
         return Message(_('Forum Role "%(name)s" has been deleted.') % {'name': _(target.name)}, 'success'), False

+ 4 - 4
misago/apps/admin/forums/views.py

@@ -186,7 +186,7 @@ class NewNode(FormWidget):
 
         if form.cleaned_data['perms']:
             new_forum.copy_permissions(form.cleaned_data['perms'])
-            self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+            self.request.monitor.increase('acl_version')
 
         self.request.session['forums_admin_preffs'] = {
             'parent': form.cleaned_data['parent'].pk,
@@ -303,7 +303,7 @@ class Edit(FormWidget):
 
         if form.cleaned_data['parent'].pk != target.parent.pk:
             target.move_to(form.cleaned_data['parent'], 'last-child')
-            self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+            self.request.monitor.increase('acl_version')
 
         target.save(force_update=True)
         Forum.objects.populate_tree(True)
@@ -312,7 +312,7 @@ class Edit(FormWidget):
             target.copy_permissions(form.cleaned_data['perms'])
 
         if form.cleaned_data['parent'].pk != target.parent.pk or form.cleaned_data['perms']:
-            self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+            self.request.monitor.increase('acl_version')
 
         if self.original_name != target.name:
             target.sync_name()
@@ -370,5 +370,5 @@ class Delete(FormWidget):
                 Forum.objects.get(id=child.pk).delete()
         Forum.objects.get(id=target.pk).delete()
         Forum.objects.populate_tree(True)
-        self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+        self.request.monitor.increase('acl_version')
         return target, Message(_('Forum "%(name)s" has been deleted.') % {'name': self.original_name}, 'success')

+ 2 - 2
misago/apps/admin/roles/views.py

@@ -110,7 +110,7 @@ class Edit(FormWidget):
         if self.request.user.is_god():
             target.protected = form.cleaned_data['protected']
         target.save(force_update=True)
-        self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+        self.request.monitor.increase('acl_version')
         return target, Message(_('Changes in role "%(name)s" have been saved.') % {'name': self.original_name}, 'success')
 
 
@@ -226,7 +226,7 @@ class ACL(FormWidget):
             raw_acl[perm] = form.cleaned_data[perm]
         target.permissions = raw_acl
         target.save(force_update=True)
-        self.request.monitor['acl_version'] = int(self.request.monitor['acl_version']) + 1
+        self.request.monitor.increase('acl_version')
         
         return target, Message(_('Role "%(name)s" permissions have been changed.') % {'name': self.original_name}, 'success')
 

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

@@ -93,7 +93,7 @@ class List(ListWidget):
     def action_activate(self, items, checked):
         for user in items:
             if user.pk in checked and user.activation > 0:
-                self.request.monitor['users_inactive'] = int(self.request.monitor['users_inactive']) - 1
+                self.request.monitor.decrease('users_inactive')
                 user.activation = user.ACTIVATION_NONE
                 user.save(force_update=True)
                 user.email_user(

+ 1 - 1
misago/apps/threadtype/posting/newreply.py

@@ -90,7 +90,7 @@ class NewReplyBaseView(PostingBaseView):
 
         # Update forum and monitor
         if not moderation and not merged:
-            self.request.monitor['posts'] = int(self.request.monitor['posts']) + 1
+            self.request.monitor.increase('posts')
             self.forum.posts += 1
             self.forum.new_last_thread(self.thread)
             self.forum.save(force_update=True)

+ 2 - 2
misago/apps/threadtype/posting/newthread.py

@@ -62,8 +62,8 @@ class NewThreadBaseView(PostingBaseView):
 
         # Update forum monitor
         if not moderation:
-            self.request.monitor['threads'] = int(self.request.monitor['threads']) + 1
-            self.request.monitor['posts'] = int(self.request.monitor['posts']) + 1
+            self.request.monitor.increase('threads')
+            self.request.monitor.increase('posts')
             self.forum.threads += 1
             self.forum.posts += 1
             self.forum.new_last_thread(self.thread)

+ 8 - 8
misago/apps/threadtype/thread/moderation/thread.py

@@ -22,8 +22,8 @@ class ThreadModeration(object):
         self.forum.sync()
         self.forum.save(force_update=True)
         # Update monitor
-        self.request.monitor['threads'] = int(self.request.monitor['threads']) + 1
-        self.request.monitor['posts'] = int(self.request.monitor['posts']) + self.thread.replies + 1
+        self.request.monitor.increase('threads')
+        self.request.monitor.increase('posts', self.thread.replies + 1)
         self.request.messages.set_flash(Message(_('Thread has been marked as reviewed and made visible to other members.')), 'success', 'threads')
 
     def thread_action_annouce(self):
@@ -97,8 +97,8 @@ class ThreadModeration(object):
         self.forum.sync()
         self.forum.save(force_update=True)
         # Update monitor
-        self.request.monitor['threads'] = int(self.request.monitor['threads']) + 1
-        self.request.monitor['posts'] = int(self.request.monitor['posts']) + self.thread.replies + 1
+        self.request.monitor.increase('threads')
+        self.request.monitor.increase('posts', self.thread.replies + 1)
         self.request.messages.set_flash(Message(_('Thread has been restored.')), 'success', 'threads')
 
     def thread_action_soft(self):
@@ -115,8 +115,8 @@ class ThreadModeration(object):
         self.forum.sync()
         self.forum.save(force_update=True)
         # Update monitor
-        self.request.monitor['threads'] = int(self.request.monitor['threads']) - 1
-        self.request.monitor['posts'] = int(self.request.monitor['posts']) - self.thread.replies - 1
+        self.request.monitor.decrease('threads')
+        self.request.monitor.decrease('posts', self.thread.replies + 1)
         self.request.messages.set_flash(Message(_('Thread has been hidden.')), 'success', 'threads')
 
     def thread_action_hard(self):
@@ -126,7 +126,7 @@ class ThreadModeration(object):
         self.forum.sync()
         self.forum.save(force_update=True)
         # Update monitor
-        self.request.monitor['threads'] = int(self.request.monitor['threads']) - 1
-        self.request.monitor['posts'] = int(self.request.monitor['posts']) - self.thread.replies - 1
+        self.request.monitor.decrease('threads')
+        self.request.monitor.decrease('posts', self.thread.replies + 1)
         self.request.messages.set_flash(Message(_('Thread "%(thread)s" has been deleted.') % {'thread': self.thread.name}), 'success', 'threads')
         return self.threads_list_redirect()

+ 1 - 2
misago/management/commands/rebuildacls.py

@@ -5,6 +5,5 @@ class Command(BaseCommand):
     help = 'Rebuilds ACLs for all users'
 
     def handle(self, *args, **options):
-        monitor = Monitor()
-        monitor['acl_version'] = int(monitor['acl_version']) + 1
+        Monitor().increase('acl_version')
         self.stdout.write('\nUser ACLs cache has been set as outdated and will be rebuild when needed.\n')

+ 2 - 2
misago/models/usermodel.py

@@ -98,12 +98,12 @@ class UserManager(models.Manager):
 
         # Update forum stats
         if activation == 0:
-            monitor['users'] = int(monitor['users']) + 1
+            monitor.increase('users')
             monitor['last_user'] = new_user.pk
             monitor['last_user_name'] = new_user.username
             monitor['last_user_slug'] = new_user.username_slug
         else:
-            monitor['users_inactive'] = int(monitor['users_inactive']) + 1
+            monitor.increase('users_inactive')
 
         # Return new user
         return new_user

+ 6 - 0
misago/monitor.py

@@ -33,6 +33,12 @@ class Monitor(object):
     def __delitem__(self, key):
         pass
 
+    def increase(self, key, i=1):
+        self[key] = int(self[key]) + i
+
+    def decrease(self, key, i=1):
+        self[key] = int(self[key]) - i
+
     def get(self, key, default=None):
         if not key in self._items:
             return default