def mark_last_synclog(domain, user, app_id, build_id, sync_date, device_id, save=True): version = None if build_id: version = get_version_from_build_id(domain, build_id) local_save = update_last_sync(user, app_id, sync_date, version) if version: local_save |= update_latest_builds(user, app_id, sync_date, version) app_meta = None if device_id: if app_id: app_meta = DeviceAppMeta(app_id=app_id, build_id=build_id, last_sync=sync_date) local_save |= update_device_meta(user, device_id, device_app_meta=app_meta, save=False) if local_save and save: user.save(fire_signals=False) return local_save
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 mark_last_synclog(domain, user, app_id, build_id, sync_date, latest_build_date, device_id, device_app_meta, commcare_version=None, build_profile_id=None, save_user=True): version = None if build_id: version = get_version_from_build_id(domain, build_id) local_save = False if sync_date: # sync_date could be null if this is called from a heartbeat request local_save |= update_last_sync(user, app_id, sync_date, version) if version: local_save |= update_latest_builds(user, app_id, latest_build_date, version, build_profile_id=build_profile_id) if device_id: local_save |= update_device_meta(user, device_id, commcare_version=commcare_version, device_app_meta=device_app_meta, save=False) if local_save and save_user: user.save(fire_signals=False) return local_save
def _test_app_version(self, domain, form, build): self.assertEqual(build.version, 3) self.assertEqual(get_version_from_build_id(domain, form.build_id), build.version)
def _test_app_version(self, domain, form, build): self.assertEqual(build.version, 3) self.assertEqual(get_version_from_build_id(domain, form.build_id), build.version)