views.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. def category_redirect(request, **kwargs):
  7. category_pk = get_new_id_or_404(OldIdRedirect.CATEGORY, kwargs['forum'])
  8. category = ThreadsCategory(request, pk=category_pk)
  9. return redirect(category.get_absolute_url(), permanent=True)
  10. def thread_redirect(request, **kwargs):
  11. thread_pk = get_new_id_or_404(OldIdRedirect.THREAD, kwargs['thread'])
  12. thread = ForumThread(request, pk=thread_pk)
  13. if 'post' in kwargs:
  14. post_pk = get_new_id_or_404(OldIdRedirect.POST, kwargs['post'])
  15. post = ThreadPost(request, thread, pk=post_pk)
  16. return redirect(post.get_absolute_url(), permanent=True)
  17. return redirect(thread.get_absolute_url(), permanent=True)
  18. def private_thread_redirect(request, **kwargs):
  19. thread_pk = get_new_id_or_404(OldIdRedirect.THREAD, kwargs['thread'])
  20. thread = PrivateThread(request, pk=thread_pk)
  21. if 'post' in kwargs:
  22. post_pk = get_new_id_or_404(OldIdRedirect.POST, kwargs['post'])
  23. post = ThreadPost(request, thread, pk=post_pk)
  24. return redirect(post.get_absolute_url(), permanent=True)
  25. return redirect(thread.get_absolute_url(), permanent=True)
  26. def user_redirect(request, **kwargs):
  27. user_pk = get_new_id_or_404(OldIdRedirect.USER, kwargs['user'])
  28. UserModel = get_user_model()
  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