コード例 #1
0
def mobile_user_reports(request):
    template = "hqadmin/mobile_user_reports.html"
    _device_users_by_xform = memoized(device_users_by_xform)

    rows = []

    logs = DeviceReportEntry.objects.filter(
        type__exact="user-report").order_by('domain')
    for log in logs:
        seconds_since_epoch = int(time.mktime(log.date.timetuple()) * 1000)
        rows.append(
            dict(domain=log.domain,
                 time=format_datatables_data(text=log.date,
                                             sort_key=seconds_since_epoch),
                 user=log.username,
                 device_users=_device_users_by_xform(log.xform_id),
                 message=log.msg,
                 version=(log.app_version or 'unknown').split(' ')[0],
                 detailed_version=html.escape(log.app_version or 'unknown'),
                 report_id=log.xform_id))

    headers = DataTablesHeader(
        DataTablesColumn(_("View Form")), DataTablesColumn(_("Domain")),
        DataTablesColumn(_("Time"), sort_type=DTSortType.NUMERIC),
        DataTablesColumn(_("User"), sort_type=DTSortType.NUMERIC),
        DataTablesColumn(_("Device Users"), sort_type=DTSortType.NUMERIC),
        DataTablesColumn(_("Message"), sort_type=DTSortType.NUMERIC),
        DataTablesColumn(_("Version"), sort_type=DTSortType.NUMERIC))

    context = get_hqadmin_base_context(request)
    context["headers"] = headers
    context["aoColumns"] = headers.render_aoColumns
    context["rows"] = rows

    return render(request, template, context)
コード例 #2
0
ファイル: views.py プロジェクト: kamilk161/commcare-hq
def mobile_user_reports(request):
    template = "hqadmin/mobile_user_reports.html"
    _device_users_by_xform = memoized(device_users_by_xform)
    rows = []

    logs = DeviceReportEntry.objects.filter(type__exact="user-report").order_by('domain')
    for log in logs:
        seconds_since_epoch = int(time.mktime(log.date.timetuple()) * 1000)
        rows.append(dict(domain=log.domain,
                         time=format_datatables_data(text=log.date, sort_key=seconds_since_epoch),
                         user=log.username,
                         device_users=_device_users_by_xform(log.xform_id),
                         message=log.msg,
                         version=(log.app_version or 'unknown').split(' ')[0],
                         detailed_version=html.escape(log.app_version or 'unknown'),
                         report_id=log.xform_id))

    headers = DataTablesHeader(
        DataTablesColumn(_("View Form")),
        DataTablesColumn(_("Domain")),
        DataTablesColumn(_("Time"), sort_type=DTSortType.NUMERIC),
        DataTablesColumn(_("User"), sort_type=DTSortType.NUMERIC),
        DataTablesColumn(_("Device Users"), sort_type=DTSortType.NUMERIC),
        DataTablesColumn(_("Message"), sort_type=DTSortType.NUMERIC),
        DataTablesColumn(_("Version"), sort_type=DTSortType.NUMERIC)

    )

    context = get_hqadmin_base_context(request)
    context["headers"] = headers
    context["aoColumns"] = headers.render_aoColumns
    context["rows"] = rows

    return render(request, template, context)
コード例 #3
0
    def _create_rows(self, logs, matching_id=None, range=None):
        _device_users_by_xform = memoized(device_users_by_xform)
        row_set = []
        user_query = self._filter_query_by_slug(DeviceLogUsersFilter.slug)
        device_query = self._filter_query_by_slug(DeviceLogDevicesFilter.slug)

        self.total_records = logs.count()
        logs = logs.order_by(self.ordering)
        if range:
            logs = logs[range]
        for log in logs:
            row_set.append(self._create_row(log, matching_id, _device_users_by_xform, user_query, device_query))

        return row_set
コード例 #4
0
ファイル: reports.py プロジェクト: saketkanth/commcare-hq
    def _create_rows(self, logs, matching_id=None, range=None):
        _device_users_by_xform = memoized(device_users_by_xform)
        row_set = []
        user_query = self._filter_query_by_slug(DeviceLogUsersFilter.slug)
        device_query = self._filter_query_by_slug(DeviceLogDevicesFilter.slug)

        self.total_records = logs.count()
        logs = logs.order_by(self.ordering)
        if range:
            logs = logs[range]
        for log in logs:
            row_set.append(self._create_row(log, matching_id, _device_users_by_xform, user_query, device_query))

        return row_set
