views.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from django.contrib.auth import get_user_model
  2. from django.shortcuts import get_object_or_404, redirect
  3. from misago.threads.viewmodels import (
  4. ForumThread, PrivateThread, ThreadPost, ThreadsCategory)
  5. from .models import OldIdRedirect
  6. UserModel = get_user_model()
  7. def category_redirect(request, **kwargs):
  8. category_pk = get_new_id_or_404(OldIdRedirect.CATEGORY, kwargs['forum'])
  9. category = ThreadsCategory(request, pk=category_pk)
  10. return redirect(category.get_absolute_url(), permanent=True)
  11. def thread_redirect(request, **kwargs):
  12. thread_pk = get_new_id_or_404(OldIdRedirect.THREAD, kwargs['thread'])
  13. thread = ForumThread(request, pk=thread_pk)
  14. if 'post' in kwargs:
  15. post_pk = get_new_id_or_404(OldIdRedirect.POST, kwargs['post'])
  16. post = ThreadPost(request, thread, pk=post_pk)
  17. return redirect(post.get_absolute_url(), permanent=True)
  18. return redirect(thread.get_absolute_url(), permanent=True)
  19. def private_thread_redirect(request, **kwargs):
  20. thread_pk = get_new_id_or_404(OldIdRedirect.THREAD, kwargs['thread'])
  21. thread = PrivateThread(request, pk=thread_pk)
  22. if 'post' in kwargs:
  23. post_pk = get_new_id_or_404(OldIdRedirect.POST, kwargs['post'])
  24. post = ThreadPost(request, thread, pk=post_pk)
  25. return redirect(post.get_absolute_url(), permanent=True)
  26. return redirect(thread.get_absolute_url(), permanent=True)
  27. def user_redirect(request, **kwargs):
  28. user_pk = get_new_id_or_404(OldIdRedirect.USER, kwargs['user'])
  29. user = get_object_or_404(UserModel, pk=user_pk)
  30. return redirect(user.get_absolute_url(), permanent=True)
  31. def get_new_id_or_404(model, old_id):
  32. return get_object_or_404(OldIdRedirect, model=model, old_id=old_id).new_id