gws.plugin.qfieldcloud.action_base

QField Cloud API action: projects, capabilities, packaging and directories.

Source code: gws.plugin.qfieldcloud.action_base

Module Contents

class gws.plugin.qfieldcloud.action_base.BaseAction

Bases: gws.base.action.Object

Base of the QField Cloud API action.

Holds the configured QField projects and the authorization method, caches the project capabilities, creates packages and manages the project directories. Request handling is done by action_handler.Handler.

authMethod: gws.plugin.qfieldcloud.auth.Object

Authorization method for QField clients.

capsCache: dict[str, gws.plugin.qfieldcloud.caps.Caps]

Capabilities by QField project uid. Not serialized.

deltaLifeTime: int

How long stored delta payloads are kept, in seconds.

qfcProjects: list[gws.plugin.qfieldcloud.core.QfcProject]

Configured QField projects.

cleanup_old_packages(qfc_project: gws.plugin.qfieldcloud.core.QfcProject, keep_seconds: int = 3600)

Remove package directories older than keep_seconds.

Parameters:
  • qfc_project – QField project.

  • keep_seconds – Maximum age in seconds.

configure()
create_package_from_cli(qfc_project_uid: str, target_dir: str, project: gws.Project | None, user: gws.User)

Create a package in a given directory.

Parameters:
  • qfc_project_uid – QField project uid.

  • target_dir – Directory to write the package into.

  • project – GWS project context.

  • user – User the package is created for.

Raises:

gws.NotFoundError – If the QField project is not found.

create_package_from_worker(worker: PackageWorker, pa: WorkerPayload)

Create a package in a new package directory. Called by the package worker.

Packages older than an hour are removed first.

Parameters:
  • worker – Package worker.

  • pa – Job payload.

deltas_db_path(qfc_project: gws.plugin.qfieldcloud.core.QfcProject) → str

Return the path of the delta database of a QField project.

Parameters:

qfc_project – QField project.

Returns:

File path.

get_cached_caps(qfc_project: gws.plugin.qfieldcloud.core.QfcProject) → gws.plugin.qfieldcloud.caps.Caps | None

Return cached capabilities, if the QGIS project source has not changed.

Parameters:

qfc_project – QField project.

Returns:

Capabilities, or None if not cached or outdated.

get_caps(qfc_project: gws.plugin.qfieldcloud.core.QfcProject) → gws.plugin.qfieldcloud.caps.Caps

Return the capabilities of a QField project, from the cache if they are still valid.

Parameters:

qfc_project – QField project.

Returns:

Capabilities.

get_db_provider(qfc_project: gws.plugin.qfieldcloud.core.QfcProject) → gws.DatabaseProvider

Return the database provider of the models of a QField project.

Parameters:

qfc_project – QField project.

Returns:

Database provider.

Raises:

gws.Error – If the project has no models, or its models use more than one database provider.

get_job(job_id: str, user: gws.User) → gws.Job | None

Return a job of a user.

Parameters:
  • job_id – Job uid.

  • user – User.

Returns:

The job, or None if not found.

get_packager() → gws.plugin.qfieldcloud.packager.Object

Return a new packager. Override to use a custom packager.

Returns:

Packager.

get_patcher() → gws.plugin.qfieldcloud.patcher.Object

Return a new patcher. Override to use a custom patcher.

Returns:

Patcher.

get_qfc_project(qfc_project_uid: str, user: gws.User) → gws.plugin.qfieldcloud.core.QfcProject | None

Return a QField project if the user can use it.

Parameters:
  • qfc_project_uid – QField project uid.

  • user – User.

Returns:

QField project, or None if not found.

get_qfc_projects(user: gws.User) → list[gws.plugin.qfieldcloud.core.QfcProject]

Return the QField projects a user can use.

Parameters:

user – User.

Returns:

QField projects.

latest_package_dir(qfc_project: gws.plugin.qfieldcloud.core.QfcProject) → str | None

Return the directory of the latest complete package.

Parameters:

qfc_project – QField project.

Returns:

Directory path, or None if there is no complete package.

latest_package_path_map(qfc_project: gws.plugin.qfieldcloud.core.QfcProject) → dict[str, str]

Return the path map of the latest package of a QField project.

Parameters:

qfc_project – QField project.

Returns:

Paths on disk by package file name, empty if there is no package.

new_package_dir(qfc_project: gws.plugin.qfieldcloud.core.QfcProject, uid: str) → str

Create a directory for a new package.

Parameters:
  • qfc_project – QField project.

  • uid – Package uid.

Returns:

Directory path.

project_base_dir(qfc_project: gws.plugin.qfieldcloud.core.QfcProject) → str

Return the base directory of a QField project, creating it if needed.

The directory is <VAR_DIR>/qfieldcloud/projects/<uid>. Packages, caches and stored deltas are kept below it.

Parameters:

qfc_project – QField project.

Returns:

Directory path.

project_cache_dir(qfc_project: gws.plugin.qfieldcloud.core.QfcProject) → str

Return the cache directory of a QField project, creating it if needed.

Parameters:

qfc_project – QField project.

Returns:

Directory path.

class gws.plugin.qfieldcloud.action_base.PackageWorker

Bases: gws.base.job.worker.Object

Job worker that creates a package.

classmethod run(root: gws.Root, job: gws.Job)

Run a packaging job.

Parameters:
  • root – Root object.

  • job – The job.

work()

Create the package and mark the job as complete.

class gws.plugin.qfieldcloud.action_base.WorkerPayload

Bases: gws.Data

Job payload for the package worker.

actionUid: str

Uid of the action.

jobType: str

Job type, package.

projectUid: str | None

GWS project uid.

qfcProjectUid: str

QField project uid.