コード例 #5
0
ファイル: reports.py プロジェクト: amonkeykong81/commcare-hq
    def _create_rows(self, logs, matching_id=None):
        _device_users_by_xform = memoized(device_users_by_xform)
        row_set = []
        user_query = self._filter_query_by_slug(DeviceLogUsersFilter.slug)
        device_query = self._filter_query_by_slug(DeviceLogDevicesFilter.slug)
        paged = slice(self.pagination.start,
                      self.pagination.start + self.pagination.count + 1)

        self.total_records = logs.count()
        for log in logs.order_by(self.ordering)[paged]:
            date = str(log.date)
            date_fmt = tz_utils.string_to_prertty_time(
                date, self.timezone, fmt="%b %d, %Y %H:%M:%S")

            username = log.username
            username_fmt = '<a href="%(url)s">%(username)s</a>' % {
                "url":
                "%s?%s=%s&%s" % (
                    self.get_url(domain=self.domain),
                    DeviceLogUsersFilter.slug,
                    DeviceLogUsersFilter.value_to_param(username),
                    user_query,
                ),
                "username": (username if username else
                             '<span class="label label-info">Unknown</span>')
            }

            device_users = _device_users_by_xform(log.xform_id)
            device_users_fmt = ', '.join([
                '<a href="%(url)s">%(username)s</a>' % {
                    "url":
                    "%s?%s=%s&%s" %
                    (self.get_url(domain=self.domain),
                     DeviceLogUsersFilter.slug, username, user_query),
                    "username":
                    username,
                } for username in device_users
            ])

            log_tag = log.type or 'unknown'
            tag_classes = ["label"]
            if log_tag in self.tag_labels:
                tag_classes.append(self.tag_labels[log_tag])

            log_tag_format = (
                '<a href="%(url)s" class="%(classes)s"%(extra_params)s '
                'data-datatable-tooltip="right" '
                'data-datatable-tooltip-text="%(tooltip)s">%(text)s</a>') % {
                    "url":
                    "%s?goto=%s" % (self.get_url(domain=self.domain),
                                    html.escape(json.dumps(log.id))),
                    "classes":
                    " ".join(tag_classes),
                    "text":
                    log_tag,
                    "extra_params": (' data-datatable-highlight-closest="tr"'
                                     if log.id == matching_id else ''),
                    "tooltip":
                    "Show the surrounding 100 logs."
                }

            device = log.device_id
            device_fmt = '<a href="%(url)s">%(device)s</a>' % {
                "url":
                "%s?%s=%s&%s" %
                (self.get_url(domain=self.domain), DeviceLogDevicesFilter.slug,
                 device, device_query),
                "device":
                device
            }

            version = log.app_version
            ver_format = ('%s <a href="#" data-datatable-tooltip="left" '
                          'data-datatable-tooltip-text="%s">'
                          '<i class="icon icon-info-sign"></i></a>') % (
                              version.split(' ')[0], html.escape(version))

            row_set.append([
                date_fmt, log_tag_format, username_fmt, device_users_fmt,
                device_fmt, log.msg, ver_format
            ])
        return row_set
コード例 #6
0
ファイル: reports.py プロジェクト: amonkeykong81/commcare-hq
    def _create_rows(self, logs, matching_id=None):
        _device_users_by_xform = memoized(device_users_by_xform)
        row_set = []
        user_query = self._filter_query_by_slug(DeviceLogUsersFilter.slug)
        device_query = self._filter_query_by_slug(DeviceLogDevicesFilter.slug)
        paged = slice(self.pagination.start,
                      self.pagination.start + self.pagination.count + 1)

        self.total_records = logs.count()
        for log in logs.order_by(self.ordering)[paged]:
            date = str(log.date)
            date_fmt = tz_utils.string_to_prertty_time(
                date, self.timezone, fmt="%b %d, %Y %H:%M:%S")

            username = log.username
            username_fmt = '<a href="%(url)s">%(username)s</a>' % {
                "url": "%s?%s=%s&%s" % (
                    self.get_url(domain=self.domain),
                    DeviceLogUsersFilter.slug,
                    DeviceLogUsersFilter.value_to_param(username),
                    user_query,
                ),
                "username": (
                    username if username
                    else '<span class="label label-info">Unknown</span>'
                )
            }

            device_users = _device_users_by_xform(log.xform_id)
            device_users_fmt = ', '.join([
                '<a href="%(url)s">%(username)s</a>' % {
                    "url": "%s?%s=%s&%s" % (self.get_url(domain=self.domain),
                                            DeviceLogUsersFilter.slug,
                                            username,
                                            user_query),
                    "username": username,
                }
                for username in device_users
            ])

            log_tag = log.type or 'unknown'
            tag_classes = ["label"]
            if log_tag in self.tag_labels:
                tag_classes.append(self.tag_labels[log_tag])

            log_tag_format = (
                '<a href="%(url)s" class="%(classes)s"%(extra_params)s '
                'data-datatable-tooltip="right" '
                'data-datatable-tooltip-text="%(tooltip)s">%(text)s</a>'
            ) % {
                "url": "%s?goto=%s" % (self.get_url(domain=self.domain),
                                       html.escape(json.dumps(log.id))),
                "classes": " ".join(tag_classes),
                "text": log_tag,
                "extra_params": (' data-datatable-highlight-closest="tr"'
                                 if log.id == matching_id else ''),
                "tooltip": "Show the surrounding 100 logs."
            }

            device = log.device_id
            device_fmt = '<a href="%(url)s">%(device)s</a>' % {
                "url": "%s?%s=%s&%s" % (self.get_url(domain=self.domain),
                                        DeviceLogDevicesFilter.slug,
                                        device,
                                        device_query),
                "device": device
            }

            version = log.app_version
            ver_format = (
                '%s <a href="#" data-datatable-tooltip="left" '
                'data-datatable-tooltip-text="%s">'
                '<i class="icon icon-info-sign"></i></a>'
            ) % (version.split(' ')[0], html.escape(version))

            row_set.append([date_fmt, log_tag_format, username_fmt,
                            device_users_fmt, device_fmt, log.msg, ver_format])
        return row_set