Modify scripts to use the changes in data_store_service validate methods

Make sure we return values in the validate methods
Minor cleanup
This commit is contained in:
mike cullerton 2022-03-25 10:03:12 -04:00
parent 8c88de35cd
commit 5229cf457e
6 changed files with 54 additions and 62 deletions

View File

@ -1,5 +1,3 @@
from flask import g
from crc.api.common import ApiError from crc.api.common import ApiError
from crc.services.data_store_service import DataStoreBase from crc.services.data_store_service import DataStoreBase
from crc.scripts.script import Script from crc.scripts.script import Script
@ -7,32 +5,35 @@ from crc.scripts.script import Script
class FileDataGet(Script, DataStoreBase): class FileDataGet(Script, DataStoreBase):
def get_description(self): def get_description(self):
return """Gets user data from the data store - takes only two keyword arguments arguments: 'file_id' and 'key' """ return """Gets user data from the data store - takes two keyword arguments arguments: 'file_id' and 'key' """
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs): def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
if self.validate_kw_args(**kwargs): self.validate_kw_args(**kwargs)
myargs = [kwargs['key']] my_args = [kwargs['key']]
return True if 'default' in kwargs.keys():
my_args.append(kwargs['default'])
result = self.get_validate_common('file_data_get', None, None, kwargs['file_id'], *my_args)
return result
def validate_kw_args(self,**kwargs): @staticmethod
if kwargs.get('key',None) is None: def validate_kw_args(**kwargs):
if kwargs.get('key', None) is None:
raise ApiError(code="missing_argument", raise ApiError(code="missing_argument",
message=f"The 'file_data_get' script requires a keyword argument of 'key'") message=f"The 'file_data_get' script requires a keyword argument of 'key'")
if kwargs.get('file_id',None) is None: if kwargs.get('file_id', None) is None:
raise ApiError(code="missing_argument", raise ApiError(code="missing_argument",
message=f"The 'file_data_get' script requires a keyword argument of 'file_id'") message=f"The 'file_data_get' script requires a keyword argument of 'file_id'")
return True return True
def do_task(self, task, study_id, workflow_id, *args, **kwargs): def do_task(self, task, study_id, workflow_id, *args, **kwargs):
if self.validate_kw_args(**kwargs): self.validate_kw_args(**kwargs)
myargs = [kwargs['key']] my_args = [kwargs['key']]
if 'default' in kwargs.keys(): if 'default' in kwargs.keys():
myargs.append(kwargs['default']) my_args.append(kwargs['default'])
return self.get_data_common(None, return self.get_data_common(None,
None, None,
'file_data_get', 'file_data_get',
kwargs['file_id'], kwargs['file_id'],
*myargs) *my_args)

View File

@ -1,5 +1,3 @@
from flask import g
from crc.api.common import ApiError from crc.api.common import ApiError
from crc.services.data_store_service import DataStoreBase from crc.services.data_store_service import DataStoreBase
from crc.scripts.script import Script from crc.scripts.script import Script
@ -9,16 +7,23 @@ from crc.services.user_file_service import UserFileService
class FileDataSet(Script, DataStoreBase): class FileDataSet(Script, DataStoreBase):
def get_description(self): def get_description(self):
return """Sets data the data store - takes three keyword arguments arguments: 'file_id' and 'key' and 'value'""" return """Sets data the data store - takes three keyword arguments arguments: 'file_id', 'key' and 'value'"""
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs): def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
if self.validate_kw_args(**kwargs): self.validate_kw_args(**kwargs)
myargs = [kwargs['key'],kwargs['value']] my_args = [kwargs['key'], kwargs['value']]
fileid = kwargs['file_id'] file_id = kwargs['file_id']
del(kwargs['file_id']) result = self.set_validate_common(task.id,
return True study_id,
workflow_id,
'file_data_set',
None,
file_id,
*my_args)
return result
def validate_kw_args(self, **kwargs): @staticmethod
def validate_kw_args(**kwargs):
if kwargs.get('key', None) is None: if kwargs.get('key', None) is None:
raise ApiError(code="missing_argument", raise ApiError(code="missing_argument",
message=f"The 'file_data_get' script requires a keyword argument of 'key'") message=f"The 'file_data_get' script requires a keyword argument of 'key'")
@ -32,28 +37,26 @@ class FileDataSet(Script, DataStoreBase):
if kwargs['key'] == 'irb_code' and not DocumentService.is_allowed_document(kwargs.get('value')): if kwargs['key'] == 'irb_code' and not DocumentService.is_allowed_document(kwargs.get('value')):
raise ApiError("invalid_form_field_key", raise ApiError("invalid_form_field_key",
"When setting an irb_code, the form field id must match a known document in the " "When setting an irb_code, the form field id must match a known document in the "
"irb_docunents.xslx reference file. This code is not found in that file '%s'" % "irb_documents.xlsx reference file. This code is not found in that file '%s'" %
kwargs.get('value')) kwargs.get('value'))
return True return True
def do_task(self, task, study_id, workflow_id, *args, **kwargs): def do_task(self, task, study_id, workflow_id, *args, **kwargs):
if self.validate_kw_args(**kwargs): self.validate_kw_args(**kwargs)
myargs = [kwargs['key'],kwargs['value']] my_args = [kwargs['key'], kwargs['value']]
try: try:
fileid = int(kwargs['file_id']) fileid = int(kwargs['file_id'])
except: except Exception:
raise ApiError("invalid_file_id", raise ApiError("invalid_file_id",
"Attempting to update DataStore for an invalid fileid '%s'" % kwargs['file_id']) "Attempting to update DataStore for an invalid file_id '%s'" % kwargs['file_id'])
del(kwargs['file_id']) del(kwargs['file_id'])
if kwargs['key'] == 'irb_code': if kwargs['key'] == 'irb_code':
irb_doc_code = kwargs['value'] irb_doc_code = kwargs['value']
UserFileService.update_irb_code(fileid, irb_doc_code) UserFileService.update_irb_code(fileid, irb_doc_code)
return self.set_data_common(task.id, return self.set_data_common(task.id,
None, None,
None, None,
@ -61,6 +64,5 @@ class FileDataSet(Script, DataStoreBase):
None, None,
'file_data_set', 'file_data_set',
fileid, fileid,
*myargs, *my_args,
**kwargs) **kwargs)

