]> git.openstreetmap.org Git - osqa.git/blob - forum/models/comment.py
node absolute parent, tweaks in the activity log
[osqa.git] / forum / models / comment.py
1 from base import *\r
2 import re\r
3 \r
4 class Comment(Node):\r
5     class Meta(Node.Meta):\r
6         ordering = ('-added_at',)\r
7         proxy = True\r
8 \r
9     def _update_parent_comment_count(self, diff):\r
10         parent = self.parent\r
11         parent.comment_count = parent.comment_count + diff\r
12         parent.save()\r
13 \r
14     @property\r
15     def comment(self):\r
16         return self.body\r
17 \r
18     @property\r
19     def content_object(self):\r
20         return self.parent.leaf\r
21 \r
22     def save(self, *args, **kwargs):\r
23         super(Comment,self).save(*args, **kwargs)\r
24 \r
25         if self._is_new:\r
26             self._update_parent_comment_count(1)\r
27 \r
28         try:\r
29             ping_google()\r
30         except Exception:\r
31             logging.debug('problem pinging google did you register you sitemap with google?')\r
32 \r
33     def mark_deleted(self, user):\r
34         if super(Comment, self).mark_deleted(user):\r
35             self._update_parent_comment_count(-1)\r
36 \r
37     def unmark_deleted(self):\r
38         if super(Comment, self).unmark_deleted():\r
39             self._update_parent_comment_count(1)\r
40 \r
41     def is_reply_to(self, user):\r
42         inreply = re.search('@\w+', self.body)\r
43         if inreply is not None:\r
44             return user.username.startswith(inreply.group(0))\r
45 \r
46         return False\r
47 \r
48     def get_absolute_url(self):\r
49         return self.absolute_parent.get_absolute_url() + "#%d" % self.id\r
50 \r
51     def __unicode__(self):\r
52         return self.body\r
53 \r