Mercurial > hg > bts-webui
diff 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 |
parents | 2aa6bf2f3f2e |
children | 8c9dddbd97b0 |
line wrap: on
line diff
--- a/bts_webui/amancay/ajax.py +++ b/bts_webui/amancay/ajax.py @@ -2,7 +2,7 @@ from django.http import HttpResponse from amancay.bugs import handle_email -def add_package(request): +def package_add(request): """ Add a package to our session watched list. """ @@ -24,7 +24,7 @@ request.session['packages'].append(package_name) return HttpResponse(status=200) -def remove_package(request): +def package_remove(request): """ Remove a package from the watched list. """ @@ -46,6 +46,50 @@ else: return HttpResponse(status=500) +def bug_add(request): + """ + Add a bug to the session watched bugs. + """ + user = request.user + bug_number = request.GET['id'] + + if user.is_authenticated(): + bugs = user.bug_set.filter(number=bug_number)[:1] + if not bugs: + user.bug_set.create(number=bug_number) + return HttpResponse(status=200) + else: + return HttpResponse(status=500) + else: + bugs = request.session.get('bugs', []) + if bug_number in bugs: + return HttpResponse(status=500) + else: + request.session['bugs'].append(bug_number) + return HttpResponse(status=200) + +def bug_remove(request): + """ + Remove a bug from the watched list. + """ + user = request.user + bug_number = request.GET['id'] + + if user.is_authenticated(): + bugs = user.bug_set.filter(number=bug_number)[:1] + if bugs: + bugs[0].delete() + return HttpResponse(status=200) + else: + return HttpResponse(status=500) + else: + bugs = request.session.get('bugs', []) + if bug_number in bugs: + request.session['bugs'].remove(bug_number) + return HttpResponse(status=200) + else: + return HttpResponse(status=500) + def _bug_toggle_subscribe(request, subscribe=True): """ Toggle subscription to a specific bug report