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)
Example #2
0
    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)
Example #4
0
    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)
Example #5
0
  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')
Example #6
0
    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")
Example #7
0
    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()
Example #8
0
  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()