# HG changeset patch # User eriol-guest # Date 1309916405 0 # Node ID ecc41e3928058f4b6a89879e9c530036f86a9ae0 # Parent cfcd0eb96c1e07807d273bce32c6666acab290dc Replaced tabs with spaces, using untabify, to follow PEP8 diff --git a/bts_webui/amancay/ajax.py b/bts_webui/amancay/ajax.py --- a/bts_webui/amancay/ajax.py +++ b/bts_webui/amancay/ajax.py @@ -4,203 +4,203 @@ from amancay.bugs import handle_email def _add_item(request, item_type, new_item): - """ - Add the given item to either the session or user set. - """ - item_set = '%s_set' % item_type + """ + Add the given item to either the session or user set. + """ + item_set = '%s_set' % item_type - if request.user.is_authenticated(): - item_set = getattr(request.user, item_set) - items = item_set.filter(**new_item) + if request.user.is_authenticated(): + item_set = getattr(request.user, item_set) + items = item_set.filter(**new_item) - if items: - return False - else: - item_set.create(**new_item) - return True - else: - items = request.session.get(item_set, []) - new_item = new_item.values()[0] + if items: + return False + else: + item_set.create(**new_item) + return True + else: + items = request.session.get(item_set, []) + new_item = new_item.values()[0] - if new_item in items: - return False - else: - items.append(new_item) - request.session[item_set] = items - return True + if new_item in items: + return False + else: + items.append(new_item) + request.session[item_set] = items + return True def _remove_item(request, item_type, remove_item): - """ - Remove the given item from either the session or user set. - """ - item_set = '%s_set' % item_type + """ + Remove the given item from either the session or user set. + """ + item_set = '%s_set' % item_type - if request.user.is_authenticated(): - item_set = getattr(request.user, item_set) - items = item_set.filter(**remove_item) + if request.user.is_authenticated(): + item_set = getattr(request.user, item_set) + items = item_set.filter(**remove_item) - if items: - items[0].delete() - return True - else: - return False - else: - items = request.session.get(item_set, []) - remove_value = remove_item.values()[0] + if items: + items[0].delete() + return True + else: + return False + else: + items = request.session.get(item_set, []) + remove_value = remove_item.values()[0] - if remove_value in items: - items.remove(remove_value) - request.session[item_set] = items - return True - else: - return False + if remove_value in items: + items.remove(remove_value) + request.session[item_set] = items + return True + else: + return False def _get_post_or_get(request, item): - item = request.GET.get(item, None) + item = request.GET.get(item, None) - if not item: - item = request.POST.get(item, None) + if not item: + item = request.POST.get(item, None) - return item + return item def package_add(request): - """ - Add a package to our watched list. - """ - item = _get_post_or_get(request, 'id') + """ + Add a package to our watched list. + """ + item = _get_post_or_get(request, 'id') - if _add_item(request, 'package', {'package_name': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _add_item(request, 'package', {'package_name': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def package_remove(request): - """ - Remove a package from the watched list. - """ - item = _get_post_or_get(request, 'id') + """ + Remove a package from the watched list. + """ + item = _get_post_or_get(request, 'id') - if _remove_item(request, 'package', {'package_name': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _remove_item(request, 'package', {'package_name': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def bug_add(request): - """ - Add a bug to our watched list. - """ - item = int(_get_post_or_get(request, 'id')) + """ + Add a bug to our watched list. + """ + item = int(_get_post_or_get(request, 'id')) - if _add_item(request, 'bug', {'number': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _add_item(request, 'bug', {'number': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def bug_remove(request): - """ - Remove a bug from the watched list. - """ - item = int(_get_post_or_get(request, 'id')) + """ + Remove a bug from the watched list. + """ + item = int(_get_post_or_get(request, 'id')) - if _remove_item(request, 'bug', {'number': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _remove_item(request, 'bug', {'number': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def maintainer_add(request): - """ - Add a maintainer to our watched list. - """ - item = _get_post_or_get(request, 'id') + """ + Add a maintainer to our watched list. + """ + item = _get_post_or_get(request, 'id') - if _add_item(request, 'maintaineremail', {'address': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _add_item(request, 'maintaineremail', {'address': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def maintainer_remove(request): - """ - Remove a maintainer from our watched list. - """ - item = _get_post_or_get(request, 'id') + """ + Remove a maintainer from our watched list. + """ + item = _get_post_or_get(request, 'id') - if _remove_item(request, 'maintaineremail', {'address': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _remove_item(request, 'maintaineremail', {'address': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def submitter_add(request): - """ - Add a submitter/user to our watched list. - """ - item = _get_post_or_get(request, 'id') + """ + Add a submitter/user to our watched list. + """ + item = _get_post_or_get(request, 'id') - if _add_item(request, 'submitteremail', {'address': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _add_item(request, 'submitteremail', {'address': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def submitter_remove(request): - """ - Remove a submitter/user from our watched list. - """ - item = _get_post_or_get(request, 'id') + """ + Remove a submitter/user from our watched list. + """ + item = _get_post_or_get(request, 'id') - if _remove_item(request, 'submitteremail', {'address': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _remove_item(request, 'submitteremail', {'address': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def user_add(request): - """ - Add a submitter/user to our watched list. - """ - item = _get_post_or_get(request, 'id') + """ + Add a submitter/user to our watched list. + """ + item = _get_post_or_get(request, 'id') - if _add_item(request, 'useremail', {'address': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _add_item(request, 'useremail', {'address': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def user_remove(request): - """ - Remove a submitter/user from our watched list. - """ - item = _get_post_or_get(request, 'id') + """ + Remove a submitter/user from our watched list. + """ + item = _get_post_or_get(request, 'id') - if _remove_item(request, 'useremail', {'address': item}): - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + if _remove_item(request, 'useremail', {'address': item}): + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def _bug_toggle_subscribe(request, subscribe=True): - """ - Toggle subscription to a specific bug report. - """ - bug_number = request.GET['id'] + """ + Toggle subscription to a specific bug report. + """ + bug_number = request.GET['id'] - if subscribe: - action = 'subscribe' - else: - action = 'unsubscribe' + if subscribe: + action = 'subscribe' + else: + action = 'unsubscribe' - if request.user.is_authenticated(): - to_address = ['%s-%s@bugs.debian.org' % (bug_number, action)] + if request.user.is_authenticated(): + to_address = ['%s-%s@bugs.debian.org' % (bug_number, action)] - # FIXME: this never tells us if the email left the building - handle_email(request, to_address, '', '') - return HttpResponse(status=200) - else: - return HttpResponse(status=500) + # FIXME: this never tells us if the email left the building + handle_email(request, to_address, '', '') + return HttpResponse(status=200) + else: + return HttpResponse(status=500) def bug_subscribe(request): - """ - Subscribe to a specific bug report. - """ - return _bug_toggle_subscribe(request, subscribe=True) + """ + Subscribe to a specific bug report. + """ + return _bug_toggle_subscribe(request, subscribe=True) def bug_unsubscribe(request): - """ - Unsubscribe to a specific bug report. - """ - return _bug_toggle_subscribe(request, subscribe=False) + """ + Unsubscribe to a specific bug report. + """ + return _bug_toggle_subscribe(request, subscribe=False) diff --git a/bts_webui/amancay/btsqueries.py b/bts_webui/amancay/btsqueries.py --- a/bts_webui/amancay/btsqueries.py +++ b/bts_webui/amancay/btsqueries.py @@ -2,36 +2,36 @@ import SOAPpy class BtsQueries: - """ - Abstract class implementing stubs for the required BTS queries the - different implementations should support. + """ + Abstract class implementing stubs for the required BTS queries the + different implementations should support. - """ - def get_bugs_status(self, bug_numbers): - """ - Returns an array with the status for all bug_numbers received. - """ - pass + """ + def get_bugs_status(self, bug_numbers): + """ + Returns an array with the status for all bug_numbers received. + """ + pass - def get_packages_bugs(self, packages): - """ - Returns an array of bug numbers, for all received packages. - """ - pass + def get_packages_bugs(self, packages): + """ + Returns an array of bug numbers, for all received packages. + """ + pass - def get_submitters_bugs(self, emails): - """ - Returns an array of bug numbers, for which the emails received are - submitters. - """ - pass + def get_submitters_bugs(self, emails): + """ + Returns an array of bug numbers, for which the emails received are + submitters. + """ + pass - def get_maintainers_bugs(self, emails): - """ - Returns an array of bug numbers, for which the emails received are - maintainers. - """ - pass + def get_maintainers_bugs(self, emails): + """ + Returns an array of bug numbers, for which the emails received are + maintainers. + """ + pass # ************************ SOAP Queries ***************************** # Uncomment those to enable debugging @@ -39,59 +39,59 @@ #server.config.dumpSOAPIn = 1 class SoapQueries(BtsQueries): - """ - SOAP based BtsQueries class. - """ - def __init__(self): - #self.url = 'http://bugs.debian.org/cgi-bin/soap.cgi' - self.url = 'http://bugs-rietz.debian.org/cgi-bin/soap.cgi' - #self.url = 'http://bugs.donarmstrong.com/cgi-bin/soap.cgi' - self.ns = 'Debbugs/SOAP' - self.server = SOAPpy.SOAPProxy(self.url, self.ns) + """ + SOAP based BtsQueries class. + """ + def __init__(self): + #self.url = 'http://bugs.debian.org/cgi-bin/soap.cgi' + self.url = 'http://bugs-rietz.debian.org/cgi-bin/soap.cgi' + #self.url = 'http://bugs.donarmstrong.com/cgi-bin/soap.cgi' + self.ns = 'Debbugs/SOAP' + self.server = SOAPpy.SOAPProxy(self.url, self.ns) - def get_bugs_status(self, bug_numbers): - result = self.server.get_status(bug_numbers) + def get_bugs_status(self, bug_numbers): + result = self.server.get_status(bug_numbers) - # FIXME: looks like a bug in debbugs SOAP implementation - # empty results turn out as "" or " " - if result == "" or result == " ": - return [] + # FIXME: looks like a bug in debbugs SOAP implementation + # empty results turn out as "" or " " + if result == "" or result == " ": + return [] - if isinstance(result.item, list): - return [item.value for item in result.item] - else: - return [result.item.value] + if isinstance(result.item, list): + return [item.value for item in result.item] + else: + return [result.item.value] - def get_packages_bugs(self, packages): - result = self.server.get_bugs('package', packages) - return result + def get_packages_bugs(self, packages): + result = self.server.get_bugs('package', packages) + return result - def get_submitters_bugs(self, emails): - result = self.server.get_bugs('submitter', emails) - return result + def get_submitters_bugs(self, emails): + result = self.server.get_bugs('submitter', emails) + return result - def get_maintainers_bugs(self, emails): - result = self.server.get_bugs('maint', emails) - return result + def get_maintainers_bugs(self, emails): + result = self.server.get_bugs('maint', emails) + return result - def get_all_packages_bugs(self, packages): - # FIXME: Not in BtsQueries - pkg = self.server.get_bugs('package', packages) - src = self.server.get_bugs('src', packages) - # this gives us only unique elements - result = set(pkg + src) + def get_all_packages_bugs(self, packages): + # FIXME: Not in BtsQueries + pkg = self.server.get_bugs('package', packages) + src = self.server.get_bugs('src', packages) + # this gives us only unique elements + result = set(pkg + src) - return list(result) + return list(result) - def get_bug_log(self, bug): - # FIXME: Not in BtsQueries - result = self.server.get_bug_log(bug) - return result + def get_bug_log(self, bug): + # FIXME: Not in BtsQueries + result = self.server.get_bug_log(bug) + return result - def get_tagged_bugs(self, users): - # FIXME: Not in BtsQueries - # TODO: ask Don to allow many users at the same time - result = [] - for user in users: - result = result + self.server.get_usertag(user) - return result + def get_tagged_bugs(self, users): + # FIXME: Not in BtsQueries + # TODO: ask Don to allow many users at the same time + result = [] + for user in users: + result = result + self.server.get_usertag(user) + return result diff --git a/bts_webui/amancay/bugs.py b/bts_webui/amancay/bugs.py --- a/bts_webui/amancay/bugs.py +++ b/bts_webui/amancay/bugs.py @@ -11,283 +11,283 @@ from amancay.btsqueries import SoapQueries def bug(request, bug_number): - """ - Renders a bug page. + """ + Renders a bug page. - If the given bug page has been reached as a result of a POST action, the - data sent will be processed by process_bug_post and the bug will be - rendered after that to the user. - """ - # Process post - info = process_bug_post(request, bug_number) + If the given bug page has been reached as a result of a POST action, the + data sent will be processed by process_bug_post and the bug will be + rendered after that to the user. + """ + # Process post + info = process_bug_post(request, bug_number) - bug_number = int(bug_number) + bug_number = int(bug_number) - # FIXME: we need API - request.user.subscribed = False - queries = SoapQueries() - bug_status = queries.get_bugs_status(bug_number)[0] - bug_originator = email.Utils.parseaddr(bug_status['originator']) - bug_log = queries.get_bug_log(bug_number) + # FIXME: we need API + request.user.subscribed = False + queries = SoapQueries() + bug_status = queries.get_bugs_status(bug_number)[0] + bug_originator = email.Utils.parseaddr(bug_status['originator']) + bug_log = queries.get_bug_log(bug_number) - # having as a selected bug is not the same as subscribing - if request.user.is_authenticated(): - bug_is_fav = bool(request.user.bug_set.filter(number=bug_number)[:1]) - else: - bug_is_fav = bug_number in request.session.get('bug_set', []) + # having as a selected bug is not the same as subscribing + if request.user.is_authenticated(): + bug_is_fav = bool(request.user.bug_set.filter(number=bug_number)[:1]) + else: + bug_is_fav = bug_number in request.session.get('bug_set', []) - # Regular expressions to parse the mails - from_re = re.compile('^From: ?(.+)$', re.MULTILINE) - subject_re = re.compile('^Subject: ?(.+)$', re.MULTILINE) - date_re = re.compile('^Date: ?(.+)$', re.MULTILINE) + # Regular expressions to parse the mails + from_re = re.compile('^From: ?(.+)$', re.MULTILINE) + subject_re = re.compile('^Subject: ?(.+)$', re.MULTILINE) + date_re = re.compile('^Date: ?(.+)$', re.MULTILINE) - bug_messages = [] - for item in bug_log: - message = {} - # Parse the header - from_value = from_re.findall(item['header']) - subject_value = subject_re.findall(item['header']) - date_value = date_re.findall(item['header']) - # Filter the values - if from_value: - e_from = email.Utils.parseaddr(from_value[0]) - d_from = email.Header.decode_header(e_from[0]) - if (d_from[0][1] != None): - message['from'] = [d_from[0][0].decode(d_from[0][1]), e_from[1]] - else: - message['from'] = [e_from[0], e_from[1]] + bug_messages = [] + for item in bug_log: + message = {} + # Parse the header + from_value = from_re.findall(item['header']) + subject_value = subject_re.findall(item['header']) + date_value = date_re.findall(item['header']) + # Filter the values + if from_value: + e_from = email.Utils.parseaddr(from_value[0]) + d_from = email.Header.decode_header(e_from[0]) + if (d_from[0][1] != None): + message['from'] = [d_from[0][0].decode(d_from[0][1]), e_from[1]] + else: + message['from'] = [e_from[0], e_from[1]] - if not message['from'][0] and message['from'][1]: - message['from'][0] = message['from'][1] + if not message['from'][0] and message['from'][1]: + message['from'][0] = message['from'][1] - if subject_value: - message['subject'] = subject_value[0] + if subject_value: + message['subject'] = subject_value[0] - if date_value: - message['date'] = email.Utils.mktime_tz(email.Utils.parsedate_tz( - date_value[0])) + if date_value: + message['date'] = email.Utils.mktime_tz(email.Utils.parsedate_tz( + date_value[0])) - # Get the body - message['body'] = '' - content = item['header'] + '\n' + item['body'] - content = email.message_from_string(content) - if content.is_multipart(): - for part in content.walk(): - if (part.get_content_maintype() == 'multipart'): - continue - if part['content-disposition'] and\ - part['content-disposition'][:10] == 'attachment': - message['body'] += '[attach: %s]' % part.get_filename() - else: - message['body'] += part.get_payload(decode=1) + '\n' - else: - message['body'] = content.get_payload(decode=1) + # Get the body + message['body'] = '' + content = item['header'] + '\n' + item['body'] + content = email.message_from_string(content) + if content.is_multipart(): + for part in content.walk(): + if (part.get_content_maintype() == 'multipart'): + continue + if part['content-disposition'] and\ + part['content-disposition'][:10] == 'attachment': + message['body'] += '[attach: %s]' % part.get_filename() + else: + message['body'] += part.get_payload(decode=1) + '\n' + else: + message['body'] = content.get_payload(decode=1) - bug_messages.append(message) + bug_messages.append(message) - return render_to_response('bug.html', - {'bug_number': bug_number, - 'info_to_user': info, - 'bug_originator': bug_originator, - 'bug_status': bug_status, - 'bug_messages': bug_messages, - 'bug_is_fav': bug_is_fav}, - context_instance=RequestContext(request)) + return render_to_response('bug.html', + {'bug_number': bug_number, + 'info_to_user': info, + 'bug_originator': bug_originator, + 'bug_status': bug_status, + 'bug_messages': bug_messages, + 'bug_is_fav': bug_is_fav}, + context_instance=RequestContext(request)) def process_bug_post(request, bug_number): - """ - Process the different forms based on presence of some fields. - """ - form_type = request.POST.get('form_type', None) + """ + Process the different forms based on presence of some fields. + """ + form_type = request.POST.get('form_type', None) - if not form_type: - return None + if not form_type: + return None - if form_type == 'comment': - return add_comment(request, bug_number) - elif form_type == 'reassign': - return reassign(request, bug_number) - elif form_type == 'retitle': - return retitle(request, bug_number) - elif form_type == 'close': - return close(request, bug_number) - elif form_type == 'severity': - return severity(request, bug_number) - elif form_type == 'subscribe': - return subscribe(request, bug_number) - elif form_type == 'owner': - return change_owner(request, bug_number) - else: - return None + if form_type == 'comment': + return add_comment(request, bug_number) + elif form_type == 'reassign': + return reassign(request, bug_number) + elif form_type == 'retitle': + return retitle(request, bug_number) + elif form_type == 'close': + return close(request, bug_number) + elif form_type == 'severity': + return severity(request, bug_number) + elif form_type == 'subscribe': + return subscribe(request, bug_number) + elif form_type == 'owner': + return change_owner(request, bug_number) + else: + return None def change_owner(request, bug_number): - new_owner_email = request.POST.get('new_owner_email') + new_owner_email = request.POST.get('new_owner_email') - to_address = ['control@bugs.debian.org', - '%s@bugs.debian.org' % bug_number] - text = 'owner %s %s' % (bug_number, new_owner_email) - text += '\nthanks\n\n' + to_address = ['control@bugs.debian.org', + '%s@bugs.debian.org' % bug_number] + text = 'owner %s %s' % (bug_number, new_owner_email) + text += '\nthanks\n\n' - subject = 'Changing owner of Debian Bug #%s to %s' % (bug_number, new_owner_email) + subject = 'Changing owner of Debian Bug #%s to %s' % (bug_number, new_owner_email) - return handle_email(request, to_address, subject, text) + return handle_email(request, to_address, subject, text) def add_comment(request, bug_number): - subject = request.POST.get('subject') - comment = request.POST.get('comment') + subject = request.POST.get('subject') + comment = request.POST.get('comment') - if subject and comment: - to_address = ['%s@bugs.debian.org' % bug_number] - # If the user is registered, we send the mail. If not, we store it, and - # validate the email - return handle_email(request, to_address, subject, comment) - else: - return 'You need to enter both the subject and the comment.' + if subject and comment: + to_address = ['%s@bugs.debian.org' % bug_number] + # If the user is registered, we send the mail. If not, we store it, and + # validate the email + return handle_email(request, to_address, subject, comment) + else: + return 'You need to enter both the subject and the comment.' def reassign(request, bug_number): - package = request.POST.get('reassign_to') - version = request.POST.get('reassign_version') - comment = request.POST.get('reassign_comment') + package = request.POST.get('reassign_to') + version = request.POST.get('reassign_version') + comment = request.POST.get('reassign_comment') - if package: - to_address = ['control@bugs.debian.org', - '%s@bugs.debian.org' % bug_number] - text = 'reassign %s %s' % (bug_number, package) + if package: + to_address = ['control@bugs.debian.org', + '%s@bugs.debian.org' % bug_number] + text = 'reassign %s %s' % (bug_number, package) - if version: - text += ' %s' % version - text += '\nthanks\n\n' + if version: + text += ' %s' % version + text += '\nthanks\n\n' - if comment: - text += comment - subject = 'Reassigning Debian Bug #%s to Package %s' % (bug_number, package) + if comment: + text += comment + subject = 'Reassigning Debian Bug #%s to Package %s' % (bug_number, package) - return handle_email(request, to_address, subject, text) - else: - return None + return handle_email(request, to_address, subject, text) + else: + return None def retitle(request, bug_number): - new_title = request.POST.get('retitle_to') - comment = request.POST.get('retitle_comment') + new_title = request.POST.get('retitle_to') + comment = request.POST.get('retitle_comment') - if new_title: - to_address = ['control@bugs.debian.org', - '%s@bugs.debian.org' % bug_number] - text = 'retitle %s %s' % (bug_number, new_title) - text += '\nthanks\n\n' + if new_title: + to_address = ['control@bugs.debian.org', + '%s@bugs.debian.org' % bug_number] + text = 'retitle %s %s' % (bug_number, new_title) + text += '\nthanks\n\n' - if comment: - text += comment - subject = 'Retitling Debian Bug #%s ' % bug_number + if comment: + text += comment + subject = 'Retitling Debian Bug #%s ' % bug_number - return handle_email(request, to_address, subject, text) - else: - return None + return handle_email(request, to_address, subject, text) + else: + return None def close(request, bug_number): - version = request.POST.get('close_version') - comment = request.POST.get('close_comment') + version = request.POST.get('close_version') + comment = request.POST.get('close_comment') - if version: - to_address = ['%s-done@bugs.debian.org' % bug_number] - text = 'Version: %s\n\n' % version + if version: + to_address = ['%s-done@bugs.debian.org' % bug_number] + text = 'Version: %s\n\n' % version - if comment: - text += comment - subject = 'Closing Debian Bug #%s ' % bug_number + if comment: + text += comment + subject = 'Closing Debian Bug #%s ' % bug_number - return handle_email(request, to_address, subject, text) - else: - return None + return handle_email(request, to_address, subject, text) + else: + return None def severity(request, bug_number): - new_severity = request.POST.get('severity') - comment = request.POST.get('severity_comment') + new_severity = request.POST.get('severity') + comment = request.POST.get('severity_comment') - if new_severity: - to_address = ['control@bugs.debian.org', - '%s@bugs.debian.org' % bug_number ] - text = 'severity %s %s' % (bug_number, new_severity) - text += '\nthanks\n\n' + if new_severity: + to_address = ['control@bugs.debian.org', + '%s@bugs.debian.org' % bug_number ] + text = 'severity %s %s' % (bug_number, new_severity) + text += '\nthanks\n\n' - if comment: - text += comment - subject = 'Changing Debian Bug #%s\'s severity to %s ' % (bug_number, new_severity) + if comment: + text += comment + subject = 'Changing Debian Bug #%s\'s severity to %s ' % (bug_number, new_severity) - return handle_email(request, to_address, subject, text) - else: - return None + return handle_email(request, to_address, subject, text) + else: + return None def handle_email(request, to_address, subject, text): - """ - Sends an email to to_address if the user is authenticated, otherwise it - saves it in queue. - """ - if request.user.is_authenticated(): - send_mail(subject, text, request.user.email, to_address) - return 'Your comment has been successfully sent' - else: - from_address = request.POST.get('from_email') - pending_message(from_address, to_address, subject, text) - return 'A mail has been sent to your address to validate it' + """ + Sends an email to to_address if the user is authenticated, otherwise it + saves it in queue. + """ + if request.user.is_authenticated(): + send_mail(subject, text, request.user.email, to_address) + return 'Your comment has been successfully sent' + else: + from_address = request.POST.get('from_email') + pending_message(from_address, to_address, subject, text) + return 'A mail has been sent to your address to validate it' def pending_message(from_address, to_address, subject, comment): - """ - Create a pending message and send the activation email. - """ - import random, sha - from django.contrib.sites.models import Site - from django.conf import settings + """ + Create a pending message and send the activation email. + """ + import random, sha + from django.contrib.sites.models import Site + from django.conf import settings - # Store the email in the pending message db - salt = sha.new(str(random.random())).hexdigest()[:5] - activation_key = sha.new(salt+subject+from_address).hexdigest() + # Store the email in the pending message db + salt = sha.new(str(random.random())).hexdigest()[:5] + activation_key = sha.new(salt+subject+from_address).hexdigest() - # Fix the to_address if necessary - to_address = ','.join(to_address) + # Fix the to_address if necessary + to_address = ','.join(to_address) - # Prepare the message to send to the user - message = Pending_Messages(from_address=from_address, - to_address=to_address, - subject=subject, - comment=comment, - digest=activation_key) - message.save() - message_template = loader.get_template('activate_comment.txt') - message_context = Context({ 'activation_key': activation_key, - 'subject': subject, - 'text': comment, - 'to_address': to_address, - 'from_address': from_address, - 'site_url': Site.objects.get_current().domain - }) - message = message_template.render(message_context) - # Send the email to the user - subject = 'Activate the bug actions you prepared at Amancay' - send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [from_address]) + # Prepare the message to send to the user + message = Pending_Messages(from_address=from_address, + to_address=to_address, + subject=subject, + comment=comment, + digest=activation_key) + message.save() + message_template = loader.get_template('activate_comment.txt') + message_context = Context({ 'activation_key': activation_key, + 'subject': subject, + 'text': comment, + 'to_address': to_address, + 'from_address': from_address, + 'site_url': Site.objects.get_current().domain + }) + message = message_template.render(message_context) + # Send the email to the user + subject = 'Activate the bug actions you prepared at Amancay' + send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [from_address]) def activate_message(request, activation_key): - """ - Flushes emails in the message queue corresponding to a given - activation_key. - """ - # Make sure the key we're trying conforms to the pattern of a - # SHA1 hash; if it doesn't, no point even trying to look it up - # in the DB. - if re.match('[a-f0-9]{40}', activation_key): - try: - message = Pending_Messages.objects.filter(digest=activation_key)[0] - to_address = message.to_address.split(',') - send_mail(message.subject, message.comment, message.from_address, to_address) - message.delete() - status = 'Your message has now been successfully sent' - except SMTPRecipientsRefused: - status = 'Invalid destination: %s.' % message.to_address - except IndexError: - status = 'Invalid activation key' - else: - status = 'Malformed activation key' + """ + Flushes emails in the message queue corresponding to a given + activation_key. + """ + # Make sure the key we're trying conforms to the pattern of a + # SHA1 hash; if it doesn't, no point even trying to look it up + # in the DB. + if re.match('[a-f0-9]{40}', activation_key): + try: + message = Pending_Messages.objects.filter(digest=activation_key)[0] + to_address = message.to_address.split(',') + send_mail(message.subject, message.comment, message.from_address, to_address) + message.delete() + status = 'Your message has now been successfully sent' + except SMTPRecipientsRefused: + status = 'Invalid destination: %s.' % message.to_address + except IndexError: + status = 'Invalid activation key' + else: + status = 'Malformed activation key' - return render_to_response('search.html', - {'info_to_user': status}, - context_instance=RequestContext(request)) + return render_to_response('search.html', + {'info_to_user': status}, + context_instance=RequestContext(request)) diff --git a/bts_webui/amancay/models.py b/bts_webui/amancay/models.py --- a/bts_webui/amancay/models.py +++ b/bts_webui/amancay/models.py @@ -3,42 +3,42 @@ from django.db import models class Package(models.Model): - user = models.ForeignKey(User) - package_name = models.CharField(max_length=200) + user = models.ForeignKey(User) + package_name = models.CharField(max_length=200) - def __unicode__(self): - return self.package_name + def __unicode__(self): + return self.package_name class Bug(models.Model): - user = models.ForeignKey(User) - number = models.IntegerField() + user = models.ForeignKey(User) + number = models.IntegerField() - def __unicode__(self): - return str(self.number) + def __unicode__(self): + return str(self.number) class EmailItem(models.Model): - user = models.ForeignKey(User) - address = models.CharField(max_length=255) + user = models.ForeignKey(User) + address = models.CharField(max_length=255) - class Meta: - abstract = True + class Meta: + abstract = True - def __unicode__(self): - return self.address + def __unicode__(self): + return self.address class MaintainerEmail(EmailItem): - pass + pass class SubmitterEmail(EmailItem): - pass + pass class UserEmail(EmailItem): - pass + pass # Pending messages, to be sent when address is validated class Pending_Messages(models.Model): - from_address = models.CharField(max_length=255) - to_address = models.CharField(max_length=255) - subject = models.CharField(max_length=255) - comment = models.TextField() - digest = models.CharField(max_length=255) + from_address = models.CharField(max_length=255) + to_address = models.CharField(max_length=255) + subject = models.CharField(max_length=255) + comment = models.TextField() + digest = models.CharField(max_length=255) diff --git a/bts_webui/amancay/registration.py b/bts_webui/amancay/registration.py --- a/bts_webui/amancay/registration.py +++ b/bts_webui/amancay/registration.py @@ -5,20 +5,20 @@ from django.shortcuts import render_to_response def register(request): - """ - Render user registration form. - """ - form = UserCreationForm() + """ + Render user registration form. + """ + form = UserCreationForm() - if request.method == 'POST': - data = request.POST.copy() - errors = form.get_validation_errors(data) - if not errors: - new_user = form.save() - return HttpResponseRedirect('/accounts/created/') - else: - data = errors = {} + if request.method == 'POST': + data = request.POST.copy() + errors = form.get_validation_errors(data) + if not errors: + new_user = form.save() + return HttpResponseRedirect('/accounts/created/') + else: + data = errors = {} - return render_to_response('registration/register.html', { - 'form' : forms.FormWrapper(form, data, errors) - }) + return render_to_response('registration/register.html', { + 'form' : forms.FormWrapper(form, data, errors) + }) diff --git a/bts_webui/amancay/search.py b/bts_webui/amancay/search.py --- a/bts_webui/amancay/search.py +++ b/bts_webui/amancay/search.py @@ -15,113 +15,113 @@ PER_PAGE = 20 def search(request): - """ - View: render the bug table resulting from the current search. - """ - package = request.GET.get('query') - bug_list = [] - page = None + """ + View: render the bug table resulting from the current search. + """ + package = request.GET.get('query') + bug_list = [] + page = None - if package: - queries = SoapQueries() - bugs = queries.get_all_packages_bugs(package) - bugs.sort(reverse=True) + if package: + queries = SoapQueries() + bugs = queries.get_all_packages_bugs(package) + bugs.sort(reverse=True) - # We use the django Paginator to divide objects in pages but note that - # the actual results are passed to the template as a separate list. - # This is because we would be wasting bandwidth in requesting all the - # objects again and again, only to feed them to the paginator and use its - # object_list property. - paginator = Paginator(bugs, PER_PAGE) + # We use the django Paginator to divide objects in pages but note that + # the actual results are passed to the template as a separate list. + # This is because we would be wasting bandwidth in requesting all the + # objects again and again, only to feed them to the paginator and use its + # object_list property. + paginator = Paginator(bugs, PER_PAGE) - try: - page = int(request.GET.get('page', '1')) - except ValueError: - page = 1 + try: + page = int(request.GET.get('page', '1')) + except ValueError: + page = 1 - # If page request (9999) is out of range, deliver last page of results. - try: - page = paginator.page(page) - except (EmptyPage, InvalidPage): - page = paginator.page(paginator.num_pages) + # If page request (9999) is out of range, deliver last page of results. + try: + page = paginator.page(page) + except (EmptyPage, InvalidPage): + page = paginator.page(paginator.num_pages) - bug_list = queries.get_bugs_status(page.object_list) + bug_list = queries.get_bugs_status(page.object_list) - return render_to_response('search.html', - {'bug_list': bug_list, - 'query': package, - 'page': page, - 'title': 'Latest bugs in %s' % package}, - context_instance=RequestContext(request)) + return render_to_response('search.html', + {'bug_list': bug_list, + 'query': package, + 'page': page, + 'title': 'Latest bugs in %s' % package}, + context_instance=RequestContext(request)) def store_search(request, search_id, bug_list, append=False, last_page=0, total=0): - """ - Stores a search into the search db, which is serving now as a preloader. - """ - searches = request.session.get('searches') + """ + Stores a search into the search db, which is serving now as a preloader. + """ + searches = request.session.get('searches') - if searches is None: - request.session['searches'] = {} - searches = request.session['searches'] + if searches is None: + request.session['searches'] = {} + searches = request.session['searches'] - if not searches.has_key(search_id): - searches[search_id] = {} - searches[search_id]['stamp'] = time.time() - searches[search_id]['last_page'] = last_page + if not searches.has_key(search_id): + searches[search_id] = {} + searches[search_id]['stamp'] = time.time() + searches[search_id]['last_page'] = last_page - if total: - searches[search_id]['total'] = total + if total: + searches[search_id]['total'] = total - if append: - if not searches[search_id].has_key('bugs'): - searches[search_id]['bugs'] = [] - else: - searches[search_id]['bugs'] = [] + if append: + if not searches[search_id].has_key('bugs'): + searches[search_id]['bugs'] = [] + else: + searches[search_id]['bugs'] = [] - searches[search_id]['bugs'].extend(bug_list) + searches[search_id]['bugs'].extend(bug_list) def retrieve_search(request, search_id, amount, page=0): - """ - Return a queued search. - """ - searches = request.session.get('searches') + """ + Return a queued search. + """ + searches = request.session.get('searches') - if searches is not None: - if searches.has_key(search_id): - if (time.time() - searches[search_id]['stamp']) < 900: - start = page * amount - searches[search_id]['last_page'] = 0 + if searches is not None: + if searches.has_key(search_id): + if (time.time() - searches[search_id]['stamp']) < 900: + start = page * amount + searches[search_id]['last_page'] = 0 - return searches[search_id]['bugs'][start:start+amount] + return searches[search_id]['bugs'][start:start+amount] - return None + return None class _ReadAhead(threading.Thread): - """ - ReadAhead class used to preload bug lists. - """ - # FIXME: what does this do precisely? - # FIXME: what about a cache? - def __init__(self, request, search_id, bugs, amount): - threading.Thread.__init__(self) - self.request = request - self.bugs = bugs - self.amount = amount - self.search_id = search_id + """ + ReadAhead class used to preload bug lists. + """ + # FIXME: what does this do precisely? + # FIXME: what about a cache? + def __init__(self, request, search_id, bugs, amount): + threading.Thread.__init__(self) + self.request = request + self.bugs = bugs + self.amount = amount + self.search_id = search_id - def run(self): - """ - Start the ReadAhead thread. - """ - start = self.amount - old_session = Session.objects.get(pk=self.request.session.session_key) - bug_number = len(self.bugs) - while start < bug_number: - bug_list = queries.get_bugs_status(self.bugs[start:start+self.amount]) - store_search(self.request, self.search_id, bug_list, True) - start += self.amount - # FIXME: Ugly hack to make the session save - Session.objects.save(self.request.session.session_key, - self.request.session._session, - old_session.expire_date) + def run(self): + """ + Start the ReadAhead thread. + """ + start = self.amount + old_session = Session.objects.get(pk=self.request.session.session_key) + bug_number = len(self.bugs) + while start < bug_number: + bug_list = queries.get_bugs_status(self.bugs[start:start+self.amount]) + store_search(self.request, self.search_id, bug_list, True) + start += self.amount + # FIXME: Ugly hack to make the session save + Session.objects.save(self.request.session.session_key, + self.request.session._session, + old_session.expire_date) diff --git a/bts_webui/amancay/tables.py b/bts_webui/amancay/tables.py --- a/bts_webui/amancay/tables.py +++ b/bts_webui/amancay/tables.py @@ -9,141 +9,141 @@ PER_PAGE = 10 def _get_bug_list(request, view): - """ - Process the requested bug list corresponding to a given view. - """ - queries = SoapQueries() - bugs = bug_list = [] + """ + Process the requested bug list corresponding to a given view. + """ + queries = SoapQueries() + bugs = bug_list = [] - if view == 'received_bugs': - if request.user.is_authenticated(): - user_emails = [e.address for e in request.user.useremail_set.all()] - else: - user_emails = request.session.get('maintaineremail_set', []) + if view == 'received_bugs': + if request.user.is_authenticated(): + user_emails = [e.address for e in request.user.useremail_set.all()] + else: + user_emails = request.session.get('maintaineremail_set', []) - bugs = queries.get_maintainers_bugs(user_emails) + bugs = queries.get_maintainers_bugs(user_emails) - elif view == 'submitted_bugs': - if request.user.is_authenticated(): - submitter_emails = [e.address for e in request.user.submitteremail_set.all()] - else: - submitter_emails = request.session.get('submitteremail_set', []) + elif view == 'submitted_bugs': + if request.user.is_authenticated(): + submitter_emails = [e.address for e in request.user.submitteremail_set.all()] + else: + submitter_emails = request.session.get('submitteremail_set', []) - bugs = queries.get_submitters_bugs(submitter_emails) + bugs = queries.get_submitters_bugs(submitter_emails) - elif view == 'selected_bugs': - if request.user.is_authenticated(): - bugs = [b.number for b in request.user.bug_set.all()] - else: - bugs = request.session.get('bug_set', []) + elif view == 'selected_bugs': + if request.user.is_authenticated(): + bugs = [b.number for b in request.user.bug_set.all()] + else: + bugs = request.session.get('bug_set', []) - elif view == 'package_bugs': - if request.user.is_authenticated(): - package_list = [p.package_name for p in request.user.package_set.all()] - else: - package_list = request.session.get('package_set', []) + elif view == 'package_bugs': + if request.user.is_authenticated(): + package_list = [p.package_name for p in request.user.package_set.all()] + else: + package_list = request.session.get('package_set', []) - bugs = queries.get_packages_bugs(package_list) + bugs = queries.get_packages_bugs(package_list) - elif view == 'tagged_bugs': - if request.user.is_authenticated(): - user_emails = [e.address for e in request.user.useremail_set.all()] - else: - user_emails = request.session.get('useremail_set', []) + elif view == 'tagged_bugs': + if request.user.is_authenticated(): + user_emails = [e.address for e in request.user.useremail_set.all()] + else: + user_emails = request.session.get('useremail_set', []) - bugs = queries.get_tagged_bugs(user_emails) + bugs = queries.get_tagged_bugs(user_emails) - # We use the django Paginator to divide objects in pages but note that - # the actual results are passed to the template as a separate list. - # This is because we would be wasting bandwidth in requesting all the - # objects again and again, only to feed them to the paginator and use its - # object_list property. - paginator = Paginator(bugs, PER_PAGE) + # We use the django Paginator to divide objects in pages but note that + # the actual results are passed to the template as a separate list. + # This is because we would be wasting bandwidth in requesting all the + # objects again and again, only to feed them to the paginator and use its + # object_list property. + paginator = Paginator(bugs, PER_PAGE) - try: - page = int(request.GET.get('page', '1')) - except ValueError: - page = 1 + try: + page = int(request.GET.get('page', '1')) + except ValueError: + page = 1 - # If page request (9999) is out of range, deliver last page of results. - try: - page = paginator.page(page) - except (EmptyPage, InvalidPage): - page = paginator.page(paginator.num_pages) + # If page request (9999) is out of range, deliver last page of results. + try: + page = paginator.page(page) + except (EmptyPage, InvalidPage): + page = paginator.page(paginator.num_pages) - bugs = page.object_list - if bugs: - bug_list = queries.get_bugs_status(bugs) - bug_list.sort(key=lambda x: x.package) + bugs = page.object_list + if bugs: + bug_list = queries.get_bugs_status(bugs) + bug_list.sort(key=lambda x: x.package) - return {'bug_list': bug_list, - 'current_view': view, - 'page': page} + return {'bug_list': bug_list, + 'current_view': view, + 'page': page} def received_bugs(request): - """ - Render a table view for bugs we have received as maintainers. - """ - data_dict = _get_bug_list(request, 'received_bugs') - data_dict['title'] = 'Latest received bugs' + """ + Render a table view for bugs we have received as maintainers. + """ + data_dict = _get_bug_list(request, 'received_bugs') + data_dict['title'] = 'Latest received bugs' - return render_to_response('table.html', - data_dict, - context_instance=RequestContext(request)) + return render_to_response('table.html', + data_dict, + context_instance=RequestContext(request)) def submitted_bugs(request): - """ - Render a table view for bugs we have submitted ourselves. - """ - data_dict = _get_bug_list(request, 'submitted_bugs') - data_dict['title'] = 'Latest submitted bugs' + """ + Render a table view for bugs we have submitted ourselves. + """ + data_dict = _get_bug_list(request, 'submitted_bugs') + data_dict['title'] = 'Latest submitted bugs' - return render_to_response('table.html', - data_dict, - context_instance=RequestContext(request)) + return render_to_response('table.html', + data_dict, + context_instance=RequestContext(request)) def selected_bugs(request): - """ - Render a table view for bugs we are watching. - """ - data_dict = _get_bug_list(request, 'selected_bugs') - data_dict['title'] = 'Latest selected bugs' + """ + Render a table view for bugs we are watching. + """ + data_dict = _get_bug_list(request, 'selected_bugs') + data_dict['title'] = 'Latest selected bugs' - return render_to_response('table.html', - data_dict, - context_instance=RequestContext(request)) + return render_to_response('table.html', + data_dict, + context_instance=RequestContext(request)) def package_bugs(request): - """ - Render a table view for our watched packages. - """ - if request.user.is_authenticated(): - package_list = [p.package_name for p in request.user.package_set.all()] - else: - package_list = request.session.get('package_set', []) + """ + Render a table view for our watched packages. + """ + if request.user.is_authenticated(): + package_list = [p.package_name for p in request.user.package_set.all()] + else: + package_list = request.session.get('package_set', []) - data_dict = _get_bug_list(request, 'package_bugs') - data_dict['title'] = 'Latest bugs on selected packages' + data_dict = _get_bug_list(request, 'package_bugs') + data_dict['title'] = 'Latest bugs on selected packages' - for bug in data_dict['bug_list']: - if bug.package in package_list: - bug.pkg_fav = True - else: - bug.pkg_fav = False + for bug in data_dict['bug_list']: + if bug.package in package_list: + bug.pkg_fav = True + else: + bug.pkg_fav = False - return render_to_response('table.html', - data_dict, - context_instance=RequestContext(request)) + return render_to_response('table.html', + data_dict, + context_instance=RequestContext(request)) def tagged_bugs(request): - """ - Render a table view for bugs we have tagged. - """ - data_dict = _get_bug_list(request, 'tagged_bugs') - data_dict['title'] = 'Latest tagged bugs' + """ + Render a table view for bugs we have tagged. + """ + data_dict = _get_bug_list(request, 'tagged_bugs') + data_dict['title'] = 'Latest tagged bugs' - # TODO: fix this, bugs is a dict where every value is a dict of tags and - # bugs associated to one mail - return render_to_response('table.html', - data_dict, - context_instance=RequestContext(request)) + # TODO: fix this, bugs is a dict where every value is a dict of tags and + # bugs associated to one mail + return render_to_response('table.html', + data_dict, + context_instance=RequestContext(request)) diff --git a/bts_webui/amancay/templatetags/bug_tags.py b/bts_webui/amancay/templatetags/bug_tags.py --- a/bts_webui/amancay/templatetags/bug_tags.py +++ b/bts_webui/amancay/templatetags/bug_tags.py @@ -8,27 +8,27 @@ register = template.Library() def bug_tags_selector(context): - """ - Render tags checkboxes for the current bug. - """ - bug = context.get('bug_status') - if bug is None: - return None + """ + Render tags checkboxes for the current bug. + """ + bug = context.get('bug_status') + if bug is None: + return None - # We have a constant list of tags, so we can easily find out which ones are - # set and which ones are not. - active_tags = bug.tags.split(' ') - all_tags = [t for t in TAGS if t not in active_tags] + # We have a constant list of tags, so we can easily find out which ones are + # set and which ones are not. + active_tags = bug.tags.split(' ') + all_tags = [t for t in TAGS if t not in active_tags] - # all_tags could be [''], let's check it's not - if all_tags and all_tags[0] == '': - all_tags = [] + # all_tags could be [''], let's check it's not + if all_tags and all_tags[0] == '': + all_tags = [] - return { - 'bug': bug, - 'all_tags': all_tags, - 'active_tags': active_tags, - } + return { + 'bug': bug, + 'all_tags': all_tags, + 'active_tags': active_tags, + } register.inclusion_tag('bug_tags_selector.html', - takes_context=True)(bug_tags_selector) + takes_context=True)(bug_tags_selector) diff --git a/bts_webui/amancay/templatetags/template_filters.py b/bts_webui/amancay/templatetags/template_filters.py --- a/bts_webui/amancay/templatetags/template_filters.py +++ b/bts_webui/amancay/templatetags/template_filters.py @@ -4,46 +4,46 @@ register = template.Library() def tstodate(value, arg=None): - """ - Convert a timestamp into a human readable date. - """ - if not value: - return '' - try: - value=float(value) - except: - return '' - if arg is None: - d = datetime.fromtimestamp(value) - now = datetime.now() - if (d.year != now.year): - # marga says: - return d.strftime("%d/%m/%y") - elif (d.month != now.month or d.day != now.day): - return d.strftime("%b %e") - #elif (d.month != now.month): - # return d.strftime("%b %e") - #elif (d.day != now.day): - # return d.strftime("%a %e") - else: - return d.strftime("%k:%M") - - return datetime.fromtimestamp(value).strftime(arg) + """ + Convert a timestamp into a human readable date. + """ + if not value: + return '' + try: + value=float(value) + except: + return '' + if arg is None: + d = datetime.fromtimestamp(value) + now = datetime.now() + if (d.year != now.year): + # marga says: + return d.strftime("%d/%m/%y") + elif (d.month != now.month or d.day != now.day): + return d.strftime("%b %e") + #elif (d.month != now.month): + # return d.strftime("%b %e") + #elif (d.day != now.day): + # return d.strftime("%a %e") + else: + return d.strftime("%k:%M") + + return datetime.fromtimestamp(value).strftime(arg) def tstodatetime(value, arg=None): - """ - Convert a timestamp into a datetime object. - """ - if not value: - return '' - try: - value=float(value) - except: - return '' + """ + Convert a timestamp into a datetime object. + """ + if not value: + return '' + try: + value=float(value) + except: + return '' - d = datetime.fromtimestamp(value) + d = datetime.fromtimestamp(value) - return d + return d register.filter(tstodate) register.filter(tstodatetime) diff --git a/bts_webui/amancay/templatetags/toolbox.py b/bts_webui/amancay/templatetags/toolbox.py --- a/bts_webui/amancay/templatetags/toolbox.py +++ b/bts_webui/amancay/templatetags/toolbox.py @@ -4,76 +4,76 @@ register = template.Library() def toolbox_widget(context): - """ - Render the toolbox widget. - """ - toolbox = {} - title = item_type = item_list = None - - request = context.get('request', None) + """ + Render the toolbox widget. + """ + toolbox = {} + title = item_type = item_list = None + + request = context.get('request', None) - # Fill the info according to the type of toolbox needed - if request.path.find('bugs/submitted') != -1: - title = 'Submitter emails' - item_type = 'submitter' + # Fill the info according to the type of toolbox needed + if request.path.find('bugs/submitted') != -1: + title = 'Submitter emails' + item_type = 'submitter' - if request.user.is_authenticated(): - email_list = request.user.submitteremail_set.all() - item_list = [e.address for e in email_list] - else: - item_list = request.session.get('submitteremail_set') - - # Received bugs - elif request.path.find('bugs/received') != -1: - title = 'Maintainer emails' - item_type = 'maintainer' + if request.user.is_authenticated(): + email_list = request.user.submitteremail_set.all() + item_list = [e.address for e in email_list] + else: + item_list = request.session.get('submitteremail_set') + + # Received bugs + elif request.path.find('bugs/received') != -1: + title = 'Maintainer emails' + item_type = 'maintainer' - if request.user.is_authenticated(): - email_list = request.user.maintaineremail_set.all() - item_list = [e.address for e in email_list] - else: - item_list = request.session.get('maintaineremail_set') - - # Selected Packages - elif request.path.find('bugs/packages') != -1: - title = 'Selected Packages' - item_type = 'package' + if request.user.is_authenticated(): + email_list = request.user.maintaineremail_set.all() + item_list = [e.address for e in email_list] + else: + item_list = request.session.get('maintaineremail_set') + + # Selected Packages + elif request.path.find('bugs/packages') != -1: + title = 'Selected Packages' + item_type = 'package' - if request.user.is_authenticated(): - package_list = request.user.package_set.all() - item_list = [p.package_name for p in package_list] - else: - item_list = request.session.get('package_set') + if request.user.is_authenticated(): + package_list = request.user.package_set.all() + item_list = [p.package_name for p in package_list] + else: + item_list = request.session.get('package_set') - # Selected bugs - elif request.path.find('bugs/selected') != -1: - title = 'Selected Bugs' - item_type = 'bug' + # Selected bugs + elif request.path.find('bugs/selected') != -1: + title = 'Selected Bugs' + item_type = 'bug' - if request.user.is_authenticated(): - bug_list = request.user.bug_set.all() - item_list = [b.number for b in bug_list] - else: - item_list = request.session.get('bug_set') - - # Tagged bugs - elif request.path.find('bugs/tagged') != -1: - title = 'User emails' - item_type = 'user' + if request.user.is_authenticated(): + bug_list = request.user.bug_set.all() + item_list = [b.number for b in bug_list] + else: + item_list = request.session.get('bug_set') + + # Tagged bugs + elif request.path.find('bugs/tagged') != -1: + title = 'User emails' + item_type = 'user' - if request.user.is_authenticated(): - email_list = request.user.useremail_set.all() - item_list = [e.address for e in email_list] - else: - item_list = request.session.get('useremail_set') + if request.user.is_authenticated(): + email_list = request.user.useremail_set.all() + item_list = [e.address for e in email_list] + else: + item_list = request.session.get('useremail_set') - toolbox['title'] = title - toolbox['item_type'] = item_type - toolbox['item_list'] = item_list + toolbox['title'] = title + toolbox['item_type'] = item_type + toolbox['item_list'] = item_list - return { - 'toolbox': toolbox, - } + return { + 'toolbox': toolbox, + } register.inclusion_tag('toolbox.html', - takes_context=True)(toolbox_widget) + takes_context=True)(toolbox_widget) diff --git a/bts_webui/amancay/urls.py b/bts_webui/amancay/urls.py --- a/bts_webui/amancay/urls.py +++ b/bts_webui/amancay/urls.py @@ -2,47 +2,47 @@ from django.conf.urls.defaults import * urlpatterns = patterns('', - (r'^$', 'amancay.views.index',), - (r'^index', 'amancay.views.index',), + (r'^$', 'amancay.views.index',), + (r'^index', 'amancay.views.index',), - (r'^search', 'amancay.search.search',), + (r'^search', 'amancay.search.search',), - (r'^bugs/packages', 'amancay.tables.package_bugs',), - (r'^bugs/received', 'amancay.tables.received_bugs',), - (r'^bugs/selected', 'amancay.tables.selected_bugs',), - (r'^bugs/submitted', 'amancay.tables.submitted_bugs',), - (r'^bugs/tagged', 'amancay.tables.tagged_bugs',), + (r'^bugs/packages', 'amancay.tables.package_bugs',), + (r'^bugs/received', 'amancay.tables.received_bugs',), + (r'^bugs/selected', 'amancay.tables.selected_bugs',), + (r'^bugs/submitted', 'amancay.tables.submitted_bugs',), + (r'^bugs/tagged', 'amancay.tables.tagged_bugs',), - # Inside pages - (r'^(?P\d+)/?$', 'amancay.bugs.bug',), - (r'^bug/(?P\d+)', 'amancay.bugs.bug',), - (r'^package/(?P\w+)', 'amancay.views.package',), + # Inside pages + (r'^(?P\d+)/?$', 'amancay.bugs.bug',), + (r'^bug/(?P\d+)', 'amancay.bugs.bug',), + (r'^package/(?P\w+)', 'amancay.views.package',), - # Small pieces for AJAX - (r'^ajax/package/add/', 'amancay.ajax.package_add',), - (r'^ajax/bug/add/', 'amancay.ajax.bug_add',), - (r'^ajax/maintainer/add/', 'amancay.ajax.maintainer_add',), - (r'^ajax/submitter/add/', 'amancay.ajax.submitter_add',), - (r'^ajax/user/add/', 'amancay.ajax.user_add',), + # Small pieces for AJAX + (r'^ajax/package/add/', 'amancay.ajax.package_add',), + (r'^ajax/bug/add/', 'amancay.ajax.bug_add',), + (r'^ajax/maintainer/add/', 'amancay.ajax.maintainer_add',), + (r'^ajax/submitter/add/', 'amancay.ajax.submitter_add',), + (r'^ajax/user/add/', 'amancay.ajax.user_add',), - (r'^ajax/package/remove/', 'amancay.ajax.package_remove',), - (r'^ajax/bug/remove/', 'amancay.ajax.bug_remove',), - (r'^ajax/maintainer/remove/', 'amancay.ajax.maintainer_remove',), - (r'^ajax/submitter/remove/', 'amancay.ajax.submitter_remove',), - (r'^ajax/user/remove/', 'amancay.ajax.user_remove',), + (r'^ajax/package/remove/', 'amancay.ajax.package_remove',), + (r'^ajax/bug/remove/', 'amancay.ajax.bug_remove',), + (r'^ajax/maintainer/remove/', 'amancay.ajax.maintainer_remove',), + (r'^ajax/submitter/remove/', 'amancay.ajax.submitter_remove',), + (r'^ajax/user/remove/', 'amancay.ajax.user_remove',), - (r'^ajax/bug/subscribe/', 'amancay.ajax.bug_subscribe',), - (r'^ajax/bug/unsubscribe/', 'amancay.ajax.bug_unsubscribe',), + (r'^ajax/bug/subscribe/', 'amancay.ajax.bug_subscribe',), + (r'^ajax/bug/unsubscribe/', 'amancay.ajax.bug_unsubscribe',), - # Account Settings - # (r'^account_settings', 'amancay.views.account_settings',), + # Account Settings + # (r'^account_settings', 'amancay.views.account_settings',), - # Activate a pending message - (r'^send_message/(?P\w+)/$', 'amancay.bugs.activate_message',), + # Activate a pending message + (r'^send_message/(?P\w+)/$', 'amancay.bugs.activate_message',), - # MochiKit and other static pages - (r'^images/(.*)$', 'django.views.static.serve', - {'document_root': 'amancay/images/'}), - (r'^static/(.*)$', 'django.views.static.serve', - {'document_root': 'amancay/static/'}), + # MochiKit and other static pages + (r'^images/(.*)$', 'django.views.static.serve', + {'document_root': 'amancay/images/'}), + (r'^static/(.*)$', 'django.views.static.serve', + {'document_root': 'amancay/static/'}), ) diff --git a/bts_webui/amancay/views.py b/bts_webui/amancay/views.py --- a/bts_webui/amancay/views.py +++ b/bts_webui/amancay/views.py @@ -7,31 +7,31 @@ from amancay.btsqueries import SoapQueries def index(request): - """ - Our pretty useless index page. - """ + """ + Our pretty useless index page. + """ - return render_to_response('home.html', {}, - context_instance=RequestContext(request)) + return render_to_response('home.html', {}, + context_instance=RequestContext(request)) def package(request, package_name): - """ - Individual package page. - """ - user = request.user - queries = SoapQueries() + """ + Individual package page. + """ + user = request.user + queries = SoapQueries() - bugs = queries.get_packages_bugs(package_name) - bugs.sort(reverse=True) - bug_list = queries.get_bugs_status(bugs) + bugs = queries.get_packages_bugs(package_name) + bugs.sort(reverse=True) + bug_list = queries.get_bugs_status(bugs) - # Check if it's AJAX or HTML - if request.GET.has_key('xhr'): - return HttpResponse(simplejson.dumps({"package": package_name, - "bug_list": bug_list}), - mimetype='application/javascript') - else: - return render_to_response('package.html', - {'package': package_name, - 'bug_list': bug_list}, - context_instance=RequestContext(request)) + # Check if it's AJAX or HTML + if request.GET.has_key('xhr'): + return HttpResponse(simplejson.dumps({"package": package_name, + "bug_list": bug_list}), + mimetype='application/javascript') + else: + return render_to_response('package.html', + {'package': package_name, + 'bug_list': bug_list}, + context_instance=RequestContext(request)) diff --git a/bts_webui/settings.py b/bts_webui/settings.py --- a/bts_webui/settings.py +++ b/bts_webui/settings.py @@ -62,9 +62,9 @@ ) TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.core.context_processors.auth', - 'django.core.context_processors.debug', - 'django.core.context_processors.request', + 'django.core.context_processors.auth', + 'django.core.context_processors.debug', + 'django.core.context_processors.request', ) MIDDLEWARE_CLASSES = ( @@ -77,8 +77,8 @@ ROOT_URLCONF = 'bts_webui.urls' TEMPLATE_DIRS = ( - "amancay/templates/", - "registration/templates/" + "amancay/templates/", + "registration/templates/" # Put strings here, like "/home/html/django_templates". # Always use forward slashes, even on Windows. ) @@ -87,9 +87,9 @@ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', - 'django.contrib.humanize', - 'django.contrib.admin', - 'django.contrib.sites', - 'bts_webui.amancay', - 'bts_webui.registration' + 'django.contrib.humanize', + 'django.contrib.admin', + 'django.contrib.sites', + 'bts_webui.amancay', + 'bts_webui.registration' ) diff --git a/bts_webui/urls.py b/bts_webui/urls.py --- a/bts_webui/urls.py +++ b/bts_webui/urls.py @@ -6,17 +6,17 @@ urlpatterns = patterns('', - # The admin interface - (r'^admin/(.*)', admin.site.root), + # The admin interface + (r'^admin/(.*)', admin.site.root), - # The amancay app - (r'^amancay/', include('amancay.urls')), + # The amancay app + (r'^amancay/', include('amancay.urls')), - # The registration app - (r'^accounts/profile/', include('amancay.urls')), - (r'^accounts/', include('registration.urls')), + # The registration app + (r'^accounts/profile/', include('amancay.urls')), + (r'^accounts/', include('registration.urls')), - # amancay is the main site here. - (r'^/?', include('amancay.urls')), + # amancay is the main site here. + (r'^/?', include('amancay.urls')), )