##// END OF EJS Templates
Fixed posting from the tag page
neko259 -
r597:05786152 default
parent child Browse files
Show More
@@ -1,51 +1,65 b''
1 1 from django.shortcuts import get_object_or_404
2 2 from boards.models import Tag, Post
3 3 from boards.views.all_threads import AllThreadsView, DEFAULT_PAGE
4 4 from boards.views.mixins import DispatcherMixin, RedirectNextMixin
5 from boards.forms import ThreadForm, PlainErrorList
5 6
6 7 __author__ = 'neko259'
7 8
8 9
9 10 class TagView(AllThreadsView, DispatcherMixin, RedirectNextMixin):
10 11
11 12 tag_name = None
12 13
13 14 def get_threads(self):
14 15 tag = get_object_or_404(Tag, name=self.tag_name)
15 16
16 17 return tag.threads.filter(archived=False).order_by('-bump_time')
17 18
18 19 def get_context_data(self, **kwargs):
19 20 context = super(TagView, self).get_context_data(**kwargs)
20 21
21 22 tag = get_object_or_404(Tag, name=self.tag_name)
22 23 context['tag'] = tag
23 24
24 25 return context
25 26
26 def get(self, request, tag_name, page=DEFAULT_PAGE):
27 def get(self, request, tag_name, page=DEFAULT_PAGE, form=None):
27 28 self.tag_name = tag_name
28 29
29 30 dispatch_result = self.dispatch_method(request)
30 31 if dispatch_result:
31 32 return dispatch_result
32 33 else:
33 return super(TagView, self).get(request, page)
34 return super(TagView, self).get(request, page, form)
35
36 def post(self, request, tag_name, page=DEFAULT_PAGE):
37 form = ThreadForm(request.POST, request.FILES,
38 error_class=PlainErrorList)
39 form.session = request.session
40
41 if form.is_valid():
42 return self._new_post(request, form)
43 if form.need_to_ban:
44 # Ban user because he is suspected to be a bot
45 self._ban_current_user(request)
46
47 return self.get(request, tag_name, page, form)
34 48
35 49 def subscribe(self, request):
36 50 user = self._get_user(request)
37 51 tag = get_object_or_404(Tag, name=self.tag_name)
38 52
39 53 if not tag in user.fav_tags.all():
40 54 user.add_tag(tag)
41 55
42 56 return self.redirect_to_next(request)
43 57
44 58 def unsubscribe(self, request):
45 59 user = self._get_user(request)
46 60 tag = get_object_or_404(Tag, name=self.tag_name)
47 61
48 62 if tag in user.fav_tags.all():
49 63 user.remove_tag(tag)
50 64
51 65 return self.redirect_to_next(request)
General Comments 0
You need to be logged in to leave comments. Login now