Esempio n. 1
0
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))
Esempio n. 2
0
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}