Skip to content

Commit 345802a

Browse files
authored
Hotfix/is866 disable fake templates (#868)
Implements changes in #866 * Application does not load template projects via fakes * Moves all calls to get fakes under project's db api NOTE: these changes are already in master (cherry picked from there) and have tested that work there.
1 parent fdf0e97 commit 345802a

File tree

8 files changed

+17
-27
lines changed

8 files changed

+17
-27
lines changed

services/web/server/src/simcore_service_webserver/application.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def create_application(config: dict):
6060
setup_s3(app)
6161
setup_storage(app)
6262
setup_users(app)
63-
setup_projects(app, enable_fake_data=True) # TODO: deactivate fakes i.e. debug=testing
63+
setup_projects(app)
6464
setup_studies_access(app)
6565

6666
if config['director']["enabled"]:

services/web/server/src/simcore_service_webserver/projects/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ def setup(app: web.Application, *, enable_fake_data=False) -> bool:
6565
6666
:param app: main web application
6767
:type app: web.Application
68-
:param enable_fake_data: will inject some fake projects, defaults to False
68+
:param enable_fake_data: if True it injects template projects under /data, defaults to False (USE ONLY FOR TESTING)
6969
:param enable_fake_data: bool, optional
70-
:return: False if subystem setup was skipped (e.g. explicitly disabled in config), otherwise True
70+
:return: False if setup skips (e.g. explicitly disabled in config), otherwise True
7171
:rtype: bool
7272
"""
7373
logger.debug("Setting up %s ...", __name__)
@@ -106,7 +106,6 @@ def setup(app: web.Application, *, enable_fake_data=False) -> bool:
106106
app[APP_JSONSCHEMA_SPECS_KEY] = {CONFIG_SECTION_NAME: specs}
107107

108108
if enable_fake_data:
109-
# TODO: inject data in database instead of keeping in memory!?
110109
Fake.load_template_projects()
111110

112111
return True

services/web/server/src/simcore_service_webserver/projects/projects_access.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from aiohttp import web
44

55
from ..security_api import get_access_model, UserRole
6-
from .projects_fakes import Fake
76

87

98
async def can_update_node_inputs(context):
@@ -20,11 +19,7 @@ async def can_update_node_inputs(context):
2019
return False
2120

2221
# get current version
23-
# TODO: unify call
24-
if project_uuid in Fake.projects:
25-
current_project = Fake.projects[project_uuid].data
26-
else:
27-
current_project = await db.get_user_project(user_id, project_uuid)
22+
current_project = await db.get_user_project(user_id, project_uuid)
2823

2924
diffs = jsondiff.diff(current_project, updated_project)
3025

services/web/server/src/simcore_service_webserver/projects/projects_api.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from .config import CONFIG_SECTION_NAME
2020
from .projects_db import APP_PROJECT_DBAPI
2121
from .projects_exceptions import ProjectNotFoundError
22-
from .projects_fakes import Fake
2322

2423
BASE_UUID = uuidlib.UUID("71e0eb5e-0797-4469-89ba-00a0df4d338a")
2524
TEMPLATE_PREFIX = "template-uuid"
@@ -44,9 +43,6 @@ def validate_project(app: web.Application, project: Dict):
4443
async def get_project_for_user(request: web.Request, project_uuid, user_id) -> Dict:
4544
await check_permission(request, "project.read")
4645

47-
if project_uuid in Fake.projects:
48-
return Fake.projects[project_uuid].data
49-
5046
try:
5147
db = request.config_dict[APP_PROJECT_DBAPI]
5248
project = await db.get_user_project(user_id, project_uuid)

services/web/server/src/simcore_service_webserver/projects/projects_db.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from .projects_exceptions import (ProjectInvalidRightsError,
2828
ProjectNotFoundError)
2929
from .projects_models import ProjectType, projects, user_to_projects
30+
from .projects_fakes import Fake
3031

3132
log = logging.getLogger(__name__)
3233

@@ -189,7 +190,8 @@ async def load_user_projects(self, user_id: str) -> List[Dict]:
189190

190191
async def load_template_projects(self) -> List[Dict]:
191192
log.info("Loading template projects")
192-
projects_list = []
193+
projects_list = [prj.data for prj in Fake.projects.values() if prj.template]
194+
193195
async with self.engine.acquire() as conn:
194196
query = select([projects]).\
195197
where(projects.c.type == ProjectType.TEMPLATE)
@@ -201,6 +203,10 @@ async def load_template_projects(self) -> List[Dict]:
201203
return projects_list
202204

203205
async def get_template_project(self, project_uuid: str) -> Dict:
206+
prj = Fake.projects.get(project_uuid)
207+
if prj and prj.template:
208+
return prj.data
209+
204210
template_prj = None
205211
async with self.engine.acquire() as conn:
206212
query = select([projects]).where(
@@ -219,6 +225,10 @@ async def get_user_project(self, user_id: str, project_uuid: str) -> Dict:
219225
:return: schema-compliant project
220226
:rtype: Dict
221227
"""
228+
prj = Fake.projects.get(project_uuid)
229+
if prj and not prj.template:
230+
return Fake.projects[project_uuid].data
231+
222232
log.info("Getting project %s for user %s", project_uuid, user_id)
223233
async with self.engine.acquire() as conn:
224234
joint_table = user_to_projects.join(projects)

services/web/server/src/simcore_service_webserver/projects/projects_handlers.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from .projects_db import APP_PROJECT_DBAPI
1212
from .projects_exceptions import (ProjectInvalidRightsError,
1313
ProjectNotFoundError)
14-
from .projects_fakes import Fake
1514

1615
log = logging.getLogger(__name__)
1716

@@ -30,12 +29,6 @@ async def create_projects(request: web.Request):
3029
if template_uuid:
3130
# create from template
3231
template_prj = await db.get_template_project(template_uuid)
33-
34-
if not template_prj: # TODO: inject these projects in db instead!
35-
for prj in Fake.projects.values():
36-
if prj.template and prj.data['uuid']==template_uuid:
37-
template_prj = prj.data
38-
break
3932
if not template_prj:
4033
raise web.HTTPNotFound(reason="Invalid template uuid {}".format(template_uuid))
4134

@@ -83,7 +76,6 @@ async def list_projects(request: web.Request):
8376

8477
projects_list = []
8578
if ptype in ("template", "all"):
86-
projects_list += [prj.data for prj in Fake.projects.values() if prj.template]
8779
projects_list += await db.load_template_projects()
8880

8981
if ptype in ("user", "all"):

services/web/server/src/simcore_service_webserver/studies_access.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,12 @@ def load_isan_template_uuids():
4242
async def get_template_project(app: web.Application, project_uuid: str):
4343
# TODO: remove projects_ prefix from name
4444
from .projects.projects_db import APP_PROJECT_DBAPI
45-
from .projects.projects_fakes import Fake
4645

4746
db = app[APP_PROJECT_DBAPI]
4847

4948
# TODO: user search queries in DB instead
5049
# BUG: ensure items in project_list have unique UUIDs
51-
projects_list = [prj.data for prj in Fake.projects.values() if prj.template]
52-
projects_list += await db.load_template_projects()
50+
projects_list = await db.load_template_projects()
5351

5452
for prj in projects_list:
5553
if prj.get('uuid') == project_uuid:

services/web/server/tests/integration/test_project_workflow.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from simcore_service_webserver.db import setup_db
2626
from simcore_service_webserver.login import setup_login
2727
from simcore_service_webserver.projects import setup_projects
28-
from simcore_service_webserver.projects.projects_handlers import Fake
28+
from simcore_service_webserver.projects.projects_fakes import Fake
2929
from simcore_service_webserver.rest import setup_rest
3030
from simcore_service_webserver.security import setup_security
3131
from simcore_service_webserver.security_roles import UserRole

0 commit comments

Comments
 (0)