summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-04-17 15:06:19 -0600
committerAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-04-17 15:06:19 -0600
commitf47638af6b47bbd4ba9cd9ec014f6c5592b58a13 (patch)
treefba0699034a9fe9f2c589f1307b37668c124472f
parent7f7e3f04405a669b4d3fb775ba68b9cce91f9a7a (diff)
parentd6ee95a99cc174db4cba09f407caabb0fb67c853 (diff)
downloadaskbot-f47638af6b47bbd4ba9cd9ec014f6c5592b58a13.tar.gz
askbot-f47638af6b47bbd4ba9cd9ec014f6c5592b58a13.tar.bz2
askbot-f47638af6b47bbd4ba9cd9ec014f6c5592b58a13.zip
Merge branch 'master' of github.com:ASKBOT/askbot-devel
-rw-r--r--askbot/models/__init__.py6
-rw-r--r--askbot/models/question.py20
2 files changed, 11 insertions, 15 deletions
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index 09ec0018..165808d9 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -1178,6 +1178,7 @@ def user_delete_answer(
answer.save()
answer.thread.update_answer_count()
+ answer.thread.invalidate_cached_data()
logging.debug('updated answer count to %d' % answer.thread.answer_count)
signals.delete_question_or_answer.send(
@@ -1247,6 +1248,7 @@ def user_reopen_question(
self.assert_can_reopen_question(question)
question.thread.set_closed_status(closed=False, closed_by=self, closed_at=timestamp, close_reason=None)
+@auto_now_timestamp
def user_delete_post(
self,
post = None,
@@ -2005,14 +2007,14 @@ def _process_vote(user, post, timestamp=None, cancel=False, vote_type=None):
else:
auth.onDownVoted(vote, post, user, timestamp)
+ post.thread.invalidate_cached_data()
+
if post.post_type == 'question':
#denormalize the question post score on the thread
post.thread.score = post.score
post.thread.save()
post.thread.update_summary_html()
- post.thread.invalidate_cached_data()
-
if cancel:
return None
diff --git a/askbot/models/question.py b/askbot/models/question.py
index 8c61385c..79775afc 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -438,17 +438,7 @@ class Thread(models.Model):
)
def invalidate_cached_thread_content_fragment(self):
- """we do not precache the fragment here, as re-generating
- the the fragment takes a lot of data, so we just
- invalidate the cached item
-
- Note: the cache key generation code is copy-pasted
- from coffin/template/defaulttags.py no way around
- that unfortunately
- """
- args_md5 = md5_constructor(str(self.id))
- key = 'template.cache.%s.%s' % ('thread-content-html', args_md5.hexdigest())
- cache.cache.delete(key)
+ cache.cache.delete(self.SUMMARY_CACHE_KEY_TPL % self.id)
def get_post_data_cache_key(self, sort_method = None):
return 'thread-data-%s-%s' % (self.id, sort_method)
@@ -463,7 +453,8 @@ class Thread(models.Model):
def invalidate_cached_data(self):
self.invalidate_cached_post_data()
- self.invalidate_cached_thread_content_fragment()
+ #self.invalidate_cached_thread_content_fragment()
+ self.update_summary_html()
def get_cached_post_data(self, sort_method = None):
"""returns cached post data, as calculated by
@@ -770,7 +761,10 @@ class Thread(models.Model):
# use `<<<` and `>>>` because they cannot be confused with user input
# - if user accidentialy types <<<tag-name>>> into question title or body,
# then in html it'll become escaped like this: &lt;&lt;&lt;tag-name&gt;&gt;&gt;
- regex = re.compile(r'<<<(%s)>>>' % const.TAG_REGEX_BARE)
+ regex = re.compile(
+ r'<<<(%s)>>>' % const.TAG_REGEX_BARE,
+ re.UNICODE
+ )
while True:
match = regex.search(html)