128 lines
4.3 KiB
Python
128 lines
4.3 KiB
Python
from datetime import datetime
|
|
|
|
from flask import g
|
|
from sqlalchemy.exc import IntegrityError
|
|
import json
|
|
from crc import session
|
|
from crc.scripts.script import DataStoreBase
|
|
from crc.api.common import ApiError, ApiErrorSchema
|
|
from crc.models.data_store import DataStoreModel,DataStoreSchema
|
|
|
|
|
|
def study_data_set(study_id,key,value):
|
|
"""Set a study data value in the data_store, mimic the script endpoint"""
|
|
if study_id is None:
|
|
raise ApiError('unknown_study', 'Please provide a valid Study ID.')
|
|
|
|
if key is None:
|
|
raise ApiError('invalid_key', 'Please provide a valid key')
|
|
dsb = DataStoreBase()
|
|
retval=dsb.set_data_common('api',study_id,None,None,None,'api_study_data_set',key,value)
|
|
json_value = json.dumps(retval, ensure_ascii=False, indent=2)
|
|
return json_value
|
|
|
|
def study_data_get(study_id,key,default=None):
|
|
"""Get a study data value in the data_store, mimic the script endpoint"""
|
|
if study_id is None:
|
|
raise ApiError('unknown_study', 'Please provide a valid Study ID.')
|
|
|
|
if key is None:
|
|
raise ApiError('invalid_key', 'Please provide a valid key')
|
|
dsb = DataStoreBase()
|
|
retval=dsb.get_data_common(study_id,None,'api_study_data_get',key,default)
|
|
json_value = json.dumps(retval, ensure_ascii=False, indent=2)
|
|
return json_value
|
|
|
|
def study_multi_get(study_id):
|
|
"""Get all data_store values for a given study_id study"""
|
|
if study_id is None:
|
|
raise ApiError('unknown_study', 'Please provide a valid Study ID.')
|
|
|
|
dsb = DataStoreBase()
|
|
retval=dsb.get_multi_common(study_id,None)
|
|
results = DataStoreSchema(many=True).dump(retval)
|
|
return results
|
|
|
|
|
|
|
|
|
|
def study_data_del(study_id,key):
|
|
"""Delete a study data value in the data store"""
|
|
if study_id is None:
|
|
raise ApiError('unknown_study', 'Please provide a valid Study ID.')
|
|
|
|
if key is None:
|
|
raise ApiError('invalid_key', 'Please provide a valid key')
|
|
dsb = DataStoreBase()
|
|
dsb.del_data_common(study_id,None,'api_study_data_get',key)
|
|
json_value = json.dumps('deleted', ensure_ascii=False, indent=2)
|
|
return json_value
|
|
|
|
|
|
def user_data_set(user_id,key,value):
|
|
"""Set a user data value in the data_store, mimic the script endpoint"""
|
|
if user_id is None:
|
|
raise ApiError('unknown_study', 'Please provide a valid UserID.')
|
|
|
|
if key is None:
|
|
raise ApiError('invalid_key', 'Please provide a valid key')
|
|
dsb = DataStoreBase()
|
|
|
|
retval=dsb.set_data_common('api',
|
|
None,
|
|
user_id,
|
|
None,
|
|
None,
|
|
'api_user_data_set',
|
|
key,value)
|
|
|
|
json_value = json.dumps(retval, ensure_ascii=False, indent=2)
|
|
return json_value
|
|
|
|
|
|
def user_data_get(user_id,key,default=None):
|
|
"""Get a user data value from the data_store, mimic the script endpoint"""
|
|
if user_id is None:
|
|
raise ApiError('unknown_study', 'Please provide a valid UserID.')
|
|
|
|
if key is None:
|
|
raise ApiError('invalid_key', 'Please provide a valid key')
|
|
dsb = DataStoreBase()
|
|
retval=dsb.get_data_common(None,
|
|
user_id,
|
|
'api_user_data_get',
|
|
key,default)
|
|
|
|
json_value = json.dumps(retval, ensure_ascii=False, indent=2)
|
|
return json_value
|
|
|
|
def user_multi_get(user_id):
|
|
"""Get all data values in the data_store for a userid"""
|
|
if user_id is None:
|
|
raise ApiError('unknown_study', 'Please provide a valid UserID.')
|
|
|
|
dsb = DataStoreBase()
|
|
retval=dsb.get_multi_common(None,
|
|
user_id)
|
|
results = DataStoreSchema(many=True).dump(retval)
|
|
return results
|
|
|
|
|
|
|
|
def user_data_del(user_id,key):
|
|
"""Delete a data store item for a user_id and a key"""
|
|
if user_id is None:
|
|
raise ApiError('unknown_study', 'Please provide a valid UserID.')
|
|
|
|
if key is None:
|
|
raise ApiError('invalid_key', 'Please provide a valid key')
|
|
dsb = DataStoreBase()
|
|
dsb.del_data_common(None,
|
|
user_id,
|
|
'api_user_data_get',
|
|
key)
|
|
|
|
json_value = json.dumps('deleted', ensure_ascii=False, indent=2)
|
|
return json_value
|
|
|