cerebralcortex.core.data_manager.sql package¶
Submodules¶
cerebralcortex.core.data_manager.sql.data module¶
cerebralcortex.core.data_manager.sql.orm_models module¶
-
class
Stream
(name, version, study_name, metadata_hash, stream_metadata)[source]¶ Bases:
sqlalchemy.ext.declarative.api.Base
-
creation_date
¶
-
metadata_hash
¶
-
name
¶
-
row_id
¶
-
stream_metadata
¶
-
study_name
¶
-
version
¶
-
-
class
User
(user_id, username, password, study_name, token, token_issued, token_expiry, user_role='participant', user_metadata={}, user_settings={}, active=1)[source]¶ Bases:
sqlalchemy.ext.declarative.api.Base
-
active
¶
-
creation_date
¶
-
has_data
¶
-
password
¶
-
row_id
¶
-
study_name
¶
-
token
¶
-
token_expiry
¶
-
token_issued
¶
-
user_id
¶
-
user_metadata
¶
-
user_role
¶
-
user_settings
¶
-
username
¶
-
cerebralcortex.core.data_manager.sql.stream_handler module¶
-
class
StreamHandler
[source]¶ Bases:
object
-
get_stream_metadata_by_hash
(metadata_hash: <module 'uuid' from '/home/docs/.pyenv/versions/3.6.8/lib/python3.6/uuid.py'>) → List[source]¶ metadata_hash are unique to each stream version. This reverse look can return the stream name of a metadata_hash.
Parameters: metadata_hash (uuid) – This could be an actual uuid object or a string form of uuid. Returns: [stream_name, metadata] Return type: List Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.get_stream_name("00ab666c-afb8-476e-9872-6472b4e66b68") >>> ["name" .....] # stream metadata and other information
-
get_stream_metadata_by_name
(stream_name: str, version: int) → cerebralcortex.core.metadata_manager.stream.metadata.Metadata[source]¶ Get a list of metadata for all versions available for a stream.
Parameters: - stream_name (str) – name of a stream
- version (int) – version of a stream. Acceptable parameters are all, latest, or a specific version of a stream (e.g., 2.0) (Default=”all”)
Returns: Returns an empty list if no metadata is available for a stream_name or a list of metadata otherwise.
Return type: Raises: ValueError
– stream_name cannot be None or empty.Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.list_users("mperf") >>> [Metadata] # list of MetaData class objects
-
get_stream_metadata_hash
(stream_name: str) → List[source]¶ Get all the metadata_hash associated with a stream name.
Parameters: stream_name (str) – name of a stream Returns: list of all the metadata hashes with name and versions Return type: list Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.get_metadata_hash("ACCELEROMETER--org.md2k.motionsense--MOTION_SENSE_HRV--RIGHT_WRIST") >>> [["stream_name", "version", "metadata_hash"]]
-
get_stream_name
(metadata_hash: <module 'uuid' from '/home/docs/.pyenv/versions/3.6.8/lib/python3.6/uuid.py'>) → str[source]¶ metadata_hash are unique to each stream version. This reverse look can return the stream name of a metadata_hash.
Parameters: metadata_hash (uuid) – This could be an actual uuid object or a string form of uuid. Returns: name of a stream Return type: str Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.get_stream_name("00ab666c-afb8-476e-9872-6472b4e66b68") >>> ACCELEROMETER--org.md2k.motionsense--MOTION_SENSE_HRV--RIGHT_WRIST
-
get_stream_versions
(stream_name: str) → list[source]¶ Returns a list of versions available for a stream
Parameters: stream_name (str) – name of a stream Returns: list of int Return type: list Raises: ValueError
– if stream_name is empty or NoneExamples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.get_stream_versions("ACCELEROMETER--org.md2k.motionsense--MOTION_SENSE_HRV--RIGHT_WRIST") >>> [1, 2, 4]
-
is_stream
(stream_name: str) → bool[source]¶ Returns true if provided stream exists.
Parameters: stream_name (str) – name of a stream Returns: True if stream_name exist False otherwise Return type: bool Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.is_stream("ACCELEROMETER--org.md2k.motionsense--MOTION_SENSE_HRV--RIGHT_WRIST") >>> True
-
list_streams
() → List[cerebralcortex.core.metadata_manager.stream.metadata.Metadata][source]¶ Get all the available stream names with metadata
Returns: list of available streams metadata [{name:”“, metadata:”“}…] Return type: List[Metadata] Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.list_streams()
-
save_stream_metadata
(metadata_obj) → dict[source]¶ Update a record if stream already exists or insert a new record otherwise.
Parameters: metadata_obj (Metadata) – stream metadata Returns: {“status”: True/False,”verion”:version} Return type: dict Raises: Exception
– if fail to insert/update record in MySQL. Exceptions are logged in a log file
-
search_stream
(stream_name)[source]¶ Find all the stream names similar to stream_name arg. For example, passing “location” argument will return all stream names that contain the word location
Returns: list of stream names similar to stream_name arg Return type: List[str] Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.search_stream("battery") >>> ["BATTERY--org.md2k.motionsense--MOTION_SENSE_HRV--LEFT_WRIST", "BATTERY--org.md2k.phonesensor--PHONE".....]
-
cerebralcortex.core.data_manager.sql.users_handler module¶
-
class
UserHandler
[source]¶ Bases:
object
-
create_user
(username: str, user_password: str, user_role: str, user_metadata: dict, user_settings: dict, encrypt_password: bool = False) → bool[source]¶ Create a user in SQL storage if it doesn’t exist :param username: Only alphanumeric usernames are allowed with the max length of 25 chars. :type username: str :param user_password: no size limit on password :type user_password: str :param user_role: role of a user :type user_role: str :param user_metadata: metadata of a user :type user_metadata: dict :param user_settings: user settings, mCerebrum configurations of a user :type user_settings: dict :param encrypt_password: encrypt password if set to True :type encrypt_password: bool
Returns: True if user is successfully registered or throws any error in case of failure
Return type: bool
Raises: ValueError
– if selected username is not availableException
– if sql query fails
-
encrypt_user_password
(user_password: str) → str[source]¶ Encrypt password
Parameters: user_password (str) – unencrypted password Raises: ValueError
– password cannot be None or empty.Returns: encrypted password Return type: str
-
gen_random_pass
(string_type: str, size: int = 8) → str[source]¶ Generate a random password
Parameters: - string_type – Accepted parameters are “varchar” and “char”. (Default=”varchar”)
- size – password length (default=8)
Returns: random password
Return type: str
-
get_user_id
(user_name: str) → str[source]¶ Get the user id linked to user_name.
Parameters: user_name (str) – username of a user Returns: user id associated to user_name Return type: str Raises: ValueError
– User name is a required field.Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.get_user_id("nasir_ali") >>> '76cc444c-4fb8-776e-2872-9472b4e66b16'
-
get_user_metadata
(user_id: <module 'uuid' from '/home/docs/.pyenv/versions/3.6.8/lib/python3.6/uuid.py'> = None, username: str = None) → dict[source]¶ Get user metadata by user_id or by username
Parameters: - user_id (str) – id (uuid) of a user
- user_name (str) – username of a user
Returns: user metadata
Return type: dict
Todo
Return list of User class object
Raises: ValueError
– User ID/name cannot be empty.Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.get_user_metadata(username="nasir_ali") >>> {"study_name":"mperf"........}
-
get_user_settings
(username: str = None, auth_token: str = None) → dict[source]¶ Get user settings by auth-token or by username. These are user’s mCerebrum settings
Parameters: - username (str) – username of a user
- auth_token (str) – auth-token
Returns: List of dictionaries of user metadata
Return type: list[dict]
Todo
Return list of User class object
Raises: ValueError
– User ID/name cannot be empty.Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.get_user_settings(username="nasir_ali") >>> [{"mcerebrum":"some-conf"........}]
-
get_username
(user_id: str) → str[source]¶ Get the user name linked to a user id.
Parameters: user_name (str) – username of a user Returns: user_id associated to username Return type: bool Raises: ValueError
– User ID is a required field.Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.get_username("76cc444c-4fb8-776e-2872-9472b4e66b16") >>> 'nasir_ali'
-
is_auth_token_valid
(username: str, auth_token: str, checktime: bool = False) → bool[source]¶ Validate whether a token is valid or expired based on the token expiry datetime stored in SQL
Parameters: - username (str) – username of a user
- auth_token (str) – token generated by API-Server
- checktime (bool) – setting this to False will only check if the token is available in system. Setting this to true will check if the token is expired based on the token expiry date.
Raises: ValueError
– Auth token and auth-token expiry time cannot be null/empty.Returns: returns True if token is valid or False otherwise.
Return type: bool
-
is_user
(user_id: <module 'uuid' from '/home/docs/.pyenv/versions/3.6.8/lib/python3.6/uuid.py'> = None, user_name: <module 'uuid' from '/home/docs/.pyenv/versions/3.6.8/lib/python3.6/uuid.py'> = None) → bool[source]¶ Checks whether a user exists in the system. One of both parameters could be set to verify whether user exist.
Parameters: - user_id (str) – id (uuid) of a user
- user_name (str) – username of a user
Returns: True if a user exists in the system or False otherwise.
Return type: bool
Raises: ValueError
– Both user_id and user_name cannot be None or empty.Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.is_user(user_id="76cc444c-4fb8-776e-2872-9472b4e66b16") >>> True
-
list_users
() → List[list][source]¶ Get a list of all users part of a study.
Parameters: study_name (str) – name of a study. If no study_name is provided then all users’ list will be returned Raises: ValueError
– Study name is a requied field.Returns: Returns empty list if there is no user associated to the study_name and/or study_name does not exist. Return type: list[list] Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.list_users("mperf") >>> [{"76cc444c-4fb8-776e-2872-9472b4e66b16": "nasir_ali"}] # [{user_id, user_name}]
-
login_user
(username: str, password: str, encrypt_password: bool = False) → dict[source]¶ Authenticate a user based on username and password and return an auth token
Parameters: - username (str) – username of a user
- password (str) – password of a user
- encrypt_password (str) – is password encrypted or not. mCerebrum sends encrypted passwords
Raises: ValueError
– User name and password cannot be empty/None.Returns: return eturn {“status”:bool, “auth_token”: str, “msg”: str}
Return type: dict
Examples
>>> CC = CerebralCortex("/directory/path/of/configs/") >>> CC.connect("nasir_ali", "2ksdfhoi2r2ljndf823hlkf8234hohwef0234hlkjwer98u234", True) >>> True
-
update_auth_token
(username: str, auth_token: str, auth_token_issued_time: datetime.datetime, auth_token_expiry_time: datetime.datetime) → bool[source]¶ Update an auth token in SQL database to keep user stay logged in. Auth token valid duration can be changed in configuration files.
Parameters: - username (str) – username of a user
- auth_token (str) – issued new auth token
- auth_token_issued_time (datetime) – datetime when the old auth token was issue
- auth_token_expiry_time (datetime) – datetime when the token will get expired
Raises: ValueError
– Auth token and auth-token issue/expiry time cannot be None/empty.Returns: Returns True if the new auth token is set or False otherwise.
Return type: bool
-
username_checks
(username: str)[source]¶ No space, special characters, dash etc. are allowed in username. Only alphanumeric usernames are allowed with the max length of 25 chars.
Parameters: username (str) – Returns: True if provided username comply the standard or throw an exception Return type: bool Raises: Exception
– if username doesn’t follow standards
-