delete_post.py
28 lines
| 953 B
| text/x-python
|
PythonLexer
neko259
|
r552 | from django.shortcuts import redirect, get_object_or_404 | ||
from django.db import transaction | ||||
neko259
|
r730 | from boards.abstracts.settingsmanager import PERMISSION_MODERATE,\ | ||
get_settings_manager | ||||
neko259
|
r552 | from boards.views.base import BaseBoardView | ||
neko259
|
r563 | from boards.views.mixins import RedirectNextMixin | ||
neko259
|
r552 | from boards.models import Post | ||
neko259
|
r561 | |||
neko259
|
r552 | class DeletePostView(BaseBoardView, RedirectNextMixin): | ||
@transaction.atomic | ||||
def get(self, request, post_id): | ||||
post = get_object_or_404(Post, id=post_id) | ||||
opening_post = post.is_opening() | ||||
neko259
|
r730 | settings_manager = get_settings_manager(request) | ||
neko259
|
r728 | if settings_manager.has_permission(PERMISSION_MODERATE): | ||
neko259
|
r552 | # TODO Show confirmation page before deletion | ||
Post.objects.delete_post(post) | ||||
if not opening_post: | ||||
thread = post.thread_new | ||||
return redirect('thread', post_id=thread.get_opening_post().id) | ||||
else: | ||||
return self.redirect_to_next(request) | ||||