:py:mod:`wfexs_backend.pushers.nextcloud_export`
================================================

.. py:module:: wfexs_backend.pushers.nextcloud_export

.. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`ExportMapping <wfexs_backend.pushers.nextcloud_export.ExportMapping>`
     - .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.ExportMapping
          :summary:
   * - :py:obj:`NextcloudContentExporter <wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter>`
     - .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter
          :summary:
   * - :py:obj:`NextcloudExportPlugin <wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin>`
     - .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin
          :summary:

API
~~~

.. py:class:: ExportMapping
   :canonical: wfexs_backend.pushers.nextcloud_export.ExportMapping

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.ExportMapping

   .. py:attribute:: local_filename
      :canonical: wfexs_backend.pushers.nextcloud_export.ExportMapping.local_filename
      :type: wfexs_backend.common.AbsPath
      :value: None

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.ExportMapping.local_filename

   .. py:attribute:: remote_dirname
      :canonical: wfexs_backend.pushers.nextcloud_export.ExportMapping.remote_dirname
      :type: wfexs_backend.common.RelPath
      :value: None

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.ExportMapping.remote_dirname

   .. py:attribute:: remote_basename
      :canonical: wfexs_backend.pushers.nextcloud_export.ExportMapping.remote_basename
      :type: wfexs_backend.common.RelPath
      :value: None

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.ExportMapping.remote_basename

.. py:class:: NextcloudContentExporter(nextcloud_url: wfexs_backend.common.URIType, nextcloud_user: str, nextcloud_token: str, nextcloud_base_directory: wfexs_backend.common.AbsPath, retention_tag_name: Optional[str] = None)
   :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter

   .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.__init__

   .. py:method:: create_remote_path(reldir: Optional[RelPath] = None, name: Optional[RelPath] = None) -> Tuple[Any, AbsPath, RelPath]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.create_remote_path

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.create_remote_path

   .. py:method:: remove_remote_path(name: wfexs_backend.common.RelPath, reldir: Optional[RelPath] = None) -> bool
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.remove_remote_path

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.remove_remote_path

   .. py:method:: _chunked_uploader(fmapping: wfexs_backend.pushers.nextcloud_export.ExportMapping) -> extended_nc_client.extended_nc_client.DAVRequestResponse
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter._chunked_uploader

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter._chunked_uploader

   .. py:method:: _chunked_file_batch_uploader(files_to_process: Sequence[ExportMapping]) -> Sequence[DAVRequestResponse]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter._chunked_file_batch_uploader

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter._chunked_file_batch_uploader

   .. py:method:: mappings_uploader(contents_to_process: Sequence[ExportMapping], destname: Optional[RelPath] = None) -> Tuple[Sequence[DAVRequestResponse], Optional[AbsPath], Optional[RelPath]]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.mappings_uploader

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.mappings_uploader

   .. py:method:: create_share_links(relpath: str, emails: Sequence[str], expire_in: Optional[int] = None, licences: Tuple[LicenceDescription, ...] = tuple()) -> Sequence[LicensedURI]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.create_share_links

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.create_share_links

   .. py:method:: get_share_link_info(share_link: str) -> Sequence[nextcloud_client.nextcloud_client.ShareInfo]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.get_share_link_info

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudContentExporter.get_share_link_info

.. py:class:: NextcloudExportPlugin(refdir: pathlib.Path, setup_block: Optional[SecurityContextConfig] = None, default_licences: Sequence[LicenceDescription] = [], default_orcids: Sequence[ResolvedORCID] = [], default_preferred_id: Optional[str] = None)
   :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin

   Bases: :py:obj:`wfexs_backend.pushers.abstract_token_export.AbstractTokenExportPlugin`

   .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.__init__

   .. py:attribute:: PLUGIN_NAME
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.PLUGIN_NAME
      :value: 'cast(...)'

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.PLUGIN_NAME

   .. py:attribute:: ENABLED
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.ENABLED
      :type: ClassVar[bool]
      :value: True

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.ENABLED

   .. py:method:: book_pid(preferred_id: Optional[str] = None, initially_required_metadata: Optional[Mapping[str, Any]] = None, initially_required_community_specific_metadata: Optional[Mapping[str, Any]] = None, title: Optional[str] = None, description: Optional[str] = None, licences: Sequence[LicenceDescription] = [], resolved_orcids: Sequence[ResolvedORCID] = []) -> Optional[DraftEntry]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.book_pid

   .. py:method:: discard_booked_pid(pid_or_draft: Union[str, DraftEntry]) -> bool
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.discard_booked_pid

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.discard_booked_pid

   .. py:method:: get_pid_metadata(pid: str) -> Optional[Mapping[str, Any]]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.get_pid_metadata

   .. py:method:: get_pid_draftentry(pid: str) -> Optional[DraftEntry]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.get_pid_draftentry

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.get_pid_draftentry

   .. py:method:: _prepare_upload_mappings(items: Sequence[AnyContent]) -> Sequence[ExportMapping]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin._prepare_upload_mappings

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin._prepare_upload_mappings

   .. py:method:: get_file_bucket_prefix(draft_entry: wfexs_backend.pushers.DraftEntry) -> str
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.get_file_bucket_prefix

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.get_file_bucket_prefix

   .. py:method:: upload_file_to_draft(draft_entry: wfexs_backend.pushers.DraftEntry, filename: Union[str, IO[bytes]], remote_filename: Optional[str], content_size: Optional[int] = None) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.upload_file_to_draft

   .. py:method:: update_record_metadata(draft_entry: wfexs_backend.pushers.DraftEntry, metadata: Optional[Mapping[str, Any]] = None, community_specific_metadata: Optional[Mapping[str, Any]] = None, title: Optional[str] = None, description: Optional[str] = None, licences: Sequence[LicenceDescription] = [], resolved_orcids: Sequence[ResolvedORCID] = []) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.update_record_metadata

   .. py:method:: _create_share_links(remote_relpath: str, licences: Sequence[LicenceDescription] = []) -> Tuple[Sequence[LicensedURI], Sequence[str], Optional[int]]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin._create_share_links

      .. autodoc2-docstring:: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin._create_share_links

   .. py:method:: publish_draft_record(draft_entry: wfexs_backend.pushers.DraftEntry) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.nextcloud_export.NextcloudExportPlugin.publish_draft_record
