예제 #1
0
def unique(dbm, telephone_number):
    telephone_number = remove_hyphens(telephone_number)
    try:
        find_reporter_entity(dbm, telephone_number)
    except NumberNotRegisteredException:
        return True
    return False
예제 #2
0
파일: player.py 프로젝트: mariot/mangrove
    def entity_api(self, request, logger):
        form_code, values, extra_elements = self._parse(request.message)
        post_sms_processor_response = self._process_post_parse_callback(
            form_code, values, extra_elements)

        log_entry = "message:message " + repr(
            request.message) + "|source: " + request.transport.source + "|"

        if post_sms_processor_response is not None:
            if logger is not None:
                log_entry += "Status: False"
                logger.info(log_entry)
            post_sms_processor_response.is_registration = True
            return post_sms_processor_response

        reporter_entity = reporters.find_reporter_entity(
            self.dbm, request.transport.source)
        form_model, values = self._process(values, form_code, reporter_entity)
        reporter_entity_names = [{
            NAME_FIELD: reporter_entity.value(NAME_FIELD)
        }]
        response = self.submit(form_model, values, reporter_entity_names)
        if logger is not None:
            log_entry += "Status: True" if response.success else "Status: False"
            logger.info(log_entry)
        return response
    def test_should_create_organization_setting_with_document_store_on_create_organization(
            self):
        c = Client()
        reg_post = dict(
            email="*****@*****.**",
            first_name="first_name",
            last_name="last",
            organization_addressline1="x",
            organization_addressline2="y",
            organization_city="city",
            organization_country="country",
            organization_name="TEST_ORG_NAME",
            organization_office_phone="",
            organization_sector="PublicHealth",
            organization_state="state",
            organization_website="",
            organization_zipcode="zip",
            password1="a",
            password2="a",
            title="",
        )
        response = c.post('/register/', reg_post)
        self.assertIsNotNone(response)

        user = User.objects.get(email='*****@*****.**')
        profile = RegistrationProfile.objects.get(user=user)
        activation_key = profile.activation_key
        response = c.post('/activate/%s/' % activation_key)
        self.assertIsNotNone(response)

        organization = Organization.objects.get(name="TEST_ORG_NAME")
        organization_settings = OrganizationSetting.objects.get(
            organization=organization)
        organization_db_name = organization_settings.document_store

        expected_org_db_name = ("hni_test_org_name_%s" %
                                (organization.org_id, )).lower()
        self.assertEqual(expected_org_db_name, organization_db_name)

        couch_server = couchdb.client.Server(settings.COUCH_DB_SERVER)
        couch_server.resource.credentials = settings.COUCHDB_CREDENTIALS

        org_db = None
        try:
            org_db = couch_server[organization_db_name]
        except Exception:
            self.fail("Organization database %s not created" %
                      (organization_db_name, ))
        self.assertIsNotNone(org_db)

        manager = get_db_manager(organization_db_name)
        test_reporter = reporters.find_reporter_entity(
            manager, TEST_REPORTER_MOBILE_NUMBER)
        self.assertIsNotNone(test_reporter)

        #clean up the org db
        del couch_server[organization_db_name]
예제 #4
0
    def test_should_return_even_there_is_plus_leading_to_incoming_number(self):
        def return_x(dbm, number):
            return [number]

        with patch(
                "mangrove.transport.repository.reporters.find_reporters_by_from_number"
        ) as find_ds_by_from:
            find_ds_by_from.side_effect = return_x

            reporter = find_reporter_entity(Mock(), "+23242432")
            self.assertEqual(reporter, "23242432")
예제 #5
0
def check_account_and_datasender(incoming_request):
    organization = incoming_request['organization']

    if organization.status == 'Deactivated' or organization.is_expired():
        incoming_request['outgoing_message'] = ''
        return incoming_request

    try:
        reporter_entity = find_reporter_entity(incoming_request.get('dbm'),
                                               incoming_request.get('transport_info').source)
        incoming_request['reporter_entity'] = reporter_entity
        if organization.in_trial_mode:
            check_quotas_for_trial(organization)

    except Exception as e:
        incoming_request['exception'] = e

    incoming_request['next_state'] = submit_to_player
    return incoming_request
예제 #6
0
    def add_survey_response(self,
                            request,
                            logger=None,
                            additional_feed_dictionary=None,
                            translation_processor=None):
        form_code, values, extra_elements = self._parse(request.message)
        post_sms_processor_response = self._post_parse_processor(
            form_code, values, extra_elements)

        if post_sms_processor_response is not None and not post_sms_processor_response.success:
            if logger is not None:
                log_entry = "message:message " + repr(
                    request.message
                ) + "|source: " + request.transport.source + "|"
                log_entry += "Status: False"
                logger.info(log_entry)
            return post_sms_processor_response

        try:
            reporter_entity = reporters.find_reporter_entity(
                self.dbm, request.transport.source)
            reporter_entity_names = self._get_reporter_name(reporter_entity)
            reporter_short_code = reporter_entity.short_code
        except NumberNotRegisteredException:
            reporter_short_code = None
            reporter_entity_names = None

        service = SurveyResponseService(self.dbm,
                                        logger,
                                        self.feeds_dbm,
                                        response=post_sms_processor_response)
        return service.save_survey(
            form_code,
            values,
            reporter_entity_names,
            request.transport,
            reporter_short_code,
            additional_feed_dictionary=additional_feed_dictionary,
            translation_processor=translation_processor)