|
5 | 5 | from django.utils.translation import pgettext |
6 | 6 | from django.views import View |
7 | 7 |
|
8 | | -from ...categories.enums import CategoryTree |
9 | 8 | from ...posts.models import Post |
10 | 9 | from ...readtracker.readtime import get_default_read_time |
11 | | -from ..hooks import get_redirect_to_post_response_hook |
12 | | -from ..models import Thread |
13 | | -from .generic import PrivateThreadView, ThreadView |
| 10 | +from ...threads.models import Thread |
| 11 | +from ..redirect import redirect_to_post |
14 | 12 |
|
15 | 13 |
|
16 | 14 | class RedirectView(View): |
@@ -80,49 +78,30 @@ class UnapprovedPostRedirectView(RedirectView): |
80 | 78 | def raise_permission_denied_error(self): |
81 | 79 | raise PermissionDenied( |
82 | 80 | pgettext( |
83 | | - "unaproved post redirect", |
| 81 | + "unapproved post redirect", |
84 | 82 | "You must be a moderator to view unapproved posts.", |
85 | 83 | ) |
86 | 84 | ) |
87 | 85 |
|
88 | 86 |
|
89 | | -def _get_redirect_to_post_response_action( |
90 | | - request: HttpRequest, post: Post |
91 | | -) -> HttpResponse: |
92 | | - if post.category.tree_id == CategoryTree.THREADS: |
93 | | - return thread_post_redirect(request, post.thread_id, "t", post=post.id) |
94 | | - |
95 | | - if post.category.tree_id == CategoryTree.PRIVATE_THREADS: |
96 | | - return private_thread_post_redirect(request, post.thread_id, "t", post=post.id) |
97 | | - |
98 | | - raise Http404() |
99 | | - |
100 | | - |
101 | | -class GetPostRedirectView(RedirectView): |
| 87 | +class PostRedirectView(RedirectView): |
102 | 88 | def get_post( |
103 | 89 | self, request: HttpRequest, thread: Thread, queryset: QuerySet, kwargs: dict |
104 | 90 | ) -> Post | None: |
105 | 91 | return get_object_or_404(queryset, id=kwargs["post"]) |
106 | 92 |
|
107 | 93 |
|
108 | | -class PostRedirectView(View): |
| 94 | +class PostView(View): |
109 | 95 | def get(self, request: HttpRequest, id: int) -> HttpResponse: |
110 | 96 | return self.real_dispatch(request, id) |
111 | 97 |
|
112 | 98 | def post(self, request: HttpRequest, id: int) -> HttpResponse: |
113 | 99 | return self.real_dispatch(request, id) |
114 | 100 |
|
115 | 101 | def real_dispatch(self, request: HttpRequest, id: int) -> HttpResponse: |
116 | | - queryset = Post.objects.select_related("category") |
117 | | - post = get_object_or_404(queryset, id=id) |
118 | | - return get_redirect_to_post_response(request, post) |
119 | | - |
120 | | - |
121 | | -def get_redirect_to_post_response(request: HttpRequest, post: Post) -> HttpResponse: |
122 | | - try: |
123 | | - return get_redirect_to_post_response_hook( |
124 | | - _get_redirect_to_post_response_action, request, post |
125 | | - ) |
126 | | - except PermissionDenied: |
127 | | - raise Http404() |
| 102 | + try: |
| 103 | + post = Post.objects.get(id=id) |
| 104 | + except Post.DoesNotExist as error: |
| 105 | + raise Http404("Post not found") from error |
128 | 106 |
|
| 107 | + return redirect_to_post(request, post) |
0 commit comments