コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: views.py プロジェクト: manish211/datawinners
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
コード例 #4
0
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"))
コード例 #5
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)
    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)
コード例 #6
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))
コード例 #7
0
 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"))
コード例 #8
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))
コード例 #9
0
 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)
コード例 #10
0
ファイル: analysis_helper.py プロジェクト: mariot/datawinners
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")