##// END OF EJS Templates
Moved delete view to class-based views
neko259 -
r552:39f0b88d 1.7-dev
parent child Browse files
Show More
@@ -0,0 +1,25 b''
1 from django.shortcuts import redirect, get_object_or_404
2 from django.db import transaction
3
4 from boards.views.base import BaseBoardView
5 from boards.views.redirect_next_mixin import RedirectNextMixin
6 from boards.models import Post
7
8 class DeletePostView(BaseBoardView, RedirectNextMixin):
9
10 @transaction.atomic
11 def get(self, request, post_id):
12 user = self._get_user(request)
13 post = get_object_or_404(Post, id=post_id)
14
15 opening_post = post.is_opening()
16
17 if user.is_moderator():
18 # TODO Show confirmation page before deletion
19 Post.objects.delete_post(post)
20
21 if not opening_post:
22 thread = post.thread_new
23 return redirect('thread', post_id=thread.get_opening_post().id)
24 else:
25 return self.redirect_to_next(request)
@@ -0,0 +1,17 b''
1 from django.shortcuts import redirect
2 from django.http import HttpResponseRedirect
3
4 class RedirectNextMixin:
5
6 def redirect_to_next(self, request):
7 """
8 If a 'next' parameter was specified, redirect to the next page. This
9 is used when the user is required to return to some page after the
10 current view has finished its work.
11 """
12
13 if 'next' in request.GET:
14 next_page = request.GET['next']
15 return HttpResponseRedirect(next_page)
16 else:
17 return redirect('index')
@@ -97,10 +97,8 b' class PostManager(models.Manager):'
97
97
98 thread = post.thread_new
98 thread = post.thread_new
99
99
100 if thread.get_opening_post() == self:
100 if post.is_opening():
101 thread.replies.delete()
101 thread.delete_with_posts()
102
103 thread.delete()
104 else:
102 else:
105 thread.last_edit_time = timezone.now()
103 thread.last_edit_time = timezone.now()
106 thread.save()
104 thread.save()
@@ -384,7 +382,7 b' class Thread(models.Model):'
384 return self.get_replies()[0]
382 return self.get_replies()[0]
385
383
386 def __unicode__(self):
384 def __unicode__(self):
387 return str(self.get_replies()[0].id)
385 return str(self.id)
388
386
389 def get_pub_time(self):
387 def get_pub_time(self):
390 """
388 """
@@ -38,7 +38,7 b''
38 {% if thread.archived %}
38 {% if thread.archived %}
39 — [{{ thread.bump_time }}]
39 — [{{ thread.bump_time }}]
40 {% endif %}
40 {% endif %}
41 {% if not truncated %}
41 {% if not truncated and not thread.archived%}
42 [<a href="#" onclick="javascript:addQuickReply('{{ post.id }}')
42 [<a href="#" onclick="javascript:addQuickReply('{{ post.id }}')
43 ; return false;">&gt;&gt;</a>]
43 ; return false;">&gt;&gt;</a>]
44 {% endif %}
44 {% endif %}
@@ -4,6 +4,7 b' from boards.rss import AllThreadsFeed, T'
4 from boards.views import api, tag_threads, all_threads, archived_threads, \
4 from boards.views import api, tag_threads, all_threads, archived_threads, \
5 login, settings, all_tags
5 login, settings, all_tags
6 from boards.views.authors import AuthorsView
6 from boards.views.authors import AuthorsView
7 from boards.views.delete_post import DeletePostView
7
8
8 js_info_dict = {
9 js_info_dict = {
9 'packages': ('boards',),
10 'packages': ('boards',),
@@ -49,7 +50,8 b" urlpatterns = patterns('',"
49 url(r'^captcha/', include('captcha.urls')),
50 url(r'^captcha/', include('captcha.urls')),
50 url(r'^jump/(?P<post_id>\w+)/$', views.jump_to_post, name='jumper'),
51 url(r'^jump/(?P<post_id>\w+)/$', views.jump_to_post, name='jumper'),
51 url(r'^authors/$', AuthorsView.as_view(), name='authors'),
52 url(r'^authors/$', AuthorsView.as_view(), name='authors'),
52 url(r'^delete/(?P<post_id>\w+)/$', views.delete, name='delete'),
53 url(r'^delete/(?P<post_id>\w+)/$', DeletePostView.as_view(),
54 name='delete'),
53 url(r'^ban/(?P<post_id>\w+)/$', views.ban, name='ban'),
55 url(r'^ban/(?P<post_id>\w+)/$', views.ban, name='ban'),
54
56
55 url(r'^banned/$', views.banned.BannedView.as_view(), name='banned'),
57 url(r'^banned/$', views.banned.BannedView.as_view(), name='banned'),
@@ -3,6 +3,7 b' from django.shortcuts import render, red'
3
3
4 from boards.views.base import BaseBoardView, PARAMETER_FORM
4 from boards.views.base import BaseBoardView, PARAMETER_FORM
5 from boards.forms import SettingsForm, ModeratorSettingsForm, PlainErrorList
5 from boards.forms import SettingsForm, ModeratorSettingsForm, PlainErrorList
6 from boards.views import SETTING_MODERATE
6
7
7 class SettingsView(BaseBoardView):
8 class SettingsView(BaseBoardView):
8
9
General Comments 0
You need to be logged in to leave comments. Login now