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