def package(request, package_name): """ 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) def severitysort(a, b): """Sort by severity and then by modify date""" d = severities[b['severity']] - severities[a['severity']] if d: return d return b['last_modified'] - a['last_modified'] bug_list.sort(severitysort) # Check if it's AJAX or HTML if 'xhr' in request.GET: 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))
def _get_bug_list(request, view): """ 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', []) 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', []) 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 == '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) 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) # 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 # 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) return {'bug_list': bug_list, 'current_view': view, 'page': page}