diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ee274ca3e6c..36f71ac87ba 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -7,7 +7,9 @@ /ops/ @sanderegg, @pcrespov /docs/ @pcrespov /packages/service-library @pcrespov +/scripts/demo @odeimaiz, @pcrespov /scripts/json-schema-to-openapi-schema @sanderegg +/scripts/template-projects @odeimaiz, @pcrespov /services/dy* @sanderegg /services/sidecar @pcrespov, @mguidon /services/web/client @odeimaiz, @oetiker, @ignapas diff --git a/scripts/demo/confirmations-invitations.csv b/scripts/demo/confirmations-invitations.csv new file mode 100644 index 00000000000..9293bf7257e --- /dev/null +++ b/scripts/demo/confirmations-invitations.csv @@ -0,0 +1,21 @@ +code,user_id,action,data,created_at +AOuAejUGDv34i9QtxYK61V7GZmCE4B,1,INVITATION,"{ +""guest"": ""inviteed@foo.com"" , +""host"" : ""inviter@osparc.io"" +}",2019-06-07 14:38:56.202844 +uQhnK20tuXWdleIRhZaBcmrWaIrb2p,1,INVITATION,"{ +""guest"": ""inviteed@foo.com"" , +""host"" : ""inviter@osparc.io"" +}",2019-06-07 14:38:56.202856 +weedI0YvR6tMA7XEpaxgJZT2Z8SCUy,1,INVITATION,"{ +""guest"": ""inviteed@foo.com"" , +""host"" : ""inviter@osparc.io"" +}",2019-06-07 14:38:56.202860 +Q9m5C98ALYZDr1BjilkaaXWSMKxU21,1,INVITATION,"{ +""guest"": ""inviteed@foo.com"" , +""host"" : ""inviter@osparc.io"" +}",2019-06-07 14:38:56.202864 +jvhSQfoAAfin4htKgvvRYi3pkYdPhM,1,INVITATION,"{ +""guest"": ""inviteed@foo.com"" , +""host"" : ""inviter@osparc.io"" +}",2019-06-07 14:38:56.202867 diff --git a/scripts/demo/create_portal_markdown.py b/scripts/demo/create_portal_markdown.py new file mode 100644 index 00000000000..0885eae01ea --- /dev/null +++ b/scripts/demo/create_portal_markdown.py @@ -0,0 +1,113 @@ + +""" This script produces a markdown document with links to template studies + + Aims to emulate links + +""" +import argparse +import json +import logging +import sys +from datetime import datetime +from pathlib import Path + +from simcore_service_webserver.login.registration import (URL, + get_invitation_url) +from simcore_service_webserver.login.utils import get_random_string +from simcore_service_webserver.resources import resources +from contextlib import contextmanager + + +CONFIRMATIONS_FILENAME = "confirmations-invitations.csv" + +ISSUE = r"https://github.com/ITISFoundation/osparc-simcore/issues/" + +HOST_URLS_MAPS = [ + ('localhost', r'http://127.0.0.1:9081'), + ('master', r'http://master.osparc.io'), + ('staging', r'https://staging.osparc.io'), + ('production', r'https://osparc.io') +] + +MOCK_CODES = [ + "AOuAejUGDv34i9QtxYK61V7GZmCE4B", + "uQhnK20tuXWdleIRhZaBcmrWaIrb2p", + "weedI0YvR6tMA7XEpaxgJZT2Z8SCUy", + "Q9m5C98ALYZDr1BjilkaaXWSMKxU21", + "jvhSQfoAAfin4htKgvvRYi3pkYdPhM" +] + +current_path = Path( sys.argv[0] if __name__ == "__main__" else __file__).resolve() +logging.basicConfig(level=logging.INFO) + +log = logging.getLogger(__name__) + + +@contextmanager +def _open(filepath): + filepath = Path(filepath) + + log.info("Writing %s ... ", filepath) + with open(filepath, "wt") as fh: + yield fh + log.info("%s ready", filepath.name) + + +def write_list(hostname, url, data, fh): + print("## studies available @{}".format(hostname), file=fh) + print("", file=fh) + for prj in data: + print("- [{name}]({base_url}/study/{uuid})".format(base_url=url, **prj), file=fh) + print("", file=fh) + + +def main(mock_codes): + + with resources.stream('data/fake-template-projects.isan.json') as fp: + data = json.load(fp) + + file_path = str(current_path.with_suffix(".md")).replace("create_", "") + with _open(file_path) as fh: + print("".format(current_path.name, datetime.utcnow()), file=fh) + print("# THE PORTAL Emulator\n", file=fh) + print("This pages is for testing purposes for issue [#{1}]({0}{1})\n".format(ISSUE, 715), file=fh) + for hostname, url in HOST_URLS_MAPS: + write_list(hostname, url, data, fh) + + print("---", file=fh) + + print("# INVITATIONS Samples:", file=fh) + for hostname, url in HOST_URLS_MAPS[:-1]: + # invitations for production are not openly published + print("## urls for @{}".format(hostname), file=fh) + for code in mock_codes: + print("- [{code}]({base_url})".format( + base_url=get_invitation_url({'code':code, 'action':"INVITATION"}, URL(url)), + code=code), + file=fh) + + print("", file=fh) + + + file_path = current_path.parent / CONFIRMATIONS_FILENAME + with _open(file_path) as fh: + print("code,user_id,action,data,created_at", file=fh) + for code in mock_codes: + print('%s,1,INVITATION,"{' % code, file=fh) + print('""guest"": ""inviteed@foo.com"" ,', file=fh) + print('""host"" : ""inviter@osparc.io""', file=fh) + print('}",%s' % datetime.now().isoformat(sep=" "), file=fh) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Generates some material for demos') + parser.add_argument("--renew-invitation-codes", "-c", action="store_true", + help="Regenerates codes for invitations") + + args = parser.parse_args() + + codes = MOCK_CODES + if args.renew_invitation_codes: + codes =[ get_random_string(30) for _ in MOCK_CODES] + + main(codes) diff --git a/services/web/server/tests/sandbox/study_access_demo.md b/scripts/demo/portal_markdown.md similarity index 56% rename from services/web/server/tests/sandbox/study_access_demo.md rename to scripts/demo/portal_markdown.md index b5496a3d394..9d9e68d6366 100644 --- a/services/web/server/tests/sandbox/study_access_demo.md +++ b/scripts/demo/portal_markdown.md @@ -1,4 +1,4 @@ - + # THE PORTAL Emulator This pages is for testing purposes for issue [#715](https://github.com/ITISFoundation/osparc-simcore/issues/715) @@ -7,23 +7,29 @@ This pages is for testing purposes for issue [#715](https://github.com/ITISFound - [ISAN: 2D Plot](http://127.0.0.1:9081/study/template-uuid-4d5e-b80e-401c8066782f) - [ISAN: 3D Paraview](http://127.0.0.1:9081/study/template-uuid-4d5e-b80e-401c8066781f) -- [ISAN: UCDavis use case: 0D](http://127.0.0.1:9081/study/template-uuid-1234-a1a7-f7d4f3a8f26b) - [ISAN: MattWard use case](http://127.0.0.1:9081/study/template-uuid-420d-b82d-e80bfa272ebd) +- [ISAN: UCDavis use case: 0D](http://127.0.0.1:9081/study/template-uuid-1234-a1a7-f7d4f3a8f26b) ## studies available @master -- [ISAN: 2D Plot](http://osparc01.itis.ethz.ch:9081/study/template-uuid-4d5e-b80e-401c8066782f) -- [ISAN: 3D Paraview](http://osparc01.itis.ethz.ch:9081/study/template-uuid-4d5e-b80e-401c8066781f) -- [ISAN: UCDavis use case: 0D](http://osparc01.itis.ethz.ch:9081/study/template-uuid-1234-a1a7-f7d4f3a8f26b) -- [ISAN: MattWard use case](http://osparc01.itis.ethz.ch:9081/study/template-uuid-420d-b82d-e80bfa272ebd) +- [ISAN: 2D Plot](http://master.osparc.io/study/template-uuid-4d5e-b80e-401c8066782f) +- [ISAN: 3D Paraview](http://master.osparc.io/study/template-uuid-4d5e-b80e-401c8066781f) +- [ISAN: MattWard use case](http://master.osparc.io/study/template-uuid-420d-b82d-e80bfa272ebd) +- [ISAN: UCDavis use case: 0D](http://master.osparc.io/study/template-uuid-1234-a1a7-f7d4f3a8f26b) ## studies available @staging - [ISAN: 2D Plot](https://staging.osparc.io/study/template-uuid-4d5e-b80e-401c8066782f) - [ISAN: 3D Paraview](https://staging.osparc.io/study/template-uuid-4d5e-b80e-401c8066781f) -- [ISAN: UCDavis use case: 0D](https://staging.osparc.io/study/template-uuid-1234-a1a7-f7d4f3a8f26b) - [ISAN: MattWard use case](https://staging.osparc.io/study/template-uuid-420d-b82d-e80bfa272ebd) +- [ISAN: UCDavis use case: 0D](https://staging.osparc.io/study/template-uuid-1234-a1a7-f7d4f3a8f26b) + +## studies available @production +- [ISAN: 2D Plot](https://osparc.io/study/template-uuid-4d5e-b80e-401c8066782f) +- [ISAN: 3D Paraview](https://osparc.io/study/template-uuid-4d5e-b80e-401c8066781f) +- [ISAN: MattWard use case](https://osparc.io/study/template-uuid-420d-b82d-e80bfa272ebd) +- [ISAN: UCDavis use case: 0D](https://osparc.io/study/template-uuid-1234-a1a7-f7d4f3a8f26b) --- # INVITATIONS Samples: @@ -34,21 +40,15 @@ This pages is for testing purposes for issue [#715](https://github.com/ITISFound - [Q9m5C98ALYZDr1BjilkaaXWSMKxU21](http://127.0.0.1:9081/#/registration/?invitation=Q9m5C98ALYZDr1BjilkaaXWSMKxU21) - [jvhSQfoAAfin4htKgvvRYi3pkYdPhM](http://127.0.0.1:9081/#/registration/?invitation=jvhSQfoAAfin4htKgvvRYi3pkYdPhM) ## urls for @master -- [AOuAejUGDv34i9QtxYK61V7GZmCE4B](http://osparc01.itis.ethz.ch:9081/#/registration/?invitation=AOuAejUGDv34i9QtxYK61V7GZmCE4B) -- [uQhnK20tuXWdleIRhZaBcmrWaIrb2p](http://osparc01.itis.ethz.ch:9081/#/registration/?invitation=uQhnK20tuXWdleIRhZaBcmrWaIrb2p) -- [weedI0YvR6tMA7XEpaxgJZT2Z8SCUy](http://osparc01.itis.ethz.ch:9081/#/registration/?invitation=weedI0YvR6tMA7XEpaxgJZT2Z8SCUy) -- [Q9m5C98ALYZDr1BjilkaaXWSMKxU21](http://osparc01.itis.ethz.ch:9081/#/registration/?invitation=Q9m5C98ALYZDr1BjilkaaXWSMKxU21) -- [jvhSQfoAAfin4htKgvvRYi3pkYdPhM](http://osparc01.itis.ethz.ch:9081/#/registration/?invitation=jvhSQfoAAfin4htKgvvRYi3pkYdPhM) +- [AOuAejUGDv34i9QtxYK61V7GZmCE4B](http://master.osparc.io/#/registration/?invitation=AOuAejUGDv34i9QtxYK61V7GZmCE4B) +- [uQhnK20tuXWdleIRhZaBcmrWaIrb2p](http://master.osparc.io/#/registration/?invitation=uQhnK20tuXWdleIRhZaBcmrWaIrb2p) +- [weedI0YvR6tMA7XEpaxgJZT2Z8SCUy](http://master.osparc.io/#/registration/?invitation=weedI0YvR6tMA7XEpaxgJZT2Z8SCUy) +- [Q9m5C98ALYZDr1BjilkaaXWSMKxU21](http://master.osparc.io/#/registration/?invitation=Q9m5C98ALYZDr1BjilkaaXWSMKxU21) +- [jvhSQfoAAfin4htKgvvRYi3pkYdPhM](http://master.osparc.io/#/registration/?invitation=jvhSQfoAAfin4htKgvvRYi3pkYdPhM) ## urls for @staging - [AOuAejUGDv34i9QtxYK61V7GZmCE4B](https://staging.osparc.io/#/registration/?invitation=AOuAejUGDv34i9QtxYK61V7GZmCE4B) - [uQhnK20tuXWdleIRhZaBcmrWaIrb2p](https://staging.osparc.io/#/registration/?invitation=uQhnK20tuXWdleIRhZaBcmrWaIrb2p) - [weedI0YvR6tMA7XEpaxgJZT2Z8SCUy](https://staging.osparc.io/#/registration/?invitation=weedI0YvR6tMA7XEpaxgJZT2Z8SCUy) - [Q9m5C98ALYZDr1BjilkaaXWSMKxU21](https://staging.osparc.io/#/registration/?invitation=Q9m5C98ALYZDr1BjilkaaXWSMKxU21) - [jvhSQfoAAfin4htKgvvRYi3pkYdPhM](https://staging.osparc.io/#/registration/?invitation=jvhSQfoAAfin4htKgvvRYi3pkYdPhM) -## urls for @osparc.io -- [AOuAejUGDv34i9QtxYK61V7GZmCE4B](https://osparc.io/#/registration/?invitation=AOuAejUGDv34i9QtxYK61V7GZmCE4B) -- [uQhnK20tuXWdleIRhZaBcmrWaIrb2p](https://osparc.io/#/registration/?invitation=uQhnK20tuXWdleIRhZaBcmrWaIrb2p) -- [weedI0YvR6tMA7XEpaxgJZT2Z8SCUy](https://osparc.io/#/registration/?invitation=weedI0YvR6tMA7XEpaxgJZT2Z8SCUy) -- [Q9m5C98ALYZDr1BjilkaaXWSMKxU21](https://osparc.io/#/registration/?invitation=Q9m5C98ALYZDr1BjilkaaXWSMKxU21) -- [jvhSQfoAAfin4htKgvvRYi3pkYdPhM](https://osparc.io/#/registration/?invitation=jvhSQfoAAfin4htKgvvRYi3pkYdPhM) diff --git a/scripts/template-projects/create_csv_table.py b/scripts/template-projects/create_csv_table.py new file mode 100644 index 00000000000..d699e30269e --- /dev/null +++ b/scripts/template-projects/create_csv_table.py @@ -0,0 +1,46 @@ +""" Produces csv with a table of projects that can be inserted in the postgres db by importing it via adminer website + +""" + +import json + +from change_case import ChangeCase + +from simcore_service_webserver.projects.projects_models import ProjectType, projects +from simcore_service_webserver.resources import resources + +TEMPLATE_STUDIES_NAME = "data/fake-template-projects.isan.json" +TEMPLATE_STUDIES_TABLE = "template-projects-table.csv" + +COLS = [c.name for c in projects.columns if c!=projects.c.id] #pylint: disable=not-an-iterable +PROJECT_KEYS = [ChangeCase.snake_to_camel(key) for key in COLS] +ROW = ",".join( ["{}", ]*len(PROJECT_KEYS) ) + +def normalize(key, value): + if key == "type": + return ProjectType.TEMPLATE.name + + if value is None: + return '""' + + value = str(value) + value = value.replace("'", '"') + value = value.replace('"', '""') + value = '"' + value + '"' + return value + + + +def main(): + with resources.stream(TEMPLATE_STUDIES_NAME) as fp: + data = json.load(fp) + + with open(TEMPLATE_STUDIES_TABLE, 'wt') as fh: + print(",".join(COLS), file=fh) + for project in data: + values = [normalize(key, project.get(key)) for key in PROJECT_KEYS] + print(ROW.format(*values), file=fh) + + +if __name__ == "__main__": + main() diff --git a/scripts/template-projects/template-projects-table.csv b/scripts/template-projects/template-projects-table.csv new file mode 100644 index 00000000000..0ac617e2755 --- /dev/null +++ b/scripts/template-projects/template-projects-table.csv @@ -0,0 +1,5 @@ +type,uuid,name,description,thumbnail,prj_owner,creation_date,last_change_date,workbench +TEMPLATE,"template-uuid-4d5e-b80e-401c8066782f","ISAN: 2D Plot","2D RawGraphs viewer with one input","","maiz","2019-05-24T10:36:57.813Z","2019-05-24T11:36:12.015Z","{""template-uuid-48eb-a9d2-aaad6b72400a"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": False, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/Height-Weight""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}, ""template-uuid-4c63-a705-03a2c339646c"": {""key"": ""simcore/services/dynamic/raw-graphs"", ""version"": ""2.8.0"", ""label"": ""2D plot"", ""inputs"": {""input_1"": {""nodeUuid"": ""template-uuid-48eb-a9d2-aaad6b72400a"", ""output"": ""outFile""}}, ""inputNodes"": [""template-uuid-48eb-a9d2-aaad6b72400a""], ""outputNode"": False, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 400, ""y"": 100}}}" +TEMPLATE,"template-uuid-4d5e-b80e-401c8066781f","ISAN: 3D Paraview","3D Paraview viewer with two inputs","","maiz","2019-05-24T10:36:57.813Z"," 2019-05-24T10:38:12.888Z","{""template-uuid-403e-865a-8c5ca30671c6"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 1"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": False, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/HField_Big.vtk""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}, ""template-uuid-421f-be24-d44d112cc5c1"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 2"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": False, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/bunny.vtk""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 250}}, ""template-uuid-4ecd-9636-62e619a9ca69"": {""key"": ""simcore/services/dynamic/3d-viewer"", ""version"": ""2.10.0"", ""label"": ""3D ParaViewer"", ""inputs"": {""A"": {""nodeUuid"": ""template-uuid-403e-865a-8c5ca30671c6"", ""output"": ""outFile""}, ""B"": {""nodeUuid"": ""template-uuid-421f-be24-d44d112cc5c1"", ""output"": ""outFile""}}, ""inputNodes"": [""template-uuid-403e-865a-8c5ca30671c6"", ""template-uuid-421f-be24-d44d112cc5c1""], ""outputNode"": False, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 400, ""y"": 175}}}" +TEMPLATE,"template-uuid-420d-b82d-e80bfa272ebd","ISAN: MattWard use case","MattWard Solver/PostPro viewer","","MattWard","2019-04-30T08:52:20.937Z","2019-04-30T08:59:26.090Z","{""template-uuid-4021-b2ef-b2e163bfbd16"": {""key"": ""simcore/services/dynamic/mattward-viewer"", ""version"": ""2.9.0"", ""label"": ""MattWard"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": False, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}}" +TEMPLATE,"template-uuid-1234-a1a7-f7d4f3a8f26b","ISAN: UCDavis use case: 0D","Colleen Clancy Single Cell solver with a file picker and PostPro viewer","https://placeimg.com/171/96/tech/grayscale/?18.jpg","Colleen Clancy","2018-10-22T09:13:13.360Z","2018-10-22T09:33:41.858Z","{""template-uuid-4674-b758-946151cae351"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 0D"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": False, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/initial_WStates""}}, ""progress"": 100, ""parent"": None, ""position"": {""x"": 50, ""y"": 150}}, ""template-uuid-409d-998c-c1f04de67f8b"": {""key"": ""simcore/services/comp/ucdavis-singlecell-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""DBP-Clancy-Rabbit-Single-Cell solver"", ""inputAccess"": {""Na"": ""ReadAndWrite"", ""Kr"": ""ReadOnly"", ""BCL"": ""ReadAndWrite"", ""NBeats"": ""ReadOnly"", ""Ligand"": ""Invisible"", ""cAMKII"": ""Invisible""}, ""inputs"": {""Na"": 0, ""Kr"": 0, ""BCL"": 200, ""NBeats"": 5, ""Ligand"": 0, ""cAMKII"": ""WT"", ""initfile"": {""nodeUuid"": ""template-uuid-4674-b758-946151cae351"", ""output"": ""outFile""}}, ""inputNodes"": [""template-uuid-4674-b758-946151cae351""], ""outputNode"": False, ""outputs"": {}, ""parent"": None, ""position"": {""x"": 300, ""y"": 150}}, ""template-uuid-43e7-9fda-cf9625e59986"": {""key"": ""simcore/services/dynamic/cc-0d-viewer"", ""version"": ""2.8.0"", ""label"": ""cc-0d-viewer"", ""inputs"": {""vm_1Hz"": {""nodeUuid"": ""template-uuid-409d-998c-c1f04de67f8b"", ""output"": ""out_4""}, ""all_results_1Hz"": {""nodeUuid"": ""template-uuid-409d-998c-c1f04de67f8b"", ""output"": ""out_1""}}, ""inputNodes"": [""template-uuid-409d-998c-c1f04de67f8b""], ""outputNode"": False, ""outputs"": {}, ""parent"": None, ""position"": {""x"": 550, ""y"": 150}}}" diff --git a/scripts/template-projects/templates_in_master.csv b/scripts/template-projects/templates_in_master.csv new file mode 100644 index 00000000000..3a542f74e5d --- /dev/null +++ b/scripts/template-projects/templates_in_master.csv @@ -0,0 +1,9 @@ +type,uuid,name,description,thumbnail,prj_owner,creation_date,last_change_date,workbench +TEMPLATE,template-uuid-5716-bedd-b409bb021760,ISAN: 2D Plot,2D RawGraphs viewer with one input,"",maiz@itis.swiss,2019-06-06 14:33:34.008,2019-06-06 14:33:35.825,"{""dd332242-829a-58e5-884e-2690b3d54f11"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/Height-Weight""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}, ""e1ddb64b-2935-58a5-83d7-57d0feffbfea"": {""key"": ""simcore/services/dynamic/raw-graphs"", ""version"": ""2.8.0"", ""label"": ""2D plot"", ""inputs"": {""input_1"": {""nodeUuid"": ""dd332242-829a-58e5-884e-2690b3d54f11"", ""output"": ""outFile""}}, ""inputNodes"": [""dd332242-829a-58e5-884e-2690b3d54f11""], ""outputNode"": false, ""outputs"": {}, ""progress"": 90, ""thumbnail"": """", ""position"": {""x"": 400, ""y"": 100}}}" +TEMPLATE,template-uuid-518d-a25d-8887bcae93f8,ISAN: 3D Paraview,3D Paraview viewer with two inputs,"",maiz@itis.swiss,2019-06-06 14:33:43.065,2019-06-06 14:33:44.747,"{""5e9f85f4-5688-5753-af37-e6aec8120bf2"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 1"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/HField_Big.vtk""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}, ""2cab3689-cb00-522c-a377-dd8d7cd1265b"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 2"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/bunny.vtk""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 250}}, ""556c0607-1d8d-5983-9b0f-67677a20996c"": {""key"": ""simcore/services/dynamic/3d-viewer"", ""version"": ""2.10.0"", ""label"": ""3D ParaViewer"", ""inputs"": {""A"": {""nodeUuid"": ""5e9f85f4-5688-5753-af37-e6aec8120bf2"", ""output"": ""outFile""}, ""B"": {""nodeUuid"": ""2cab3689-cb00-522c-a377-dd8d7cd1265b"", ""output"": ""outFile""}}, ""inputNodes"": [""5e9f85f4-5688-5753-af37-e6aec8120bf2"", ""2cab3689-cb00-522c-a377-dd8d7cd1265b""], ""outputNode"": false, ""outputs"": {}, ""progress"": 85, ""thumbnail"": """", ""position"": {""x"": 400, ""y"": 175}}}" +TEMPLATE,template-uuid-5d82-b08d-d39c436ca738,ISAN: UCDavis use case: 0D,Colleen Clancy Single Cell solver with a file picker and PostPro viewer,"",maiz@itis.swiss,2019-06-06 14:33:51.94,2019-06-06 14:33:54.329,"{""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 0D"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/initial_WStates""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 50, ""y"": 150}}, ""b239ac4b-1967-562f-afd1-cca5105c8844"": {""key"": ""simcore/services/comp/ucdavis-singlecell-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""DBP-Clancy-Rabbit-Single-Cell solver"", ""inputs"": {""Na"": 0, ""Kr"": 0, ""BCL"": 200, ""NBeats"": 5, ""Ligand"": 0, ""cAMKII"": ""WT"", ""initfile"": {""nodeUuid"": ""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b"", ""output"": ""outFile""}}, ""inputAccess"": {""Na"": ""ReadAndWrite"", ""Kr"": ""ReadOnly"", ""BCL"": ""ReadAndWrite"", ""NBeats"": ""ReadOnly"", ""Ligand"": ""Invisible"", ""cAMKII"": ""Invisible""}, ""inputNodes"": [""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 150}}, ""aa8cdc10-eab8-5fdd-9daa-cb03c51d8138"": {""key"": ""simcore/services/dynamic/cc-0d-viewer"", ""version"": ""2.8.0"", ""label"": ""cc-0d-viewer"", ""inputs"": {""vm_1Hz"": {""nodeUuid"": ""b239ac4b-1967-562f-afd1-cca5105c8844"", ""output"": ""out_4""}, ""all_results_1Hz"": {""nodeUuid"": ""b239ac4b-1967-562f-afd1-cca5105c8844"", ""output"": ""out_1""}}, ""inputNodes"": [""b239ac4b-1967-562f-afd1-cca5105c8844""], ""outputNode"": false, ""outputs"": {}, ""progress"": 20, ""thumbnail"": """", ""position"": {""x"": 550, ""y"": 150}}}" +TEMPLATE,template-uuid-5a9e-9580-c53d92d18803,ISAN: MattWard use case,MattWard Solver/PostPro viewer,"",maiz@itis.swiss,2019-06-06 14:33:58.681,2019-06-06 14:34:01.617,"{""4858919c-e0f1-523c-8caa-4ca36c927ca2"": {""key"": ""simcore/services/dynamic/mattward-viewer"", ""version"": ""2.9.0"", ""label"": ""MattWard"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""progress"": 55, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}}" +TEMPLATE,template-uuid-5203-915e-1ae8ae0c9991,Sleepers,"5 sleepers interconnected","",maiz@itis.swiss,2019-06-06 14:34:19.631,2019-06-06 14:34:28.647,"{""f447dd35-b098-5f7e-92b0-5a14e84401e9"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 0"", ""inputs"": {""in_2"": 2}, ""inputAccess"": {""in_1"": ""Invisible"", ""in_2"": ""ReadOnly""}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 50, ""y"": 300}}, ""2745b49f-4fc4-5d8a-812c-44dacf56840e"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 1"", ""inputs"": {""in_1"": {""nodeUuid"": ""f447dd35-b098-5f7e-92b0-5a14e84401e9"", ""output"": ""out_1""}, ""in_2"": 2}, ""inputNodes"": [""f447dd35-b098-5f7e-92b0-5a14e84401e9""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 200}}, ""d1448b77-84ea-5706-b741-4073a4454f0d"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 2"", ""inputs"": {""in_1"": {""nodeUuid"": ""2745b49f-4fc4-5d8a-812c-44dacf56840e"", ""output"": ""out_1""}, ""in_2"": {""nodeUuid"": ""2745b49f-4fc4-5d8a-812c-44dacf56840e"", ""output"": ""out_2""}}, ""inputNodes"": [""2745b49f-4fc4-5d8a-812c-44dacf56840e""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 550, ""y"": 200}}, ""ab0911be-162d-5065-a079-a5a0476e3c10"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 3"", ""inputs"": {""in_2"": {""nodeUuid"": ""f447dd35-b098-5f7e-92b0-5a14e84401e9"", ""output"": ""out_2""}}, ""inputNodes"": [""f447dd35-b098-5f7e-92b0-5a14e84401e9""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 420, ""y"": 400}}, ""bd0f303e-92c4-559d-aa19-dc9293e10e4c"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 4"", ""inputs"": {""in_1"": {""nodeUuid"": ""d1448b77-84ea-5706-b741-4073a4454f0d"", ""output"": ""out_1""}, ""in_2"": {""nodeUuid"": ""ab0911be-162d-5065-a079-a5a0476e3c10"", ""output"": ""out_2""}}, ""inputNodes"": [""d1448b77-84ea-5706-b741-4073a4454f0d"", ""ab0911be-162d-5065-a079-a5a0476e3c10""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 800, ""y"": 300}}}" +TEMPLATE,template-uuid-54fd-a9d2-d40fcfb89c5f,Kember use case,Kember Cordiac Model with PostPro Viewer,"",maiz@itis.swiss,2019-06-06 14:34:41.832,2019-06-06 14:34:44.981,"{""32a2b643-42e5-5f7f-af9c-e91b64c4989e"": {""key"": ""simcore/services/comp/kember-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""Kember cardiac model"", ""inputs"": {""dt"": 0.01, ""T"": 1000, ""forcing_factor"": 0}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 50, ""y"": 100}}, ""df5e39cc-f31e-50b8-8ae7-b2a10131cc8f"": {""key"": ""simcore/services/dynamic/kember-viewer"", ""version"": ""2.9.0"", ""label"": ""kember-viewer"", ""inputs"": {""outputController"": {""nodeUuid"": ""32a2b643-42e5-5f7f-af9c-e91b64c4989e"", ""output"": ""out_1""}}, ""inputNodes"": [""32a2b643-42e5-5f7f-af9c-e91b64c4989e""], ""outputNode"": false, ""outputs"": {}, ""progress"": 10, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 100}}}" +TEMPLATE,template-uuid-59c3-a22d-ce2979b88313,"UCDavis use cases: 1D, 2D",Colleen Clancy 1D and 2D use cases with a file picker and PostPro viewers,"",maiz@itis.swiss,2019-06-06 14:34:52.882,2019-06-06 14:34:54.863,"{""919cc4b3-973b-5d51-b24e-5f9a34f0478f"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 1&2 D"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 50, ""y"": 300}}, ""aaa65879-adb0-547e-8e94-2229dcd0b912"": {""key"": ""simcore/services/frontend/nodes-group"", ""version"": ""1.0.0"", ""label"": ""CC 1D"", ""inputs"": {}, ""inputNodes"": [""919cc4b3-973b-5d51-b24e-5f9a34f0478f""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 200}}, ""5bd83ddf-582b-5b74-aa0b-f646fd835066"": {""key"": ""simcore/services/frontend/nodes-group"", ""version"": ""1.0.0"", ""label"": ""CC 2D"", ""inputs"": {}, ""inputNodes"": [""919cc4b3-973b-5d51-b24e-5f9a34f0478f"", ""aaa65879-adb0-547e-8e94-2229dcd0b912""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 550, ""y"": 400}}, ""ea8426ea-f993-5b4b-8cdf-ff7770a9f98e"": {""key"": ""simcore/services/comp/ucdavis-1d-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""DBP-Clancy-Rabbit-1-D solver"", ""inputs"": {""Na"": 0, ""Kr"": 0, ""BCL"": 10, ""NBeats"": 1, ""Ligand"": 0, ""cAMKII"": ""WT"", ""tw"": 5, ""tl"": 200, ""homogeneity"": ""heterogeneous"", ""in_10"": {""nodeUuid"": ""919cc4b3-973b-5d51-b24e-5f9a34f0478f"", ""output"": ""outFile""}}, ""inputNodes"": [""919cc4b3-973b-5d51-b24e-5f9a34f0478f""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""aaa65879-adb0-547e-8e94-2229dcd0b912"", ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 350}}, ""b7fc93b3-bf51-5bb1-9ce9-8a7be6b86b63"": {""key"": ""simcore/services/dynamic/cc-1d-viewer"", ""version"": ""2.8.0"", ""label"": ""cc-1d-viewer"", ""inputs"": {""ECGs"": {""nodeUuid"": ""ea8426ea-f993-5b4b-8cdf-ff7770a9f98e"", ""output"": ""out_1""}, ""y_1D"": {""nodeUuid"": ""ea8426ea-f993-5b4b-8cdf-ff7770a9f98e"", ""output"": ""out_3""}}, ""inputNodes"": [""ea8426ea-f993-5b4b-8cdf-ff7770a9f98e""], ""outputNode"": false, ""outputs"": {}, ""parent"": ""aaa65879-adb0-547e-8e94-2229dcd0b912"", ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 200}}, ""d4135bd5-02f8-56e8-90f3-d0df529a0016"": {""key"": ""simcore/services/comp/ucdavis-2d-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""DBP-Clancy-Rabbit-2-D solver"", ""inputs"": {""Na"": 0, ""Kr"": 0, ""BCL"": 10, ""Ligand"": 0, ""cAMKII"": ""WT"", ""tw"": 5, ""tl"": 200, ""homogeneity"": ""heterogeneous""}, ""inputNodes"": [""919cc4b3-973b-5d51-b24e-5f9a34f0478f"", ""aaa65879-adb0-547e-8e94-2229dcd0b912""], ""outputNode"": false, ""outputs"": {}, ""parent"": ""5bd83ddf-582b-5b74-aa0b-f646fd835066"", ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 350}}, ""0d54e54e-94c7-5b92-be80-a7fa7c25a69b"": {""key"": ""simcore/services/dynamic/cc-2d-viewer"", ""version"": ""2.8.0"", ""label"": ""cc-2d-viewer"", ""inputs"": {""ap"": {""nodeUuid"": ""d4135bd5-02f8-56e8-90f3-d0df529a0016"", ""output"": ""out_1""}}, ""inputNodes"": [""d4135bd5-02f8-56e8-90f3-d0df529a0016""], ""outputNode"": false, ""outputs"": {}, ""parent"": ""5bd83ddf-582b-5b74-aa0b-f646fd835066"", ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 200}}}" +TEMPLATE,template-uuid-5a64-98c2-7912815f9036,4x Colleen Clancy 0Ds,4x Colleen Clancy 0Ds,"",maiz@itis.swiss,2019-06-06 14:34:59.293,2019-06-06 14:34:59.293,"{""4cb1e777-5472-5bd6-8e50-cb5fe6c66527"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 0D"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""parent"": null, ""position"": {""x"": 50, ""y"": 300}}, ""df846171-37fe-59a0-8cc8-1d45139b73ef"": {""key"": ""simcore/services/frontend/nodes-group"", ""version"": ""1.0.0"", ""label"": ""CC 0D (1)"", ""inputs"": {}, ""outputs"": {}, ""inputNodes"": [""4cb1e777-5472-5bd6-8e50-cb5fe6c66527""], ""outputNode"": false, ""position"": {""x"": 300, ""y"": 100}}, ""1eb2bd66-1ad4-5a46-b772-b5e23f733f97"": {""key"": ""simcore/services/frontend/nodes-group"", ""version"": ""1.0.0"", ""label"": ""CC 0D (2)"", ""inputs"": {}, ""outputs"": {}, ""inputNodes"": [""4cb1e777-5472-5bd6-8e50-cb5fe6c66527""], ""outputNode"": false, ""position"": {""x"": 300, ""y"": 250}}, ""5ffdbaa2-f8c6-5cb0-9abb-ed71c6cecb51"": {""key"": ""simcore/services/frontend/nodes-group"", ""version"": ""1.0.0"", ""label"": ""CC 0D (3)"", ""inputs"": {}, ""outputs"": {}, ""inputNodes"": [""4cb1e777-5472-5bd6-8e50-cb5fe6c66527""], ""outputNode"": false, ""position"": {""x"": 300, ""y"": 400}}, ""cd2b0a83-1f4a-5732-9b3b-4c687870c63f"": {""key"": ""simcore/services/frontend/nodes-group"", ""version"": ""1.0.0"", ""label"": ""CC 0D (4)"", ""inputs"": {}, ""outputs"": {}, ""inputNodes"": [""4cb1e777-5472-5bd6-8e50-cb5fe6c66527""], ""outputNode"": false, ""position"": {""x"": 300, ""y"": 550}}, ""ea8426ea-f993-5b4b-8cdf-ff7770a9f98e"": {""key"": ""simcore/services/comp/ucdavis-singlecell-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""Clancy 0D solver (1)"", ""inputs"": {""Na"": 0, ""Kr"": 0, ""BCL"": 200, ""NBeats"": 5, ""Ligand"": 0, ""cAMKII"": ""WT"", ""initFile"": {""nodeUuid"": ""4cb1e777-5472-5bd6-8e50-cb5fe6c66527"", ""output"": ""outFile""}}, ""inputNodes"": [""4cb1e777-5472-5bd6-8e50-cb5fe6c66527""], ""outputNode"": false, ""outputs"": {}, ""parent"": ""df846171-37fe-59a0-8cc8-1d45139b73ef"", ""position"": {""x"": 100, ""y"": 350}}, ""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"": {""key"": ""simcore/services/dynamic/cc-0d-viewer"", ""version"": ""2.8.0"", ""label"": ""Clancy 0D Viewer (1)"", ""inputs"": {""vm_1Hz"": {""nodeUuid"": ""ea8426ea-f993-5b4b-8cdf-ff7770a9f98e"", ""output"": ""out_4""}, ""all_results_1Hz"": {""nodeUuid"": ""ea8426ea-f993-5b4b-8cdf-ff7770a9f98e"", ""output"": ""out_1""}}, ""inputNodes"": [""ea8426ea-f993-5b4b-8cdf-ff7770a9f98e""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""df846171-37fe-59a0-8cc8-1d45139b73ef"", ""position"": {""x"": 300, ""y"": 200}}, ""bfc3dcda-1a13-556a-b3b4-44c600a20418"": {""key"": ""simcore/services/comp/ucdavis-singlecell-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""Clancy 0D solver (2)"", ""inputs"": {""Na"": 5, ""Kr"": 0, ""BCL"": 200, ""NBeats"": 5, ""Ligand"": 0, ""cAMKII"": ""WT"", ""initFile"": {""nodeUuid"": ""4cb1e777-5472-5bd6-8e50-cb5fe6c66527"", ""output"": ""outFile""}}, ""inputNodes"": [""4cb1e777-5472-5bd6-8e50-cb5fe6c66527""], ""outputNode"": false, ""outputs"": {}, ""parent"": ""1eb2bd66-1ad4-5a46-b772-b5e23f733f97"", ""position"": {""x"": 100, ""y"": 350}}, ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"": {""key"": ""simcore/services/dynamic/cc-0d-viewer"", ""version"": ""2.8.0"", ""label"": ""Clancy 0D Viewer (2)"", ""inputs"": {""vm_1Hz"": {""nodeUuid"": ""bfc3dcda-1a13-556a-b3b4-44c600a20418"", ""output"": ""out_4""}, ""all_results_1Hz"": {""nodeUuid"": ""bfc3dcda-1a13-556a-b3b4-44c600a20418"", ""output"": ""out_1""}}, ""inputNodes"": [""bfc3dcda-1a13-556a-b3b4-44c600a20418""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""1eb2bd66-1ad4-5a46-b772-b5e23f733f97"", ""position"": {""x"": 300, ""y"": 200}}, ""8f7639b7-4f55-5088-a795-2a61bc17f645"": {""key"": ""simcore/services/comp/ucdavis-singlecell-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""Clancy 0D solver (3)"", ""inputs"": {""Na"": 10, ""Kr"": 0, ""BCL"": 200, ""NBeats"": 5, ""Ligand"": 0, ""cAMKII"": ""WT"", ""initFile"": {""nodeUuid"": ""4cb1e777-5472-5bd6-8e50-cb5fe6c66527"", ""output"": ""outFile""}}, ""inputNodes"": [""4cb1e777-5472-5bd6-8e50-cb5fe6c66527""], ""outputNode"": false, ""outputs"": {}, ""parent"": ""5ffdbaa2-f8c6-5cb0-9abb-ed71c6cecb51"", ""position"": {""x"": 100, ""y"": 350}}, ""5e788613-a331-55e1-952e-ca01919c509a"": {""key"": ""simcore/services/dynamic/cc-0d-viewer"", ""version"": ""2.8.0"", ""label"": ""Clancy 0D Viewer (3)"", ""inputs"": {""vm_1Hz"": {""nodeUuid"": ""8f7639b7-4f55-5088-a795-2a61bc17f645"", ""output"": ""out_4""}, ""all_results_1Hz"": {""nodeUuid"": ""8f7639b7-4f55-5088-a795-2a61bc17f645"", ""output"": ""out_1""}}, ""inputNodes"": [""8f7639b7-4f55-5088-a795-2a61bc17f645""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""5ffdbaa2-f8c6-5cb0-9abb-ed71c6cecb51"", ""position"": {""x"": 300, ""y"": 200}}, ""68075437-61e0-5c44-98be-a372584408be"": {""key"": ""simcore/services/comp/ucdavis-singlecell-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""Clancy 0D solver (4)"", ""inputs"": {""Na"": 15, ""Kr"": 0, ""BCL"": 200, ""NBeats"": 5, ""Ligand"": 0, ""cAMKII"": ""WT"", ""initFile"": {""nodeUuid"": ""4cb1e777-5472-5bd6-8e50-cb5fe6c66527"", ""output"": ""outFile""}}, ""inputNodes"": [""4cb1e777-5472-5bd6-8e50-cb5fe6c66527""], ""outputNode"": false, ""outputs"": {}, ""parent"": ""cd2b0a83-1f4a-5732-9b3b-4c687870c63f"", ""position"": {""x"": 100, ""y"": 350}}, ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594"": {""key"": ""simcore/services/dynamic/cc-0d-viewer"", ""version"": ""2.8.0"", ""label"": ""Clancy 0D Viewer (4)"", ""inputs"": {""vm_1Hz"": {""nodeUuid"": ""68075437-61e0-5c44-98be-a372584408be"", ""output"": ""out_4""}, ""all_results_1Hz"": {""nodeUuid"": ""68075437-61e0-5c44-98be-a372584408be"", ""output"": ""out_1""}}, ""inputNodes"": [""68075437-61e0-5c44-98be-a372584408be""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""cd2b0a83-1f4a-5732-9b3b-4c687870c63f"", ""position"": {""x"": 300, ""y"": 200}}, ""ff1b2149-7401-5d79-b369-ac73ec1e4713"": {""key"": ""simcore/services/frontend/multi-plot"", ""version"": ""1.0.0"", ""label"": ""Multi Plot"", ""inputs"": {}, ""inputNodes"": [""df846171-37fe-59a0-8cc8-1d45139b73ef"", ""1eb2bd66-1ad4-5a46-b772-b5e23f733f97"", ""5ffdbaa2-f8c6-5cb0-9abb-ed71c6cecb51"", ""cd2b0a83-1f4a-5732-9b3b-4c687870c63f""], ""outputNode"": false, ""outputs"": {}, ""parent"": null, ""position"": {""x"": 550, ""y"": 300}}, ""e10b62a8-ae5a-5eb2-9737-932276d0c777"": {""key"": ""simcore/services/dynamic/raw-graphs"", ""version"": ""2.8.0"", ""label"": ""2D plot (1)"", ""inputs"": {""input_1"": {""nodeUuid"": ""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"", ""output"": ""out_1""}, ""input_2"": {""nodeUuid"": ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"", ""output"": ""out_1""}, ""input_3"": {""nodeUuid"": ""5e788613-a331-55e1-952e-ca01919c509a"", ""output"": ""out_1""}, ""input_4"": {""nodeUuid"": ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594"", ""output"": ""out_1""}}, ""inputNodes"": [""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"", ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"", ""5e788613-a331-55e1-952e-ca01919c509a"", ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""ff1b2149-7401-5d79-b369-ac73ec1e4713"", ""position"": {""x"": 50, ""y"": 50}}, ""756dc773-fceb-5aa1-a0a2-a7f5c4f41eab"": {""key"": ""simcore/services/dynamic/raw-graphs"", ""version"": ""2.8.0"", ""label"": ""2D plot (2)"", ""inputs"": {""input_1"": {""nodeUuid"": ""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"", ""output"": ""out_1""}, ""input_2"": {""nodeUuid"": ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"", ""output"": ""out_1""}, ""input_3"": {""nodeUuid"": ""5e788613-a331-55e1-952e-ca01919c509a"", ""output"": ""out_1""}, ""input_4"": {""nodeUuid"": ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594"", ""output"": ""out_1""}}, ""inputNodes"": [""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"", ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"", ""5e788613-a331-55e1-952e-ca01919c509a"", ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""ff1b2149-7401-5d79-b369-ac73ec1e4713"", ""position"": {""x"": 50, ""y"": 50}}, ""540bf9d0-b2ee-5928-8ff9-e59bdf23a322"": {""key"": ""simcore/services/dynamic/raw-graphs"", ""version"": ""2.8.0"", ""label"": ""2D plot (3)"", ""inputs"": {""input_1"": {""nodeUuid"": ""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"", ""output"": ""out_1""}, ""input_2"": {""nodeUuid"": ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"", ""output"": ""out_1""}, ""input_3"": {""nodeUuid"": ""5e788613-a331-55e1-952e-ca01919c509a"", ""output"": ""out_1""}, ""input_4"": {""nodeUuid"": ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594"", ""output"": ""out_1""}}, ""inputNodes"": [""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"", ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"", ""5e788613-a331-55e1-952e-ca01919c509a"", ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""ff1b2149-7401-5d79-b369-ac73ec1e4713"", ""position"": {""x"": 50, ""y"": 50}}, ""4612f8df-2400-578f-8f42-e3bcd9788e46"": {""key"": ""simcore/services/dynamic/raw-graphs"", ""version"": ""2.8.0"", ""label"": ""2D plot (4)"", ""inputs"": {""input_1"": {""nodeUuid"": ""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"", ""output"": ""out_1""}, ""input_2"": {""nodeUuid"": ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"", ""output"": ""out_1""}, ""input_3"": {""nodeUuid"": ""5e788613-a331-55e1-952e-ca01919c509a"", ""output"": ""out_1""}, ""input_4"": {""nodeUuid"": ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594"", ""output"": ""out_1""}}, ""inputNodes"": [""eaa182e3-8a33-57a8-acbc-43f0e5859e3c"", ""cd64ca6f-00b5-5d67-b4af-caf5e07ccdfe"", ""5e788613-a331-55e1-952e-ca01919c509a"", ""86c8b7ec-fac9-5d45-8551-5a4bf6dbf594""], ""outputNode"": true, ""outputs"": {}, ""parent"": ""ff1b2149-7401-5d79-b369-ac73ec1e4713"", ""position"": {""x"": 50, ""y"": 50}}}" diff --git a/scripts/template-projects/templates_in_production.csv b/scripts/template-projects/templates_in_production.csv new file mode 100644 index 00000000000..b3a80cdf335 --- /dev/null +++ b/scripts/template-projects/templates_in_production.csv @@ -0,0 +1,4 @@ +type,uuid,name,description,thumbnail,prj_owner,creation_date,last_change_date,workbench +TEMPLATE,template-uuid-5716-bedd-b409bb021760,ISAN: 2D Plot,2D RawGraphs viewer with one input,"",maiz@itis.swiss,2019-06-06 14:33:34.008,2019-06-06 14:33:35.825,"{""dd332242-829a-58e5-884e-2690b3d54f11"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/Height-Weight""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}, ""e1ddb64b-2935-58a5-83d7-57d0feffbfea"": {""key"": ""simcore/services/dynamic/raw-graphs"", ""version"": ""2.8.0"", ""label"": ""2D plot"", ""inputs"": {""input_1"": {""nodeUuid"": ""dd332242-829a-58e5-884e-2690b3d54f11"", ""output"": ""outFile""}}, ""inputNodes"": [""dd332242-829a-58e5-884e-2690b3d54f11""], ""outputNode"": false, ""outputs"": {}, ""progress"": 90, ""thumbnail"": """", ""position"": {""x"": 400, ""y"": 100}}}" +TEMPLATE,template-uuid-5d82-b08d-d39c436ca738,ISAN: UCDavis use case: 0D,Colleen Clancy Single Cell solver with a file picker and PostPro viewer,"",maiz@itis.swiss,2019-06-06 14:33:51.94,2019-06-06 14:33:54.329,"{""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 0D"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/initial_WStates""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 50, ""y"": 150}}, ""b239ac4b-1967-562f-afd1-cca5105c8844"": {""key"": ""simcore/services/comp/ucdavis-singlecell-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""DBP-Clancy-Rabbit-Single-Cell solver"", ""inputs"": {""Na"": 0, ""Kr"": 0, ""BCL"": 200, ""NBeats"": 5, ""Ligand"": 0, ""cAMKII"": ""WT"", ""initfile"": {""nodeUuid"": ""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b"", ""output"": ""outFile""}}, ""inputAccess"": {""Na"": ""ReadAndWrite"", ""Kr"": ""ReadOnly"", ""BCL"": ""ReadAndWrite"", ""NBeats"": ""ReadOnly"", ""Ligand"": ""Invisible"", ""cAMKII"": ""Invisible""}, ""inputNodes"": [""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 150}}, ""aa8cdc10-eab8-5fdd-9daa-cb03c51d8138"": {""key"": ""simcore/services/dynamic/cc-0d-viewer"", ""version"": ""2.8.0"", ""label"": ""cc-0d-viewer"", ""inputs"": {""vm_1Hz"": {""nodeUuid"": ""b239ac4b-1967-562f-afd1-cca5105c8844"", ""output"": ""out_4""}, ""all_results_1Hz"": {""nodeUuid"": ""b239ac4b-1967-562f-afd1-cca5105c8844"", ""output"": ""out_1""}}, ""inputNodes"": [""b239ac4b-1967-562f-afd1-cca5105c8844""], ""outputNode"": false, ""outputs"": {}, ""progress"": 20, ""thumbnail"": """", ""position"": {""x"": 550, ""y"": 150}}}" +TEMPLATE,template-uuid-5a9e-9580-c53d92d18803,ISAN: MattWard use case,MattWard Solver/PostPro viewer,"",maiz@itis.swiss,2019-06-06 14:33:58.681,2019-06-06 14:34:01.617,"{""4858919c-e0f1-523c-8caa-4ca36c927ca2"": {""key"": ""simcore/services/dynamic/mattward-viewer"", ""version"": ""2.9.0"", ""label"": ""MattWard"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""progress"": 55, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}}" diff --git a/scripts/template-projects/templates_in_staging.csv b/scripts/template-projects/templates_in_staging.csv new file mode 100644 index 00000000000..c7ae3a5182f --- /dev/null +++ b/scripts/template-projects/templates_in_staging.csv @@ -0,0 +1,6 @@ +type,uuid,name,description,thumbnail,prj_owner,creation_date,last_change_date,workbench +TEMPLATE,template-uuid-5716-bedd-b409bb021760,ISAN: 2D Plot,2D RawGraphs viewer with one input,"",maiz@itis.swiss,2019-06-06 14:33:34.008,2019-06-06 14:33:35.825,"{""dd332242-829a-58e5-884e-2690b3d54f11"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/Height-Weight""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}, ""e1ddb64b-2935-58a5-83d7-57d0feffbfea"": {""key"": ""simcore/services/dynamic/raw-graphs"", ""version"": ""2.8.0"", ""label"": ""2D plot"", ""inputs"": {""input_1"": {""nodeUuid"": ""dd332242-829a-58e5-884e-2690b3d54f11"", ""output"": ""outFile""}}, ""inputNodes"": [""dd332242-829a-58e5-884e-2690b3d54f11""], ""outputNode"": false, ""outputs"": {}, ""progress"": 90, ""thumbnail"": """", ""position"": {""x"": 400, ""y"": 100}}}" +TEMPLATE,template-uuid-5d82-b08d-d39c436ca738,ISAN: UCDavis use case: 0D,Colleen Clancy Single Cell solver with a file picker and PostPro viewer,"",maiz@itis.swiss,2019-06-06 14:33:51.94,2019-06-06 14:33:54.329,"{""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b"": {""key"": ""simcore/services/frontend/file-picker"", ""version"": ""1.0.0"", ""label"": ""File Picker 0D"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {""outFile"": {""store"": 1, ""path"": ""Shared Data/initial_WStates""}}, ""progress"": 100, ""thumbnail"": """", ""position"": {""x"": 50, ""y"": 150}}, ""b239ac4b-1967-562f-afd1-cca5105c8844"": {""key"": ""simcore/services/comp/ucdavis-singlecell-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""DBP-Clancy-Rabbit-Single-Cell solver"", ""inputs"": {""Na"": 0, ""Kr"": 0, ""BCL"": 200, ""NBeats"": 5, ""Ligand"": 0, ""cAMKII"": ""WT"", ""initfile"": {""nodeUuid"": ""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b"", ""output"": ""outFile""}}, ""inputAccess"": {""Na"": ""ReadAndWrite"", ""Kr"": ""ReadOnly"", ""BCL"": ""ReadAndWrite"", ""NBeats"": ""ReadOnly"", ""Ligand"": ""Invisible"", ""cAMKII"": ""Invisible""}, ""inputNodes"": [""5ea0e1e8-1421-59d6-b1a5-6e7b2773636b""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 150}}, ""aa8cdc10-eab8-5fdd-9daa-cb03c51d8138"": {""key"": ""simcore/services/dynamic/cc-0d-viewer"", ""version"": ""2.8.0"", ""label"": ""cc-0d-viewer"", ""inputs"": {""vm_1Hz"": {""nodeUuid"": ""b239ac4b-1967-562f-afd1-cca5105c8844"", ""output"": ""out_4""}, ""all_results_1Hz"": {""nodeUuid"": ""b239ac4b-1967-562f-afd1-cca5105c8844"", ""output"": ""out_1""}}, ""inputNodes"": [""b239ac4b-1967-562f-afd1-cca5105c8844""], ""outputNode"": false, ""outputs"": {}, ""progress"": 20, ""thumbnail"": """", ""position"": {""x"": 550, ""y"": 150}}}" +TEMPLATE,template-uuid-5a9e-9580-c53d92d18803,ISAN: MattWard use case,MattWard Solver/PostPro viewer,"",maiz@itis.swiss,2019-06-06 14:33:58.681,2019-06-06 14:34:01.617,"{""4858919c-e0f1-523c-8caa-4ca36c927ca2"": {""key"": ""simcore/services/dynamic/mattward-viewer"", ""version"": ""2.9.0"", ""label"": ""MattWard"", ""inputs"": {}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""progress"": 55, ""thumbnail"": """", ""position"": {""x"": 100, ""y"": 100}}}" +TEMPLATE,template-uuid-5203-915e-1ae8ae0c9991,Sleepers,"5 sleepers interconnected","",maiz@itis.swiss,2019-06-06 14:34:19.631,2019-06-06 14:34:28.647,"{""f447dd35-b098-5f7e-92b0-5a14e84401e9"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 0"", ""inputs"": {""in_2"": 2}, ""inputAccess"": {""in_1"": ""Invisible"", ""in_2"": ""ReadOnly""}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 50, ""y"": 300}}, ""2745b49f-4fc4-5d8a-812c-44dacf56840e"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 1"", ""inputs"": {""in_1"": {""nodeUuid"": ""f447dd35-b098-5f7e-92b0-5a14e84401e9"", ""output"": ""out_1""}, ""in_2"": 2}, ""inputNodes"": [""f447dd35-b098-5f7e-92b0-5a14e84401e9""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 200}}, ""d1448b77-84ea-5706-b741-4073a4454f0d"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 2"", ""inputs"": {""in_1"": {""nodeUuid"": ""2745b49f-4fc4-5d8a-812c-44dacf56840e"", ""output"": ""out_1""}, ""in_2"": {""nodeUuid"": ""2745b49f-4fc4-5d8a-812c-44dacf56840e"", ""output"": ""out_2""}}, ""inputNodes"": [""2745b49f-4fc4-5d8a-812c-44dacf56840e""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 550, ""y"": 200}}, ""ab0911be-162d-5065-a079-a5a0476e3c10"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 3"", ""inputs"": {""in_2"": {""nodeUuid"": ""f447dd35-b098-5f7e-92b0-5a14e84401e9"", ""output"": ""out_2""}}, ""inputNodes"": [""f447dd35-b098-5f7e-92b0-5a14e84401e9""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 420, ""y"": 400}}, ""bd0f303e-92c4-559d-aa19-dc9293e10e4c"": {""key"": ""simcore/services/comp/itis/sleeper"", ""version"": ""1.0.0"", ""label"": ""sleeper 4"", ""inputs"": {""in_1"": {""nodeUuid"": ""d1448b77-84ea-5706-b741-4073a4454f0d"", ""output"": ""out_1""}, ""in_2"": {""nodeUuid"": ""ab0911be-162d-5065-a079-a5a0476e3c10"", ""output"": ""out_2""}}, ""inputNodes"": [""d1448b77-84ea-5706-b741-4073a4454f0d"", ""ab0911be-162d-5065-a079-a5a0476e3c10""], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 800, ""y"": 300}}}" +TEMPLATE,template-uuid-54fd-a9d2-d40fcfb89c5f,Kember use case,Kember Cordiac Model with PostPro Viewer,"",maiz@itis.swiss,2019-06-06 14:34:41.832,2019-06-06 14:34:44.981,"{""32a2b643-42e5-5f7f-af9c-e91b64c4989e"": {""key"": ""simcore/services/comp/kember-cardiac-model"", ""version"": ""1.0.0"", ""label"": ""Kember cardiac model"", ""inputs"": {""dt"": 0.01, ""T"": 1000, ""forcing_factor"": 0}, ""inputNodes"": [], ""outputNode"": false, ""outputs"": {}, ""progress"": 0, ""thumbnail"": """", ""position"": {""x"": 50, ""y"": 100}}, ""df5e39cc-f31e-50b8-8ae7-b2a10131cc8f"": {""key"": ""simcore/services/dynamic/kember-viewer"", ""version"": ""2.9.0"", ""label"": ""kember-viewer"", ""inputs"": {""outputController"": {""nodeUuid"": ""32a2b643-42e5-5f7f-af9c-e91b64c4989e"", ""output"": ""out_1""}}, ""inputNodes"": [""32a2b643-42e5-5f7f-af9c-e91b64c4989e""], ""outputNode"": false, ""outputs"": {}, ""progress"": 10, ""thumbnail"": """", ""position"": {""x"": 300, ""y"": 100}}}" diff --git a/services/web/server/tests/sandbox/create_portal_markdown.py b/services/web/server/tests/sandbox/create_portal_markdown.py deleted file mode 100644 index 2306603ed66..00000000000 --- a/services/web/server/tests/sandbox/create_portal_markdown.py +++ /dev/null @@ -1,61 +0,0 @@ - -""" This script produces a markdown document with links to template studies - - Aims to emulate links - -""" -import datetime -import json -import sys -from pathlib import Path - -from simcore_service_webserver.resources import resources -from simcore_service_webserver.login.utils import get_random_string -from simcore_service_webserver.login.registration import get_invitation_url, URL - -MARKDOWN_FILENAME = "study_access_demo.md" -ISSUE = r"https://github.com/ITISFoundation/osparc-simcore/issues/" - -current_path = Path( sys.argv[0] if __name__ == "__main__" else __file__).resolve() - -HOST_URLS_MAPS = [ - ('localhost', r'http://127.0.0.1:9081'), - ('master', r'http://osparc01.itis.ethz.ch:9081'), - ('staging', r'https://staging.osparc.io'), - ('osparc.io', r'https://osparc.io') -] - - -def write_list(hostname, url, data, fh): - print("## studies available @{}".format(hostname), file=fh) - print("", file=fh) - for prj in data: - print("- [{name}]({base_url}/study/{uuid})".format(base_url=url, **prj), file=fh) - print("", file=fh) - -def main(): - with resources.stream('data/fake-template-projects.isan.json') as fp: - data = json.load(fp) - - with open(MARKDOWN_FILENAME, "wt") as fh: - print("".format(current_path.name, datetime.datetime.utcnow()), file=fh) - print("# THE PORTAL Emulator\n", file=fh) - print("This pages is for testing purposes for issue [#{1}]({0}{1})\n".format(ISSUE, 715), file=fh) - - for hostname, url in HOST_URLS_MAPS: - write_list(hostname, url, data, fh) - - print("---", file=fh) - - print("# INVITATIONS Samples:", file=fh) - codes = [ get_random_string(30) for n in range(5)] - - for hostname, url in HOST_URLS_MAPS: - print("## urls for @{}".format(hostname), file=fh) - for code in codes: - print("- [{code}]({base_url})".format(base_url=get_invitation_url({'code':code, 'action':"INVITATION"}, URL(url)), code=code), file=fh) - - print("", file=fh) - -if __name__ == "__main__": - main()