def rows(self): rows = [] selected_app = self.request_params.get(SelectApplicationFilter.slug, None) for user in self.users: last_seen = last_sync = app_name = None xform = get_last_form_submission_for_user_for_app( self.domain, user.user_id, selected_app) if xform: last_seen = xform.received_on if xform.app_id: try: app = get_app(self.domain, xform.app_id) except ResourceNotFound: pass else: app_name = app.name else: app_name = get_meta_appversion_text(xform) app_version_info = get_app_version_info(xform) build_html = _build_html(app_version_info) commcare_version = ( 'CommCare {}'.format(app_version_info.commcare_version) if app_version_info.commcare_version else _("Unknown CommCare Version") ) commcare_version_html = mark_safe('<span class="label label-info">{}</span>'.format( commcare_version) ) app_name = app_name or _("Unknown App") app_name = format_html( u'{} {} {}', app_name, mark_safe(build_html), commcare_version_html ) if app_name is None and selected_app: continue last_sync_log = SyncLog.last_for_user(user.user_id) if last_sync_log: last_sync = last_sync_log.date rows.append( [user.username_in_report, _fmt_date(last_seen), _fmt_date(last_sync), app_name or "---"] ) return rows
def rows(self): rows = [] selected_app = self.request_params.get(SelectApplicationFilter.slug, None) for user in self.users: last_seen = last_sync = app_name = None xform = get_last_form_submission_for_user_for_app( self.domain, user.user_id, selected_app) if xform: last_seen = xform.received_on build_version, build_version_source = get_build_version(xform) if xform.app_id: try: app = get_app(self.domain, xform.app_id) except ResourceNotFound: pass else: app_name = app.name else: app_name = get_meta_appversion_text(xform) build_html = _build_html(build_version, build_version_source) app_name = app_name or _("Unknown App") app_name = format_html( u'{} {}', app_name, mark_safe(build_html), ) if app_name is None and selected_app: continue last_sync_log = SyncLog.last_for_user(user.user_id) if last_sync_log: last_sync = last_sync_log.date rows.append( [user.username_in_report, _fmt_date(last_seen), _fmt_date(last_sync), app_name or "---"] ) return rows
def test_get_last_form_submission_for_user_for_app(self): self.assert_docs_equal( get_last_form_submission_for_user_for_app(self.domain, self.user_id, self.app_id), self.forms[0])