Exemplo n.º 1
0
def create_type(request):
    success = False
    form = EntityTypeForm(request.POST)
    if form.is_valid():
        entity_name = form.cleaned_data["entity_type_regex"]
        entity_name = [entity_name.strip().lower()]
        try:
            manager = get_database_manager(request.user)
            define_type(manager, entity_name)
            create_registration_form(manager, entity_name)
            message = _("Entity definition successful")
            success = True
            UserActivityLog().log(request,
                                  action=ADDED_SUBJECT_TYPE,
                                  detail=entity_name[0].capitalize())
        except EntityTypeAlreadyDefined:
            if request.POST["referer"] == 'project':
                message = _(
                    "%s already registered as a subject type. Please select %s from the drop down menu."
                ) % (entity_name[0], entity_name[0])
            else:
                message = _("%s already registered as a subject type.") % (
                    entity_name[0], )
    else:
        message = form.errors['entity_type_regex']
    return HttpResponse(json.dumps({
        'success': success,
        'message': _(message)
    }))
Exemplo n.º 2
0
def create_type(request):
    success = False
    form = EntityTypeForm(request.POST)
    if form.is_valid():
        entity_name = form.cleaned_data["entity_type_regex"]
        entity_name = [entity_name.strip().lower()]
        try:
            manager = get_database_manager(request.user)

            if entity_type_already_defined(manager, entity_name):
                raise EntityTypeAlreadyDefined(u"Type: %s is already defined" %
                                               u'.'.join(entity_name))

            create_registration_form(manager, entity_name)
            define_type(manager, entity_name)
            message = _("Entity definition successful")
            success = True
            UserActivityLog().log(request,
                                  action=ADDED_IDENTIFICATION_NUMBER_TYPE,
                                  project=entity_name[0].capitalize())
        except EntityTypeAlreadyDefined:
            message = _("%s already exists.") % (entity_name[0].capitalize(), )
    else:
        message = form.errors['entity_type_regex']
    return HttpResponse(json.dumps({
        'success': success,
        'message': _(message)
    }))
Exemplo n.º 3
0
 def test_should_import_subjects_with_form_code(self):
     file_name = "reporters.csv"
     request = Mock()
     request.GET = {'qqfile': file_name}
     request.raw_post_data = self.csv_subjects_data
     organization = Mock(spec=Organization)
     entity_type = "clinic"
     define_type(self.manager, [entity_type])
     self.create_form_for_entity_type()
     with patch("datawinners.utils.get_organization_from_manager"
                ) as get_organization_from_dbm_mock:
         get_organization_from_dbm_mock.return_value = Mock(
             return_value=organization)
         with patch(
                 "datawinners.utils.get_organization") as get_organization:
             mock = Mock(return_value=organization)
             mock.org_id = 'abc'
             get_organization.return_value = mock
             error_message, failure_imports, success_message, imported_entities = import_data(
                 request=request, manager=self.manager, form_code=FORM_CODE)
             self.assertEqual(
                 4,
                 get_entity_count_for_type(self.manager,
                                           entity_type=entity_type))
             self.assertEqual(4, len(imported_entities))
             self.assertEqual(entity_type, imported_entities["cli1"])
             self.assertEqual(entity_type, imported_entities["cli2"])
             self.assertEqual(entity_type, imported_entities["cli3"])
             self.assertEqual(entity_type, imported_entities["cli4"])
Exemplo n.º 4
0
    def setUp(self):
        MangroveTestCase.setUp(self)
        define_type(self.manager, ["reporter"])
        #Register Reporter
        self.first_reporter = self.register(self.manager,
            data=[(MOBILE_NUMBER_FIELD, "1234567890"),
                  (NAME_FIELD, "A")],
            location=[],
            source="sms", short_code="REP1")
        self.register(self.manager,
            data=[(MOBILE_NUMBER_FIELD, "8888567890"),
                  (NAME_FIELD, "B")],
            location=[],
            source="sms", short_code="rep5")
        self.register(self.manager,
            data=[(MOBILE_NUMBER_FIELD, "1234567890"),
                  (NAME_FIELD, "B")],
            location=[],
            source="sms", short_code="REP2")

        self.register(self.manager,
            data=[(MOBILE_NUMBER_FIELD, "1234567891"),
                  (NAME_FIELD, "C")],
            location=[],
            source="sms", short_code="REP3")
Exemplo n.º 5
0
def create_entity_types(manager, entity_types):
    for entity_type in entity_types:
        try:
            define_type(manager, entity_type)
            activate(DEFAULT_LANGUAGE)
            create_registration_form(manager, entity_type)
        except EntityTypeAlreadyDefined:
            pass
Exemplo n.º 6
0
 def test_should_delete_entity_type(self):
     entity_type = ["clinic", "Clinic"]
     entity_types = get_all_entity_types(self.dbm)
     self.assertNotIn(entity_type, entity_types)
     define_type(self.dbm, entity_type)
     delete_type(self.dbm, entity_type)
     types = get_all_entity_types(self.dbm)
     self.assertNotIn(entity_type, types)
