예제 #1
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)
예제 #2
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)
예제 #3
0
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))
예제 #4
0
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))
예제 #5
0
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))
예제 #6
0
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))
예제 #7
0
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))
예제 #8
0
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))
예제 #9
0
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))
예제 #10
0
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))
예제 #11
0
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]))
예제 #12
0
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))
예제 #13
0
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]))
예제 #14
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"]])
예제 #15
0
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))
예제 #16
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"]])