Exemplo n.º 1
0
    def testAllAdminsAreSentEmails(self):
        """Tests that all admins are sent emails if the org is accepted."""
        # list of admins to which emails should be sent
        admins = [self.profile]
        for _ in range(_ADMIN_NUMBER):
            admins.append(
                profile_utils.seedNDBProfile(self.program.key(),
                                             admin_for=[self.org.key]))

        org_logic.setStatus(self.org,
                            self.program,
                            self.site,
                            self.program.getProgramMessages(),
                            org_model.Status.ACCEPTED,
                            org_admins=admins)

        # check that acceptance / rejection email have been sent
        for admin in admins:
            self.assertEmailSent(to=admin.contact.email)

        # check that welcome emials have been sent
        for admin in admins:
            self.assertEmailSent(
                to=admin.contact.email,
                subject=profile_logic._DEF_ORG_MEMBER_WELCOME_MAIL_SUBJECT)
 def updateOrganizationStatus():
   """Transactionally updates organization status."""
   # only organizations defined for the specified program should be processed
   organization = org_key.get()
   if organization.program.to_old_key() == program_key:
     if organization.status == org_model.Status.PRE_ACCEPTED:
       org_logic.setStatus(
           organization, program, site, program_messages,
           org_model.Status.ACCEPTED, links.ABSOLUTE_LINKER, url_names,
           org_admins=org_admins)
     elif organization.status == org_model.Status.PRE_REJECTED:
       org_logic.setStatus(
           organization, program, site, program_messages,
           org_model.Status.REJECTED, links.ABSOLUTE_LINKER, url_names,
           org_admins=org_admins)
Exemplo n.º 3
0
  def testPreRejectOrganization(self):
    """Tests that organization is successfully pre-accepted."""
    org = org_logic.setStatus(
        self.org, self.program, self.site, self.program.getProgramMessages(),
        org_model.Status.PRE_REJECTED, org_admins=[self.profile])

    self.assertEqual(org.status, org_model.Status.PRE_REJECTED)
Exemplo n.º 4
0
  def testRejectOrganization(self):
    """Tests that organization is successfully rejected."""
    org = org_logic.setStatus(
        self.org, self.program, self.site, self.program.getProgramMessages(),
        org_model.Status.REJECTED, org_admins=[self.profile])

    self.assertEqual(org.status, org_model.Status.REJECTED)
    self.assertEmailSent(to=self.profile.contact.email)
Exemplo n.º 5
0
    def testPreRejectOrganization(self):
        """Tests that organization is successfully pre-accepted."""
        org = org_logic.setStatus(self.org,
                                  self.program,
                                  self.site,
                                  self.program.getProgramMessages(),
                                  org_model.Status.PRE_REJECTED,
                                  org_admins=[self.profile])

        self.assertEqual(org.status, org_model.Status.PRE_REJECTED)
Exemplo n.º 6
0
    def handle(self, data, check, mutator):
        """See form_handler.FormHandler.handle for specification."""
        post_data = data.POST.get("data")

        if not post_data:
            raise exception.BadRequest(message="Missing data.")

        parsed_data = json.loads(post_data)
        for org_key_id, properties in parsed_data.iteritems():
            org_key = ndb.Key(data.models.ndb_org_model._get_kind(), org_key_id)
            new_status = _STATUS_ID_TO_ENUM_MAP.get(properties.get("status"))
            if not new_status:
                raise exception.BadRequest(message="Missing or invalid new status in POST data.")
            else:
                organization = org_key.get()
                org_logic.setStatus(
                    organization, data.program, data.site, data.program.getProgramMessages(), new_status
                )
                return http.HttpResponse()
Exemplo n.º 7
0
    def testRejectOrganization(self):
        """Tests that organization is successfully rejected."""
        org = org_logic.setStatus(self.org,
                                  self.program,
                                  self.site,
                                  self.program.getProgramMessages(),
                                  org_model.Status.REJECTED,
                                  org_admins=[self.profile])

        self.assertEqual(org.status, org_model.Status.REJECTED)
        self.assertEmailSent(to=self.profile.contact.email)
