]> git.openstreetmap.org Git - osqa.git/blob - forum/actions/page.py
Make RequestHolder thread-safe
[osqa.git] / forum / actions / page.py
1 from django.utils.translation import ugettext as _
2 from forum.models.action import ActionProxy
3 from forum.models import Page
4
5 class NewPageAction(ActionProxy):
6     verb = _("created")
7
8     def process_data(self, **data):
9         title = data.pop('title')
10         body = data.pop('content')
11
12         page = Page(author=self.user, title=title, body=body, extra=data)
13         page.save()
14         self.node = page
15
16     def describe(self, viewer=None):
17         return _("%(user)s created a new page titled %(page)s") % {
18         'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)),
19         'page': self.hyperlink(self.node.get_absolute_url(), self.node.title)
20         }
21
22 class EditPageAction(ActionProxy):
23     verb = _("edited")
24
25     def process_data(self, **data):
26         title = data.pop('title')
27         body = data.pop('content')
28
29         if (title != self.node.title) or (body != self.node.body):
30             self.node.create_revision(self.user, title=title, body=body)
31
32         self.node.extra = data
33         self.node.save()
34
35     def describe(self, viewer=None):
36         return _("%(user)s edited the page titled %(page)s") % {
37         'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)),
38         'page': self.hyperlink(self.node.get_absolute_url(), self.node.title)
39         }
40
41 class PublishAction(ActionProxy):
42     verb = _("published")
43
44     def process_action(self):
45         self.node.marked = True
46         self.node.nstate.published = self
47         self.node.save()
48
49     def cancel_action(self):
50         self.node.marked = False
51         self.node.nstate.published = None
52         self.node.save()
53
54     def describe(self, viewer=None):
55         return _("%(user)s published a new page titled %(page)s") % {
56         'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)),
57         'page': self.hyperlink(self.node.get_absolute_url(), self.node.title)
58         }