surveydata.azureblobstorage module

Support for Azure Blob Storage survey data storage.

class surveydata.azureblobstorage.AzureBlobStorage(container_name: str, blob_name_prefix: str, connection_string: Optional[str] = None, account_url: Optional[str] = None)

Bases: StorageSystem

Azure Blob Storage survey data storage implementation.

__init__(container_name: str, blob_name_prefix: str, connection_string: Optional[str] = None, account_url: Optional[str] = None)

Initialize Azure Blob Storage for survey data.

Parameters:
  • container_name (str) – Azure Storage container name (must already exist)

  • blob_name_prefix (str) – Prefix to use for all blob names (e.g., “Surveys/Form123/”)

  • connection_string (str) – If connecting via connection string, the connection string to use

  • account_url (str) – If connecting via manual (prior) authentication, account URL to use, like https://<storageaccountname>.blob.core.windows.net

attachment_object_name(submission_id: str, attachment_name: str) str

Get attachment object name for specific attachment.

Parameters:
  • submission_id (str) – Unique submission ID

  • attachment_name (str) – Attachment filename

Returns:

Object name for submission

Return type:

str

attachments_supported() bool

Query whether storage system supports attachments.

Returns:

True if attachments supported, otherwise False

Return type:

bool

get_attachment(attachment_location: str = '', submission_id: str = '', attachment_name: str = '') BinaryIO

Get submission attachment from storage.

Parameters:
  • attachment_location (str) – Attachment location string (as returned when attachment stored)

  • submission_id (str) – Unique submission ID (in lieu of attachment_location)

  • attachment_name (str) – Attachment filename (in lieu of attachment_location)

Returns:

Attachment as file-like object (though, note: it doesn’t support seeking)

Return type:

BinaryIO

Must pass either attachment_location or both submission_id and attachment_name.

get_metadata(metadata_id: str) str

Get metadata string from storage.

Parameters:

metadata_id (str) – Unique metadata ID (should begin and end with __ and not conflict with any submission ID)

Returns:

Metadata string from storage, or empty string if no such metadata exists

Return type:

str

get_metadata_binary(metadata_id: str) bytes

Get metadata bytes from storage.

Parameters:

metadata_id (str) – Unique metadata ID (should not conflict with any submission ID)

Returns:

Metadata bytes from storage, or empty bytes array if no such metadata exists

Return type:

bytes

get_submission(submission_id: str) dict

Get submission data from storage.

Parameters:

submission_id (str) – Unique submission ID

Returns:

Submission data (or empty dictionary if submission not found)

Return type:

dict

list_attachments(submission_id: str = '') list

List all attachments currently in storage.

Parameters:

submission_id (str) – Optional submission ID, to list only attachments for specific submission

Returns:

List of attachments, each as dict with name, submission_id, and location_string

Return type:

list

list_submissions() list

List all submissions currently in storage.

Returns:

List of submission IDs

Return type:

list

query_attachment(attachment_location: str = '', submission_id: str = '', attachment_name: str = '') bool

Query whether specific submission attachment exists in storage.

Parameters:
  • attachment_location (str) – Attachment location string (as returned when attachment stored)

  • submission_id (str) – Unique submission ID (in lieu of attachment_location)

  • attachment_name (str) – Attachment filename (in lieu of attachment_location)

Returns:

True if submission exists in storage; otherwise False

Return type:

bool

Must pass either attachment_location or both submission_id and attachment_name.

query_submission(submission_id: str) bool

Query whether specific submission exists in storage.

Parameters:

submission_id (str) – Unique submission ID

Returns:

True if submission exists in storage; otherwise False

Return type:

bool

store_attachment(submission_id: str, attachment_name: str, attachment_data: BinaryIO) str

Store submission attachment in storage.

Parameters:
  • submission_id (str) – Unique submission ID

  • attachment_name (str) – Attachment filename

  • attachment_data (BinaryIO) – File-type object containing the attachment data

Returns:

Location string for stored attachment

Return type:

str

store_metadata(metadata_id: str, metadata: str)

Store metadata string in storage.

Parameters:
  • metadata_id (str) – Unique metadata ID (should begin and end with __ and not conflict with any submission ID)

  • metadata (str) – Metadata string to store

store_metadata_binary(metadata_id: str, metadata: bytes)

Store metadata bytes in storage.

Parameters:
  • metadata_id (str) – Unique metadata ID (should begin and end with __ and not conflict with any submission ID)

  • metadata (bytes) – Metadata bytes to store

store_submission(submission_id: str, submission_data: dict)

Store submission data in storage.

Parameters:
  • submission_id (str) – Unique submission ID

  • submission_data (dict) – Submission data to store

submission_id(object_name: str) str

Get submission ID from object name.

Parameters:

object_name (str) – Object name (e.g., from submission_object_name())

Returns:

Submission ID

Return type:

str

submission_id_and_attachment_name(object_name: str) -> (<class 'str'>, <class 'str'>)

Get submission ID and attachment name from object name.

Parameters:

object_name (str) – Object name (e.g., from submission_object_name())

Returns:

Submission ID and attachment name

Return type:

(str, str)

submission_object_name(submission_id: str) str

Get submission object name for specific submission.

Parameters:

submission_id (str) – Unique submission ID

Returns:

Object name for submission

Return type:

str