Beispiel #1
0
    def setUpClass(cls):
        cls.manager = get_db_manager('http://localhost:5984/', 'mangrove-test')
        _delete_db_and_remove_db_manager(cls.manager)
        cls.manager = get_db_manager('http://localhost:5984/', 'mangrove-test')
        initializer._create_views(cls.manager)

        cls.org_id = 'SLX364903'
        cls._prepare_sms_data_senders()
        cls.test_ds_id = get_by_short_code_include_voided(
            cls.manager, "test", REPORTER_ENTITY_TYPE).id
        deleted_ds = get_by_short_code_include_voided(cls.manager, "del1",
                                                      REPORTER_ENTITY_TYPE)
        deleted_ds.void()
        cls.deleted_ds_id = deleted_ds.id
Beispiel #2
0
def migrate_entity(manager, form_model, datarecord_doc, data_to_restore):
    submission_log_doc = manager.database.query(
        map_submission_log_datarecord_id,
        key=[datarecord_doc['value']['_id'], form_model.revision])
    if len(submission_log_doc.rows):
        submission_log = get_instance_from_doc(
            manager,
            submission_log_doc.rows[0]['value'],
            classname=Submission,
            documentclassname=SubmissionLogDocument)
        entity_uid = datarecord_doc['value']['data']['short_code']['value']
        entity = get_by_short_code_include_voided(manager, entity_uid,
                                                  form_model.entity_type)
        cleaned_data, errors = form_model.validate_submission(
            values=submission_log.values)

        if len(errors):
            logging.info('Error on submission: %s' % submission_log.id)
            return

        data = [(form_model._get_field_by_code(code).name,
                 cleaned_data.get(code),
                 form_model._get_field_by_code(code).ddtype)
                for code in data_to_restore]

        entity.update_latest_data(data)
        entity.save()
Beispiel #3
0
def delete_datasender_for_trial_mode(manager, all_ids, entity_type):
    for entity_id in all_ids:
        entity_to_be_deleted = get_by_short_code_include_voided(
            manager, entity_id, [entity_type])
        DataSenderOnTrialAccount.objects.get(
            mobile_number=entity_to_be_deleted.value(
                MOBILE_NUMBER_FIELD)).delete()
Beispiel #4
0
    def setUpClass(cls):
        EntityDocument.registered_functions = []
        database_name = uniq('mangrove-test')
        cls.manager = get_db_manager('http://localhost:5984/', database_name)
        _delete_db_and_remove_db_manager(cls.manager)
        cls.manager = get_db_manager('http://localhost:5984/', database_name)
        initializer._create_views(cls.manager)

        cls.org_id = 'SLX364903'
        cls._prepare_sms_data_senders()
        cls.test_ds_id = get_by_short_code_include_voided(
            cls.manager, "test", REPORTER_ENTITY_TYPE).id
        deleted_ds = get_by_short_code_include_voided(cls.manager, "del1",
                                                      REPORTER_ENTITY_TYPE)
        deleted_ds.void()
        cls.deleted_ds_id = deleted_ds.id
Beispiel #5
0
def lookup_entity_name(dbm, id, entity_type):
    try:
        if id:
            return get_by_short_code_include_voided(dbm, id, entity_type).value("name")
    except DataObjectNotFound:
        pass
    return " "
def add_email_data_to_entity_document(manager, short_code, data, logger):
    datasender = get_by_short_code_include_voided(manager, short_code, REPORTER_ENTITY_TYPE)
    if "email" not in datasender.data.keys():
        datasender.update_latest_data([data])
        logger.info('migrated: short_code: %s'%short_code)
    else:
        logger.info('Already migrated')
def register_datasender(dbm):
    define_type(dbm, ["reporter"])
    TestReporter.register(dbm,
                          data=[(MOBILE_NUMBER_FIELD, "1234567890"),
                                (NAME_FIELD, "B")],
                          location=None,
                          source="sms",
                          short_code="rep2")

    return get_by_short_code_include_voided(dbm, "rep2", REPORTER_ENTITY_TYPE).id
Beispiel #8
0
 def test_should_return_data_sender_information_send_from_web(self):
     beany_tester_id = get_by_short_code_include_voided(
         TestDataSenderHelper.manager, "rep1", REPORTER_ENTITY_TYPE).id
     survey_response = SurveyResponse(TestDataSenderHelper.manager,
                                      TransportInfo(
                                          "web", "*****@*****.**",
                                          "destination"),
                                      owner_uid=beany_tester_id)
     data_sender = get_data_sender(TestDataSenderHelper.manager,
                                   survey_response)
     self.assertEqual(("Beany", "rep1", data_sender[2]), data_sender)