Exemplo n.º 7
0
    def build(self):
        if not entity_type_already_defined(self._manager, self._entity_type):
            define_type(self._manager, self._entity_type)

        entity = self.create_or_update_entity(self._manager, entity_type=self._entity_type, short_code=self._short_code,
            aggregation_paths=self._aggregation_paths, location=self._location, geometry=self._geometry)
        for each in self._data: entity.add_data(each)
        return entity
Exemplo n.º 8
0
    def build(self):
        if not entity_type_already_defined(self._manager, self._entity_type):
            define_type(self._manager, self._entity_type)

        self.form_model = FormModel(self._manager, name=self._name, label=self._label,
            form_code=self._form_code, fields=self._fields, is_registration_model=self._is_reg)
        form_model_id = self.form_model.save()
        return FormModel.get(self._manager, form_model_id)
Exemplo n.º 9
0
 def _create_default_dd_type(self):
     self.entity_type = ["HealthFacility", "Clinic"]
     define_type(self.manager, ["HealthFacility", "Clinic"])
     self.default_ddtype = DataDictType(self.manager,
                                        name='Default String Datadict Type',
                                        slug='string_default',
                                        primitive_type='string')
     self.default_ddtype.save()
Exemplo n.º 10
0
 def test_should_define_entity_type(self):
     entity_type = ["HealthFacility", "Clinic"]
     entity_types = get_all_entity_types(self.dbm)
     self.assertNotIn(entity_type, entity_types)
     define_type(self.dbm, entity_type)
     types = get_all_entity_types(self.dbm)
     self.assertIn(entity_type, types)
     self.assertIn([entity_type[0]], types)
Exemplo n.º 11
0
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
Exemplo n.º 12
0
 def test_should_import_subjects_with_wrong_form_code(self):
     file_name = "reporters.csv"
     request = Mock()
     request.GET = {'qqfile': file_name}
     request.raw_post_data = self.csv_subjects_data_with_error_form_code
     organization = Mock(spec=Organization)
     entity_type = "clinic"
     define_type(self.manager, [entity_type])
     self.create_form_for_entity_type()
     with patch("datawinners.utils.get_organization_from_manager") as get_organization_from_dbm_mock:
         get_organization_from_dbm_mock.return_value = Mock(return_value=organization)
         with patch("datawinners.entity.import_data.get_organization") as get_organization:
             mock = Mock( return_value=organization )
             mock.org_id = 'abc'
             get_organization.return_value = mock
             error_message, failure_imports, success_message, imported_entities = import_data(request=request, manager = self.manager, form_code=FORM_CODE )
             self.assertEqual(0, len(imported_entities))
             self.assertEqual('The file you are uploading is not a list of [clinic]. Please check and upload again.', error_message)
Exemplo n.º 13
0
    def test_should_load_all_entity_types(self):
        define_type(self.dbm, ["HealthFacility", "Clinic"])
        define_type(self.dbm, ["HealthFacility", "Hospital"])
        define_type(self.dbm, ["WaterPoint", "Lake"])
        define_type(self.dbm, ["WaterPoint", "Dam"])
        entity_types = get_all_entity_types(self.dbm)

        expected = [['HealthFacility'], ['HealthFacility', 'Clinic'],
                    ['HealthFacility', 'Hospital'], ['WaterPoint'],
                    ['WaterPoint', 'Lake'], ['WaterPoint', 'Dam']]

        for e in expected:
            self.assertIn(e, entity_types)
Exemplo n.º 14
0
 def _create_entities(self):
     self.entity_type = ['clinic']
     define_type(self.manager, self.entity_type)
     create_registration_form(self.manager, self.entity_type)
     self.entity_type = ['waterpoint']
     define_type(self.manager, self.entity_type)
     create_registration_form(self.manager, self.entity_type)
     define_type(self.manager, ['reporter'])
     self.name_type = DataDictType(self.manager, name='Name', slug='name', primitive_type='string')
     self.telephone_number_type = DataDictType(self.manager, name='telephone_number', slug='telephone_number',
                                               primitive_type='string')
     rep1 = create_entity(self.manager, ['reporter'], 'rep1')
     rep1.add_data(data=[(MOBILE_NUMBER_FIELD, '1234', self.telephone_number_type),
         (NAME_FIELD, "Test_reporter", self.name_type)], submission=dict(submission_id="2"))
Exemplo n.º 15
0
 def test_get_entity_count_for_type(self):
     entity_type = ["Clinic"]
     define_type(self.manager, entity_type)
     create_entity(self.manager, entity_type, "1").save()
     self.assertEqual(1, get_entity_count_for_type(self.manager,
                                                   entity_type))
