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)
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)
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))
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))
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)
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
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
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))
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')
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)) }
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))
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)}))