From 981f2713a5caa510f596a089f78579f5ed317bd5 Mon Sep 17 00:00:00 2001 From: jordan Date: Tue, 10 Apr 2012 20:38:50 +0000 Subject: [PATCH] resolves an issue with tags used count that can get out of control if called from a module delete action git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1248 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum/models/node.py | 8 ++------ forum/models/tag.py | 6 ++++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/forum/models/node.py b/forum/models/node.py index 387f887..e8d6334 100644 --- a/forum/models/node.py +++ b/forum/models/node.py @@ -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() diff --git a/forum/models/tag.py b/forum/models/tag.py index 73b1e30..791636f 100644 --- a/forum/models/tag.py +++ b/forum/models/tag.py @@ -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)) -- 2.39.5