views.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from django.core.urlresolvers import NoReverseMatch
  2. from django.shortcuts import redirect
  3. from django.utils.translation import ugettext as _
  4. from misago.apps.errors import error404
  5. from misago.apps.profiles.decorators import user_view
  6. from misago.decorators import block_guest, check_csrf
  7. from misago.messages import Message
  8. from misago.models import User
  9. from misago.utils.translation import ugettext_lazy
  10. def fallback(request):
  11. try:
  12. return redirect(request.POST.get('fallback', '/'))
  13. except NoReverseMatch:
  14. return redirect('index')
  15. @block_guest
  16. @check_csrf
  17. @user_view
  18. def follow(request, user):
  19. if request.user.pk == user.pk:
  20. return error404(request)
  21. if not request.user.is_following(user):
  22. request.messages.set_flash(Message(_("You are now following %(username)s") % {'username': user.username}), 'success')
  23. request.user.follows.add(user)
  24. request.user.following += 1
  25. request.user.save(force_update=True)
  26. user.followers += 1
  27. if not user.is_ignoring(request.user):
  28. alert = user.alert(ugettext_lazy("%(username)s is now following you").message)
  29. alert.profile('username', request.user)
  30. alert.save_all()
  31. else:
  32. user.save(force_update=True)
  33. return fallback(request)
  34. @block_guest
  35. @check_csrf
  36. @user_view
  37. def unfollow(request, user):
  38. if request.user.pk == user.pk:
  39. return error404(request)
  40. if request.user.is_following(user):
  41. request.messages.set_flash(Message(_("You have stopped following %(username)s") % {'username': user.username}))
  42. request.user.follows.remove(user)
  43. request.user.following -= 1
  44. request.user.save(force_update=True)
  45. user.followers -= 1
  46. user.save(force_update=True)
  47. return fallback(request)
  48. @block_guest
  49. @check_csrf
  50. @user_view
  51. def ignore(request, user):
  52. if request.user.pk == user.pk:
  53. return error404(request)
  54. if not request.user.is_ignoring(user):
  55. request.messages.set_flash(Message(_("You are now ignoring %(username)s") % {'username': user.username}), 'success')
  56. request.user.ignores.add(user)
  57. return fallback(request)
  58. @block_guest
  59. @check_csrf
  60. @user_view
  61. def unignore(request, user):
  62. if request.user.pk == user.pk:
  63. return error404(request)
  64. if request.user.is_ignoring(user):
  65. request.messages.set_flash(Message(_("You have stopped ignoring %(username)s") % {'username': user.username}))
  66. request.user.ignores.remove(user)
  67. return fallback(request)