|
@@ -8,6 +8,7 @@ from flask import make_response, request, abort
|
|
from flask.views import View
|
|
from flask.views import View
|
|
|
|
|
|
from pycs.database.Database import Database
|
|
from pycs.database.Database import Database
|
|
|
|
+from pycs.database.Project import Project
|
|
from pycs.frontend.endpoints.projects.ExecuteExternalStorage import ExecuteExternalStorage
|
|
from pycs.frontend.endpoints.projects.ExecuteExternalStorage import ExecuteExternalStorage
|
|
from pycs.frontend.endpoints.projects.ExecuteLabelProvider import ExecuteLabelProvider
|
|
from pycs.frontend.endpoints.projects.ExecuteLabelProvider import ExecuteLabelProvider
|
|
from pycs.frontend.notifications.NotificationManager import NotificationManager
|
|
from pycs.frontend.notifications.NotificationManager import NotificationManager
|
|
@@ -85,42 +86,44 @@ class CreateProject(View):
|
|
model, _ = model.copy_to(f'{model.name} ({name})', model_folder)
|
|
model, _ = model.copy_to(f'{model.name} ({name})', model_folder)
|
|
|
|
|
|
# create entry in database
|
|
# create entry in database
|
|
- created = self.db.create_project(name, description, model, label_provider,
|
|
|
|
|
|
+ project = self.db.create_project(name, description, model, label_provider,
|
|
project_folder, external_data, data_folder)
|
|
project_folder, external_data, data_folder)
|
|
|
|
|
|
# execute label provider and add labels to project
|
|
# execute label provider and add labels to project
|
|
if label_provider is not None:
|
|
if label_provider is not None:
|
|
- ExecuteLabelProvider.execute_label_provider(self.db, self.nm, self.jobs, created,
|
|
|
|
|
|
+ ExecuteLabelProvider.execute_label_provider(self.db, self.nm, self.jobs, project,
|
|
label_provider)
|
|
label_provider)
|
|
|
|
|
|
# load model and add collections to the project
|
|
# load model and add collections to the project
|
|
def load_model_and_get_collections():
|
|
def load_model_and_get_collections():
|
|
with closing(load_pipeline(model.root_folder)) as pipeline:
|
|
with closing(load_pipeline(model.root_folder)) as pipeline:
|
|
- return pipeline.collections.all()
|
|
|
|
|
|
+ return pipeline.collections()
|
|
|
|
|
|
|
|
+ project_id = project.id
|
|
def add_collections_to_project(provided_collections):
|
|
def add_collections_to_project(provided_collections):
|
|
|
|
+ project = Project.query.get(project_id)
|
|
with self.db:
|
|
with self.db:
|
|
for position, collection in enumerate(provided_collections):
|
|
for position, collection in enumerate(provided_collections):
|
|
- created.create_collection(collection['reference'],
|
|
|
|
|
|
+ project.create_collection(collection['reference'],
|
|
collection['name'],
|
|
collection['name'],
|
|
collection['description'],
|
|
collection['description'],
|
|
position + 1,
|
|
position + 1,
|
|
collection['autoselect'])
|
|
collection['autoselect'])
|
|
|
|
|
|
- self.jobs.run(created,
|
|
|
|
|
|
+ self.jobs.run(project,
|
|
'Media Collections',
|
|
'Media Collections',
|
|
- f'{created.name}',
|
|
|
|
- f'{created.id}/media-collections',
|
|
|
|
|
|
+ f'{project.name}',
|
|
|
|
+ f'{project.id}/media-collections',
|
|
executable=load_model_and_get_collections,
|
|
executable=load_model_and_get_collections,
|
|
result=add_collections_to_project)
|
|
result=add_collections_to_project)
|
|
|
|
|
|
# find media files
|
|
# find media files
|
|
if external_data:
|
|
if external_data:
|
|
- ExecuteExternalStorage.find_media_files(self.db, self.nm, self.jobs, created)
|
|
|
|
|
|
+ ExecuteExternalStorage.find_media_files(self.db, self.nm, self.jobs, project)
|
|
|
|
|
|
# fire event
|
|
# fire event
|
|
self.nm.create_model(model.id)
|
|
self.nm.create_model(model.id)
|
|
- self.nm.create_project(created.id)
|
|
|
|
|
|
+ self.nm.create_project(project.id)
|
|
|
|
|
|
# return success response
|
|
# return success response
|
|
return make_response()
|
|
return make_response()
|