Exemplo n.º 16
0
def safe_define_type(manager,  type):
    try:
        define_type(manager, type)
    except EntityTypeAlreadyDefined:
        pass
Exemplo n.º 17
0
 def test_should_define_single_entity(self):
     define_type(self.dbm, ["Clinic"])
     entity_types = get_all_entity_types(self.dbm)
     self.assertListEqual(entity_types, [["Clinic"]])
Exemplo n.º 18
0
 def test_should_disallow_redefining_the_same_entity_with_different_case(
         self):
     define_type(self.dbm, ["HealthFacility", "Clinic"])
     with self.assertRaises(EntityTypeAlreadyDefined):
         define_type(self.dbm, ["healTHfaciLIty", "clinic"])
Exemplo n.º 19
0
 def test_get_entity_count_for_type_as_string(self):
     entity_type = "Clinic"
     define_type(self.manager, [entity_type])
     create_entity(self.manager, [entity_type], "1").save()
     self.assertEqual(1, get_entity_count_for_type(self.manager,
                                                   entity_type))
Exemplo n.º 20
0
def _create_entity_types(manager, entity_types):
    for entity_type in entity_types:
        try:
            define_type(manager, entity_type)
        except EntityTypeAlreadyDefined:
            pass
Exemplo n.º 21
0
def create_identification_number_type(db_name, entity_type, no_of_questions):
    dbm = get_db_manager(db_name)
    define_type(dbm, [entity_type])
    form_model = _create_registration_form(dbm, entity_type, no_of_questions)
    form_model.save()
    entity_form_model_change_handler(form_model._doc, dbm)
Exemplo n.º 22
0
    def setUp(self):
        MangroveTestCase.setUp(self)
        initializer.run(self.manager)
        define_type(self.manager, ["dog"])
        self.entity_type = ["clinic"]
        define_type(self.manager, self.entity_type)

        self.entity = create_entity(
            self.manager,
            entity_type=self.entity_type,
            location=["India", "Pune"],
            aggregation_paths=None,
            short_code="cli1",
        )
        self.data_record_id = self.entity.add_data(
            data=[("Name", "Ruby")], submission=dict(submission_id="1"))

        self.reporter = create_entity(
            self.manager,
            entity_type=["reporter"],
            location=["India", "Pune"],
            aggregation_paths=None,
            short_code="rep1",
        )
        self.reporter.add_data(data=[(MOBILE_NUMBER_FIELD, '1234'),
                                     (NAME_FIELD, "Test_reporter")],
                               submission=dict(submission_id="2"))

        #Web submission Form Model
        question1 = UniqueIdField(unique_id_type='clinic',
                                  name="entity_question",
                                  code="EID",
                                  label="What is associated entity")
        question2 = TextField(name="Name",
                              code="NAME",
                              label="Clinic Name",
                              defaultValue="some default value",
                              constraints=[TextLengthConstraint(4, 15)],
                              required=False)
        question3 = IntegerField(
            name="Arv stock",
            code="ARV",
            label="ARV Stock",
            constraints=[NumericRangeConstraint(min=15, max=120)],
            required=False)
        question4 = SelectField(name="Color",
                                code="COL",
                                label="Color",
                                options=[("RED", 1), ("YELLOW", 2)],
                                required=False)
        self.form_model = FormModel(
            self.manager,
            name="aids",
            label="Aids form_model",
            form_code="clinic",
            fields=[question1, question2, question3, question4])
        self.form_model.save()

        #Activity Report Form Model
        question1 = UniqueIdField(unique_id_type='reporter',
                                  name="entity_question",
                                  code="EID",
                                  label="What is associated entity")
        question2 = TextField(name="Name",
                              code="NAME",
                              label="Clinic Name",
                              defaultValue="some default value",
                              constraints=[TextLengthConstraint(4, 15)])
        question3 = IntegerField(
            name="Arv stock",
            code="ARV",
            label="ARV Stock",
            constraints=[NumericRangeConstraint(min=15, max=120)])
        activity_report = FormModel(self.manager,
                                    name="report",
                                    label="reporting form_model",
                                    form_code="acp",
                                    fields=[question1, question2, question3])
        activity_report.save()

        self.web_player = WebPlayerV2(self.manager)
Exemplo n.º 23
0
 def test_should_throw_assertionError_if_entity_type_is_not_list(self):
     with self.assertRaises(AssertionError):
         entity_type = "HealthFacility"
         define_type(self.dbm, entity_type)
Exemplo n.º 24
0
 def test_should_disallow_redefining_the_same_entity(self):
     define_type(self.dbm, ["HealthFacility", "Clinic"])
     with self.assertRaises(EntityTypeAlreadyDefined):
         define_type(self.dbm, ["HealthFacility", "Clinic"])
 def CreateSchoolEntityType(self):
     define_type(self.manager, self.entity_type)
     print "Entity Type is", self.entity_type