magpie.helpers.sync_resources¶
Synchronize local and remote resources.
To implement a new service, see the _SyncServiceInterface class.
Module Contents¶
-
magpie.helpers.sync_resources.merge_local_and_remote_resources(resources_local, service_sync_type, service_id, session)[source]¶ Main function to sync resources with remote server.
-
magpie.helpers.sync_resources._merge_resources(resources_local, resources_remote, max_depth=None)[source]¶ Merge resources_local and resources_remote, adding the following keys to the output:
- remote_id: id of the RemoteResource
- matches_remote: True or False depending if the resource is present on the remote server
Returns: dictionary of the form validated by magpie.helpers.sync_services.is_valid_resource_schema.
-
magpie.helpers.sync_resources._sort_resources(resources)[source]¶ Sorts a resource dictionary of the type validated by ‘sync_services.is_valid_resource_schema’ by using an OrderedDict.
Returns: None
-
magpie.helpers.sync_resources._ensure_sync_info_exists(service_resource_id, session)[source]¶ Make sure the RemoteResourcesSyncInfo entry exists in the database.
Parameters: - service_resource_id –
- session –
-
magpie.helpers.sync_resources._get_remote_resources(service)[source]¶ Request remote resources, depending on service type.
Parameters: service – (models.Service) Returns:
-
magpie.helpers.sync_resources._delete_records(service_id, session)[source]¶ Delete all RemoteResource based on a Service.resource_id.
Parameters: - service_id –
- session –
-
magpie.helpers.sync_resources._create_main_resource(service_id, session)[source]¶ Creates a main resource for a service, whether one currently exists or not.
Each RemoteResourcesSyncInfo has a main RemoteResource of the same name as the service. This is similar to the Service and Resource relationship.
Parameters: - service_id –
- session –
-
magpie.helpers.sync_resources._update_db(remote_resources, service_id, session)[source]¶ Writes remote resources to database.
Parameters: - remote_resources –
- service_id –
- session –
-
magpie.helpers.sync_resources._get_resource_children(resource, db_session)[source]¶ Mostly copied from ziggurat_foundations to use RemoteResource instead of Resource.
Parameters: - resource –
- db_session –
Returns:
-
magpie.helpers.sync_resources._query_remote_resources_in_database(service_id, session)[source]¶ Reads remote resources from the RemoteResources table. No external request is made.
Returns: a dictionary of the form defined in ‘sync_services.is_valid_resource_schema’
-
magpie.helpers.sync_resources.get_last_sync(service_id, session) → Optional[datetime.datetime][source]¶
-
magpie.helpers.sync_resources.fetch_all_services_by_type(service_type, session)[source]¶ Get remote resources for all services of a certain type.
Parameters: - service_type –
- session –
-
magpie.helpers.sync_resources.fetch_single_service(service, session)[source]¶ Get remote resources for a single service.
Parameters: - service – (models.Service) or service_id
- session –