12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- from django.shortcuts import render
- from django.urls import reverse
- from django.views import View
- from ..viewmodels import ForumThread, PrivateThread, ThreadPosts
- class ThreadBase(View):
- thread = None
- posts = ThreadPosts
- template_name = None
- def get(self, request, pk, slug, page=0):
- thread = self.get_thread(request, pk, slug)
- posts = self.get_posts(request, thread, page)
- frontend_context = self.get_frontend_context(request, thread, posts)
- request.frontend_context.update(frontend_context)
- template_context = self.get_template_context(request, thread, posts)
- return render(request, self.template_name, template_context)
- def get_thread(self, request, pk, slug):
- return self.thread(
- request,
- pk,
- slug,
- path_aware=True,
- read_aware=True,
- subscription_aware=True,
- poll_votes_aware=True,
- )
- def get_posts(self, request, thread, page):
- return self.posts(request, thread, page)
- def get_default_frontend_context(self):
- return {}
- def get_frontend_context(self, request, thread, posts):
- context = self.get_default_frontend_context()
- context.update(
- {
- "THREAD": thread.get_frontend_context(),
- "POSTS": posts.get_frontend_context(),
- }
- )
- return context
- def get_template_context(self, request, thread, posts):
- context = {
- "url_name": ":".join(
- request.resolver_match.namespaces + [request.resolver_match.url_name]
- )
- }
- context.update(thread.get_template_context())
- context.update(posts.get_template_context())
- return context
- class ThreadView(ThreadBase):
- thread = ForumThread
- template_name = "misago/thread/thread.html"
- def get_default_frontend_context(self):
- return {"THREADS_API": reverse("misago:api:thread-list")}
- class PrivateThreadView(ThreadBase):
- thread = PrivateThread
- template_name = "misago/thread/private_thread.html"
|