Exemplo n.º 1
0
def delete(request, project_id):
    dbm = get_database_manager(request.user)
    questionnaire = Project.get(dbm, project_id)
    dashboard_page = settings.HOME_PAGE + "?deleted=true"
    if questionnaire.is_void():
        return HttpResponseRedirect(dashboard_page)
    survey_response_ids = get_survey_response_ids_from_request(dbm, request, questionnaire)
    received_times = []
    for survey_response_id in survey_response_ids:
        survey_response = SurveyResponse.get(dbm, survey_response_id)
        received_times.append(datetime.datetime.strftime(survey_response.submitted_on, "%d/%m/%Y %X"))
        feeds_dbm = get_feeds_database(request.user)
        additional_feed_dictionary = get_project_details_dict_for_feed(questionnaire)
        delete_response = WebPlayerV2(dbm, feeds_dbm).delete_survey_response(survey_response,
                                                                             additional_feed_dictionary,
                                                                             websubmission_logger)
        mail_feed_errors(delete_response, dbm.database_name)
        if survey_response.data_record:
            ReportRouter().delete(get_organization(request).org_id, survey_response.form_code,
                                  survey_response.data_record.id)

    if len(received_times):
        UserActivityLog().log(request, action=DELETED_DATA_SUBMISSION, project=questionnaire.name,
                              detail=json.dumps({"Date Received": "[%s]" % ", ".join(received_times)}))
        response = encode_json({'success_message': ugettext("The selected records have been deleted"), 'success': True})
    else:
        response = encode_json({'error_message': ugettext("No records deleted"), 'success': False})

    return HttpResponse(response)
Exemplo n.º 2
0
 def analysis_result_dict(self):
     return {
         "datasender_list": self._data_sender_list,
         "subject_list": self._subject_list,
         "default_sort_order": repr(encode_json(self._default_sort_order)),
         "data_list": repr(encode_json(self._field_values)),
         "statistics_result": repr(encode_json(self._statistics_result))
     }
    def test_should_return_header_info_dict(self):
        expected_header_list = (
        "Submission Id", "Clinic", "Reporting Period", "Submission Date", "Data Sender", "Zhat are symptoms?",
        "What is your blood group?")
        expected_header_name_list = repr(encode_json((
        "Submission Id", "Clinic", "Reporting Period", "Submission Date", "Data Sender", "Zhat are symptoms?",
        "What is your blood group?")))
        expected_header_type_list = repr(encode_json(('', "", 'dd.mm.yyyy', 'dd.mm.yyyy', "", "", "")))
        expected_header_info_dict = {'header_list': expected_header_list, 'header_name_list': expected_header_name_list,
                                     'header_type_list': expected_header_type_list}

        header_info = Header(form_model=self.form_model_generator.form_model()).info

        self.assertEqual(3, len(header_info))
        self.assertDictEqual(expected_header_info_dict, header_info)
Exemplo n.º 4
0
def show_log(request):
    org_id = get_organization(request).org_id
    args = dict(organization=org_id)
    if request.method == 'GET':
        form = LogFilterForm(request=request)
    else:
        form = LogFilterForm(request.POST, request=request)
        filter = form.data.copy()
        filter.pop("csrfmiddlewaretoken")
        for key, value in filter.items():
            if value != "":
                if key == "daterange":
                    dates = value.split(" %s " % ugettext("to"))
                    args["log_date__gte"] = convert_dmy_to_ymd(dates[0])
                    try:
                        args[
                            "log_date__lte"] = "%s 23:59:59" % convert_dmy_to_ymd(
                                dates[1])
                    except KeyError:
                        args["log_date__lte"] = "%s 23:59:59" % date.today()
                    continue
                args[key] = value
    log_data = UserActivityLog.objects.select_related().filter(
        **args).order_by("-log_date")
    return render_to_response(
        "activitylog/activitylog.html", {
            'form': form,
            'log_data': repr(encode_json([log.to_render()
                                          for log in log_data]))
        },
        context_instance=RequestContext(request))
Exemplo n.º 5
0
def headers(request, form_code):
    manager = get_database_manager(request.user)
    submission_type = request.GET.get('type', 'all')
    form_model = get_form_model_by_code(manager, form_code)
    headers = SubmissionsPageHeader(form_model, submission_type).get_column_title()
    response = []
    for header in headers:
        response.append({"sTitle": ugettext(header)})
    return HttpResponse(encode_json(response))
