36 from soc.logic.helper import timeline as timeline_helper |
36 from soc.logic.helper import timeline as timeline_helper |
37 from soc.logic.models import host as host_logic |
37 from soc.logic.models import host as host_logic |
38 from soc.logic.models import mentor as mentor_logic |
38 from soc.logic.models import mentor as mentor_logic |
39 from soc.logic.models import organization as org_logic |
39 from soc.logic.models import organization as org_logic |
40 from soc.logic.models import org_admin as org_admin_logic |
40 from soc.logic.models import org_admin as org_admin_logic |
|
41 from soc.logic.models import student_proposal as student_proposal_logic |
41 from soc.logic.models import program as program_logic |
42 from soc.logic.models import program as program_logic |
42 from soc.logic.models import student as student_logic |
43 from soc.logic.models import student as student_logic |
43 from soc.logic.models.document import logic as document_logic |
44 from soc.logic.models.document import logic as document_logic |
44 from soc.views import helper |
45 from soc.views import helper |
45 from soc.views import out_of_band |
46 from soc.views import out_of_band |
169 """ |
170 """ |
170 |
171 |
171 program = program_logic.logic.getFromKeyFields(kwargs) |
172 program = program_logic.logic.getFromKeyFields(kwargs) |
172 slots = program.slots |
173 slots = program.slots |
173 |
174 |
|
175 filter = { |
|
176 'scope': program, |
|
177 'status': 'active', |
|
178 } |
|
179 |
|
180 query = org_logic.logic.getQueryForFields(filter=filter) |
|
181 organizations = org_logic.logic.getAll(query) |
|
182 |
|
183 locked_slots = adjusted_slots = {} |
|
184 |
174 if request.method == 'POST' and 'result' in request.POST: |
185 if request.method == 'POST' and 'result' in request.POST: |
175 result = request.POST['result'] |
186 result = request.POST['result'] |
176 |
187 |
177 from_json = simplejson.loads(result).iteritems() |
188 from_json = simplejson.loads(result) |
178 |
189 |
179 # filter out all orgs where the link_id is 'undefined' |
190 locked_slots = dicts.groupDictBy(from_json, 'locked', 'slots') |
180 orgs = dict( ((k,v) for k, v in from_json if k != 'undefined')) |
191 adjusted_slots = dicts.groupDictBy(from_json, 'adjustment') |
181 |
192 |
182 locked_slots = dicts.groupDictBy(orgs, 'locked', 'slots') |
193 orgs = [i.link_id for i in organizations] |
183 adjusted_slots = dicts.groupDictBy(orgs, 'adjustment') |
194 applications = {} |
184 else: |
195 mentors = {} |
|
196 |
|
197 for org in organizations: |
185 filter = { |
198 filter = { |
186 'scope': program, |
199 'org': org, |
|
200 'status': ['new', 'pending'] |
187 } |
201 } |
188 |
202 query = student_proposal_logic.logic.getQueryForFields(filter=filter) |
189 query = org_logic.logic.getQueryForFields(filter=filter) |
203 proposals = student_proposal_logic.logic.getAll(query) |
190 entities = [i.toDict() for i in org_logic.logic.getAll(query)] |
204 applications[org.link_id] = len(proposals) |
191 |
205 mentors[org.link_id] = len([i for i in proposals if i.mentor != None]) |
192 # group orgs by link_id |
|
193 orgs = dict( ((i['link_id'], i) for i in entities) ) |
|
194 |
|
195 # default to no orgs locked nor adjusted |
|
196 locked_slots = adjusted_slots = {} |
|
197 |
|
198 # TODO(Lennard): use real data here |
|
199 applications = dict( ((i, [1, 2]) for i in orgs.keys()) ) |
|
200 mentors = dict( ((i, 1000) for i in orgs.keys()) ) |
|
201 |
206 |
202 # TODO: Use configuration variables here |
207 # TODO: Use configuration variables here |
203 max_slots_per_org = 40 |
208 max_slots_per_org = 40 |
204 min_slots_per_org = 2 |
209 min_slots_per_org = 2 |
205 iterative = False |
210 iterative = False |