diff -r 63625e7e0cac -r 6689a4c8f02e app/soc/modules/ghop/views/models/task.py --- a/app/soc/modules/ghop/views/models/task.py Mon Oct 05 20:35:06 2009 +0200 +++ b/app/soc/modules/ghop/views/models/task.py Mon Oct 05 22:43:30 2009 +0200 @@ -680,18 +680,36 @@ """Handles the POST request for the list tasks view. """ - # update the status of task entities that have been approved - # and published + # get the org entity for which we are listing these tasks + org_entity = ghop_org_logic.logic.getFromKeyNameOr404(kwargs['scope_path']) + + # save the state to which the selected tasks must be changed + # to based on the actions. + if request.POST.get('Approve'): + changed_status = 'Unpublished' + elif request.POST.get('Publish'): + changed_status = 'Open' + + # update the status of task entities that should be approved or published task_entities = [] - for key_name, published in request.POST.items(): + + # get all the task keys to update, will return empty list if doesn't exist + task_keys = request.POST.getlist('task_id') + + for key_name in task_keys: + task_entity = ghop_task_logic.logic.getFromKeyName(key_name) - if task_entity: - task_entity.status = 'Open' + + # Of course only the tasks from this organization and those with a valid + # state can be updated. + if task_entity and task_entity.scope.key() == org_entity.key() and \ + task_entity.status in ['Unapproved', 'Unpublished']: + task_entity.status = changed_status task_entities.append(task_entity) - # bulk update the task_entities - # TODO: Have to be replaced by Task Queue APIs later + # bulk put the task_entities + # TODO: replace with Task API call? db.put(task_entities) # redirect to the same page @@ -728,11 +746,11 @@ up_params) up_params['list_description'] = ugettext( - 'List of Unapproved or Unpublished tasks') + 'List of Unapproved tasks.') filter = { 'scope': org_entity, - 'status': ['Unapproved', 'Unpublished'], + 'status': 'Unapproved', } up_list = lists.getListContent(request, up_params, filter, idx=0, @@ -748,6 +766,33 @@ contents.append(up_list) context['up_list'] = True + aup_params = params.copy() + aup_params['list_heading'] = 'modules/ghop/task/approve/heading.html' + aup_params['list_row'] = 'modules/ghop/task/approve/row.html' + + aup_params['list_action'] = (redirects.getPublicRedirect, + aup_params) + + aup_params['list_description'] = ugettext( + 'List of Approved but Unpublished tasks.') + + filter = { + 'scope': org_entity, + 'status': 'Unpublished', + } + + aup_list = lists.getListContent(request, aup_params, filter, idx=1, + need_content=True) + + if aup_list: + aup_mentors_list = {} + for task_entity in aup_list['data']: + aup_mentors_list[task_entity.key()] = db.get(task_entity.mentors) + + aup_list['info'] = (list_info_helper.getTasksInfo(aup_mentors_list), None) + + contents.append(aup_list) + ap_params = up_params.copy() ap_params['list_template'] = 'soc/models/list.html' ap_params['list_heading'] = 'modules/ghop/task/list/heading.html' @@ -757,7 +802,7 @@ ap_params) ap_params['list_description'] = ugettext( - 'List of published tasks') + 'List of Published tasks.') filter = { 'scope': org_entity, @@ -766,7 +811,7 @@ 'NeedsWork', 'NeedsReview'], } - ap_list = lists.getListContent(request, ap_params, filter, idx=1, + ap_list = lists.getListContent(request, ap_params, filter, idx=2, need_content=True) if ap_list: