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 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 edit_profile(request, project_id=None): manager = get_database_manager(request) entity_list = get_all_entity_types(manager) entity_list = helper.remove_reporter(entity_list) project = models.get_project(project_id, dbm=manager) if request.method == 'GET': form = ProjectProfile(data=project, entity_list=entity_list) return render_to_response('project/profile.html', {'form': form, 'project': project, 'edit':True}, context_instance=RequestContext(request)) form = ProjectProfile(data=request.POST, entity_list=entity_list) if form.is_valid(): older_entity_type = project.entity_type if older_entity_type != form.cleaned_data["entity_type"]: new_questionnaire = helper.create_questionnaire(form.cleaned_data, manager) new_qid = new_questionnaire.save() project.qid = new_qid project.update(form.cleaned_data) project.update_questionnaire(manager) try: pid = project.save(manager) except DataObjectAlreadyExists as e: messages.error(request, e.message) return render_to_response('project/profile.html', {'form': form, 'project': project, 'edit':True}, context_instance=RequestContext(request)) return HttpResponseRedirect(reverse(subjects_wizard, args=[pid])) else: return render_to_response('project/profile.html', {'form': form, 'project': project, 'edit':True}, context_instance=RequestContext(request))
def hierarchy_report(request): manager = get_database_manager(request) column_headers, values = [], [] choices = [(t, '.'.join(t)) for t in get_all_entity_types(manager)] if request.method == 'POST': form = ReportHierarchy(data=request.POST, choices=choices) if form.is_valid(): entity_type = form.cleaned_data['entity_type'].split(".") aggregates_field = form.cleaned_data['aggregates_field'] reduce_function = form.cleaned_data['reduce'] aggregates = {aggregates_field: reduce_function} aggregate_on_path = form.cleaned_data['aggregate_on_path'] level = form.cleaned_data['level'] report_data = data.aggregate(manager, entity_type=entity_type, aggregates=aggregates, aggregate_on=TypeAggregration(type=aggregate_on_path,level=level), ) column_headers, values = tabulate_output(report_data, "Path") else: form = ReportHierarchy(choices=choices) return render_to_response('reports/reportperhierarchypath.html', {'form': form, 'column_headers': column_headers, 'column_values': values}, context_instance=RequestContext(request))
def report(request): manager = get_database_manager(request) types = get_all_entity_types(manager) choices = [('.'.join(t), '.'.join(t)) for t in types] column_headers = [] values = [] error_message = None if request.method == 'POST': form = Report(data=request.POST, choices=choices) if form.is_valid(): entity_type = form.cleaned_data['entity_type'].split(".") filter_criteria = form.cleaned_data['filter'] aggregates_field = form.cleaned_data['aggregates_field'] location = filter_criteria.split(",") if filter_criteria else None report_data = data.aggregate(manager, entity_type=entity_type, aggregates={aggregates_field: data.reduce_functions.LATEST}, filter=LocationFilter(location=location) ) column_headers, values = tabulate_output(report_data, "ID") if not len(values): error_message = 'Sorry, No records found for this query' else: form = Report(choices=choices) return render_to_response('reports/reportperlocation.html', {'form': form, 'column_headers': column_headers, 'column_values': values, 'error_message': error_message}, context_instance=RequestContext(request))
def hierarchy_report(request): manager = get_database_manager(request) column_headers, values = [], [] choices = [(t, '.'.join(t)) for t in get_all_entity_types(manager)] if request.method == 'POST': form = ReportHierarchy(data=request.POST, choices=choices) if form.is_valid(): entity_type = form.cleaned_data['entity_type'].split(".") aggregates_field = form.cleaned_data['aggregates_field'] reduce_function = form.cleaned_data['reduce'] aggregates = {aggregates_field: reduce_function} aggregate_on_path = form.cleaned_data['aggregate_on_path'] level = form.cleaned_data['level'] report_data = data.aggregate( manager, entity_type=entity_type, aggregates=aggregates, aggregate_on=TypeAggregration(type=aggregate_on_path, level=level), ) column_headers, values = tabulate_output(report_data, "Path") else: form = ReportHierarchy(choices=choices) return render_to_response('reports/reportperhierarchypath.html', { 'form': form, 'column_headers': column_headers, 'column_values': values }, context_instance=RequestContext(request))
def report(request): manager = get_database_manager(request) types = get_all_entity_types(manager) choices = [('.'.join(t), '.'.join(t)) for t in types] column_headers = [] values = [] error_message = None if request.method == 'POST': form = Report(data=request.POST, choices=choices) if form.is_valid(): entity_type = form.cleaned_data['entity_type'].split(".") filter_criteria = form.cleaned_data['filter'] aggregates_field = form.cleaned_data['aggregates_field'] location = filter_criteria.split(",") if filter_criteria else None report_data = data.aggregate( manager, entity_type=entity_type, aggregates={aggregates_field: data.reduce_functions.LATEST}, filter=LocationFilter(location=location)) column_headers, values = tabulate_output(report_data, "ID") if not len(values): error_message = 'Sorry, No records found for this query' else: form = Report(choices=choices) return render_to_response('reports/reportperlocation.html', { 'form': form, 'column_headers': column_headers, 'column_values': values, 'error_message': error_message }, context_instance=RequestContext(request))
def create_subject(request): db_manager = get_database_manager(request) entity_types = get_all_entity_types(db_manager) project_helper.remove_reporter(entity_types) return render_to_response("entity/create_subject.html", { "post_url": reverse(submit), "entity_types": entity_types }, context_instance=RequestContext(request))
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 subjects_wizard(request, project_id=None): if request.method == 'GET': manager = get_database_manager(request) reg_form = get_form_model_by_code(manager, REGISTRATION_FORM_CODE) previous_link = reverse(edit_profile, args=[project_id]) entity_types = get_all_entity_types(manager) project = models.get_project(project_id, manager) helper.remove_reporter(entity_types) import_subject_form = SubjectUploadForm() return render_to_response('project/subjects_wizard.html', {'fields': reg_form.fields, "previous": previous_link, "entity_types": entity_types, 'import_subject_form': import_subject_form, 'post_url': reverse(import_subjects_from_project_wizard), 'project': project, 'step': 'subjects'}, context_instance=RequestContext(request)) if request.method == 'POST': return HttpResponseRedirect(reverse(questionnaire_wizard, args=[project_id]))
def edit_profile(request, project_id=None): manager = get_database_manager(request) entity_list = get_all_entity_types(manager) entity_list = helper.remove_reporter(entity_list) project = models.get_project(project_id, dbm=manager) if request.method == 'GET': form = ProjectProfile(data=project, entity_list=entity_list) return render_to_response('project/profile.html', { 'form': form, 'project': project, 'edit': True }, context_instance=RequestContext(request)) form = ProjectProfile(data=request.POST, entity_list=entity_list) if form.is_valid(): older_entity_type = project.entity_type if older_entity_type != form.cleaned_data["entity_type"]: new_questionnaire = helper.create_questionnaire( form.cleaned_data, manager) new_qid = new_questionnaire.save() project.qid = new_qid project.update(form.cleaned_data) project.update_questionnaire(manager) try: pid = project.save(manager) except DataObjectAlreadyExists as e: messages.error(request, e.message) return render_to_response('project/profile.html', { 'form': form, 'project': project, 'edit': True }, context_instance=RequestContext(request)) return HttpResponseRedirect(reverse(subjects_wizard, args=[pid])) else: return render_to_response('project/profile.html', { 'form': form, 'project': project, 'edit': True }, context_instance=RequestContext(request))
def subjects_wizard(request, project_id=None): if request.method == 'GET': manager = get_database_manager(request) reg_form = get_form_model_by_code(manager, REGISTRATION_FORM_CODE) previous_link = reverse(edit_profile, args=[project_id]) entity_types = get_all_entity_types(manager) project = models.get_project(project_id, manager) helper.remove_reporter(entity_types) import_subject_form = SubjectUploadForm() return render_to_response( 'project/subjects_wizard.html', { 'fields': reg_form.fields, "previous": previous_link, "entity_types": entity_types, 'import_subject_form': import_subject_form, 'post_url': reverse(import_subjects_from_project_wizard), 'project': project, 'step': 'subjects' }, context_instance=RequestContext(request)) if request.method == 'POST': return HttpResponseRedirect( reverse(questionnaire_wizard, args=[project_id]))
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 create_subject(request): db_manager = get_database_manager(request) entity_types = get_all_entity_types(db_manager) project_helper.remove_reporter(entity_types) return render_to_response("entity/create_subject.html", {"post_url": reverse(submit), "entity_types": entity_types}, context_instance=RequestContext(request))