View File

@ -2,16 +2,12 @@ from crc.services.data_store_service import DataStoreBase
from crc.scripts.script import Script from crc.scripts.script import Script
class StudyDataGet(Script,DataStoreBase): class StudyDataGet(Script, DataStoreBase):
def get_description(self): def get_description(self):
return """Gets study data from the data store.""" return """Gets study data from the data store."""
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs): def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
value = self.get_validate_common(study_id, None, 'study_data_get', None, *args) return self.get_validate_common('study_data_get', study_id, None, None, *args)
# return self.do_task(task, study_id, workflow_id, *args, **kwargs)
print('do_task_validate_only')
return value
def do_task(self, task, study_id, workflow_id, *args, **kwargs): def do_task(self, task, study_id, workflow_id, *args, **kwargs):
return self.get_data_common(study_id, return self.get_data_common(study_id,
@ -19,4 +15,3 @@ class StudyDataGet(Script,DataStoreBase):
'study_data_get', 'study_data_get',
None, None,
*args) *args)

View File

@ -2,17 +2,19 @@ from crc.services.data_store_service import DataStoreBase
from crc.scripts.script import Script from crc.scripts.script import Script
class StudyDataSet(Script,DataStoreBase): class StudyDataSet(Script, DataStoreBase):
def get_description(self): def get_description(self):
return """Sets study data from the data store. Takes two positional arguments key and value""" return """Sets study data from the data store. Takes two positional arguments key and value"""
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs): def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
self.set_validate_common(study_id, result = self.set_validate_common(task.id,
workflow_id, study_id,
None, workflow_id,
'study_data_set', 'study_data_set',
None, None,
*args) None,
*args)
return result
def do_task(self, task, study_id, workflow_id, *args, **kwargs): def do_task(self, task, study_id, workflow_id, *args, **kwargs):
return self.set_data_common(task.id, return self.set_data_common(task.id,
@ -24,9 +26,3 @@ class StudyDataSet(Script,DataStoreBase):
None, None,
*args, *args,
**kwargs) **kwargs)

View File

@ -9,7 +9,7 @@ class UserDataGet(Script, DataStoreBase):
return """Gets user data from the data store - takes only one argument 'key' """ return """Gets user data from the data store - takes only one argument 'key' """
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs): def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
self.do_task(task, study_id, workflow_id, *args, **kwargs) return self.get_validate_common('user_data_get', None, g.user.uid, None, *args)
def do_task(self, task, study_id, workflow_id, *args, **kwargs): def do_task(self, task, study_id, workflow_id, *args, **kwargs):
return self.get_data_common(None, return self.get_data_common(None,

View File

@ -4,17 +4,18 @@ from crc.services.data_store_service import DataStoreBase
from crc.scripts.script import Script from crc.scripts.script import Script
class UserDataSet(Script,DataStoreBase): class UserDataSet(Script, DataStoreBase):
def get_description(self): def get_description(self):
return """Sets user data to the data store these are positional arguments key and value. return """Sets user data to the data store these are positional arguments key and value.
example: user_data_set('mykey','myvalue') example: user_data_set('my_key','my_value')
""" """
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs): def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
self.set_validate_common(None, self.set_validate_common(task.id,
study_id,
workflow_id, workflow_id,
g.user.uid,
'user_data_set', 'user_data_set',
g.user.uid,
None, None,
*args) *args)
@ -28,6 +29,3 @@ class UserDataSet(Script,DataStoreBase):
None, None,
*args, *args,
**kwargs) **kwargs)