]> git.openstreetmap.org Git - osqa.git/commitdiff
resolves an issue with tags used count that can get out of control if called from...
authorjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Tue, 10 Apr 2012 20:38:50 +0000 (20:38 +0000)
committerjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Tue, 10 Apr 2012 20:38:50 +0000 (20:38 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1248 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/models/node.py
forum/models/tag.py

index 387f8870b8525df3aca59e1b7319f0ff10b36ee9..e8d6334751cab1a31498c76eb377b0d528c3d89b 100644 (file)
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 
 from base import *
+import logging
 import re
 from tag import Tag
 
@@ -449,15 +450,13 @@ class Node(BaseModel, NodeContent):
 
                 if not self.nis.deleted:
                     tag.add_to_usage_count(1)
-                    tag.save()
 
             if not self.nis.deleted:
                 for name in tag_changes['removed']:
                     try:
                         tag = Tag.objects.get(name=name)
                         tag.add_to_usage_count(-1)
-                        tag.save()
-                    except:
+                    except Tag.DoesNotExist:
                         pass
 
             return True
@@ -471,16 +470,13 @@ class Node(BaseModel, NodeContent):
         if action:
             for tag in self.tags.all():
                 tag.add_to_usage_count(-1)
-                tag.save()
         else:
             for tag in Tag.objects.filter(name__in=self.tagname_list()):
                 tag.add_to_usage_count(1)
-                tag.save()
 
     def delete(self, *args, **kwargs):
         for tag in self.tags.all():
             tag.add_to_usage_count(-1)
-            tag.save()
 
         self.active_revision = None
         self.save()
index 73b1e30a2a92f3dcee60b85671cfdb91f7c1e3ac..791636fa0a9810f2dee4c935d8bc5304d64d9bf0 100644 (file)
@@ -32,10 +32,12 @@ class Tag(BaseModel):
         return force_unicode(self.name)
 
     def add_to_usage_count(self, value):
-        if self.used_count + value < 0:
+        if int(self.used_count + value) < 0:
             self.used_count = 0
         else:
-            self.used_count = models.F('used_count') + value
+            self.used_count += value
+
+        self.save()
 
     def cache_key(self):
         return self._generate_cache_key(Tag.safe_cache_name(self.name))