kuha_osmh_repo_handler
Kuha OSMH Repo Handler application.
Serve records from Kuha Document Store throught OSMH protocol.
serve.py
Main entry point for starting OSMH Repo Handler
configure.py
Configure OSMH Repo Handler
- kuha_osmh_repo_handler.configure.configure()[source]
Get settings for application configuration.
Declares application spesific configuration options and some common options declared in
kuha_common.cli_setup
Configure application with arguments specified in configuration file, environment variables and command line arguments.
- Note
Calling this function multiple times will not initiate new settings to be parsed, but will return previously parsed settings instead.
- Returns
settings
- Return type
handlers.py
Define handlers for responding to HTTP-requests.
- note
OSMH protocol only supports HTTP-GET
- class kuha_osmh_repo_handler.handlers.BaseHandler(*args, **kwargs)[source]
BaseHandler class for handling OSMH requests.
Derived from
kuha_common.server.RequestHandler
. Defines common attributes.- async prepare()[source]
Prepare for responding to request.
Set output content type. Initiate
kuha_osmh_repo_handler.response.RecordsResponse
andkuha_common.query.QueryController
as instance attributes.
- class kuha_osmh_repo_handler.handlers.ListRecordHeadersHandler(*args, **kwargs)[source]
Handle list responses.
- async prepare()[source]
Prepare for each request.
Depending on stream-configuration choose which response callback to use. If streaming is enabled write output once a single record has been built. Otherwise store all records in a list and write output when all records are built.
- Note
With streaming enabled memory consumption will be lower since the records will not be gathered in a single list and encoded to JSON all at once. When dealing with large repositories the amount of memory consumed without streaming could be an issue.
- async get(record_type=None)[source]
Handles HTTP-GET requests to endpoint.
- Parameters
record_type (str or None) – Optional record_type parameter defines if the request limits the list to a certain OSMH type. If the parameter is None, shall output every record in repository. Valid values are defined in handler configuration.
- class kuha_osmh_repo_handler.handlers.GetRecordHandler(*args, **kwargs)[source]
Handle responses for single record.
- class kuha_osmh_repo_handler.handlers.ListSupportedRecordTypesHandler(*args, **kwargs)[source]
Handle response to endpoint that lists supported record types.
response.py
Build responses containing OSMH records.
- class kuha_osmh_repo_handler.response.RecordsResponse[source]
Response containing records.
Provides methods that can be used as callbacks to
kuha_common.query.QueryController
. Uses OSMH records defined inkuha_osmh_repo_handler.osmh.records
. Stores these records for later processing.- iterate_records()[source]
Iterate throught records gathered to response.
- Returns
generator for iterating records.
- get_record_appender(record_constructor)[source]
Get record appender function.
Records that are appended are constructed by using the record_constructor parameter.
- Returns
callback function for appending records that get constructed by submitting the receiver parameter to given record_constructor.
- Return type
functools.partial
- get_payload_appender(record_constructor)[source]
Get payload appender function.
Records that are appended are constructed by using the record_constructor parameter. After constructing the record, calls the constructed record-objects get_payload() method.
- Returns
callback function for appending records that get constructed by submitting the receiver parameter to given record_constructor.
- Return type
functools.partial
- get_response()[source]
Build and return the response as a list of dictionary payloads.
- Returns
record payloads
- Return type
- get_single_response()[source]
Get single response payload.
- Note
After calling this method the payloads list will be empty.
- Returns
single record’s payload.
- Return type
- Raises
ValueError
if contained payloads list has more than a single cell.
osmh
Defines OSMH records and payload.
osmh/records.py
Build OSMH payload from Document Store record objects. Provide mapping between these two record formats. Provide Document Store fields for querying.
- note
This module has strict dependency to
kuha_common.document_store.records
- class kuha_osmh_repo_handler.osmh.records.Payload(identifier, last_modified)[source]
Represents OSMH record’s payload.
Provides methods for manipulating the payload. Stores the payload in a dictionary, which can be easilly encoded to JSON.
Example:
>>> from kuha_osmh_repo_handler.osmh.records import Payload >>> payload = Payload('1', '2017-01-01') >>> payload.insert_localized_value('study_title', 'en', 'Household Survey') >>> payload.insert_localized_value('study_title', 'fi', 'Kotitalouskysely') >>> payload.get() # Indent for better readability {'identifier': '1', 'lastModified': '2017-01-01', 'study_title': {'fi': 'Kotitalouskysely', 'en': 'Household Survey'} }
- Parameters
- Returns
- classmethod join_values(*args)[source]
Join values together using
_join_character
- Parameters
*args (str) – values to join
- insert(key, value)[source]
Insert a value to payload.
Insert a value for given key to the payload. If the key is not present in the payload, creates one.
- insert_localized_value(key, locale, value)[source]
Insert a localized value to payload.
Insert value for given locale into the given payload key. If the key is not present in the payload, creates one.
- append(key, value, unique=False)[source]
Insert list item to given payload key
If key is not in payload, creates it and inserts a list with a single cell containing value. If parameter unique is True, will not append duplicate values to list.
- class kuha_osmh_repo_handler.osmh.records.OSMHRecord(payload)[source]
Abstract Base class for OSMH record.
Use from a subclass.
Provides common properties and methods to be used in OSMH records.
- Parameters
payload (
Payload
) – payload of the record.- Raises
TypeError
if subclass does not define class attributes.
- abstract property osmh_type
OSMH type. Declare in subclass.
- abstract property query_document
Document Store record to query. Declare in subclass.
- abstract property relative_queries_for_record
Does the record-response require relative records queried from Dccument Store. Declare in subclass.
- abstract static fields_for_header()[source]
Get fields to query that are required to build the record header.
Override in subclass.
- abstract static fields_for_record()[source]
Get fields to query that are required to build the record.
Override in subclass.
- abstract static query_filter_for_record(identifier)[source]
Get filter which queries the correct record from Document Store.
Override in subclass.
- classmethod for_header_response(ds_record)[source]
Create a record for response that only contains headers for records.
- Parameters
ds_record (Record defined in
kuha_common.document_store.records
) – Document Store record.- Returns
Instantiated OSMH record object.
- classmethod for_record_response(ds_record)[source]
Create record for response containing the actual record.
- Parameters
ds_record (Record defined in
kuha_common.document_store.records
) – Document Store record.- Returns
Instantiated OSHM record object.
- classmethod get_query_document()[source]
Return the Document Store record used for Querying.
- Returns
Document Store record used for querying.
- class kuha_osmh_repo_handler.osmh.records.StudyRecord(study)[source]
Represents OSMH Study.
Derived from
OSMHRecord
.- Parameters
study (
kuha_common.document_store.records.Study
) – Study from Document Store.- Returns
Instantiated OSMH Study record
- Return type
- query_document
- static fields_for_header()[source]
Get fields to query that are required to build the record header.
- Returns
Study fields required to build record header.
- Return type
- static fields_for_record()[source]
Get fields to query that are required to build the record.
- Returns
Study fields required to build record header.
- Return type
- static query_filter_for_record(identifier)[source]
Get filter which queries the correct record from Document Store.
- static get_secondary_query_fields_for_record()[source]
Get fields to query that are required to build the relative record (Variable).
- Returns
Variable fields.
- Return type
- static get_secondary_query_document()[source]
Get secondary query document (Document Store record).
- Returns
Document Store variable record.
- Return type
- get_secondary_query_filter_for_record()[source]
Get filter which queries the correct record from Document Store.
- Returns
filter to use for query.
- Return type
- build_relative_record_payload(relative_record)[source]
Build payload for relative record.
- Parameters
relative_record (
kuha_common.document_store.records.Variable
) – Relative record instance.
- class kuha_osmh_repo_handler.osmh.records.VariableRecord(variable)[source]
Represents OSMH Variable.
Derived from
OSMHRecord
.- Parameters
variable (
kuha_common.document_store.records.Variable
) – Variable from Document Store.- Returns
Instantiated OSMH Variable record
- Return type
- query_document
- static fields_for_header()[source]
Get fields to query that are required to build the record header.
- Returns
Variable fields required to build record header.
- Return type
- static fields_for_record()[source]
Get fields to query that are required to build the record.
- Returns
Variable fields required to build record header.
- Return type
- class kuha_osmh_repo_handler.osmh.records.QuestionRecord(question)[source]
Represents OSMH Question.
Derived from
OSMHRecord
.- Parameters
question (
kuha_common.document_store.records.Question
) – Question from Document Store.- Returns
Instantiated OSMH Question record
- Return type
- query_document
- static fields_for_header()[source]
Get fields to query that are required to build the record header.
- Returns
Question fields required to build record header.
- Return type
- static fields_for_record()[source]
Get fields to query that are required to build the record.
- Returns
Question fields required to build record header.
- Return type
- class kuha_osmh_repo_handler.osmh.records.StudyGroupRecord(study_group)[source]
Represents OSMH StudyGroup.
Derived from
OSMHRecord
.- Parameters
study_group (
kuha_common.document_store.records.StudyGroup
) – StudyGroup from Document Store.- Returns
Instantiated OSMH StudyGroup record
- Return type
- query_document
- static fields_for_header()[source]
Get fields to query that are required to build the record header.
- Returns
StudyGroup fields required to build record header.
- Return type
- static fields_for_record()[source]
Get fields to query that are required to build the record.
- Returns
StudyGroup fields required to build record header.
- Return type
- kuha_osmh_repo_handler.osmh.records.get_osmh_record_for_type(osmh_record_type)[source]
Return the OSMH record class representing osmh_record_type.
- Parameters
osmh_record_type (str) – Supported OSMH record type.
- Returns
One of the OSMH records defined in this module.
- Return type
StudyRecord
orVariableRecord
orQuestionRecord
orStudyGroupRecord