Renames endpoint methods for clarity. Adds endpoint for just updating file info.
This commit is contained in:
parent
3fb831bae4
commit
a0e60ddd77
37
crc/api.yml
37
crc/api.yml
|
@ -362,21 +362,15 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/File"
|
$ref: "#/components/schemas/File"
|
||||||
put:
|
put:
|
||||||
operationId: crc.api.file.update_file
|
operationId: crc.api.file.update_file_info
|
||||||
summary: Update a file
|
summary: Update a file
|
||||||
tags:
|
tags:
|
||||||
- Files
|
- Files
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
multipart/form-data:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
$ref: "#/components/schemas/File"
|
||||||
properties:
|
|
||||||
workflow_spec_id:
|
|
||||||
type: string
|
|
||||||
file:
|
|
||||||
type: string
|
|
||||||
format: binary
|
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Metadata about the uploaded file, but not the file content.
|
description: Metadata about the uploaded file, but not the file content.
|
||||||
|
@ -401,7 +395,7 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
get:
|
get:
|
||||||
operationId: crc.api.file.get_file
|
operationId: crc.api.file.get_file_data
|
||||||
summary: Returns only the file contents
|
summary: Returns only the file contents
|
||||||
tags:
|
tags:
|
||||||
- Files
|
- Files
|
||||||
|
@ -414,6 +408,29 @@ paths:
|
||||||
type: string
|
type: string
|
||||||
format: binary
|
format: binary
|
||||||
example: '<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions></bpmn:definitions>'
|
example: '<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions></bpmn:definitions>'
|
||||||
|
put:
|
||||||
|
operationId: crc.api.file.update_file_data
|
||||||
|
summary: Update only the file contents for a given file
|
||||||
|
tags:
|
||||||
|
- Files
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
multipart/form-data:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
file:
|
||||||
|
type: string
|
||||||
|
format: binary
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Returns the actual file
|
||||||
|
content:
|
||||||
|
application/octet-stream:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: binary
|
||||||
|
example: '<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions></bpmn:definitions>'
|
||||||
# /v1.0/workflow/0
|
# /v1.0/workflow/0
|
||||||
/workflow/{workflow_id}:
|
/workflow/{workflow_id}:
|
||||||
parameters:
|
parameters:
|
||||||
|
|
|
@ -60,7 +60,7 @@ def add_file():
|
||||||
return FileModelSchema().dump(file_model)
|
return FileModelSchema().dump(file_model)
|
||||||
|
|
||||||
|
|
||||||
def update_file(file_id):
|
def update_file_data(file_id):
|
||||||
file_model = session.query(FileModel).filter_by(id=file_id).with_for_update().first()
|
file_model = session.query(FileModel).filter_by(id=file_id).with_for_update().first()
|
||||||
if file_model is None:
|
if file_model is None:
|
||||||
return ApiErrorSchema().dump(ApiError('no_such_file', 'The file id you provided does not exist')), 404
|
return ApiErrorSchema().dump(ApiError('no_such_file', 'The file id you provided does not exist')), 404
|
||||||
|
@ -68,7 +68,7 @@ def update_file(file_id):
|
||||||
return FileModelSchema().dump(file_model)
|
return FileModelSchema().dump(file_model)
|
||||||
|
|
||||||
|
|
||||||
def get_file(file_id):
|
def get_file_data(file_id):
|
||||||
file_data = session.query(FileDataModel).filter_by(id=file_id).first()
|
file_data = session.query(FileDataModel).filter_by(id=file_id).first()
|
||||||
if file_data is None:
|
if file_data is None:
|
||||||
return ApiErrorSchema().dump(ApiError('no_such_file', 'The file id you provided does not exist')), 404
|
return ApiErrorSchema().dump(ApiError('no_such_file', 'The file id you provided does not exist')), 404
|
||||||
|
@ -87,6 +87,23 @@ def get_file_info(file_id):
|
||||||
return FileModelSchema().dump(file_model)
|
return FileModelSchema().dump(file_model)
|
||||||
|
|
||||||
|
|
||||||
|
def update_file_info(file_id, body):
|
||||||
|
if file_id is None:
|
||||||
|
error = ApiError('unknown_file', 'Please provide a valid File ID.')
|
||||||
|
return ApiErrorSchema.dump(error), 404
|
||||||
|
|
||||||
|
file_model = session.query(FileModel).filter_by(id=file_id).first()
|
||||||
|
|
||||||
|
if file_model is None:
|
||||||
|
error = ApiError('unknown_file_model', 'The file_model "' + file_id + '" is not recognized.')
|
||||||
|
return ApiErrorSchema.dump(error), 404
|
||||||
|
|
||||||
|
file_model = FileModelSchema().load(body, session=session)
|
||||||
|
session.add(file_model)
|
||||||
|
session.commit()
|
||||||
|
return FileModelSchema().dump(file_model)
|
||||||
|
|
||||||
|
|
||||||
def delete_file(file_id):
|
def delete_file(file_id):
|
||||||
session.query(FileDataModel).filter_by(file_model_id=file_id).delete()
|
session.query(FileDataModel).filter_by(file_model_id=file_id).delete()
|
||||||
session.query(FileModel).filter_by(id=file_id).delete()
|
session.query(FileModel).filter_by(id=file_id).delete()
|
||||||
|
|
|
@ -72,7 +72,7 @@ class WorkflowProcessor:
|
||||||
dmn: ElementTree.Element = ElementTree.fromstring(file_data.data)
|
dmn: ElementTree.Element = ElementTree.fromstring(file_data.data)
|
||||||
parser.add_dmn_xml(dmn, filename=file_data.file_model.name)
|
parser.add_dmn_xml(dmn, filename=file_data.file_model.name)
|
||||||
if process_id is None:
|
if process_id is None:
|
||||||
raise(Exception("There is no primary BPMN model defined for workflow " + workflow_spec_id))
|
raise(Exception("There is no primary BPMN model defined for workflow %s" % workflow_spec_id))
|
||||||
return parser.get_spec(process_id)
|
return parser.get_spec(process_id)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
Loading…
Reference in New Issue