forked from enviPath/enviPy
[Feature] Package Pathway Export to CSV (#439)
Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#439
This commit is contained in:
@ -46,6 +46,10 @@ from .models import (
|
||||
Package = s.GET_PACKAGE_MODEL()
|
||||
|
||||
|
||||
def get_package_for_read(user, package_uuid):
|
||||
return PackageManager.get_package_by_id(user, package_uuid)
|
||||
|
||||
|
||||
def get_package_for_write(user, package_uuid):
|
||||
p = PackageManager.get_package_by_id(user, package_uuid)
|
||||
if not PackageManager.writable(user, p):
|
||||
@ -2291,3 +2295,38 @@ def predict(request, np: Form[NonPersistent]):
|
||||
return 403, {
|
||||
"message": f"Getting Setting with id {np.setting_url} failed due to insufficient rights!"
|
||||
}
|
||||
|
||||
|
||||
##########
|
||||
# Export #
|
||||
##########
|
||||
class PackageExportInSchema(Schema):
|
||||
package_uuid: str
|
||||
additional_information_types: List[str] | None = None
|
||||
|
||||
|
||||
@router.get("/export", response={200: Any, 403: Error})
|
||||
def export(request, q: Query[PackageExportInSchema]):
|
||||
try:
|
||||
p = get_package_for_read(request.user, q.package_uuid)
|
||||
|
||||
from envipy_additional_information import registry
|
||||
from utilities.misc import PathwayExporter
|
||||
|
||||
ai_types = []
|
||||
if q.additional_information_types is not None:
|
||||
for ai_type in q.additional_information_types:
|
||||
if registry.get_model(ai_type) is None:
|
||||
return 400, {
|
||||
"message": f"Exporting Package with id {q.package_uuid} failed as {ai_type} is not a valid additional information type!"
|
||||
}
|
||||
ai_types.append(ai_type)
|
||||
|
||||
exporter = PathwayExporter(p, add_infs_to_export=ai_types)
|
||||
res = exporter.do_export()
|
||||
|
||||
return res
|
||||
except ValueError:
|
||||
return 403, {
|
||||
"message": f"Exporting Package with id {q.package_uuid} failed due to insufficient rights!"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user