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