Beispiel #1
0
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
Beispiel #2
0
    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
Beispiel #3
0
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
Beispiel #4
0
 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)
Beispiel #5
0
 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)