def create_profile(request): manager = get_database_manager(request) entity_list = get_all_entity_types(manager) entity_list = helper.remove_reporter(entity_list) project_summary = dict(name='New Project') if request.method == 'GET': form = ProjectProfile(entity_list=entity_list,initial={'activity_report':'yes'}) return render_to_response('project/profile.html', {'form': form, 'project': project_summary, 'edit':False}, context_instance=RequestContext(request)) form = ProjectProfile(data=request.POST, entity_list=entity_list) if form.is_valid(): entity_type=form.cleaned_data['entity_type'] project = Project(name=form.cleaned_data["name"], goals=form.cleaned_data["goals"], project_type=form.cleaned_data['project_type'], entity_type=entity_type, devices=form.cleaned_data['devices'], activity_report=form.cleaned_data['activity_report'], sender_group=form.cleaned_data['sender_group']) form_model = helper.create_questionnaire(post=form.cleaned_data, dbm=manager) try: pid = project.save(manager) qid = form_model.save() project.qid = qid pid = project.save(manager) except DataObjectAlreadyExists as e: messages.error(request, e.message) return render_to_response('project/profile.html', {'form': form, 'project': project_summary, 'edit':False}, context_instance=RequestContext(request)) return HttpResponseRedirect(reverse(subjects_wizard, args=[pid])) else: return render_to_response('project/profile.html', {'form': form, 'project': project_summary, 'edit':False}, context_instance=RequestContext(request))
def test_project_name_should_be_case_insensitively_unique(self): project = Project(name="tEsT2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) with self.assertRaises(DataObjectAlreadyExists): project.save(self.dbm)
def test_project_name_should_be_case_insensitively_unique(self): questionnaire = Project(self.manager, name=project2_name.upper(), goals="Testing", devices=['web']) with self.assertRaises(Exception) as cm: questionnaire.save() the_exception = cm.exception self.assertEqual( the_exception.message, "Questionnaire with Name = '%s' already exists." % project2_name.upper())
def test_project_name_should_be_unique(self): questionnaire = Project(dbm=self.manager, name=project2_name, goals="Testing", devices=['web'], form_code="name_form", fields=[]) with self.assertRaises(Exception) as cm: questionnaire.save() the_exception = cm.exception self.assertEqual( the_exception.message, "Questionnaire with Name = '%s' already exists." % project2_name)
def create_profile(request): manager = get_database_manager(request) entity_list = get_all_entity_types(manager) entity_list = helper.remove_reporter(entity_list) project_summary = dict(name='New Project') if request.method == 'GET': form = ProjectProfile(entity_list=entity_list, initial={'activity_report': 'yes'}) return render_to_response('project/profile.html', { 'form': form, 'project': project_summary, 'edit': False }, context_instance=RequestContext(request)) form = ProjectProfile(data=request.POST, entity_list=entity_list) if form.is_valid(): entity_type = form.cleaned_data['entity_type'] project = Project(name=form.cleaned_data["name"], goals=form.cleaned_data["goals"], project_type=form.cleaned_data['project_type'], entity_type=entity_type, devices=form.cleaned_data['devices'], activity_report=form.cleaned_data['activity_report'], sender_group=form.cleaned_data['sender_group']) form_model = helper.create_questionnaire(post=form.cleaned_data, dbm=manager) try: pid = project.save(manager) qid = form_model.save() project.qid = qid pid = project.save(manager) except DataObjectAlreadyExists as e: messages.error(request, e.message) return render_to_response('project/profile.html', { 'form': form, 'project': project_summary, 'edit': False }, context_instance=RequestContext(request)) return HttpResponseRedirect(reverse(subjects_wizard, args=[pid])) else: return render_to_response('project/profile.html', { 'form': form, 'project': project_summary, 'edit': False }, context_instance=RequestContext(request))
def test_get_associated_data_senders(self): entity = Entity(self.manager, entity_type=["reporter"], short_code="rep1") entity_id = entity.save() project = Project(dbm=self.manager, name="TestDS", goals="Testing", devices=['web'], form_code="ds_form", fields=[]) project.data_senders = ["rep1"] project.save() result = project.get_associated_datasenders(self.manager) self.assertEquals(result[0].short_code, entity.short_code) self.assertEquals(result[0].id, entity_id)
class TestProjectModel(unittest.TestCase): def setUp(self): self.dbm = get_db_manager(database='mangrove-test') create_views(self.dbm) self.project1 = Project(name="Test1", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) self.project1_id = self.project1.save(self.dbm) self.project2 = Project(name="Test2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) self.project2_id = self.project2.save(self.dbm) self._create_form_model_for_project(self.project1) def tearDown(self): _delete_db_and_remove_db_manager(self.dbm) def test_get_all_projects(self): projects = get_all_projects(self.dbm) self.assertEquals(len(projects), 2) def test_get_one_project(self): self.assertEquals( get_project(self.project1_id, self.dbm)['_id'], self.project1_id) def test_should_update_project(self): self.project1.update( dict(name='Test1', devices=['web', 'sms'], goals="New goals")) self.project1.save(self.dbm) self.assertEquals(self.project1.name, 'test1') self.assertEquals(self.project1.goals, 'New goals') self.assertEquals(self.project1.devices, ['web', 'sms']) def test_project_name_should_be_unique(self): project = Project(name="Test2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) with self.assertRaises(DataObjectAlreadyExists): project.save(self.dbm) def test_project_name_should_be_case_insensitively_unique(self): project = Project(name="tEsT2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) with self.assertRaises(DataObjectAlreadyExists): project.save(self.dbm) def test_should_check_for_unique_name_while_update_project(self): self.project1.update( dict(name='Test2', devices=['web', 'sms'], goals="New goals")) with self.assertRaises(DataObjectAlreadyExists): self.project1.save(self.dbm) def _create_form_model_for_project(self, project): ddtype = DataDictType(self.dbm, name='Default String Datadict Type', slug='string_default', primitive_type='string') question1 = TextField(name="entity_question", code="ID", label="What is associated entity", language="eng", entity_question_flag=True, ddtype=ddtype) question2 = TextField(name="question1_Name", code="Q1", label="What is your name", defaultValue="some default value", language="eng", length=TextConstraint(5, 10), ddtype=ddtype) self.form_model = FormModel(self.dbm, name=self.project1.name, form_code="abc", fields=[question1, question2], entity_type=["Clinic"], state=attributes.INACTIVE_STATE) qid = self.form_model.save() project.qid = qid project.save(self.dbm) def test_should_update_questionnaire(self): self.project1.name = "New Name" self.project1.update_questionnaire(self.dbm) form_model = self.dbm.get(self.project1.qid, FormModel) self.assertEqual("New Name", form_model.name) def test_should_activate_form_on_project_activate(self): form_model = self.dbm.get(self.project1.qid, FormModel) self.assertFalse(form_model.is_active()) self.project1.activate(self.dbm) form_model = self.dbm.get(self.project1.qid, FormModel) self.assertTrue(form_model.is_active()) self.assertEquals(ProjectState.ACTIVE, self.project1.state) def test_should_deactivate_form_on_project_deactivate(self): project = Project(state=ProjectState.ACTIVE) dbm = Mock(spec=DatabaseManager) form_model_mock = Mock(spec=FormModel) dbm.get.return_value = form_model_mock with patch("datawinners.project.models.Project.save" ) as project_save_mock: project.deactivate(dbm) form_model_mock.deactivate.assert_called_once_with() form_model_mock.save.assert_called_once_with() project_save_mock.assert_called_once_with(dbm) self.assertEqual(ProjectState.INACTIVE, project.state) def test_should_set_form_to_test_on_project_set_to_test(self): project = Project(state=ProjectState.ACTIVE) dbm = Mock(spec=DatabaseManager) form_model_mock = Mock(spec=FormModel) dbm.get.return_value = form_model_mock with patch("datawinners.project.models.Project.save" ) as project_save_mock: project.to_test_mode(dbm) form_model_mock.set_test_mode.assert_called_once_with() form_model_mock.save.assert_called_once_with() project_save_mock.assert_called_once_with(dbm) self.assertEqual(ProjectState.TEST, project.state)
class TestProjectModel(unittest.TestCase): def setUp(self): self.dbm = get_db_manager(database='mangrove-test') create_views(self.dbm) self.project1 = Project(name="Test1", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) self.project1_id = self.project1.save(self.dbm) self.project2 = Project(name="Test2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) self.project2_id = self.project2.save(self.dbm) self._create_form_model_for_project(self.project1) def tearDown(self): _delete_db_and_remove_db_manager(self.dbm) def test_get_all_projects(self): projects = get_all_projects(self.dbm) self.assertEquals(len(projects), 2) def test_get_one_project(self): self.assertEquals(get_project(self.project1_id, self.dbm)['_id'], self.project1_id) def test_should_update_project(self): self.project1.update(dict(name='Test1', devices=['web', 'sms'], goals="New goals")) self.project1.save(self.dbm) self.assertEquals(self.project1.name, 'test1') self.assertEquals(self.project1.goals, 'New goals') self.assertEquals(self.project1.devices, ['web', 'sms']) def test_project_name_should_be_unique(self): project = Project(name="Test2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) with self.assertRaises(DataObjectAlreadyExists): project.save(self.dbm) def test_project_name_should_be_case_insensitively_unique(self): project = Project(name="tEsT2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) with self.assertRaises(DataObjectAlreadyExists): project.save(self.dbm) def test_should_check_for_unique_name_while_update_project(self): self.project1.update(dict(name='Test2', devices=['web', 'sms'], goals="New goals")) with self.assertRaises(DataObjectAlreadyExists): self.project1.save(self.dbm) def _create_form_model_for_project(self,project): ddtype = DataDictType(self.dbm, name='Default String Datadict Type', slug='string_default', primitive_type='string') question1 = TextField(name="entity_question", code="ID", label="What is associated entity", language="eng", entity_question_flag=True, ddtype=ddtype) question2 = TextField(name="question1_Name", code="Q1", label="What is your name", defaultValue="some default value", language="eng", length=TextConstraint(5, 10), ddtype=ddtype) self.form_model = FormModel(self.dbm, name=self.project1.name, form_code="abc", fields=[question1, question2], entity_type=["Clinic"], state=attributes.INACTIVE_STATE) qid = self.form_model.save() project.qid = qid project.save(self.dbm) def test_should_update_questionnaire(self): self.project1.name = "New Name" self.project1.update_questionnaire(self.dbm) form_model = self.dbm.get(self.project1.qid, FormModel) self.assertEqual("New Name", form_model.name) def test_should_activate_form_on_project_activate(self): form_model = self.dbm.get(self.project1.qid, FormModel) self.assertFalse(form_model.is_active()) self.project1.activate(self.dbm) form_model = self.dbm.get(self.project1.qid, FormModel) self.assertTrue(form_model.is_active()) self.assertEquals(ProjectState.ACTIVE,self.project1.state) def test_should_deactivate_form_on_project_deactivate(self): project = Project(state=ProjectState.ACTIVE) dbm = Mock(spec=DatabaseManager) form_model_mock = Mock(spec=FormModel) dbm.get.return_value = form_model_mock with patch("datawinners.project.models.Project.save") as project_save_mock: project.deactivate(dbm) form_model_mock.deactivate.assert_called_once_with() form_model_mock.save.assert_called_once_with() project_save_mock.assert_called_once_with(dbm) self.assertEqual( ProjectState.INACTIVE, project.state) def test_should_set_form_to_test_on_project_set_to_test(self): project = Project(state=ProjectState.ACTIVE) dbm = Mock(spec=DatabaseManager) form_model_mock = Mock(spec=FormModel) dbm.get.return_value = form_model_mock with patch("datawinners.project.models.Project.save") as project_save_mock: project.to_test_mode(dbm) form_model_mock.set_test_mode.assert_called_once_with() form_model_mock.save.assert_called_once_with() project_save_mock.assert_called_once_with(dbm) self.assertEqual( ProjectState.TEST, project.state)
def test_project_name_should_be_case_insensitively_unique(self): project = Project(name="tEsT2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) with self.assertRaises(Exception) as cm: project.save(self.manager) the_exception = cm.exception self.assertEqual(the_exception.message, "Project with Name = 'test2' already exists.")
class TestProjectModel(MangroveTestCase): def setUp(self): MangroveTestCase.setUp(self) create_views(self.manager) self.project1 = Project(name="Test1", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) self.project1_id = self.project1.save(self.manager) self.project2 = Project(name="Test2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) self.project2_id = self.project2.save(self.manager) self._create_form_model_for_project(self.project1) def tearDown(self): MangroveTestCase.tearDown(self) def test_get_all_projects(self): projects = get_all_projects(self.manager) self.assertEquals(len(projects), 2) def test_get_one_project(self): self.assertEquals(Project.load(self.manager.database, self.project1_id)['_id'], self.project1_id) def test_should_update_project(self): self.project1.update(dict(name='Test1', devices=['web', 'sms'], goals="New goals")) self.project1.save(self.manager) self.assertEquals(self.project1.name, 'test1') self.assertEquals(self.project1.goals, 'New goals') self.assertEquals(self.project1.devices, ['web', 'sms']) def test_project_name_should_be_unique(self): project = Project(name="Test2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) with self.assertRaises(Exception) as cm: project.save(self.manager) the_exception = cm.exception self.assertEqual(the_exception.message, "Project with Name = 'test2' already exists.") def test_project_name_should_be_case_insensitively_unique(self): project = Project(name="tEsT2", goals="Testing", project_type="Survey", entity_type="Clinic", devices=['web']) with self.assertRaises(Exception) as cm: project.save(self.manager) the_exception = cm.exception self.assertEqual(the_exception.message, "Project with Name = 'test2' already exists.") def test_should_check_for_unique_name_while_update_project(self): self.project1.update(dict(name='Test2', devices=['web', 'sms'], goals="New goals")) with self.assertRaises(Exception) as cm: self.project1.save(self.manager) the_exception = cm.exception self.assertEqual(the_exception.message, "Project with Name = 'test2' already exists.") def _create_form_model_for_project(self, project): ddtype = DataDictType(self.manager, name='Default String Datadict Type', slug='string_default', primitive_type='string') question1 = TextField(name="entity_question", code="ID", label="What is associated entity", entity_question_flag=True, ddtype=ddtype) question2 = TextField(name="question1_Name", code="Q1", label="What is your name", defaultValue="some default value", constraints=[TextLengthConstraint(5, 10)], ddtype=ddtype) self.form_model = FormModel(self.manager, name=self.project1.name, form_code="abc", fields=[question1, question2], entity_type=["Clinic"], state=attributes.INACTIVE_STATE) qid = self.form_model.save() project.qid = qid project.save(self.manager) def test_should_update_questionnaire(self): self.project1.name = "New Name" self.project1.update_questionnaire(self.manager) form_model = self.manager.get(self.project1.qid, FormModel) self.assertEqual("New Name", form_model.name) def test_should_activate_form_on_project_activate(self): form_model = self.manager.get(self.project1.qid, FormModel) self.assertFalse(form_model.is_active()) self.project1.activate(self.manager) form_model = self.manager.get(self.project1.qid, FormModel) self.assertTrue(form_model.is_active()) self.assertEquals(ProjectState.ACTIVE, self.project1.state) def test_should_deactivate_form_on_project_deactivate(self): project = Project(state=ProjectState.ACTIVE) dbm = Mock(spec=DatabaseManager) form_model_mock = Mock(spec=FormModel) dbm.get.return_value = form_model_mock with patch("datawinners.project.models.Project.save") as project_save_mock: project.deactivate(dbm) form_model_mock.deactivate.assert_called_once_with() form_model_mock.save.assert_called_once_with() project_save_mock.assert_called_once_with(dbm) self.assertEqual(ProjectState.INACTIVE, project.state) def test_should_set_form_to_test_on_project_set_to_test(self): project = Project(state=ProjectState.ACTIVE) dbm = Mock(spec=DatabaseManager) form_model_mock = Mock(spec=FormModel) dbm.get.return_value = form_model_mock with patch("datawinners.project.models.Project.save") as project_save_mock: project.to_test_mode(dbm) form_model_mock.set_test_mode.assert_called_once_with() form_model_mock.save.assert_called_once_with() project_save_mock.assert_called_once_with(dbm) self.assertEqual(ProjectState.TEST, project.state) def test_get_deadline_day(self): reminder_and_deadline_for_month = { "reminders_enabled": "True", "deadline_month": "5", "deadline_type": "current", "frequency_enabled": "True", "has_deadline": "True", "frequency_period": "month" } project_reminders = Project(name="ReminderProject") project_reminders.reminder_and_deadline = reminder_and_deadline_for_month self.assertEquals(5, project_reminders.get_deadline_day()) def _create_reporter_entity(self, short_code): return Entity(dbm=Mock(spec=DatabaseManager), entity_type=REPORTER, short_code=short_code) def test_should_return_data_senders_without_submissions(self): reminder_and_deadline_for_month = { "reminders_enabled": "True", "deadline_month": "5", "deadline_type": "current", "frequency_enabled": "True", "has_deadline": "True", "frequency_period": "month" } project = Project() project.reminder_and_deadline = reminder_and_deadline_for_month project.data_senders = ["rep1", "rep2", "rep3", "rep4", "rep5"] dbm = Mock(spec=DatabaseManager) with patch( "datawinners.project.models.get_reporters_who_submitted_data_for_frequency_period") as get_reporters_who_submitted_data_for_frequency_period_mock: with patch("datawinners.project.models.load_all_subjects_of_type") as load_all_subjects_of_type_mock: load_all_subjects_of_type_mock.return_value = ( [{"cols": ["rep%s" % i, i], "short_code": "rep%s" % i} for i in range( 10)], ["short_code", "mobile_number"], ["What is DS Unique ID", "What is DS phone number"]) get_reporters_who_submitted_data_for_frequency_period_mock.return_value = [ self._create_reporter_entity("rep1"), self._create_reporter_entity("rep3")] data_senders = project.get_data_senders_without_submissions_for(date(2011, 11, 5), dbm) self.assertEqual(3, len(data_senders)) self.assertIn("rep2", [ds["short_code"] for ds in data_senders]) self.assertIn("rep4", [ds["short_code"] for ds in data_senders]) self.assertIn("rep5", [ds["short_code"] for ds in data_senders]) def test_should_delete_datasender_from_project(self): self.project1.data_senders = ['rep1', 'rep2'] datasender_to_be_deleted = 'rep1' self.project1.delete_datasender(self.manager, datasender_to_be_deleted) self.project1 = Project.load(self.manager.database, self.project1_id) expected_datasenders = ['rep2'] self.assertEqual(self.project1.data_senders, expected_datasenders)
def create_project(request): manager = get_database_manager(request.user) entity_list = get_all_entity_types(manager) entity_list = helper.remove_reporter(entity_list) all_projects_name = get_all_project_names(get_database_manager(request.user)) name = generate_project_name(all_projects_name) project_summary = dict(name=name) ngo_admin = NGOUserProfile.objects.get(user=request.user) if request.method == 'GET': form = CreateProject(entity_list=entity_list, initial={'name': name}) activity_report_questions = json.dumps(helper.get_activity_report_questions(manager), default=field_to_json) subject_report_questions = json.dumps(helper.get_subject_report_questions(manager), default=field_to_json) return render_to_response('project/create_project.html', {'form': form, "activity_report_questions": repr(activity_report_questions), 'subject_report_questions': repr(subject_report_questions), 'preview_links': get_preview_and_instruction_links(), 'existing_questions': repr(activity_report_questions), 'project': project_summary, 'questionnaire_code': helper.generate_questionnaire_code(manager), 'is_edit': 'false', 'post_url': reverse(create_project)}, context_instance=RequestContext(request)) if request.method == 'POST': project_info = json.loads(request.POST['profile_form']) form = CreateProject(entity_list, data=project_info) if form.is_valid(): project = Project(name=form.cleaned_data['name'], goals=form.cleaned_data['goals'], project_type='survey', entity_type=form.cleaned_data['entity_type'], activity_report=form.cleaned_data['activity_report'], state=request.POST['project_state'], devices=[u'sms', u'web', u'smartPhone'], language=form.cleaned_data['language']) if ngo_admin.reporter_id is not None: project.data_senders.append(ngo_admin.reporter_id) try: questionnaire = create_questionnaire(post=request.POST, manager=manager, entity_type=form.cleaned_data['entity_type'], name=form.cleaned_data['name'], language=form.cleaned_data['language']) except (QuestionCodeAlreadyExistsException, QuestionAlreadyExistsException, EntityQuestionAlreadyExistsException) as ex: return HttpResponse( json.dumps({'success': False, 'error_message': _(ex.message), 'error_in_project_section': False})) try: project.qid = questionnaire.save() except DataObjectAlreadyExists: return HttpResponse(json.dumps( {'success': False, 'error_message': "Questionnaire with this code already exists", 'error_in_project_section': False})) try: project.save(manager) UserActivityLog().log(request, action=CREATED_PROJECT, project=project.name, detail=project.name) except DataObjectAlreadyExists as ex: questionnaire.delete() message = _("%s with %s = %s already exists.") % (_(ex.data[2]), _(ex.data[0]), "'%s'" % project.name) return HttpResponse( json.dumps({'success': False, 'error_message': message, 'error_in_project_section': True})) return HttpResponse(json.dumps({'success': True, 'project_id': project.id}))
def create_clinic_projects(CLINIC_ENTITY_TYPE, manager): name_type = create_data_dict(manager, name='Name', slug='Name', primitive_type='string') # Entity id is a default type in the system. entity_id_type = get_datadict_type_by_slug(manager, slug='entity_id') age_type = create_data_dict(manager, name='Age Type', slug='age', primitive_type='integer') date_type = create_data_dict(manager, name='Report Date', slug='date', primitive_type='date') select_type = create_data_dict(manager, name='Choice Type', slug='choice', primitive_type='select') geo_code_type = create_data_dict(manager, name='GeoCode Type', slug='geo_code', primitive_type='geocode') question1 = TextField(label="entity_question", code="EID", name="What is associated entity?", language="eng", entity_question_flag=True, ddtype=entity_id_type, length=TextConstraint(min=1, max=12)) question2 = TextField(label="Name", code="NA", name="What is your name?", length=TextConstraint(min=1, max=10), defaultValue="some default value", language="eng", ddtype=name_type) question3 = IntegerField(label="Father age", code="FA", name="What is age of father?", range=NumericConstraint(min=18, max=100), ddtype=age_type) question4 = DateField(label="Report date", code="RD", name="What is reporting date?", date_format="dd.mm.yyyy", ddtype=date_type) question5 = SelectField(label="Blood Group", code="BG", name="What is your blood group?", options=[("O+", "a"), ("O-", "b"), ("AB", "c"), ("B+", "d")], single_select_flag=True, ddtype=select_type) question6 = SelectField(label="Symptoms", code="SY", name="What are symptoms?", options=[("Rapid weight loss", "a"), ("Dry cough", "b"), ("Pneumonia", "c"), ("Memory loss", "d"), ("Neurological disorders ", "e")], single_select_flag=False, ddtype=select_type) question7 = GeoCodeField(name="What is the GPS code for clinic", code="GPS", label="What is the GPS code for clinic?", language="eng", ddtype=geo_code_type) form_model = FormModel(manager, name="AIDS", label="Aids form_model", form_code="cli001", type='survey', fields=[ question1, question2, question3, question4, question5, question6, question7 ], entity_type=CLINIC_ENTITY_TYPE) try: qid = form_model.save() except DataObjectAlreadyExists as e: get_form_model_by_code(manager, "cli001").delete() qid = form_model.save() project = Project(name="Clinic Test Project", goals="This project is for automation", project_type="survey", entity_type=CLINIC_ENTITY_TYPE[-1], devices=["sms"], activity_report='no', sender_group="close") project.qid = qid project.state = ProjectState.ACTIVE try: project.save(manager) except Exception: pass form_model2 = FormModel(manager, name="AIDS", label="Aids form_model", form_code="cli002", type='survey', fields=[ question1, question2, question3, question4, question5, question6, question7 ], entity_type=CLINIC_ENTITY_TYPE) try: qid2 = form_model2.save() except DataObjectAlreadyExists as e: get_form_model_by_code(manager, "cli002").delete() qid2 = form_model2.save() project2 = Project(name="Clinic2 Test Project", goals="This project is for automation", project_type="survey", entity_type=CLINIC_ENTITY_TYPE[-1], devices=["sms"], activity_report='no', sender_group="close") project2.qid = qid2 project2.state = ProjectState.ACTIVE try: project2.save(manager) except Exception: pass
def create_clinic_projects(CLINIC_ENTITY_TYPE, manager): name_type = create_data_dict(manager, name='Name', slug='Name', primitive_type='string') # Entity id is a default type in the system. entity_id_type = get_datadict_type_by_slug(manager, slug='entity_id') age_type = create_data_dict(manager, name='Age Type', slug='age', primitive_type='integer') date_type = create_data_dict(manager, name='Report Date', slug='date', primitive_type='date') select_type = create_data_dict(manager, name='Choice Type', slug='choice', primitive_type='select') geo_code_type = create_data_dict(manager, name='GeoCode Type', slug='geo_code', primitive_type='geocode') question1 = TextField(label="entity_question", code="EID", name="What is associated entity?", language="eng", entity_question_flag=True, ddtype=entity_id_type, length=TextConstraint(min=1, max=12)) question2 = TextField(label="Name", code="NA", name="What is your name?", length=TextConstraint(min=1, max=10), defaultValue="some default value", language="eng", ddtype=name_type) question3 = IntegerField(label="Father age", code="FA", name="What is age of father?", range=NumericConstraint(min=18, max=100), ddtype=age_type) question4 = DateField(label="Report date", code="RD", name="What is reporting date?", date_format="dd.mm.yyyy", ddtype=date_type) question5 = SelectField(label="Blood Group", code="BG", name="What is your blood group?", options=[("O+", "a"), ("O-", "b"), ("AB", "c"), ("B+", "d")], single_select_flag=True, ddtype=select_type) question6 = SelectField(label="Symptoms", code="SY", name="What are symptoms?", options=[("Rapid weight loss", "a"), ("Dry cough", "b"), ("Pneumonia", "c"), ("Memory loss", "d"), ("Neurological disorders ", "e")], single_select_flag=False, ddtype=select_type) question7 = GeoCodeField(name="What is the GPS code for clinic", code="GPS", label="What is the GPS code for clinic?", language="eng", ddtype=geo_code_type) form_model = FormModel(manager, name="AIDS", label="Aids form_model", form_code="cli001", type='survey', fields=[question1, question2, question3, question4, question5, question6, question7], entity_type=CLINIC_ENTITY_TYPE ) try: qid = form_model.save() except DataObjectAlreadyExists as e: get_form_model_by_code(manager, "cli001").delete() qid = form_model.save() project = Project(name="Clinic Test Project", goals="This project is for automation", project_type="survey", entity_type=CLINIC_ENTITY_TYPE[-1], devices=["sms"], activity_report='no',sender_group="close") project.qid = qid project.state = ProjectState.ACTIVE try: project.save(manager) except Exception: pass form_model2 = FormModel(manager, name="AIDS", label="Aids form_model", form_code="cli002", type='survey', fields=[question1, question2, question3, question4, question5, question6, question7], entity_type=CLINIC_ENTITY_TYPE) try: qid2 = form_model2.save() except DataObjectAlreadyExists as e: get_form_model_by_code(manager, "cli002").delete() qid2 = form_model2.save() project2 = Project(name="Clinic2 Test Project", goals="This project is for automation", project_type="survey", entity_type=CLINIC_ENTITY_TYPE[-1], devices=["sms"], activity_report='no', sender_group="close") project2.qid = qid2 project2.state = ProjectState.ACTIVE try: project2.save(manager) except Exception: pass