mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-23 13:18:35 +00:00
Clean up file data. Always keep at least 1 version. Do not delete if in lookup or dependency tables
This commit is contained in:
parent
edb4d5abe2
commit
c91e81e356
@ -545,3 +545,49 @@ class FileService(object):
|
||||
dmn_file = prefix + etree.tostring(root)
|
||||
|
||||
return dmn_file
|
||||
|
||||
@staticmethod
|
||||
def cleanup_file_data(copies_to_keep=1):
|
||||
if isinstance(copies_to_keep, int) and copies_to_keep > 0:
|
||||
|
||||
deleted_models = []
|
||||
saved_models = []
|
||||
current_models = []
|
||||
|
||||
session.flush()
|
||||
|
||||
workflow_spec_models = session.query(WorkflowSpecModel).all()
|
||||
|
||||
for wf_spec_model in workflow_spec_models:
|
||||
file_models = session.query(FileModel)\
|
||||
.filter(FileModel.workflow_spec_id == wf_spec_model.id)\
|
||||
.all()
|
||||
# current_model = file_models[0]
|
||||
for file_model in file_models:
|
||||
file_data_models = session.query(FileDataModel)\
|
||||
.filter(FileDataModel.file_model_id == file_model.id)\
|
||||
.order_by(desc(FileDataModel.date_created))\
|
||||
.all()
|
||||
current_models.append(file_data_models[:copies_to_keep])
|
||||
for fd_model in file_data_models[copies_to_keep:]:
|
||||
dependencies = session.query(WorkflowSpecDependencyFile)\
|
||||
.filter(WorkflowSpecDependencyFile.file_data_id == fd_model.id)\
|
||||
.all()
|
||||
if len(dependencies) > 0:
|
||||
saved_models.append(fd_model)
|
||||
continue
|
||||
lookups = session.query(LookupFileModel)\
|
||||
.filter(LookupFileModel.file_data_model_id == fd_model.id)\
|
||||
.all()
|
||||
if len(lookups) > 0:
|
||||
saved_models.append(fd_model)
|
||||
continue
|
||||
deleted_models.append(fd_model)
|
||||
# session.delete(fd_model)
|
||||
|
||||
session.commit()
|
||||
return current_models, saved_models, deleted_models
|
||||
|
||||
else:
|
||||
raise ApiError(code='bad_keep',
|
||||
message='You must keep at least 1 version')
|
||||
|
Loading…
x
Reference in New Issue
Block a user