← Back to team overview

harvest-dev team mailing list archive

[Merge] lp:~dholbach/harvest/701983 into lp:harvest

 

Daniel Holbach has proposed merging lp:~dholbach/harvest/701983 into lp:harvest with lp:~dholbach/harvest/fix-settings as a prerequisite.

Requested reviews:
  harvest-dev (harvest-dev)
Related bugs:
  #701983 Provide easy way to programmatically get number and type of opportunities for a package
  https://bugs.launchpad.net/bugs/701983

For more details, see:
https://code.launchpad.net/~dholbach/harvest/701983/+merge/46347
-- 
https://code.launchpad.net/~dholbach/harvest/701983/+merge/46347
Your team harvest-dev is requested to review the proposed merge of lp:~dholbach/harvest/701983 into lp:harvest.
=== modified file 'harvest/opportunities/urls.py'
--- harvest/opportunities/urls.py	2010-10-05 13:31:20 +0000
+++ harvest/opportunities/urls.py	2011-01-14 21:37:15 +0000
@@ -8,7 +8,11 @@
     url(r'^package/(?P<package_name>.+)/$',
         'opportunities.views.single_package',
         name='single_package'),
-    
+
+    url(r'^json/(?P<package_name>.+)/$',
+        'opportunities.views.json_package_summary',
+        name='json_package_summary'),
+
     url(r'^opportunity/(?P<opportunity_id>[\d]+)/edit/$',
         'opportunities.views.opportunity_edit',
         name='opportunity_edit'),

=== modified file 'harvest/opportunities/views.py'
--- harvest/opportunities/views.py	2010-12-08 16:43:33 +0000
+++ harvest/opportunities/views.py	2011-01-14 21:37:15 +0000
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from django.contrib.auth.decorators import login_required
 from django.db.models import F
-from django.http import HttpResponseRedirect
+from django.http import HttpResponseRedirect, HttpResponse
 from django.shortcuts import get_object_or_404
 from django.shortcuts import render_to_response as render
 from django.template import RequestContext
@@ -12,6 +12,8 @@
 import models
 from wrappers import PackageWrapper, PackageListWrapper
 
+import json
+
 # Returns all valid opportunities in the given QuerySet
 def _get_valid_opportunities(opportunities_list):
     return opportunities_list.filter(valid=True, opportunitylist__active=True,
@@ -76,6 +78,18 @@
         context,
         context_instance=RequestContext(request))
 
+def json_package_summary(request, package_name):
+    package = get_object_or_404(models.SourcePackage, name=package_name)
+    opportunities_list = _get_valid_opportunities(package.opportunity_set)
+    data = {}
+    for opportunity in opportunities_list:
+        if not data.has_key(opportunity.opportunitylist.name):
+            data[opportunity.opportunitylist.name] = 0
+        data[opportunity.opportunitylist.name] += 1
+    data["total"] = len(opportunities_list)
+
+    return HttpResponse(json.dumps(data))
+
 @login_required
 def opportunity_edit(request, opportunity_id, template='opportunities/opportunity_edit.html'):
     opportunity = get_object_or_404(models.Opportunity, id=opportunity_id)