Beispiel #9
0
def _generate_short_code(dbm, entity_type):
    current_count = get_entity_count_for_type(dbm, entity_type.lower())
    entity_type_prefix = entity_type.lower().replace(" ", "")[:3] + "%s"
    offset = 1
    while True:
        short_code = entity_type_prefix % (current_count + offset)
        try:
            entity = get_by_short_code_include_voided(dbm, short_code, [entity_type])
            if entity:
                offset += 1
        except DataObjectNotFound as ignore:
            return short_code
Beispiel #10
0
def create_default_reporter(manager):
    try:
        entity = get_by_short_code_include_voided(manager, REPORTER_SHORT_CODE,
                                                  REPORTER_ENTITY_TYPE)
        entity.delete()
    except DataObjectNotFound:
        pass
    entity = create_contact(dbm=manager,
                            short_code=REPORTER_SHORT_CODE,
                            location=DEFAULT_LOCATION)

    data = [(MOBILE_NUMBER_FIELD, TEST_REPORTER_MOBILE_NUMBER),
            (NAME_FIELD, 'TEST')]
    entity.add_data(data=data)
Beispiel #11
0
def lookup_entity(dbm, key, entity_type):
    try:
        if key:
            data_dict = {}
            entity_type_info = get_entity_type_info(entity_type, dbm)
            names_to_codes_map = {}
            for name, code in zip(entity_type_info['names'],
                                  entity_type_info['codes']):
                names_to_codes_map[name] = code
            data = get_by_short_code_include_voided(dbm, key,
                                                    entity_type).data_value()
            for key, value in data.iteritems():
                if names_to_codes_map.get(key):
                    data_dict[names_to_codes_map[key]] = value['value']
            return data_dict
    except DataObjectNotFound:
        pass
    return {'q2': " "}
def _delete_user_entry(profiles):
    user_profile = profiles[0]
    profile_reporter_id = user_profile.reporter_id

    if profile_reporter_id.lower() == profile_reporter_id:
        print "Not deleting user since the reporter id is already lowercase."
    else:
        entity_to_be_deleted = get_by_short_code_include_voided(
            dbm, profile_reporter_id.lower(), ['reporter'])
        print "User void status:%s" % entity_to_be_deleted.is_void()
        if entity_to_be_deleted.is_void():
            print "Deleting user."
            user_profile.user.delete()
            if organization.in_trial_mode:
                delete_datasender_for_trial_mode(dbm,
                                                 [profile_reporter_id.lower()],
                                                 'reporter')
        else:
            print "Not deleting user since it is not soft deleted."
Beispiel #13
0
def register_datasender(manager):
    phone_number_type = create_data_dict(manager,
                                         name='Telephone Number',
                                         slug='telephone_number',
                                         primitive_type='string')
    first_name_type = create_data_dict(manager,
                                       name='First Name',
                                       slug='first_name',
                                       primitive_type='string')
    coordinates = {
        "type": "Point",
        "coordinates": [-21.0399440737, 45.2363669927]
    }
    location = [u'Madagascar', u'Menabe', u'Mahabo', u'Beronono']
    register(manager, REPORTER_ENTITY_TYPE,
             [(MOBILE_NUMBER_FIELD, "1234567890", phone_number_type),
              (NAME_FIELD, "Tester 150411", first_name_type)], location,
             "rep276", coordinates)
    return get_by_short_code_include_voided(manager, "rep276",
                                            REPORTER_ENTITY_TYPE).id
Beispiel #14
0
def create_default_reporter(manager):
    try:
        entity = get_by_short_code_include_voided(manager, REPORTER_SHORT_CODE,
                                                  REPORTER_ENTITY_TYPE)
        entity.delete()
    except DataObjectNotFound:
        pass
    entity = create_entity(dbm=manager,
                           entity_type=REPORTER_ENTITY_TYPE,
                           short_code=REPORTER_SHORT_CODE,
                           location=DEFAULT_LOCATION)

    mobile_number_type = get_or_create_data_dict(manager,
                                                 name='Mobile Number Type',
                                                 slug='mobile_number',
                                                 primitive_type='string')
    name_type = get_or_create_data_dict(manager,
                                        name='Name',
                                        slug='name',
                                        primitive_type='string')

    data = [(MOBILE_NUMBER_FIELD, TEST_REPORTER_MOBILE_NUMBER,
             mobile_number_type), (NAME_FIELD, 'TEST', name_type)]
    entity.add_data(data=data)
Beispiel #15
0
def check_if_subject_exists(dbm, subject_short_code, subject_type):
    try:
        get_by_short_code_include_voided(dbm, subject_short_code, subject_type)
        return True
    except DataObjectNotFound:
        return False
def get_data_sender_by_reporter_id(dbm, reporter_id):
    return get_by_short_code_include_voided(dbm, reporter_id, REPORTER_ENTITY_TYPE)