DocumentModel => FileModel

document_id => file_id
This commit is contained in:
mike cullerton 2022-04-19 14:56:34 -04:00
parent 061d55d231
commit 8e6ca4c97f
11 changed files with 62 additions and 62 deletions

View File

@ -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)

View File

@ -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

View 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.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:

View File

@ -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,

View File

@ -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:

View 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))

View File

@ -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()

View File

@ -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)

View File

@ -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()

View File

@ -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()

View File

@ -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)