##// 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 from django.shortcuts import get_object_or_404
1 from django.shortcuts import get_object_or_404
2 from boards.models import Tag, Post
2 from boards.models import Tag, Post
3 from boards.views.all_threads import AllThreadsView, DEFAULT_PAGE
3 from boards.views.all_threads import AllThreadsView, DEFAULT_PAGE
4 from boards.views.mixins import DispatcherMixin, RedirectNextMixin
4 from boards.views.mixins import DispatcherMixin, RedirectNextMixin
5 from boards.forms import ThreadForm, PlainErrorList
5
6
6 __author__ = 'neko259'
7 __author__ = 'neko259'
7
8
8
9
9 class TagView(AllThreadsView, DispatcherMixin, RedirectNextMixin):
10 class TagView(AllThreadsView, DispatcherMixin, RedirectNextMixin):
10
11
11 tag_name = None
12 tag_name = None
12
13
13 def get_threads(self):
14 def get_threads(self):
14 tag = get_object_or_404(Tag, name=self.tag_name)
15 tag = get_object_or_404(Tag, name=self.tag_name)
15
16
16 return tag.threads.filter(archived=False).order_by('-bump_time')
17 return tag.threads.filter(archived=False).order_by('-bump_time')
17
18
18 def get_context_data(self, **kwargs):
19 def get_context_data(self, **kwargs):
19 context = super(TagView, self).get_context_data(**kwargs)
20 context = super(TagView, self).get_context_data(**kwargs)
20
21
21 tag = get_object_or_404(Tag, name=self.tag_name)
22 tag = get_object_or_404(Tag, name=self.tag_name)
22 context['tag'] = tag
23 context['tag'] = tag
23
24
24 return context
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 self.tag_name = tag_name
28 self.tag_name = tag_name
28
29
29 dispatch_result = self.dispatch_method(request)
30 dispatch_result = self.dispatch_method(request)
30 if dispatch_result:
31 if dispatch_result:
31 return dispatch_result
32 return dispatch_result
32 else:
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 def subscribe(self, request):
49 def subscribe(self, request):
36 user = self._get_user(request)
50 user = self._get_user(request)
37 tag = get_object_or_404(Tag, name=self.tag_name)
51 tag = get_object_or_404(Tag, name=self.tag_name)
38
52
39 if not tag in user.fav_tags.all():
53 if not tag in user.fav_tags.all():
40 user.add_tag(tag)
54 user.add_tag(tag)
41
55
42 return self.redirect_to_next(request)
56 return self.redirect_to_next(request)
43
57
44 def unsubscribe(self, request):
58 def unsubscribe(self, request):
45 user = self._get_user(request)
59 user = self._get_user(request)
46 tag = get_object_or_404(Tag, name=self.tag_name)
60 tag = get_object_or_404(Tag, name=self.tag_name)
47
61
48 if tag in user.fav_tags.all():
62 if tag in user.fav_tags.all():
49 user.remove_tag(tag)
63 user.remove_tag(tag)
50
64
51 return self.redirect_to_next(request)
65 return self.redirect_to_next(request)
General Comments 0
You need to be logged in to leave comments. Login now