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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
from django.shortcuts import render_to_response, redirect
from django.http import Http404
from django.contrib.auth.decorators import login_required
from django.core.context_processors import csrf
from django.views.decorators.csrf import csrf_protect
from pytask.profile.forms import EditProfileForm
from pytask.profile.utils import get_notification
@login_required
def view_profile(request):
""" Display the profile information.
"""
user = request.user
profile = user.get_profile()
context = {"user": user,
"profile": profile,
}
return render_to_response("profile/view.html", context)
@login_required
def edit_profile(request):
""" Make only a few fields editable.
"""
user = request.user
profile = user.get_profile()
context = {"user": user,
"profile": profile,
}
context.update(csrf(request))
if request.method == "POST":
form = EditProfileForm(request.POST, instance=profile)
if form.is_valid():
form.save()
return redirect("/accounts/profile/view")
else:
context.update({"form":form})
return render_to_response("profile/edit.html", context)
else:
form = EditProfileForm(instance=profile)
context.update({"form":form})
return render_to_response("profile/edit.html", context)
@login_required
def browse_notifications(request):
""" get the list of notifications that are not deleted and display in
datetime order."""
user = request.user
active_notifications = user.notification_sent_to.filter(is_deleted=False).order_by('sent_date').reverse()
context = {'user':user,
'notifications':active_notifications,
}
print active_notifications
return render_to_response('profile/browse_notifications.html', context)
@login_required
def view_notification(request, nid):
""" get the notification depending on nid.
Display it.
"""
user = request.user
newest, newer, notification, older, oldest = get_notification(nid, user)
if not notification:
raise Http404
notification.is_read = True
notification.save()
context = {'user':user,
'notification':notification,
'newest':newest,
'newer':newer,
'older':older,
'oldest':oldest,
}
return render_to_response('profile/view_notification.html', context)
@login_required
def delete_notification(request, nid):
""" check if the user owns the notification and delete it.
"""
user = request.user
newest, newer, notification, older, oldest = get_notification(nid, user)
if not notification:
raise Http404
notification.is_deleted = True
notification.save()
context = {'user':user,
'notification':notification,
'newest':newest,
'newer':newer,
'older':older,
'oldest':oldest,
}
if older:
redirect_url = "/profile/notf/view/nid=%s"%older.uniq_key
else:
redirect_url = "/profile/notf/browse"
return redirect(redirect_url)
@login_required
def unread_notification(request, nid):
""" check if the user owns the notification and delete it.
"""
user = request.user
newest, newer, notification, older, oldest = get_notification(nid, user)
if not notification:
raise Http404
notification.is_read = False
notification.save()
context = {'user':user,
'notification':notification,
'newest':newest,
'newer':newer,
'older':older,
'oldest':oldest,
}
if older:
redirect_url = "/profile/notf/view/nid=%s"%older.uniq_key
else:
redirect_url = "/profile/notf/browse"
return redirect(redirect_url)
|