def test_get_sync_logs_for_user(self): self.assert_doc_sets_equal( get_sync_logs_for_user(self.user_id, 4), self.sync_logs + self.legacy_sync_logs)
def test_get_sync_logs_for_user(self): self.assert_doc_sets_equal(get_sync_logs_for_user(self.user_id, 4), self.sync_logs + self.legacy_sync_logs)
def rows(self): base_link_url = '{}?id={{id}}'.format(reverse('raw_couch')) user_id = self.request.GET.get('individual') if not user_id: return [] # security check get_document_or_404(CommCareUser, self.domain, user_id) def _sync_log_to_row(sync_log): def _fmt_duration(duration): if isinstance(duration, int): return format_datatables_data( '<span class="{cls}">{text}</span>'.format( cls=_bootstrap_class(duration or 0, 60, 20), text=_('{} seconds').format(duration), ), duration ) else: return format_datatables_data( '<span class="label label-default">{text}</span>'.format( text=_("Unknown"), ), -1, ) def _fmt_id(sync_log_id): href = base_link_url.format(id=sync_log_id) return '<a href="{href}" target="_blank">{id:.5}...</a>'.format( href=href, id=sync_log_id ) def _fmt_error_info(sync_log): if not sync_log.had_state_error: return u'<span class="label label-success">✓</span>' else: return (u'<span class="label label-danger">X</span>' u'State error {}<br>Expected hash: {:.10}...').format( _naturaltime_with_hover(sync_log.error_date), sync_log.error_hash, ) def _get_state_hash_display(sync_log): try: return u'{:.10}...'.format(sync_log.get_state_hash()) except SyncLogAssertionError as e: return _(u'Error computing hash! {}').format(e) num_cases = sync_log.case_count() columns = [ _fmt_date(sync_log.date), format_datatables_data(num_cases, num_cases), _fmt_duration(sync_log.duration), ] if self.show_extra_columns: columns.append(_fmt_id(sync_log.get_id)) columns.append(sync_log.log_format) columns.append(_fmt_id(sync_log.previous_log_id) if sync_log.previous_log_id else '---') columns.append(_fmt_error_info(sync_log)) columns.append(_get_state_hash_display(sync_log)) columns.append(_naturaltime_with_hover(sync_log.last_submitted)) columns.append(u'{}<br>{:.10}'.format(_naturaltime_with_hover(sync_log.last_cached), sync_log.hash_at_last_cached)) return columns return [_sync_log_to_row(sync_log) for sync_log in get_sync_logs_for_user(user_id, self.limit)]