Exemplo n.º 6
0
 def test_encode_decode(self):
     # want to make sure this doesn't throw an exception. Not sure
     # how to test for that
     objs = [self.dict_with_dt, self.dict_with_dt, self.dict_with_list_of_dts]
     strs = []
     try:
         for o in objs:
             strs.append(json_codecs.encode_json(o))
     except Exception, ex:
         self.assertTrue(False, ex)
Exemplo n.º 7
0
def _format_data_for_presentation(data_dictionary, form_model):
    header_list = helper.get_headers(form_model.fields)
    type_list = helper.get_type_list(form_model.fields[1:])
    header_list[0] = form_model.entity_type[0] + " Code"
    if data_dictionary == {}:
        return "[]", header_list, type_list

    entity_question_description=form_model.entity_question.name
    data_list = helper.get_values(data_dictionary, header_list,entity_question_description)
    data_list = helper.to_report(data_list)
    response_string = encode_json(data_list)
    return response_string, header_list, type_list
Exemplo n.º 8
0
def _format_data_for_presentation(data_dictionary, form_model):
    header_list = helper.get_headers(form_model.fields)
    type_list = helper.get_type_list(form_model.fields[1:])
    header_list[0] = form_model.entity_type[0] + " Code"
    if data_dictionary == {}:
        return "[]", header_list, type_list

    entity_question_description = form_model.entity_question.name
    data_list = helper.get_values(data_dictionary, header_list,
                                  entity_question_description)
    data_list = helper.to_report(data_list)
    response_string = encode_json(data_list)
    return response_string, header_list, type_list
Exemplo n.º 9
0
def show_log(request):
    organization = get_organization(request)
    org_id = organization.org_id
    args = dict(organization=org_id)
    time_delta = get_country_time_delta(organization.country)
    if request.method == 'GET':
        form = LogFilterForm(request=request)
    else:
        form = LogFilterForm(request.POST, request=request)
        filter = form.data.copy()
        filter.pop("csrfmiddlewaretoken")
        for key, value in filter.items():
            if value != "":
                if key == "daterange":
                    dates = value.split(" %s " % ugettext("to"))
                    # args["log_date__gte"] = convert_dmy_to_ymd(dates[0])
                    args["log_date__gte"] = convert_local_to_utc(
                        dates[0] + " 00:00:00", time_delta,
                        "%d-%m-%Y %H:%M:%S")
                    try:
                        end_date = date.today()
                        if len(dates) > 1:
                            # end_date = convert_dmy_to_ymd(dates[1])
                            end_date = convert_local_to_utc(
                                dates[1] + " 23:59:59", time_delta,
                                "%d-%m-%Y %H:%M:%S")
                        else:
                            end_date = convert_local_to_utc(
                                dates[0] + " 23:59:59", time_delta,
                                "%d-%m-%Y %H:%M:%S")
                    except KeyError:
                        pass
                    args["log_date__lte"] = "%s" % end_date
                    continue
                args[key] = value
    log_data = UserActivityLog.objects.select_related().filter(
        **args).order_by("-log_date")
    for entry in log_data:
        entry.log_date = convert_utc_to_localized(time_delta, entry.log_date)
    return render_to_response(
        "activitylog/activitylog.html", {
            'form': form,
            'is_pro_sms': organization.is_pro_sms,
            'log_data': repr(encode_json([log.to_render()
                                          for log in log_data]))
        },
        context_instance=RequestContext(request))
Exemplo n.º 10
0
def analysis_user_preferences(request, form_code):
    manager = get_database_manager(request.user)
    questionnaire = get_project_by_code(manager, form_code)
    if request.method == 'POST':
        preferences_submitted = request.POST.iterlists()
        preferences_to_save = {
            key: 'True' in value
            for key, value in preferences_submitted
        }
        save_analysis_field_preferences(manager, request.user.id,
                                        questionnaire, preferences_to_save)
        return HttpResponse()

    preferences = get_analysis_field_preferences(manager, request.user.id,
                                                 questionnaire, ugettext)
    return HttpResponse(encode_json(preferences),
                        content_type='application/json')
