mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-23 21:28:32 +00:00
Merge branch 'dev' into email-name-parameter-726
This commit is contained in:
commit
cd3e74a3f2
@ -83,6 +83,11 @@ paths:
|
||||
required : false
|
||||
schema :
|
||||
type : integer
|
||||
- name : include_archived
|
||||
in : query
|
||||
required : false
|
||||
schema :
|
||||
type : boolean
|
||||
get:
|
||||
operationId: crc.api.document.get_document_directory
|
||||
summary: Returns a directory of all files for study in a nested structure
|
||||
|
@ -5,12 +5,12 @@ from crc.services.lookup_service import LookupService
|
||||
from crc.services.user_file_service import UserFileService
|
||||
|
||||
|
||||
def get_document_directory(study_id, workflow_id=None):
|
||||
def get_document_directory(study_id, workflow_id=None, include_archived=False):
|
||||
"""
|
||||
return a nested list of files arranged according to the category hierarchy
|
||||
defined in the doc dictionary
|
||||
"""
|
||||
file_models = UserFileService.get_files_for_study(study_id=study_id)
|
||||
file_models = UserFileService.get_files_for_study(study_id=study_id, irb_doc_code=None, include_archived=include_archived)
|
||||
doc_dict = DocumentService.get_dictionary()
|
||||
files = (File.from_file_model(model, doc_dict) for model in file_models)
|
||||
directory = DocumentService.get_directory(doc_dict, files, workflow_id)
|
||||
|
@ -67,7 +67,7 @@ def update_file_data(file_id):
|
||||
file = connexion.request.files['file']
|
||||
if file_model is None:
|
||||
raise ApiError('no_such_file', f'The file id you provided ({file_id}) does not exist')
|
||||
file_model = UserFileService.update_file(file_model, file.stream.read(), file.content_type)
|
||||
file_model = UserFileService().update_file(file_model, file.stream.read(), file.content_type)
|
||||
return FileSchema().dump(to_file_api(file_model))
|
||||
|
||||
|
||||
|
@ -123,6 +123,8 @@ class File(object):
|
||||
self.last_modified = None
|
||||
self.size = None
|
||||
self.data_store = {}
|
||||
self.user_uid = None
|
||||
self.archived = None
|
||||
|
||||
@classmethod
|
||||
def from_file_model(cls, file_model: FileModel, doc_dictionary):
|
||||
@ -140,6 +142,8 @@ class File(object):
|
||||
instance.document = document
|
||||
instance.last_modified = file_model.date_modified
|
||||
instance.size = None
|
||||
instance.user_uid = file_model.user_uid
|
||||
instance.archived = file_model.archived
|
||||
instance.data_store = {}
|
||||
for ds in file_model.data_stores:
|
||||
instance.data_store[ds.key] = ds.value
|
||||
@ -184,7 +188,7 @@ class FileSchema(Schema):
|
||||
class Meta:
|
||||
model = File
|
||||
fields = ["id", "name", "content_type", "workflow_id",
|
||||
"irb_doc_code", "last_modified", "type",
|
||||
"irb_doc_code", "last_modified", "type", "archived",
|
||||
"size", "data_store", "document", "user_uid", "url"]
|
||||
unknown = INCLUDE
|
||||
url = Method("get_url")
|
||||
|
@ -116,13 +116,16 @@ class UserFileService(object):
|
||||
return file_model
|
||||
|
||||
@staticmethod
|
||||
def get_files_for_study(study_id, irb_doc_code=None):
|
||||
def get_files_for_study(study_id, irb_doc_code=None, include_archived=False):
|
||||
query = session.query(FileModel).\
|
||||
join(WorkflowModel).\
|
||||
filter(WorkflowModel.study_id == study_id)
|
||||
if not include_archived:
|
||||
# Current documents have an archived value of False
|
||||
query = query.filter(FileModel.archived == False)
|
||||
if irb_doc_code is not None:
|
||||
query = query.filter(FileModel.irb_doc_code == irb_doc_code)
|
||||
return query.all()
|
||||
return query.order_by(desc(FileModel.date_modified)).all()
|
||||
|
||||
@staticmethod
|
||||
def get_files(workflow_id=None, name=None, irb_doc_code=None):
|
||||
|
Loading…
x
Reference in New Issue
Block a user