annotate bts_webui/amancay/ajax.py @ 134:c6bf9f23af62 draft

starring: implement bug add/remove works exactly like package add/remove, needs polishing to reuse javascript functions that packages are also using.
author diegoe-guest
date Mon, 10 Aug 2009 23:40:27 +0000 (2009-08-10)
parents 2aa6bf2f3f2e
children 8c9dddbd97b0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
127
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
1 # vim: set sw=4 ts=4 sts=4 noet:
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
2 from django.http import HttpResponse
131
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
3 from amancay.bugs import handle_email
127
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
4
134
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
5 def package_add(request):
127
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
6 """
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
7 Add a package to our session watched list.
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
8 """
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
9 user = request.user
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
10 package_name = request.GET['id']
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
11
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
12 if user.is_authenticated():
131
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
13 packages = user.package_set.filter(package_name=package_name)[:1]
127
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
14 if not packages:
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
15 user.package_set.create(package_name=package_name)
130
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
16 return HttpResponse(status=200)
131
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
17 else:
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
18 return HttpResponse(status=500)
127
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
19 else:
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
20 packages = request.session.get('packages', [])
130
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
21 if package_name in packages:
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
22 return HttpResponse(status=500)
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
23 else:
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
24 request.session['packages'].append(package_name)
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
25 return HttpResponse(status=200)
127
d26d941537ba starring: implement the first version
diegoe-guest
parents:
diff changeset
26
134
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
27 def package_remove(request):
130
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
28 """
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
29 Remove a package from the watched list.
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
30 """
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
31 user = request.user
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
32 package_name = request.GET['id']
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
33
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
34 if user.is_authenticated():
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
35 packages = user.package_set.filter(package_name=package_name)[:1]
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
36 if packages:
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
37 packages[0].delete()
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
38 return HttpResponse(status=200)
131
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
39 else:
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
40 return HttpResponse(status=500)
130
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
41 else:
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
42 packages = request.session.get('packages', [])
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
43 if package_name in packages:
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
44 request.session['packages'].remove(package_name)
131
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
45 return HttpResponse(status=200)
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
46 else:
130
8ea1bce228b5 starring: implement package removal
diegoe-guest
parents: 127
diff changeset
47 return HttpResponse(status=500)
131
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
48
134
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
49 def bug_add(request):
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
50 """
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
51 Add a bug to the session watched bugs.
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
52 """
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
53 user = request.user
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
54 bug_number = request.GET['id']
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
55
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
56 if user.is_authenticated():
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
57 bugs = user.bug_set.filter(number=bug_number)[:1]
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
58 if not bugs:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
59 user.bug_set.create(number=bug_number)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
60 return HttpResponse(status=200)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
61 else:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
62 return HttpResponse(status=500)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
63 else:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
64 bugs = request.session.get('bugs', [])
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
65 if bug_number in bugs:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
66 return HttpResponse(status=500)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
67 else:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
68 request.session['bugs'].append(bug_number)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
69 return HttpResponse(status=200)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
70
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
71 def bug_remove(request):
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
72 """
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
73 Remove a bug from the watched list.
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
74 """
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
75 user = request.user
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
76 bug_number = request.GET['id']
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
77
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
78 if user.is_authenticated():
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
79 bugs = user.bug_set.filter(number=bug_number)[:1]
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
80 if bugs:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
81 bugs[0].delete()
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
82 return HttpResponse(status=200)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
83 else:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
84 return HttpResponse(status=500)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
85 else:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
86 bugs = request.session.get('bugs', [])
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
87 if bug_number in bugs:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
88 request.session['bugs'].remove(bug_number)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
89 return HttpResponse(status=200)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
90 else:
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
91 return HttpResponse(status=500)
c6bf9f23af62 starring: implement bug add/remove
diegoe-guest
parents: 131
diff changeset
92
131
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
93 def _bug_toggle_subscribe(request, subscribe=True):
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
94 """
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
95 Toggle subscription to a specific bug report
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
96 """
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
97 user = request.user
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
98 bug_number = request.GET['id']
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
99
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
100 if subscribe:
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
101 action = 'subscribe'
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
102 else:
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
103 action = 'unsubscribe'
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
104
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
105 if user.is_authenticated():
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
106 subscribe_email = request.user.email
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
107 to_address = ['%s-%s@bugs.debian.org' % (bug_number, action)]
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
108
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
109 # FIXME: this never tells us if the email left the building
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
110 handle_email(request, to_address, '', '')
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
111 return HttpResponse(status=200)
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
112 else:
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
113 return HttpResponse(status=500)
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
114
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
115 def bug_subscribe(request):
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
116 """
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
117 Subscribe to a specific bug report
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
118 """
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
119 return _bug_toggle_subscribe(request, subscribe=True)
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
120
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
121 def bug_unsubscribe(request):
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
122 """
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
123 Unsubscribe to a specific bug report
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
124 """
2aa6bf2f3f2e subscribe: implement subcribe action
diegoe-guest
parents: 130
diff changeset
125 return _bug_toggle_subscribe(request, subscribe=False)