post.py 1005 B

123456789101112131415161718192021222324252627282930313233
  1. from django.db.transaction import atomic
  2. from django.http import JsonResponse
  3. from misago.threads.views.generic.base import ViewBase
  4. __all__ = ['QuotePostView']
  5. class PostView(ViewBase):
  6. is_atomic = True
  7. def dispatch(self, request, *args, **kwargs):
  8. if self.is_atomic:
  9. with atomic():
  10. post = self.get_post(request, True, **kwargs)
  11. return self.real_dispatch(request, post)
  12. else:
  13. post = self.get_post(request, **kwargs)
  14. return self.real_dispatch(request, post)
  15. def real_dispatch(self, request, post):
  16. raise NotImplementedError(
  17. "post views have to override real_dispatch method")
  18. class QuotePostView(PostView):
  19. def real_dispatch(self, request, post):
  20. quote_tpl = u'[quote="%s, post:%s, topic:%s"]\n%s\n[/quote]'
  21. formats = (post.poster_name, post.pk, post.thread_id, post.original)
  22. return JsonResponse({
  23. 'quote': quote_tpl % formats
  24. })