Exemplo n.º 11
0
 def info(self):
     return {
         'header_list': self._header_list,
         'header_name_list': repr(encode_json(self._header_list)),
         'header_type_list': repr(encode_json(self._header_type_list))
     }
Exemplo n.º 12
0
def show_log(request):
    organization = get_organization(request)
    org_id = organization.org_id
    args = dict(organization=org_id)
    time_delta = get_country_time_delta(organization.country)
    if request.method == 'GET':
        form = LogFilterForm(request=request)
    else:
        form = LogFilterForm(request.POST, request=request)
        filter = form.data.copy()
        filter.pop("csrfmiddlewaretoken")
        for key, value in filter.items():
            if value != "":
                if key == "daterange":
                    dates = value.split(" %s " % _("to"))
                    # args["log_date__gte"] = convert_dmy_to_ymd(dates[0])
                    args["log_date__gte"] = convert_local_to_utc(
                        dates[0] + " 00:00:00", time_delta,
                        "%d-%m-%Y %H:%M:%S")
                    try:
                        end_date = date.today()
                        if len(dates) > 1:
                            # end_date = convert_dmy_to_ymd(dates[1])
                            end_date = convert_local_to_utc(
                                dates[1] + " 23:59:59", time_delta,
                                "%d-%m-%Y %H:%M:%S")
                        else:
                            end_date = convert_local_to_utc(
                                dates[0] + " 23:59:59", time_delta,
                                "%d-%m-%Y %H:%M:%S")
                    except KeyError:
                        pass
                    args["log_date__lte"] = "%s" % end_date
                    continue
                args[key] = value
    log_data = UserActivityLog.objects.select_related().filter(
        **args).order_by("-log_date")
    for entry in log_data:
        entry.log_date = convert_utc_to_localized(time_delta, entry.log_date)
        action = entry.action
        if action == "Updated reminders":
            try:
                current_lang = get_language()
                activate(current_lang)
                details = json.loads(entry.detail)
                text_details = ""
                text_details += "<ul class='bulleted'>"
                for key, value in details.iteritems():
                    if value != "":
                        text_details += "<li>" + _(key) % value + "</li>"
                    else:
                        text_details += "<li>" + _(key) + "</li>"
                text_details += "</ul>"
                entry.detail = text_details
            except ValueError:
                entry.detail = _(entry.detail)

        if action == "Set Deadline":
            try:
                current_lang = get_language()
                activate(current_lang)
                entry.detail = _(entry.detail)

            except ValueError:
                entry.detail = _(entry.detail)

        if action == "Edited Data Submission(s) for advanced questionnaire":
            try:
                current_lang = get_language()
                activate(current_lang)
                details = json.loads(entry.detail)
                text_details = ""
                text_details += _("Changed Answers:")
                text_details += "<ul class='bulleted'>"
                for key, value in details.iteritems():
                    question = unicode(value['question'])
                    #if value['old'] and value['new']:
                    try:
                        old_data_value = str(value['old'].encode('UTF-8'))
                        new_data_value = str(value['new'].encode('UTF-8'))
                        text_details += '<li>' + question + ': "' + old_data_value.decode(
                            'UTF-8') + '" ' + _(
                                "to") + ' "' + new_data_value.decode(
                                    'UTF-8') + '"</li>'
                    #except :
                    #new_data_value = str(value['new'])
                    #text_details += '<li>'+ _("New node: ") + '</br>' + question + ':' + new_data_value +'"</li>'
                    #else :
                    #old_data_value = str(value['old'])
                    #text_details += '<li>'+ _("Delete node: ") + '</br>' + question + ':' + old_data_value +'"</li>'
                    except (ValueError, IndexError):
                        entry.detail = _(entry.detail)
                text_details += "</ul>"
                entry.detail = text_details

            except:
                entry.detail = _(entry.detail)
    return render_to_response(
        "activitylog/activitylog.html", {
            'form': form,
            'is_pro_sms': organization.is_pro_sms,
            'log_data': repr(encode_json([log.to_render()
                                          for log in log_data]))
        },
        context_instance=RequestContext(request))
Exemplo n.º 13
0
def project_has_data(request, questionnaire_code=None):
    manager = get_database_manager(request.user)
    form_model = get_form_model_by_code(manager, questionnaire_code)
    success, error = submission_stats(manager, form_model.form_code)
    return HttpResponse(encode_json({'has_data': (success + error > 0)}))