def test_get_last_form_submission_for_user_for_app(self): kwargs_u1 = { 'user_id': 'u1', 'app_id': '1234', 'domain': self.domain, } kwargs_u2 = { 'user_id': 'u2', 'app_id': '1234', 'domain': self.domain, } first = datetime(2013, 7, 15, 0, 0, 0) second = datetime(2013, 7, 16, 0, 0, 0) third = datetime(2013, 7, 17, 0, 0, 0) self._send_form_to_es(received_on=second, xmlns='second', **kwargs_u1) self._send_form_to_es(received_on=third, xmlns='third', **kwargs_u1) self._send_form_to_es(received_on=first, xmlns='first', **kwargs_u1) self._send_form_to_es(received_on=second, xmlns='second', **kwargs_u2) self._send_form_to_es(received_on=third, xmlns='third', **kwargs_u2) self._send_form_to_es(received_on=first, xmlns='first', **kwargs_u2) result = get_last_form_submissions_by_user(self.domain, ['u1', 'u2', 'missing']) self.assertEqual(result['u1'][0]['xmlns'], 'third') self.assertEqual(result['u2'][0]['xmlns'], 'third') result = get_last_form_submissions_by_user(self.domain, ['u1'], '1234') self.assertEqual(result['u1'][0]['xmlns'], 'third')
def rows(self): rows = [] user_ids = map(lambda user: user.user_id, self.users) user_xform_dicts_map = get_last_form_submissions_by_user(self.domain, user_ids, self.selected_app_id) for user in self.users: xform_dict = last_seen = last_sync = app_name = None app_version_info_from_form = app_version_info_from_sync = None if user_xform_dicts_map.get(user.user_id): xform_dict = user_xform_dicts_map[user.user_id][0] if xform_dict: last_seen = string_to_utc_datetime(xform_dict.get('received_on')) if xform_dict.get('app_id'): try: app = get_app(self.domain, xform_dict.get('app_id')) except ResourceNotFound: pass else: app_name = app.name else: app_name = get_meta_appversion_text(xform_dict['form']['meta']) app_version_info_from_form = get_app_version_info( self.domain, xform_dict.get('build_id'), xform_dict.get('version'), xform_dict['form']['meta'], ) if app_name is None and self.selected_app_id: continue last_sync_log = SyncLog.last_for_user(user.user_id) if last_sync_log: last_sync = last_sync_log.date if last_sync_log.build_id: build_version = get_version_from_build_id(self.domain, last_sync_log.build_id) app_version_info_from_sync = AppVersionInfo( build_version, app_version_info_from_form.commcare_version if app_version_info_from_form else None, BuildVersionSource.BUILD_ID ) app_version_info_to_use = _choose_latest_version( app_version_info_from_sync, app_version_info_from_form, ) commcare_version = _get_commcare_version(app_version_info_to_use) build_version = _get_build_version(app_version_info_to_use) rows.append([ user.username_in_report, _fmt_date(last_seen), _fmt_date(last_sync), app_name or "---", build_version, commcare_version ]) return rows
def rows(self): rows = [] selected_app = self.request_params.get(SelectApplicationFilter.slug, None) user_ids = map(lambda user: user.user_id, self.users) user_xform_dicts_map = get_last_form_submissions_by_user(self.domain, user_ids, selected_app) for user in self.users: xform_dict = last_seen = last_sync = app_name = None if user_xform_dicts_map.get(user.user_id): xform_dict = user_xform_dicts_map[user.user_id][0] if xform_dict: last_seen = string_to_utc_datetime(xform_dict.get('received_on')) if xform_dict.get('app_id'): try: app = get_app(self.domain, xform_dict.get('app_id')) except ResourceNotFound: pass else: app_name = app.name else: app_name = get_meta_appversion_text(xform_dict['form']['meta']) app_version_info = get_app_version_info( self.domain, xform_dict.get('build_id'), xform_dict.get('version'), xform_dict['form']['meta'], ) 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 __init__(self, domain, user): super(LSVHNDSurveyIndicator, self).__init__(domain, user) self.forms = get_last_form_submissions_by_user( domain, self.aww_user_ids, xmlns=VHND_SURVEY_XMLNS )
def rows(self): rows = [] user_ids = map(lambda user: user.user_id, self.users) user_xform_dicts_map = get_last_form_submissions_by_user( self.domain, user_ids, self.selected_app_id) for user in self.users: xform_dict = last_seen = last_sync = app_name = None app_version_info_from_form = app_version_info_from_sync = None if user_xform_dicts_map.get(user.user_id): xform_dict = user_xform_dicts_map[user.user_id][0] if xform_dict: last_seen = string_to_utc_datetime( xform_dict.get('received_on')) if xform_dict.get('app_id'): try: app = get_app(self.domain, xform_dict.get('app_id')) except ResourceNotFound: pass else: app_name = app.name else: app_name = get_meta_appversion_text( xform_dict['form']['meta']) app_version_info_from_form = get_app_version_info( self.domain, xform_dict.get('build_id'), xform_dict.get('version'), xform_dict['form']['meta'], ) if app_name is None and self.selected_app_id: continue last_sync_log = SyncLog.last_for_user(user.user_id) if last_sync_log: last_sync = last_sync_log.date if last_sync_log.build_id: build_version = get_version_from_build_id( self.domain, last_sync_log.build_id) app_version_info_from_sync = AppVersionInfo( build_version, app_version_info_from_form.commcare_version if app_version_info_from_form else None, BuildVersionSource.BUILD_ID) app_version_info_to_use = _choose_latest_version( app_version_info_from_sync, app_version_info_from_form, ) commcare_version = _get_commcare_version(app_version_info_to_use) build_version = _get_build_version(app_version_info_to_use) rows.append([ user.username_in_report, _fmt_date(last_seen), _fmt_date(last_sync), app_name or "---", build_version, commcare_version ]) return rows
def __init__(self, domain, user): super(AWWVHNDSurveyIndicator, self).__init__(domain, user) self.forms = get_last_form_submissions_by_user( domain, [self.user.get_id], xmlns=VHND_SURVEY_XMLNS )
def __init__(self, domain, user): super(AWWVHNDSurveyIndicator, self).__init__(domain, user) self.forms = get_last_form_submissions_by_user(domain, [self.user.get_id], xmlns=VHND_SURVEY_XMLNS)