def testDecisionsAreApplied(self): """Tests that status of organizations is changed after the job.""" mapreduce_control.start_map( 'ApplyOrgAdmissionDecisions', params=self.params) test_support.execute_until_empty(self.get_task_queue_stub()) # check that pre-rejected organizations are accepted now for org_key in self.pre_accepted_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.ACCEPTED) # check that pre-rejected organizations are rejected now for org_key in self.pre_rejected_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.REJECTED) # check that nothing has changed regarding applying organizations for org_key in self.applying_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.APPLYING) for org_key in self.pre_accepted_orgs: org = org_key.get() subject = notifications.DEF_ACCEPTED_ORG % { 'org': org.name, } self.assertEmailSent(cc=org.contact.email, subject=subject) for org_key in self.pre_rejected_orgs: org = org_key.get() subject = notifications.DEF_REJECTED_ORG % { 'org': org.name, } self.assertEmailSent(cc=org.contact.email, subject=subject)
def testDecisionsAreApplied(self): """Tests that status of organizations is changed after the job.""" mapreduce_control.start_map('ApplyOrgAdmissionDecisions', params=self.params) test_support.execute_until_empty(self.get_task_queue_stub()) # check that pre-rejected organizations are accepted now for org_key in self.pre_accepted_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.ACCEPTED) # check that pre-rejected organizations are rejected now for org_key in self.pre_rejected_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.REJECTED) # check that nothing has changed regarding applying organizations for org_key in self.applying_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.APPLYING) for org_key in self.pre_accepted_orgs: org = org_key.get() subject = notifications.DEF_ACCEPTED_ORG % { 'org': org.name, } self.assertEmailSent(cc=org.contact.email, subject=subject) for org_key in self.pre_rejected_orgs: org = org_key.get() subject = notifications.DEF_REJECTED_ORG % { 'org': org.name, } self.assertEmailSent(cc=org.contact.email, subject=subject)
def testOrgsForAnotherProgram(self): """Tests that status of organizations for another program is untouched.""" # seed another program program = seeder_logic.seed(program_model.Program) # seed a few pre-accepted and pre-rejected organizations pre_accepted_orgs = [] for i in range(2): org = org_utils.seedOrganization( program.key(), org_id='pre_accepted_org_id_%s' % i, status=org_model.Status.PRE_ACCEPTED) pre_accepted_orgs.append(org.key) pre_rejected_orgs = [] for i in range(3): org = org_utils.seedOrganization( program.key(), org_id='pre_rejrected_org_id_%s' % i, status=org_model.Status.PRE_REJECTED) pre_rejected_orgs.append(org.key) mapreduce_control.start_map( 'ApplyOrgAdmissionDecisions', params=self.params) test_support.execute_until_empty(self.get_task_queue_stub()) # check that pre-accepted organizations are still pre-accepted for org_key in pre_accepted_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.PRE_ACCEPTED) # check that pre-rejected organizations are still pre-rejected for org_key in pre_rejected_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.PRE_REJECTED)
def testOrgsForAnotherProgram(self): """Tests that status of organizations for another program is untouched.""" # seed another program program = seeder_logic.seed(program_model.Program) # seed a few pre-accepted and pre-rejected organizations pre_accepted_orgs = [] for i in range(2): org = org_utils.seedOrganization( program.key(), org_id='pre_accepted_org_id_%s' % i, status=org_model.Status.PRE_ACCEPTED) pre_accepted_orgs.append(org.key) pre_rejected_orgs = [] for i in range(3): org = org_utils.seedOrganization( program.key(), org_id='pre_rejrected_org_id_%s' % i, status=org_model.Status.PRE_REJECTED) pre_rejected_orgs.append(org.key) mapreduce_control.start_map('ApplyOrgAdmissionDecisions', params=self.params) test_support.execute_until_empty(self.get_task_queue_stub()) # check that pre-accepted organizations are still pre-accepted for org_key in pre_accepted_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.PRE_ACCEPTED) # check that pre-rejected organizations are still pre-rejected for org_key in pre_rejected_orgs: org = org_key.get() self.assertEqual(org.status, org_model.Status.PRE_REJECTED)
def handle(self, data, check, mutator): """See form_handler.FormHandler.handle for specification.""" params = { 'program_key': str(data.program.key()), # TODO(daniel): it must be obtained programatically somehow. 'entity_kind': 'summerofcode.models.organization.SOCOrganization', } mapreduce_control.start_map('ApplyOrgAdmissionDecisions', params) url = links.LINKER.program(data.program, urls.UrlNames.ORG_APPLICATION_LIST) return http.HttpResponseRedirect(url + '?validated=True')
def handle(self, data, check, mutator): """See form_handler.FormHandler.handle for specification.""" params = { "program_key": str(data.program.key()), # TODO(daniel): it must be obtained programatically somehow. "entity_kind": "summerofcode.models.organization.SOCOrganization", } mapreduce_control.start_map("ApplyOrgAdmissionDecisions", params) url = links.LINKER.program(data.program, urls.UrlNames.ORG_APPLICATION_LIST) return http.HttpResponseRedirect(url + "?validated=True")
def post(self, data, check, mutator): """Edits records from commands received by the list code.""" post_dict = data.request.POST data.redirect.program() if (post_dict.get('process', '') == org_app.PROCESS_ORG_APPS_FORM_BUTTON_VALUE): mapreduce_control.start_map( 'ProcessOrgApp', { 'program_type': 'gsoc', 'program_key': data.program.key().name() }) return data.redirect.to('gsoc_list_org_app_records', validated=True) if post_dict.get('button_id', None) != 'save': raise exception.BadRequest(message='No valid POST data found') post_data = post_dict.get('data') if not post_data: raise exception.BadRequest(message='Missing data') parsed = json.loads(post_data) url = 'TODO(daniel): remove this part as it is not used anymore' for oaid, properties in parsed.iteritems(): record = OrgAppRecord.get_by_id(long(oaid)) if not record: logging.warning('%s is an invalid OrgAppRecord ID', oaid) continue if record.survey.key() != data.org_app.key(): logging.warning( '%s is not a record for the Org App in the URL', record.key()) continue new_status = properties['status'] org_app_logic.setStatus(data, record, new_status, url) return http.HttpResponse()
def post(self, data, check, mutator): """Edits records from commands received by the list code.""" post_dict = data.request.POST data.redirect.program() if (post_dict.get('process', '') == org_app.PROCESS_ORG_APPS_FORM_BUTTON_VALUE): mapreduce_control.start_map('ProcessOrgApp', { 'program_type': 'gci', 'program_key': data.program.key().name() }) return data.redirect.to( url_names.GCI_LIST_ORG_APP_RECORDS, validated=True) if post_dict.get('button_id', None) != 'save': raise exception.BadRequest(message='No valid POST data found') post_data = post_dict.get('data') if not post_data: raise exception.BadRequest(message='Missing data') parsed = json.loads(post_data) data.redirect.program() url = data.redirect.urlOf('create_gci_org_profile', full=True) for oaid, properties in parsed.iteritems(): record = OrgAppRecord.get_by_id(long(oaid)) if not record: logging.warning('%s is an invalid OrgAppRecord ID', oaid) continue if record.survey.key() != data.org_app.key(): logging.warning( '%s is not a record for the Org App in the URL', record.key()) continue new_status = properties['status'] org_app_logic.setStatus(data, record, new_status, url) return http.HttpResponse()