def _get_failed_entries(organization, display_start=0, display_length=25, sort_col=2, sort_dir='asc'): header_dict = OrderedDict([('from_number', 'Data Sender'), ('created_at', 'Submission Date'), ('form_code', 'Questionnaire Code'), ('message', 'SMS Text'), ('error', 'Error message')]) order = list(header_dict.keys())[sort_col - 1] total = DatawinnerLog.objects.filter(organization=organization).count() i_start = display_start if display_length == 0: i_end = total else: i_end = display_start + display_length if sort_dir == 'desc': order = '-' + order org_logs = DatawinnerLog.objects.filter( organization=organization).order_by(order)[i_start:i_end] # import IPython # IPython.embed() local_time_delta = get_country_time_delta(organization.country) for entry in org_logs: entry.created_at = convert_utc_to_localized(local_time_delta, entry.created_at) org_logs_flat = org_logs.values_list('from_number', 'created_at', 'form_code', 'message', 'error') return total, list(org_logs_flat)
def _construct_project_dict(user, local_time_delta, project): project_id = project['project_id'] delete_links = reverse('delete_project', args=[project_id]) disable_link_class, hide_link_class = _get_visibility_settings_for( user, project) return dict( delete_links=delete_links, name=project['name'], created=convert_utc_to_localized(local_time_delta, project['created']), qid=project['qid'], link=project['link'], web_submission_link_disabled=project['web_submission_link_disabled'], web_submission_link=project['web_submission_link'], analysis=project['analysis'], disabled=project['disabled'], log=project['log'], create_subjects_link=project['create_subjects_link'], entity_type=project['entity_type'], encoded_name=project['encoded_name'], import_template_file_name=project['import_template_file_name'], is_advanced_questionnaire=bool(project['is_advanced_questionnaire']), is_poll=project['is_poll'], disable_link_class=disable_link_class, hide_link_class=hide_link_class)
def _get_failed_entries(organization): org_logs = DatawinnerLog.objects.filter( organization=organization).order_by('-created_at') local_time_delta = get_country_time_delta(organization.country) for entry in org_logs: entry.created_at = convert_utc_to_localized(local_time_delta, entry.created_at) return org_logs
def _get_timezone_information(organization): timedelta = get_country_time_delta(organization.country) localized_time = convert_utc_to_localized(timedelta, datetime.datetime.utcnow()) timedelta_as_string = "%s%.2d:%.2d" % (timedelta[0], timedelta[1], timedelta[2]) return ugettext("GMT%s <span class='timezone-text'> Now it is: %s</span>" ) % (timedelta_as_string, datetime.datetime.strftime(localized_time, "%H:%M"))
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) organization = get_organization(request) local_time_delta = get_country_time_delta(organization.country) survey_response_ids = get_survey_response_ids_from_request( dbm, request, questionnaire, local_time_delta) received_times = [] for survey_response_id in survey_response_ids: survey_response = SurveyResponse.get(dbm, survey_response_id) received_times.append( datetime.datetime.strftime( convert_utc_to_localized(local_time_delta, 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, questionnaire.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 submissions have been deleted"), 'success': True }) else: response = encode_json({ 'error_message': ugettext("No records deleted"), 'success': False }) return HttpResponse(response)
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 _convert_to_localized_date_time(self, key, res, submission): submission_date_time = datetime.datetime.strptime(res.get(key), "%b. %d, %Y, %I:%M %p") datetime_local = convert_utc_to_localized(self.localized_time_delta, submission_date_time) submission.append(datetime_local.strftime("%b. %d, %Y, %H:%M"))
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 _convert_to_localized_date_time(self, submission_date): submission_date_time = datetime.strptime( submission_date, SUBMISSION_DATE_FORMAT_FOR_SUBMISSION) return convert_utc_to_localized(self.local_time_delta, submission_date_time)
def convert_to_localized_date_time(submission_date, local_time_delta): submission_date_time = datetime.datetime.strptime(submission_date, "%b. %d, %Y, %I:%M %p") datetime_local = convert_utc_to_localized(local_time_delta, submission_date_time) return datetime_local.strftime("%b. %d, %Y, %H:%M")