app/soc/views/models/program.py
changeset 1751 17c7a7a48dc7
parent 1750 1ac2d27fdb6b
child 1762 c47b9deb22ac
--- a/app/soc/views/models/program.py	Sun Mar 08 15:00:59 2009 +0000
+++ b/app/soc/views/models/program.py	Sun Mar 08 16:26:17 2009 +0000
@@ -38,6 +38,7 @@
 from soc.logic.models import mentor as mentor_logic
 from soc.logic.models import organization as org_logic
 from soc.logic.models import org_admin as org_admin_logic
+from soc.logic.models import student_proposal as student_proposal_logic
 from soc.logic.models import program as program_logic
 from soc.logic.models import student as student_logic
 from soc.logic.models.document import logic as document_logic
@@ -171,33 +172,37 @@
     program = program_logic.logic.getFromKeyFields(kwargs)
     slots = program.slots
 
+    filter = {
+          'scope': program,
+          'status': 'active',
+          }
+
+    query = org_logic.logic.getQueryForFields(filter=filter)
+    organizations = org_logic.logic.getAll(query)
+
+    locked_slots = adjusted_slots = {}
+
     if request.method == 'POST' and 'result' in request.POST:
       result = request.POST['result']
 
-      from_json = simplejson.loads(result).iteritems()
-
-      # filter out all orgs where the link_id is 'undefined'
-      orgs = dict( ((k,v) for k, v in from_json if k != 'undefined'))
+      from_json = simplejson.loads(result)
 
-      locked_slots = dicts.groupDictBy(orgs, 'locked', 'slots')
-      adjusted_slots = dicts.groupDictBy(orgs, 'adjustment')
-    else:
-      filter = {
-          'scope': program,
-          }
+      locked_slots = dicts.groupDictBy(from_json, 'locked', 'slots')
+      adjusted_slots = dicts.groupDictBy(from_json, 'adjustment')
+
+    orgs = [i.link_id for i in organizations]
+    applications = {}
+    mentors = {}
 
-      query = org_logic.logic.getQueryForFields(filter=filter)
-      entities = [i.toDict() for i in org_logic.logic.getAll(query)]
-
-      # group orgs by link_id
-      orgs = dict( ((i['link_id'], i) for i in entities) )
-
-      # default to no orgs locked nor adjusted
-      locked_slots = adjusted_slots = {}
-
-    # TODO(Lennard): use real data here
-    applications = dict( ((i, [1, 2]) for i in orgs.keys()) )
-    mentors = dict( ((i, 1000) for i in orgs.keys()) )
+    for org in organizations:
+      filter = {
+          'org': org,
+          'status': ['new', 'pending']
+          }
+      query = student_proposal_logic.logic.getQueryForFields(filter=filter)
+      proposals = student_proposal_logic.logic.getAll(query)
+      applications[org.link_id] = len(proposals)
+      mentors[org.link_id] = len([i for i in proposals if i.mentor != None])
 
     # TODO: Use configuration variables here
     max_slots_per_org = 40