]> git.openstreetmap.org Git - osqa.git/blob - forum/models/comment.py
15049b2d211d733841b3160d19600d4042a84e6e
[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 headline(self):\r
20         return self.absolute_parent.headline\r
21 \r
22     @property\r
23     def content_object(self):\r
24         return self.parent.leaf\r
25 \r
26     def save(self, *args, **kwargs):\r
27         super(Comment,self).save(*args, **kwargs)\r
28 \r
29         if self._is_new:\r
30             self._update_parent_comment_count(1)\r
31 \r
32         try:\r
33             ping_google()\r
34         except Exception:\r
35             logging.debug('problem pinging google did you register you sitemap with google?')\r
36 \r
37     def mark_deleted(self, user):\r
38         if super(Comment, self).mark_deleted(user):\r
39             self._update_parent_comment_count(-1)\r
40 \r
41     def unmark_deleted(self):\r
42         if super(Comment, self).unmark_deleted():\r
43             self._update_parent_comment_count(1)\r
44 \r
45     def is_reply_to(self, user):\r
46         inreply = re.search('@\w+', self.body)\r
47         if inreply is not None:\r
48             return user.username.startswith(inreply.group(0))\r
49 \r
50         return False\r
51 \r
52     def get_absolute_url(self):\r
53         return self.absolute_parent.get_absolute_url() + "#%d" % self.id\r
54 \r
55     def __unicode__(self):\r
56         return self.body\r
57 \r