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