Exemplo n.º 8
0
  def handle(self, data, check, mutator):
    """See form_handler.FormHandler.handle for specification."""
    post_data = data.POST.get('data')

    if not post_data:
      raise exception.BadRequest(message='Missing data.')

    parsed_data = json.loads(post_data)
    for org_key_id, properties in parsed_data.iteritems():
      org_key = ndb.Key(
          data.models.ndb_org_model._get_kind(), org_key_id)
      new_status = _STATUS_ID_TO_ENUM_MAP.get(properties.get('status'))
      if not new_status:
        raise exception.BadRequest(
            message='Missing or invalid new status in POST data.')
      else:
        organization = org_key.get()
        org_logic.setStatus(organization, data.program, data.site,
                            data.program.getProgramMessages(), new_status)
        return http.HttpResponse()
Exemplo n.º 9
0
  def testAcceptOrganization(self):
    """Tests that organization is successfully accepted."""
    org = org_logic.setStatus(
        self.org, self.program, self.site, self.program.getProgramMessages(),
        org_model.Status.ACCEPTED, org_admins=[self.profile])

    self.assertEqual(org.status, org_model.Status.ACCEPTED)
    self.assertEmailSent(to=self.profile.contact.email)
    self.assertEmailSent(
        to=self.profile.contact.email,
        subject=profile_logic._DEF_ORG_MEMBER_WELCOME_MAIL_SUBJECT)
Exemplo n.º 10
0
  def testAllAdminsAreSentEmails(self):
    """Tests that all admins are sent emails if the org is accepted."""
    # list of admins to which emails should be sent
    admins = [self.profile]
    for _ in range(_ADMIN_NUMBER):
      admins.append(profile_utils.seedNDBProfile(
          self.program.key(), admin_for=[self.org.key]))

    org_logic.setStatus(
        self.org, self.program, self.site, self.program.getProgramMessages(),
        org_model.Status.ACCEPTED, org_admins=admins)

    # check that acceptance / rejection email have been sent
    for admin in admins:
      self.assertEmailSent(to=admin.contact.email)

    # check that welcome emials have been sent
    for admin in admins:
      self.assertEmailSent(
          to=admin.contact.email,
          subject=profile_logic._DEF_ORG_MEMBER_WELCOME_MAIL_SUBJECT)
Exemplo n.º 11
0
    def testAcceptOrganization(self):
        """Tests that organization is successfully accepted."""
        org = org_logic.setStatus(self.org,
                                  self.program,
                                  self.site,
                                  self.program.getProgramMessages(),
                                  org_model.Status.ACCEPTED,
                                  org_admins=[self.profile])

        self.assertEqual(org.status, org_model.Status.ACCEPTED)
        self.assertEmailSent(to=self.profile.contact.email)
        self.assertEmailSent(
            to=self.profile.contact.email,
            subject=profile_logic._DEF_ORG_MEMBER_WELCOME_MAIL_SUBJECT)
Exemplo n.º 12
0
 def updateOrganizationStatus():
     """Transactionally updates organization status."""
     # only organizations defined for the specified program should be processed
     organization = org_key.get()
     if organization.program.to_old_key() == program_key:
         if organization.status == org_model.Status.PRE_ACCEPTED:
             org_logic.setStatus(organization,
                                 program,
                                 site,
                                 program_messages,
                                 org_model.Status.ACCEPTED,
                                 links.ABSOLUTE_LINKER,
                                 url_names,
                                 org_admins=org_admins)
         elif organization.status == org_model.Status.PRE_REJECTED:
             org_logic.setStatus(organization,
                                 program,
                                 site,
                                 program_messages,
                                 org_model.Status.REJECTED,
                                 links.ABSOLUTE_LINKER,
                                 url_names,
                                 org_admins=org_admins)