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)
 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)
Example #3
0
 def setUp(self):
     self.dbm = get_db_manager(database='mangrove-test')
     define_type(self.dbm, ["Reporter"])
     reporter = Entity(self.dbm, entity_type=["Reporter"], location=["Pune", "India"], short_code="REPX")
     reporter.save()
     reporter = Entity(self.dbm, entity_type=["Reporter"], location=["Pune", "India"], short_code="REP1")
     reporter.save()
     reporter = Entity(self.dbm, entity_type=["Reporter"], location=["Pune", "India"], short_code="REP2")
     reporter.save()
 def _create_entities(self):
     self.entity_type = ['clinic']
     define_type(self.dbm, self.entity_type)
     define_type(self.dbm, ['reporter'])
     self.name_type = DataDictType(self.dbm, name='Name', slug='name', primitive_type='string')
     self.telephone_number_type = DataDictType(self.dbm, name='telephone_number', slug='telephone_number',
                                               primitive_type='string')
     rep1 = create_entity(self.dbm, ['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"))
Example #5
0
    def setUp(self):
        self.dbm = get_db_manager(database='mangrove-test')
        initializer.run(self.dbm)
        define_type(self.dbm, ["dog"])
        self.entity_type = ["healthfacility", "clinic"]
        define_type(self.dbm, self.entity_type)
        self.name_type = DataDictType(self.dbm, name='Name', slug='name', primitive_type='string')
        self.telephone_number_type = DataDictType(self.dbm, name='telephone_number', slug='telephone_number',
                                                  primitive_type='string')
        self.entity_id_type = DataDictType(self.dbm, name='Entity Id Type', slug='entity_id', primitive_type='string')
        self.stock_type = DataDictType(self.dbm, name='Stock Type', slug='stock', primitive_type='integer')
        self.color_type = DataDictType(self.dbm, name='Color Type', slug='color', primitive_type='string')

        self.name_type.save()
        self.telephone_number_type.save()
        self.stock_type.save()
        self.color_type.save()

        self.entity = create_entity(self.dbm, 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", self.name_type)],
                                                   submission=dict(submission_id="1"))

        self.reporter = create_entity(self.dbm, entity_type=["reporter"],
                                      location=["India", "Pune"], aggregation_paths=None, short_code="rep1",
                                      )

        self.reporter.add_data(data=[(MOBILE_NUMBER_FIELD, '1234', self.telephone_number_type),
                (NAME_FIELD, "Test_reporter", self.name_type)], submission=dict(submission_id="2"))

        question1 = TextField(name="entity_question", code="EID", label="What is associated entity",
                              language="eng", entity_question_flag=True, ddtype=self.entity_id_type)
        question2 = TextField(name="Name", code="NAME", label="Clinic Name",
                              defaultValue="some default value", language="eng", length=TextConstraint(4, 15),
                              ddtype=self.name_type)
        question3 = IntegerField(name="Arv stock", code="ARV", label="ARV Stock",
                                 range=NumericConstraint(min=15, max=120), ddtype=self.stock_type)
        question4 = SelectField(name="Color", code="COL", label="Color",
                                options=[("RED", 1), ("YELLOW", 2)], ddtype=self.color_type)

        self.form_model = FormModel(self.dbm, entity_type=self.entity_type, name="aids", label="Aids form_model",
                                    form_code="clinic", type='survey', fields=[question1, question2, question3])
        self.form_model.add_field(question4)
        self.form_model__id = self.form_model.save()

        self.submission_handler = SubmissionHandler(self.dbm)
        self.sms_player = SMSPlayer(self.dbm, self.submission_handler, LocationTree())
Example #6
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.lower()]
        try:
            manager = get_database_manager(request)
            define_type(manager, entity_name)
            message = "Entity definition successful"
            success = True
        except EntityTypeAlreadyDefined:
            message = "This subject has already been added."
    else:
        message = form.fields['entity_type_regex'].error_messages['invalid']
    return HttpResponse(json.dumps({'success': success, 'message': message}))
Example #7
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.lower()]
        try:
            manager = get_database_manager(request)
            define_type(manager, entity_name)
            message = "Entity definition successful"
            success = True
        except EntityTypeAlreadyDefined:
            message = "This subject has already been added."
    else:
        message = form.fields['entity_type_regex'].error_messages['invalid']
    return HttpResponse(json.dumps({'success': success, 'message': message}))
 def _create_entities(self):
     self.entity_type = ['clinic']
     define_type(self.dbm, self.entity_type)
     define_type(self.dbm, ['reporter'])
     self.name_type = DataDictType(self.dbm,
                                   name='Name',
                                   slug='name',
                                   primitive_type='string')
     self.telephone_number_type = DataDictType(self.dbm,
                                               name='telephone_number',
                                               slug='telephone_number',
                                               primitive_type='string')
     rep1 = create_entity(self.dbm, ['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"))
Example #9
0
 def setUp(self):
     self.dbm = get_db_manager(database='mangrove-test')
     define_type(self.dbm, ["Reporter"])
     reporter = Entity(self.dbm,
                       entity_type=["Reporter"],
                       location=["Pune", "India"],
                       short_code="REPX")
     reporter.save()
     reporter = Entity(self.dbm,
                       entity_type=["Reporter"],
                       location=["Pune", "India"],
                       short_code="REP1")
     reporter.save()
     reporter = Entity(self.dbm,
                       entity_type=["Reporter"],
                       location=["Pune", "India"],
                       short_code="REP2")
     reporter.save()
Example #10
0
 def _create_form_model(self):
     self.entity_type = ["HealthFacility", "Clinic"]
     define_type(self.dbm, ["HealthFacility", "Clinic"])
     self.default_ddtype = DataDictType(self.dbm, name='Default String Datadict Type', slug='string_default',
                                        primitive_type='string')
     self.default_ddtype.save()
     question1 = TextField(name="entity_question", code="ID", label="What is associated entity",
                           language="eng", entity_question_flag=True, ddtype=self.default_ddtype)
     question2 = TextField(name="question1_Name", code="Q1", label="What is your name",
                           defaultValue="some default value", language="eng", length=TextConstraint(5, 10),
                           ddtype=self.default_ddtype)
     question3 = IntegerField(name="Father's age", code="Q2", label="What is your Father's Age",
                              range=NumericConstraint(min=15, max=120), ddtype=self.default_ddtype)
     question4 = SelectField(name="Color", code="Q3", label="What is your favourite color",
                             options=[("RED", 1), ("YELLOW", 2)], ddtype=self.default_ddtype)
     self.form_model = FormModel(self.dbm, entity_type=self.entity_type, name="aids", label="Aids form_model",
                                 form_code="1", type='survey', fields=[
             question1, question2, question3, question4])
     self.form_model__id = self.form_model.save()
Example #11
0
 def _create_form_model(self):
     self.entity_type = ["HealthFacility", "Clinic"]
     define_type(self.dbm, ["HealthFacility", "Clinic"])
     self.default_ddtype = DataDictType(self.dbm,
                                        name='Default String Datadict Type',
                                        slug='string_default',
                                        primitive_type='string')
     self.default_ddtype.save()
     question1 = TextField(name="entity_question",
                           code="ID",
                           label="What is associated entity",
                           language="eng",
                           entity_question_flag=True,
                           ddtype=self.default_ddtype)
     question2 = TextField(name="question1_Name",
                           code="Q1",
                           label="What is your name",
                           defaultValue="some default value",
                           language="eng",
                           length=TextConstraint(5, 10),
                           ddtype=self.default_ddtype)
     question3 = IntegerField(name="Father's age",
                              code="Q2",
                              label="What is your Father's Age",
                              range=NumericConstraint(min=15, max=120),
                              ddtype=self.default_ddtype)
     question4 = SelectField(name="Color",
                             code="Q3",
                             label="What is your favourite color",
                             options=[("RED", 1), ("YELLOW", 2)],
                             ddtype=self.default_ddtype)
     self.form_model = FormModel(
         self.dbm,
         entity_type=self.entity_type,
         name="aids",
         label="Aids form_model",
         form_code="1",
         type='survey',
         fields=[question1, question2, question3, question4])
     self.form_model__id = self.form_model.save()
Example #12
0
 def setUp(self):
     self.manager = get_db_manager('http://localhost:5984/', 'mangrove-test')
     define_type(self.manager, ["reporter"])
     self.phone_number_type = DataDictType(self.manager, name='Telephone Number', slug='telephone_number',
                                           primitive_type='string')
     self.first_name_type = DataDictType(self.manager, name='First Name', slug='first_name',
                                         primitive_type='string')
     #Register Reporter
     self.register(self.manager, entity_type=["reporter"],
                   data=[(MOBILE_NUMBER_FIELD, "1234567890", self.phone_number_type),
                           (NAME_FIELD, "A", self.first_name_type)],
                   location=[],
                   source="sms", short_code="REP1")
     self.register(self.manager, entity_type=["reporter"],
                   data=[(MOBILE_NUMBER_FIELD, "8888567890", self.phone_number_type),
                           (NAME_FIELD, "B", self.first_name_type)],
                   location=[],
                   source="sms", short_code="rep5")
     self.register(self.manager, entity_type=["reporter"],
                   data=[(MOBILE_NUMBER_FIELD, "1234567890", self.phone_number_type),
                           (NAME_FIELD, "B", self.first_name_type)],
                   location=[],
                   source="sms", short_code="REP2")
Example #13
0
 def setUp(self):
     self.manager = get_db_manager('http://localhost:5984/',
                                   'mangrove-test')
     define_type(self.manager, ["reporter"])
     self.phone_number_type = DataDictType(self.manager,
                                           name='Telephone Number',
                                           slug='telephone_number',
                                           primitive_type='string')
     self.first_name_type = DataDictType(self.manager,
                                         name='First Name',
                                         slug='first_name',
                                         primitive_type='string')
     #Register Reporter
     self.register(self.manager,
                   entity_type=["reporter"],
                   data=[(MOBILE_NUMBER_FIELD, "1234567890",
                          self.phone_number_type),
                         (NAME_FIELD, "A", self.first_name_type)],
                   location=[],
                   source="sms",
                   short_code="REP1")
     self.register(self.manager,
                   entity_type=["reporter"],
                   data=[(MOBILE_NUMBER_FIELD, "8888567890",
                          self.phone_number_type),
                         (NAME_FIELD, "B", self.first_name_type)],
                   location=[],
                   source="sms",
                   short_code="rep5")
     self.register(self.manager,
                   entity_type=["reporter"],
                   data=[(MOBILE_NUMBER_FIELD, "1234567890",
                          self.phone_number_type),
                         (NAME_FIELD, "B", self.first_name_type)],
                   location=[],
                   source="sms",
                   short_code="REP2")
 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"]])
 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"])
 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 test_should_throw_assertionError_if_entity_type_is_not_list(self):
     with self.assertRaises(AssertionError):
         entity_type = "HealthFacility"
         define_type(self.dbm, entity_type)
 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 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"])
 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"]])
Example #21
0
    def setUp(self):
        self.dbm = get_db_manager(database='mangrove-test')
        initializer.run(self.dbm)
        define_type(self.dbm, ["dog"])
        self.entity_type = ["healthfacility", "clinic"]
        define_type(self.dbm, self.entity_type)
        self.name_type = DataDictType(self.dbm,
                                      name='Name',
                                      slug='name',
                                      primitive_type='string')
        self.telephone_number_type = DataDictType(self.dbm,
                                                  name='telephone_number',
                                                  slug='telephone_number',
                                                  primitive_type='string')
        self.entity_id_type = DataDictType(self.dbm,
                                           name='Entity Id Type',
                                           slug='entity_id',
                                           primitive_type='string')
        self.stock_type = DataDictType(self.dbm,
                                       name='Stock Type',
                                       slug='stock',
                                       primitive_type='integer')
        self.color_type = DataDictType(self.dbm,
                                       name='Color Type',
                                       slug='color',
                                       primitive_type='string')

        self.name_type.save()
        self.telephone_number_type.save()
        self.stock_type.save()
        self.color_type.save()

        self.entity = create_entity(
            self.dbm,
            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", self.name_type)],
            submission=dict(submission_id="1"))

        self.reporter = create_entity(
            self.dbm,
            entity_type=["reporter"],
            location=["India", "Pune"],
            aggregation_paths=None,
            short_code="rep1",
        )

        self.reporter.add_data(data=[
            (MOBILE_NUMBER_FIELD, '1234', self.telephone_number_type),
            (NAME_FIELD, "Test_reporter", self.name_type)
        ],
                               submission=dict(submission_id="2"))

        question1 = TextField(name="entity_question",
                              code="EID",
                              label="What is associated entity",
                              language="eng",
                              entity_question_flag=True,
                              ddtype=self.entity_id_type)
        question2 = TextField(name="Name",
                              code="NAME",
                              label="Clinic Name",
                              defaultValue="some default value",
                              language="eng",
                              length=TextConstraint(4, 15),
                              ddtype=self.name_type)
        question3 = IntegerField(name="Arv stock",
                                 code="ARV",
                                 label="ARV Stock",
                                 range=NumericConstraint(min=15, max=120),
                                 ddtype=self.stock_type)
        question4 = SelectField(name="Color",
                                code="COL",
                                label="Color",
                                options=[("RED", 1), ("YELLOW", 2)],
                                ddtype=self.color_type)

        self.form_model = FormModel(self.dbm,
                                    entity_type=self.entity_type,
                                    name="aids",
                                    label="Aids form_model",
                                    form_code="clinic",
                                    type='survey',
                                    fields=[question1, question2, question3])
        self.form_model.add_field(question4)
        self.form_model__id = self.form_model.save()

        self.submission_handler = SubmissionHandler(self.dbm)
        self.sms_player = SMSPlayer(self.dbm, self.submission_handler,
                                    LocationTree())
Example #22
0
def create_entity_types(manager, entity_types):
    for entity_type in entity_types:
        try:
            define_type(manager, entity_type)
        except EntityTypeAlreadyDefined:
            pass
 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)