parent
061d55d231
commit
8e6ca4c97f
|
@ -5,7 +5,7 @@ from SpiffWorkflow.exceptions import WorkflowTaskExecException
|
|||
|
||||
from crc import session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.file import CONTENT_TYPES, DocumentModel
|
||||
from crc.models.file import CONTENT_TYPES, FileModel
|
||||
from crc.models.workflow import WorkflowModel
|
||||
from crc.scripts.script import Script
|
||||
from crc.services.jinja_service import JinjaService
|
||||
|
@ -99,7 +99,7 @@ Takes two arguments:
|
|||
if file_id is not None and isinstance(file_id, int):
|
||||
if not task.workflow.data[WorkflowProcessor.VALIDATION_PROCESS_KEY]:
|
||||
# Get the actual image data
|
||||
image_file_model = session.query(DocumentModel).filter_by(id=file_id).first()
|
||||
image_file_model = session.query(FileModel).filter_by(id=file_id).first()
|
||||
if image_file_model is not None:
|
||||
image_file_data.append(image_file_model)
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ from SpiffWorkflow.exceptions import WorkflowTaskExecException
|
|||
|
||||
from crc import session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.file import DocumentModel
|
||||
from crc.models.file import FileModel
|
||||
from crc.scripts.script import Script
|
||||
from crc.services.document_service import DocumentService
|
||||
from crc.services.user_file_service import UserFileService
|
||||
|
@ -13,9 +13,9 @@ class DeleteFile(Script):
|
|||
@staticmethod
|
||||
def process_document_deletion(doc_code, workflow_id, task):
|
||||
if DocumentService.is_allowed_document(doc_code):
|
||||
result = session.query(DocumentModel).filter(
|
||||
DocumentModel.workflow_id == workflow_id, DocumentModel.irb_doc_code == doc_code).all()
|
||||
if isinstance(result, list) and len(result) > 0 and isinstance(result[0], DocumentModel):
|
||||
result = session.query(FileModel).filter(
|
||||
FileModel.workflow_id == workflow_id, FileModel.irb_doc_code == doc_code).all()
|
||||
if isinstance(result, list) and len(result) > 0 and isinstance(result[0], FileModel):
|
||||
for file in result:
|
||||
UserFileService().delete_file(file.id)
|
||||
else:
|
||||
|
@ -50,8 +50,8 @@ class DeleteFile(Script):
|
|||
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
|
||||
doc_codes = self.get_codes(task, args, kwargs)
|
||||
for code in doc_codes:
|
||||
result = session.query(DocumentModel).filter(
|
||||
DocumentModel.workflow_id == workflow_id, DocumentModel.irb_doc_code == code).all()
|
||||
result = session.query(FileModel).filter(
|
||||
FileModel.workflow_id == workflow_id, FileModel.irb_doc_code == code).all()
|
||||
if not result:
|
||||
return False
|
||||
return True
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from crc import session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.file import DocumentModel
|
||||
from crc.models.file import FileModel
|
||||
from crc.models.task_event import TaskEventModel, TaskAction
|
||||
from crc.scripts.script import Script
|
||||
from crc.services.user_file_service import UserFileService
|
||||
|
@ -35,9 +35,9 @@ class DeleteTaskData(Script):
|
|||
TaskEventModel.study_id == study_id).filter(TaskEventModel.task_name == task_spec_name).filter_by(
|
||||
action=TaskAction.COMPLETE.value).delete()
|
||||
|
||||
files_to_delete = session.query(DocumentModel). \
|
||||
filter(DocumentModel.workflow_id == workflow_id). \
|
||||
filter(DocumentModel.task_spec == task_spec_name).all()
|
||||
files_to_delete = session.query(FileModel). \
|
||||
filter(FileModel.workflow_id == workflow_id). \
|
||||
filter(FileModel.task_spec == task_spec_name).all()
|
||||
|
||||
# delete files
|
||||
for file in files_to_delete:
|
||||
|
|
|
@ -5,7 +5,7 @@ import datetime
|
|||
from crc import app, session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.email import EmailModel, EmailModelSchema
|
||||
from crc.models.file import DocumentModel, CONTENT_TYPES
|
||||
from crc.models.file import FileModel, CONTENT_TYPES
|
||||
from crc.models.workflow import WorkflowModel
|
||||
from crc.services.document_service import DocumentService
|
||||
from crc.scripts.script import Script
|
||||
|
@ -173,9 +173,9 @@ email(subject="My Subject", recipients="user@example.com", attachments=['Study_A
|
|||
if DocumentService.is_allowed_document(code):
|
||||
workflows = session.query(WorkflowModel).filter(WorkflowModel.study_id==study_id).all()
|
||||
for workflow in workflows:
|
||||
workflow_files = session.query(DocumentModel).\
|
||||
filter(DocumentModel.workflow_id == workflow.id).\
|
||||
filter(DocumentModel.irb_doc_code == code).all()
|
||||
workflow_files = session.query(FileModel).\
|
||||
filter(FileModel.workflow_id == workflow.id).\
|
||||
filter(FileModel.irb_doc_code == code).all()
|
||||
for file in workflow_files:
|
||||
files.append({'id': file.id,
|
||||
'name': file.name,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from crc import session
|
||||
from crc.api.common import ApiError
|
||||
from crc.api.file_refactor import to_file_api
|
||||
from crc.models.file import DocumentModel, FileSchema
|
||||
from crc.models.file import FileModel, FileSchema
|
||||
from crc.scripts.script import Script
|
||||
from crc.services.study_service import StudyService
|
||||
|
||||
|
@ -36,7 +36,7 @@ class GetZippedFiles(Script):
|
|||
zip_filename = 'attachments.zip'
|
||||
|
||||
file_ids = kwargs['file_ids']
|
||||
files = session.query(DocumentModel).filter(DocumentModel.id.in_(file_ids)).all()
|
||||
files = session.query(FileModel).filter(FileModel.id.in_(file_ids)).all()
|
||||
if files:
|
||||
# Create a temporary zipfile with the requested files
|
||||
with tempfile.NamedTemporaryFile() as temp_file:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from crc import session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.file import DocumentModel
|
||||
from crc.models.file import FileModel
|
||||
from crc.scripts.script import Script
|
||||
|
||||
from io import BytesIO
|
||||
|
@ -44,9 +44,9 @@ class ModifySpreadsheet(Script):
|
|||
parameters = self.get_parameters(args, kwargs)
|
||||
if len(parameters) == 3:
|
||||
|
||||
spreadsheet = session.query(DocumentModel). \
|
||||
filter(DocumentModel.workflow_id == workflow_id). \
|
||||
filter(DocumentModel.irb_doc_code == parameters['irb_doc_code']).\
|
||||
spreadsheet = session.query(FileModel). \
|
||||
filter(FileModel.workflow_id == workflow_id). \
|
||||
filter(FileModel.irb_doc_code == parameters['irb_doc_code']).\
|
||||
first()
|
||||
if spreadsheet:
|
||||
workbook = load_workbook(BytesIO(spreadsheet.data))
|
||||
|
|
|
@ -16,7 +16,7 @@ class DataStoreBase(object):
|
|||
if script_name == 'study_data_set':
|
||||
record = {'task_id': task_id, 'study_id': study_id, 'workflow_id': workflow_id, key: value}
|
||||
elif script_name == 'file_data_set':
|
||||
record = {'task_id': task_id, 'study_id': study_id, 'workflow_id': workflow_id, 'document_id': file_id, key: value}
|
||||
record = {'task_id': task_id, 'study_id': study_id, 'workflow_id': workflow_id, 'file_id': file_id, key: value}
|
||||
elif script_name == 'user_data_set':
|
||||
record = {'task_id': task_id, 'study_id': study_id, 'workflow_id': workflow_id, 'user_id': user_id, key: value}
|
||||
g.validation_data_store.append(record)
|
||||
|
@ -37,7 +37,7 @@ class DataStoreBase(object):
|
|||
return self.get_data_common(study_id, user_id, 'study_data_get', file_id, *args)
|
||||
elif script_name == 'file_data_get':
|
||||
for record in g.validation_data_store:
|
||||
if 'document_id' in record and record['document_id'] == file_id and key in record:
|
||||
if 'file_id' in record and record['file_id'] == file_id and key in record:
|
||||
return record[key]
|
||||
return self.get_data_common(study_id, user_id, 'file_data_get', file_id, *args)
|
||||
elif script_name == 'user_data_get':
|
||||
|
@ -84,7 +84,7 @@ class DataStoreBase(object):
|
|||
if study_id:
|
||||
query = query.filter(DataStoreModel.study_id == study_id)
|
||||
elif file_id:
|
||||
query = query.filter(DataStoreModel.document_id == file_id)
|
||||
query = query.filter(DataStoreModel.file_id == file_id)
|
||||
elif user_id:
|
||||
query = query.filter(DataStoreModel.user_id == user_id)
|
||||
result = query.order_by(desc(DataStoreModel.last_updated)).all()
|
||||
|
@ -107,7 +107,7 @@ class DataStoreBase(object):
|
|||
study_id=study_id,
|
||||
task_spec=task_spec,
|
||||
user_id=user_id, # Make this available to any User
|
||||
document_id=file_id,
|
||||
file_id=file_id,
|
||||
workflow_id=workflow_id,
|
||||
spec_id=workflow_spec_id)
|
||||
session.add(dsm)
|
||||
|
@ -119,7 +119,7 @@ class DataStoreBase(object):
|
|||
self.check_args(args, 2, script_name)
|
||||
record = session.query(DataStoreModel).filter_by(study_id=study_id,
|
||||
user_id=user_id,
|
||||
document_id=file_id,
|
||||
file_id=file_id,
|
||||
key=args[0]).first()
|
||||
if record:
|
||||
return record.value
|
||||
|
@ -132,7 +132,7 @@ class DataStoreBase(object):
|
|||
def get_multi_common(study_id, user_id, file_id=None):
|
||||
results = session.query(DataStoreModel).filter_by(study_id=study_id,
|
||||
user_id=user_id,
|
||||
document_id=file_id)
|
||||
file_id=file_id)
|
||||
return results
|
||||
|
||||
@staticmethod
|
||||
|
@ -142,7 +142,7 @@ class DataStoreBase(object):
|
|||
if user_id:
|
||||
query = query.filter(DataStoreModel.user_id == user_id)
|
||||
elif file_id:
|
||||
query = query.filter(DataStoreModel.document_id == file_id)
|
||||
query = query.filter(DataStoreModel.file_id == file_id)
|
||||
elif study_id:
|
||||
query = query.filter(DataStoreModel.study_id == study_id)
|
||||
record = query.first()
|
||||
|
|
|
@ -15,7 +15,7 @@ from crc import db, session, app
|
|||
from crc.api.common import ApiError
|
||||
from crc.models.data_store import DataStoreModel
|
||||
from crc.models.email import EmailModel
|
||||
from crc.models.file import DocumentModel, File, FileSchema
|
||||
from crc.models.file import FileModel, File, FileSchema
|
||||
from crc.models.ldap import LdapSchema
|
||||
|
||||
from crc.models.protocol_builder import ProtocolBuilderCreatorStudy
|
||||
|
@ -272,9 +272,9 @@ class StudyService(object):
|
|||
return
|
||||
|
||||
session.query(TaskEventModel).filter_by(workflow_id=workflow.id).delete()
|
||||
files = session.query(DocumentModel).filter_by(workflow_id=workflow_id).all()
|
||||
files = session.query(FileModel).filter_by(workflow_id=workflow_id).all()
|
||||
for file in files:
|
||||
session.query(DataStoreModel).filter(DataStoreModel.document_id == file.id).delete()
|
||||
session.query(DataStoreModel).filter(DataStoreModel.file_id == file.id).delete()
|
||||
session.delete(file)
|
||||
|
||||
session.delete(workflow)
|
||||
|
|
|
@ -15,7 +15,7 @@ from sqlalchemy.exc import IntegrityError
|
|||
from crc import session, app
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.data_store import DataStoreModel
|
||||
from crc.models.file import FileType, FileDataModel, FileModel, DocumentModel
|
||||
from crc.models.file import FileType, FileDataModel, FileModel, FileModel
|
||||
from crc.models.workflow import WorkflowModel
|
||||
from crc.services.cache_service import cache
|
||||
from crc.services.user_service import UserService
|
||||
|
@ -40,7 +40,7 @@ class UserFileService(object):
|
|||
@staticmethod
|
||||
@cache
|
||||
def is_workflow_review(workflow_spec_id):
|
||||
files = session.query(DocumentModel).filter(DocumentModel.workflow_spec_id==workflow_spec_id).all()
|
||||
files = session.query(FileModel).filter(FileModel.workflow_spec_id==workflow_spec_id).all()
|
||||
review = any([f.is_review for f in files])
|
||||
return review
|
||||
|
||||
|
@ -48,8 +48,8 @@ class UserFileService(object):
|
|||
def update_irb_code(file_id, irb_doc_code):
|
||||
"""Create a new file and associate it with the workflow
|
||||
Please note that the irb_doc_code MUST be a known file in the irb_documents.xslx reference document."""
|
||||
file_model = session.query(DocumentModel)\
|
||||
.filter(DocumentModel.id == file_id).first()
|
||||
file_model = session.query(FileModel)\
|
||||
.filter(FileModel.id == file_id).first()
|
||||
if file_model is None:
|
||||
raise ApiError("invalid_file_id",
|
||||
"When updating the irb_doc_code for a file, that file_id must already exist "
|
||||
|
@ -67,12 +67,12 @@ class UserFileService(object):
|
|||
raise ApiError('unknown_extension',
|
||||
'The file you provided does not have an accepted extension:' +
|
||||
file_extension, status_code=404)
|
||||
document_model = session.query(DocumentModel) \
|
||||
.filter(DocumentModel.workflow_id == workflow_id) \
|
||||
.filter(DocumentModel.name == name) \
|
||||
.filter(DocumentModel.task_spec == task_spec_name) \
|
||||
.filter(DocumentModel.irb_doc_code == irb_doc_code) \
|
||||
.order_by(desc(DocumentModel.date_modified)).first()
|
||||
document_model = session.query(FileModel) \
|
||||
.filter(FileModel.workflow_id == workflow_id) \
|
||||
.filter(FileModel.name == name) \
|
||||
.filter(FileModel.task_spec == task_spec_name) \
|
||||
.filter(FileModel.irb_doc_code == irb_doc_code) \
|
||||
.order_by(desc(FileModel.date_modified)).first()
|
||||
if document_model:
|
||||
document_model.archived = True
|
||||
else:
|
||||
|
@ -81,7 +81,7 @@ class UserFileService(object):
|
|||
user_uid = UserService.current_user().uid
|
||||
except ApiError as ae:
|
||||
user_uid = None
|
||||
document_model = DocumentModel(
|
||||
document_model = FileModel(
|
||||
name=name,
|
||||
type=FileType[file_extension].value,
|
||||
content_type=content_type,
|
||||
|
@ -102,14 +102,14 @@ class UserFileService(object):
|
|||
|
||||
# @staticmethod
|
||||
# def add_workflow_file(workflow_id, irb_doc_code, task_spec_name, name, content_type, binary_data):
|
||||
# document_model = session.query(DocumentModel)\
|
||||
# .filter(DocumentModel.workflow_id == workflow_id)\
|
||||
# .filter(DocumentModel.name == name) \
|
||||
# .filter(DocumentModel.task_spec == task_spec_name) \
|
||||
# .filter(DocumentModel.irb_doc_code == irb_doc_code).first()
|
||||
# document_model = session.query(FileModel)\
|
||||
# .filter(FileModel.workflow_id == workflow_id)\
|
||||
# .filter(FileModel.name == name) \
|
||||
# .filter(FileModel.task_spec == task_spec_name) \
|
||||
# .filter(FileModel.irb_doc_code == irb_doc_code).first()
|
||||
#
|
||||
# if not document_model:
|
||||
# document_model = DocumentModel(
|
||||
# document_model = FileModel(
|
||||
# workflow_id=workflow_id,
|
||||
# name=name,
|
||||
# task_spec=task_spec_name,
|
||||
|
@ -120,8 +120,8 @@ class UserFileService(object):
|
|||
@staticmethod
|
||||
def get_workflow_files(workflow_id):
|
||||
"""Returns all the file models associated with a running workflow."""
|
||||
return session.query(DocumentModel).filter(DocumentModel.workflow_id == workflow_id).\
|
||||
order_by(DocumentModel.id).all()
|
||||
return session.query(FileModel).filter(FileModel.workflow_id == workflow_id).\
|
||||
order_by(FileModel.id).all()
|
||||
|
||||
@staticmethod
|
||||
def get_extension(file_name):
|
||||
|
@ -182,24 +182,24 @@ class UserFileService(object):
|
|||
|
||||
@staticmethod
|
||||
def get_files_for_study(study_id, irb_doc_code=None):
|
||||
query = session.query(DocumentModel).\
|
||||
query = session.query(FileModel).\
|
||||
join(WorkflowModel).\
|
||||
filter(WorkflowModel.study_id == study_id)
|
||||
if irb_doc_code:
|
||||
query = query.filter(DocumentModel.irb_doc_code == irb_doc_code)
|
||||
query = query.filter(FileModel.irb_doc_code == irb_doc_code)
|
||||
return query.all()
|
||||
|
||||
@staticmethod
|
||||
def get_files(workflow_id=None, name=None, irb_doc_code=None):
|
||||
if workflow_id is not None:
|
||||
query = session.query(DocumentModel).filter_by(workflow_id=workflow_id)
|
||||
query = session.query(FileModel).filter_by(workflow_id=workflow_id)
|
||||
if irb_doc_code:
|
||||
query = query.filter_by(irb_doc_code=irb_doc_code)
|
||||
|
||||
if name:
|
||||
query = query.filter_by(name=name)
|
||||
|
||||
query = query.order_by(DocumentModel.id)
|
||||
query = query.order_by(FileModel.id)
|
||||
|
||||
results = query.all()
|
||||
return results
|
||||
|
@ -230,7 +230,7 @@ class UserFileService(object):
|
|||
@staticmethod
|
||||
def delete_file_data_stores(file_id):
|
||||
try:
|
||||
session.query(DataStoreModel).filter_by(document_id=file_id).delete()
|
||||
session.query(DataStoreModel).filter_by(file_id=file_id).delete()
|
||||
except IntegrityError as ie:
|
||||
session.rollback()
|
||||
app.logger.info(f"Failed to delete file data stores. Original error is {ie}")
|
||||
|
@ -241,7 +241,7 @@ class UserFileService(object):
|
|||
def delete_file(self, file_id):
|
||||
self.delete_file_data_stores(file_id)
|
||||
# We archive files so users can access previous versions
|
||||
document_model = session.query(DocumentModel).filter_by(id=file_id).first()
|
||||
document_model = session.query(FileModel).filter_by(id=file_id).first()
|
||||
document_model.archived = True
|
||||
session.commit()
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ from SpiffWorkflow.specs import WorkflowSpec
|
|||
|
||||
from crc import session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.file import DocumentModel, FileType, File
|
||||
from crc.models.file import FileModel, FileType, File
|
||||
from crc.models.task_event import TaskEventModel, TaskAction
|
||||
from crc.models.user import UserModelSchema
|
||||
from crc.models.workflow import WorkflowStatus, WorkflowModel, WorkflowSpecInfo
|
||||
|
@ -202,7 +202,7 @@ class WorkflowProcessor(object):
|
|||
task_event.form_data = {}
|
||||
session.add(task_event)
|
||||
# Remove any uploaded files.
|
||||
files = DocumentModel.query.filter(DocumentModel.workflow_id == workflow_model.id).all()
|
||||
files = FileModel.query.filter(FileModel.workflow_id == workflow_model.id).all()
|
||||
for file in files:
|
||||
UserFileService().delete_file(file.id)
|
||||
session.commit()
|
||||
|
|
|
@ -24,7 +24,7 @@ from sqlalchemy.exc import InvalidRequestError
|
|||
from crc import db, app, session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.api_models import Task, MultiInstanceType, WorkflowApi
|
||||
from crc.models.file import LookupDataModel, DocumentModel, File, FileSchema
|
||||
from crc.models.file import LookupDataModel, FileModel, File, FileSchema
|
||||
from crc.models.ldap import LdapModel
|
||||
from crc.models.study import StudyModel
|
||||
from crc.models.task_event import TaskEventModel, TaskAction
|
||||
|
@ -452,7 +452,7 @@ class WorkflowService(object):
|
|||
# the doc_code was correctly set, so this is a stop gap measure to assure we still hit it correctly.
|
||||
file_id = data[field.id]["id"]
|
||||
doc_code = task.workflow.script_engine._evaluate(field.get_property(Task.FIELD_PROP_DOC_CODE), data, task)
|
||||
file = db.session.query(DocumentModel).filter(DocumentModel.id == file_id).first()
|
||||
file = db.session.query(FileModel).filter(FileModel.id == file_id).first()
|
||||
if (file):
|
||||
file.irb_doc_code = doc_code
|
||||
db.session.commit()
|
||||
|
@ -622,7 +622,7 @@ class WorkflowService(object):
|
|||
doc_code = field.id
|
||||
if field.has_property('doc_code'):
|
||||
doc_code = WorkflowService.evaluate_property('doc_code', field, task)
|
||||
file_model = DocumentModel(name="test.png",
|
||||
file_model = FileModel(name="test.png",
|
||||
irb_doc_code=field.id)
|
||||
doc_dict = DocumentService.get_dictionary()
|
||||
file = File.from_document_model(file_model, doc_dict)
|
||||
|
|
Loading…
Reference in New Issue