diff --git a/.dockerignore b/.dockerignore
index 7b4d4ba2..e69de29b 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1 +0,0 @@
-static
diff --git a/.gitignore b/.gitignore
index 7094d033..f512932c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -113,3 +113,5 @@ venv.bak/
static/org.geppetto.frontend
pygeppetto_server/
+tags
+pygeppetto-django
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..5d3ee3fe
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,92 @@
+install: create-db install-frontend install-backend
+ @echo "==========================="
+ @echo "= Finished ="
+ @echo "==========================="
+
+install-frontend:
+ @echo "==========================="
+ @echo "= Install frontend ="
+ @echo "==========================="
+ @./service/scripts/install-frontend.sh
+
+install-backend:
+ @echo "==========================="
+ @echo "= Install backend ="
+ @echo "==========================="
+ @./service/scripts/install-backend.sh
+
+install-backend-with-env:
+ @echo "==========================="
+ @echo "= Install backend ="
+ @echo "==========================="
+ @./service/scripts/install-backend.sh -v
+
+create-db:
+ @echo "==========================="
+ @echo "= Create database ="
+ @echo "==========================="
+ @./service/scripts/db-create-psql.sh
+
+run-dev: migrate generate-tags
+ make run-django & \
+ make run-frontend
+
+django-migrate: make-migrations migrate
+
+make-migrations:
+ ./manage.py makemigrations
+
+migrate:
+ ./manage.py migrate
+
+run-django:
+ ./manage.py runserver
+
+run-frontend:
+ cd static/org.geppetto.frontend/src/main/webapp/; npm run build-dev-noTest:watch;
+
+lint: flake8-lint isort-lint yapf-lint
+
+format: yapf-format isort-format
+
+flake8-lint:
+ flake8 .
+
+isort-lint:
+ isort --check-only --diff --recursive .
+
+isort-format:
+ isort --recursive .
+
+yapf-format:
+ yapf -i -r --style .style.yapf -p -e "*/migrations/*.py" -e "env" -e "*/settings.py" .
+
+yapf-lint:
+ yapf -d -r --style .style.yapf -e "*/migrations/*.py" -e "env" -e "*/settings.py" .
+
+generate-tags:
+ ctags -R --exclude=.git --exclude=node_modules --exclude=dist --exclude=env .
+
+build-scidash:
+ @echo "==========================="
+ @echo "= Build scidash ="
+ @echo "==========================="
+ @./service/scripts/build-image-scidash.sh
+
+build-scidash-db:
+ @echo "==========================="
+ @echo "= Build scidash db ="
+ @echo "==========================="
+ @./service/scripts/build-image-db.sh
+
+push-scidash:
+ @echo "==========================="
+ @echo "= Push scidash image ="
+ @echo "==========================="
+ @./service/scripts/push-image-scidash.sh
+
+push-scidash-db:
+ @echo "==========================="
+ @echo "= Push scidash db image ="
+ @echo "==========================="
+ @./service/scripts/push-image-scidash-db.sh
diff --git a/README.md b/README.md
index 7c2c5045..24cdc94c 100644
--- a/README.md
+++ b/README.md
@@ -13,10 +13,9 @@ SciDash is a geppetto / django-based client-server web application.
## Installation
+We recommend you to use a virtual environment for the installation, so you can keep all the dependencies within that environment.
+
**Dependencies**
-```
-pip install pygeppetto-django
-```
*Install Redis server (for the sockets communication)*
```
@@ -26,82 +25,37 @@ For OS X:
brew install redis
```
+*Install PostgreSQL server*
+- [instructions](https://www.postgresql.org/download/linux/ubuntu/) for Ubuntu
+- [application](https://postgresapp.com/) for MacOS
+
**Install SciDash**
```
git clone https://github.com/MetaCell/scidash
cd scidash
-pip install -r requirements.txt
-mkdir static
-cd static
-git clone https://github.com/openworm/org.geppetto.frontend
-cd org.geppetto.frontend/src/main/webapp
-npm install
-npm run build-dev-noTest
-```
-Optional for development to enable dynamic refresh of client code when editing html/js/css:
+make install
```
-npm run build-dev-noTest:watch
-```
-
-Also you should create an .env file in the project root, an example can be found in the folder: deploy/dotenv.
-
-**Install SciDash Geppetto Extension**
-Clone the Geppetto SciDash extension into the extensions folder
-```
-cd org.geppetto.frontend/src/main/webapp/extensions
-git clone https://github.com/MetaCell/geppetto-scidash.git
-```
+Also you should create an .env file in the project root, an example can be found in the folder: service/dotenv.
-Then edit [GeppettoConfiguration.json](https://github.com/openworm/org.geppetto.frontend/blob/master/src/main/webapp/GeppettoConfiguration.json) to look like this:
-```
-{
- "_README": "http://docs.geppetto.org/en/latest/build.html",
- "contextPath": "org.geppetto.frontend",
- "useSsl": false,
- "embedded": false,
- "embedderURL": ["/"],
- "rootRedirect": "",
- "noTest": false,
- "extensions": {
- "geppetto-default/ComponentsInitialization": false,
- "geppetto-scidash/ComponentsInitialization": true
- },
- "themes": {
- "geppetto-default/colors": false,
- "geppetto-scidash/styles/colors": true
- },
- "properties": {
- "title": "SciDash",
- "description": "SciDash is a project that enables the reproducible execution and visualization of data-driven unit test for assessing model quality.",
- "type": "website",
- "url": "http://scidash.github.io/",
- "icon": "http://scidash.github.io/assets/icons/favicon-32x32.png",
- "image": "http://scidash.github.io/assets/scidash-text.png"
- }
-}
-```
-
-**Install Database**
-
-1. Install PostgreSQL server: [instructions](https://www.postgresql.org/download/linux/ubuntu/) for Ubuntu, [application](https://postgresapp.com/) for MacOS
-2. Run:
+**Configure Database**
+Run:
```
# navigate to scidash root folder
-cd deploy/scripts
+cd service/scripts
# impersonate postgres user (may not be necessary depending on your access rights)
su postgres
# run db creation script located in the scidash folder
./db_create_psql.sh
# to return to your shell user only necessary if you used su
logout
-./manage.py migrate
+make django-migrate
```
## Start the server
```
-python manage.py runserver
+make run-dev
```
Go to http://localhost:8000/ and enjoy!
@@ -109,7 +63,7 @@ Go to http://localhost:8000/ and enjoy!
## Deployment
-For scidash test deployment there are configurations in deploy folder `$PROJECT_ROOT/deploy/kubernetes/scidash`
+For scidash test deployment there are configurations in deploy folder `$PROJECT_ROOT/service/kubernetes/scidash`
What is what:
@@ -230,10 +184,3 @@ Also codefresh repository requires especial secret for pulling images:
imagePullSecrets:
- name: codefresh-generated-r.cfcr.io-cfcr-scidash-testing
```
-
-You can create it here:
-
-
-
-
-
diff --git a/deploy/build-all.sh b/deploy/build-all.sh
deleted file mode 100755
index 5275654a..00000000
--- a/deploy/build-all.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-echo "Input db image version ('latest' by default): "
-
-read dbtag
-
-echo "Input scidash image version ('latest' by default): "
-
-read scidashtag
-
-./deploy/scripts/build-image-db.sh $dbtag
-./deploy/scripts/build-image-scidash.sh $scidashtag
diff --git a/deploy/docker/Dockerfile-postgres b/deploy/docker/Dockerfile-postgres
deleted file mode 100644
index 905e8048..00000000
--- a/deploy/docker/Dockerfile-postgres
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM postgres:9.4
-
-ADD ./deploy/scripts/db-create-psql.sh /docker-entrypoint-initdb.d/db-create-psql.sh
diff --git a/deploy/docker/Dockerfile-scidash b/deploy/docker/Dockerfile-scidash
deleted file mode 100644
index bcfa23af..00000000
--- a/deploy/docker/Dockerfile-scidash
+++ /dev/null
@@ -1,68 +0,0 @@
-FROM python:3.6
-
-# BUILD VARIABLES
-
-ARG ROOT=/
-ARG APP_DIR=/app
-ARG GEPPETTO_REPO='https://github.com/openworm/org.geppetto.frontend.git -b griddle-update'
-ARG SCIDASH_EXTENSION_REPO='https://github.com/MetaCell/geppetto-scidash.git -b refactoring'
-ARG VENV_PATH=/venv
-ARG DOTENV_FILE=env-docker
-ARG STATIC_DIR=$APP_DIR/static
-ARG GEPPETTO_DIR=$STATIC_DIR/org.geppetto.frontend/src/main/webapp
-ARG EXTENSION_DIR=$GEPPETTO_DIR/extensions
-
-WORKDIR $ROOT
-
-# PYTHON INSTALL
-RUN pip install virtualenv
-RUN virtualenv -p python3 $VENV_PATH
-ENV PATH $VENV_PATH/bin:$PATH
-ENV PYTHONUNBUFFERED 1
-
-# CREATING PROJECT FOLDERS
-
-RUN mkdir $APP_DIR
-
-#COPYING PROJECT
-
-WORKDIR $APP_DIR
-ADD . $APP_DIR
-
-# INSTALLING REQUIREMENTS
-
-RUN pip install -r $APP_DIR/requirements.txt
-RUN apt-get install curl
-RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
-RUN apt-get update && apt-get install nodejs
-
-WORKDIR /tmp
-
-RUN git clone https://github.com/MetaCell/pygeppetto-django.git -b development-roman
-WORKDIR pygeppetto-django
-RUN pip install -e .
-
-# CLONING FRONTEND
-
-WORKDIR $APP_DIR
-RUN mkdir $STATIC_DIR
-WORKDIR $STATIC_DIR
-
-RUN git clone $GEPPETTO_REPO
-WORKDIR $EXTENSION_DIR
-RUN git clone $SCIDASH_EXTENSION_REPO
-
-RUN git branch
-RUN git log
-
-WORKDIR $GEPPETTO_DIR
-COPY ./deploy/geppetto/GeppettoConfiguration.json $GEPPETTO_DIR/GeppettoConfiguration.json
-RUN npm install
-RUN npm run build-dev-noTest
-
-
-WORKDIR $APP_DIR
-COPY ./deploy/dotenv/env-docker $APP_DIR/.env
-
-
-CMD ./deploy/scripts/run.sh
diff --git a/deploy/push-all.sh b/deploy/push-all.sh
deleted file mode 100755
index 4ea5b837..00000000
--- a/deploy/push-all.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-echo "Input db image version ('latest' by default): "
-
-read dbtag
-
-echo "Input scidash image version ('latest' by default): "
-
-read scidashtag
-
-if [ -z "$1" ]
-then
- docker push metacell/scidash-db
- docker push metacell/scidash
-else
- docker push metacell/scidash-db:$dbtag
- docker push metacell/scidash:$scidashtag
-fi
-
diff --git a/deploy/scripts/build-image-scidash.sh b/deploy/scripts/build-image-scidash.sh
deleted file mode 100755
index 0274b576..00000000
--- a/deploy/scripts/build-image-scidash.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-if [ -z "$1" ]
-then
- version="latest"
-else
- version=$1
-fi
-
-tag="metacell/scidash:$version"
-directory="."
-dockerfile="./deploy/docker/Dockerfile-scidash"
-
-docker build -t $tag -f $dockerfile $directory
diff --git a/deploy/scripts/run.sh b/deploy/scripts/run.sh
deleted file mode 100755
index 0e19789b..00000000
--- a/deploy/scripts/run.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-python manage.py migrate
-cat create_superuser.py | ./manage.py shell
-python manage.py runserver 0.0.0.0:8000
diff --git a/docker-compose.yml b/docker-compose.yml
index be036fc4..d1e9b793 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -8,7 +8,7 @@ services:
ports:
- 5432:5432
scidash:
- image: metacell/scidash:3.0.0
+ image: metacell/scidash:3.1.1
ports:
- 80:8000
depends_on:
diff --git a/dump.rdb b/dump.rdb
deleted file mode 100644
index a8cd49eb..00000000
Binary files a/dump.rdb and /dev/null differ
diff --git a/manage.py b/manage.py
index 6cdcbfe7..7a7bffb5 100755
--- a/manage.py
+++ b/manage.py
@@ -3,7 +3,7 @@
import sys
if __name__ == "__main__":
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "scidash.settings")
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "scidash.main.settings")
from django.core.management import execute_from_command_line
diff --git a/general/__init__.py b/scidash/general/__init__.py
similarity index 100%
rename from general/__init__.py
rename to scidash/general/__init__.py
diff --git a/general/admin.py b/scidash/general/admin.py
similarity index 76%
rename from general/admin.py
rename to scidash/general/admin.py
index 8fc41a42..086dd8c4 100644
--- a/general/admin.py
+++ b/scidash/general/admin.py
@@ -1,7 +1,7 @@
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
-from general.models import ScidashUser
+from scidash.general.models import ScidashUser
# Register your models here.
diff --git a/general/apps.py b/scidash/general/apps.py
similarity index 100%
rename from general/apps.py
rename to scidash/general/apps.py
diff --git a/general/migrations/0001_initial.py b/scidash/general/migrations/0001_initial.py
similarity index 100%
rename from general/migrations/0001_initial.py
rename to scidash/general/migrations/0001_initial.py
diff --git a/general/migrations/0002_auto_20171206_1554.py b/scidash/general/migrations/0002_auto_20171206_1554.py
similarity index 100%
rename from general/migrations/0002_auto_20171206_1554.py
rename to scidash/general/migrations/0002_auto_20171206_1554.py
diff --git a/general/migrations/0003_auto_20180124_2257.py b/scidash/general/migrations/0003_auto_20180124_2257.py
similarity index 100%
rename from general/migrations/0003_auto_20180124_2257.py
rename to scidash/general/migrations/0003_auto_20180124_2257.py
diff --git a/general/migrations/0004_auto_20180215_1313.py b/scidash/general/migrations/0004_auto_20180215_1313.py
similarity index 100%
rename from general/migrations/0004_auto_20180215_1313.py
rename to scidash/general/migrations/0004_auto_20180215_1313.py
diff --git a/general/migrations/0005_auto_20180403_1533.py b/scidash/general/migrations/0005_auto_20180403_1533.py
similarity index 100%
rename from general/migrations/0005_auto_20180403_1533.py
rename to scidash/general/migrations/0005_auto_20180403_1533.py
diff --git a/general/migrations/0005_auto_20180404_1607.py b/scidash/general/migrations/0005_auto_20180404_1607.py
similarity index 100%
rename from general/migrations/0005_auto_20180404_1607.py
rename to scidash/general/migrations/0005_auto_20180404_1607.py
diff --git a/general/migrations/0006_merge_20180404_1612.py b/scidash/general/migrations/0006_merge_20180404_1612.py
similarity index 100%
rename from general/migrations/0006_merge_20180404_1612.py
rename to scidash/general/migrations/0006_merge_20180404_1612.py
diff --git a/general/migrations/__init__.py b/scidash/general/migrations/__init__.py
similarity index 100%
rename from general/migrations/__init__.py
rename to scidash/general/migrations/__init__.py
diff --git a/general/mixins.py b/scidash/general/mixins.py
similarity index 100%
rename from general/mixins.py
rename to scidash/general/mixins.py
diff --git a/general/models.py b/scidash/general/models.py
similarity index 100%
rename from general/models.py
rename to scidash/general/models.py
diff --git a/general/serializers.py b/scidash/general/serializers.py
similarity index 78%
rename from general/serializers.py
rename to scidash/general/serializers.py
index 513a6e94..d60ad525 100644
--- a/general/serializers.py
+++ b/scidash/general/serializers.py
@@ -1,6 +1,6 @@
from rest_framework import serializers
-from general.models import ScidashUser
+from scidash.general.models import ScidashUser
class ScidashUserSerializer(serializers.ModelSerializer):
diff --git a/general/tests.py b/scidash/general/tests.py
similarity index 100%
rename from general/tests.py
rename to scidash/general/tests.py
diff --git a/general/urls.py b/scidash/general/urls.py
similarity index 72%
rename from general/urls.py
rename to scidash/general/urls.py
index 8ec4daf5..2db35941 100644
--- a/general/urls.py
+++ b/scidash/general/urls.py
@@ -1,5 +1,5 @@
from django.conf.urls import url
-from general.views import FileUploadView
+from scidash.general.views import FileUploadView
urlpatterns = [
url(r'^upload/(?P[^/]+)$', FileUploadView.as_view())
diff --git a/general/views.py b/scidash/general/views.py
similarity index 94%
rename from general/views.py
rename to scidash/general/views.py
index dfbcbfa8..b6bf25ad 100644
--- a/general/views.py
+++ b/scidash/general/views.py
@@ -5,7 +5,7 @@
from rest_framework.parsers import MultiPartParser
from rest_framework.response import Response
-from sciunittests.serializers import ScoreInstanceSerializer
+from scidash.sciunittests.serializers import ScoreInstanceSerializer
class FileUploadView(APIView):
diff --git a/scidash/api/__init__.py b/scidash/main/__init__.py
similarity index 100%
rename from scidash/api/__init__.py
rename to scidash/main/__init__.py
diff --git a/sciunitmodels/__init__.py b/scidash/main/api/__init__.py
similarity index 100%
rename from sciunitmodels/__init__.py
rename to scidash/main/api/__init__.py
diff --git a/scidash/api/views.py b/scidash/main/api/views.py
similarity index 100%
rename from scidash/api/views.py
rename to scidash/main/api/views.py
diff --git a/scidash/routing.py b/scidash/main/routing.py
similarity index 100%
rename from scidash/routing.py
rename to scidash/main/routing.py
diff --git a/scidash/settings.py b/scidash/main/settings.py
similarity index 91%
rename from scidash/settings.py
rename to scidash/main/settings.py
index 2c947464..3c7be33e 100644
--- a/scidash/settings.py
+++ b/scidash/main/settings.py
@@ -15,10 +15,15 @@
import datetime
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+BASE_DIR = os.path.dirname(
+ os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+)
-dotenv.read_dotenv(os.path.join(os.path.dirname(os.path.dirname(__file__)),
- '.env'))
+dotenv.read_dotenv(
+ os.path.join(
+ os.path.dirname(os.path.dirname(os.path.dirname(__file__))), '.env'
+ )
+)
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/
@@ -55,9 +60,9 @@
]
SCIDASH_APPS = [
- 'sciunitmodels.apps.SciunitmodelsConfig',
- 'sciunittests.apps.SciunittestsConfig',
- 'general.apps.GeneralConfig',
+ 'scidash.sciunitmodels',
+ 'scidash.sciunittests',
+ 'scidash.general',
]
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + SCIDASH_APPS
@@ -84,7 +89,7 @@
]
}
-ROOT_URLCONF = 'scidash.urls'
+ROOT_URLCONF = 'scidash.main.urls'
TEMPLATES = [
{
@@ -102,7 +107,7 @@
},
]
-ASGI_APPLICATION = 'scidash.routing.application'
+ASGI_APPLICATION = 'scidash.main.routing.application'
# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
@@ -170,4 +175,4 @@
GEPPETTO_SERVLET_URL = 'ws://localhost:8080/org.geppetto.frontend/GeppettoServlet'
GEPPETTO_BASE_URL = 'http://localhost:8080/org.geppetto.frontend/geppetto'
-ACCEPTABLE_SCORE_INSTANCES_AMOUNT = 30
+ACCEPTABLE_SCORE_INSTANCES_AMOUNT = 50
diff --git a/scidash/urls.py b/scidash/main/urls.py
similarity index 90%
rename from scidash/urls.py
rename to scidash/main/urls.py
index 0f8b550b..66d051ac 100644
--- a/scidash/urls.py
+++ b/scidash/main/urls.py
@@ -16,9 +16,9 @@
"""
from django.conf.urls import include, url
from django.contrib import admin
-from sciunitmodels.api import views as models_views
-from sciunittests.api import views as tests_views
-from sciunittests.views import DateRangeView
+from scidash.sciunitmodels.api import views as models_views
+from scidash.sciunittests.api import views as tests_views
+from scidash.sciunittests.views import DateRangeView
from rest_framework.routers import DefaultRouter
from rest_framework_jwt.views import obtain_jwt_token
@@ -51,7 +51,7 @@
url(r'^admin/', admin.site.urls),
url(r'^api/login/', obtain_jwt_token),
url(r'^', include('pygeppetto_server.urls')),
- url(r'^data/', include('general.urls')),
+ url(r'^data/', include('scidash.general.urls')),
url(r'^api/date-range', DateRangeView.as_view(), name='date-range-view'),
url(r'^api/', include(router.urls))
]
diff --git a/scidash/wsgi.py b/scidash/main/wsgi.py
similarity index 100%
rename from scidash/wsgi.py
rename to scidash/main/wsgi.py
diff --git a/sciunitmodels/api/__init__.py b/scidash/sciunitmodels/__init__.py
similarity index 100%
rename from sciunitmodels/api/__init__.py
rename to scidash/sciunitmodels/__init__.py
diff --git a/sciunitmodels/admin.py b/scidash/sciunitmodels/admin.py
similarity index 67%
rename from sciunitmodels/admin.py
rename to scidash/sciunitmodels/admin.py
index de5afc02..aa98a5e0 100644
--- a/sciunitmodels/admin.py
+++ b/scidash/sciunitmodels/admin.py
@@ -1,5 +1,5 @@
from django.contrib import admin
-from sciunitmodels.models import ModelClass, ModelInstance, Capability
+from scidash.sciunitmodels.models import ModelClass, ModelInstance, Capability
# Register your models here.
diff --git a/sciunitmodels/migrations/__init__.py b/scidash/sciunitmodels/api/__init__.py
similarity index 100%
rename from sciunitmodels/migrations/__init__.py
rename to scidash/sciunitmodels/api/__init__.py
diff --git a/sciunitmodels/api/views.py b/scidash/sciunitmodels/api/views.py
similarity index 82%
rename from sciunitmodels/api/views.py
rename to scidash/sciunitmodels/api/views.py
index d101af23..fb753484 100644
--- a/sciunitmodels/api/views.py
+++ b/scidash/sciunitmodels/api/views.py
@@ -1,10 +1,10 @@
from rest_framework import viewsets, permissions
-from sciunitmodels.serializers import CapabilitySerializer, \
+from scidash.sciunitmodels.serializers import CapabilitySerializer, \
ModelClassSerializer, \
ModelInstanceSerializer
-from sciunitmodels.models import Capability, ModelClass, ModelInstance
+from scidash.sciunitmodels.models import Capability, ModelClass, ModelInstance
class CapabilityViewSet(viewsets.ReadOnlyModelViewSet):
diff --git a/sciunitmodels/apps.py b/scidash/sciunitmodels/apps.py
similarity index 100%
rename from sciunitmodels/apps.py
rename to scidash/sciunitmodels/apps.py
diff --git a/sciunitmodels/migrations/0001_initial.py b/scidash/sciunitmodels/migrations/0001_initial.py
similarity index 100%
rename from sciunitmodels/migrations/0001_initial.py
rename to scidash/sciunitmodels/migrations/0001_initial.py
diff --git a/sciunitmodels/migrations/0002_auto_20171226_1339.py b/scidash/sciunitmodels/migrations/0002_auto_20171226_1339.py
similarity index 100%
rename from sciunitmodels/migrations/0002_auto_20171226_1339.py
rename to scidash/sciunitmodels/migrations/0002_auto_20171226_1339.py
diff --git a/sciunitmodels/migrations/0003_auto_20180227_1301.py b/scidash/sciunitmodels/migrations/0003_auto_20180227_1301.py
similarity index 100%
rename from sciunitmodels/migrations/0003_auto_20180227_1301.py
rename to scidash/sciunitmodels/migrations/0003_auto_20180227_1301.py
diff --git a/sciunitmodels/migrations/0004_auto_20180301_1540.py b/scidash/sciunitmodels/migrations/0004_auto_20180301_1540.py
similarity index 100%
rename from sciunitmodels/migrations/0004_auto_20180301_1540.py
rename to scidash/sciunitmodels/migrations/0004_auto_20180301_1540.py
diff --git a/sciunitmodels/migrations/0005_modelinstance_backend.py b/scidash/sciunitmodels/migrations/0005_modelinstance_backend.py
similarity index 100%
rename from sciunitmodels/migrations/0005_modelinstance_backend.py
rename to scidash/sciunitmodels/migrations/0005_modelinstance_backend.py
diff --git a/sciunitmodels/migrations/0006_modelinstance_hash_id.py b/scidash/sciunitmodels/migrations/0006_modelinstance_hash_id.py
similarity index 100%
rename from sciunitmodels/migrations/0006_modelinstance_hash_id.py
rename to scidash/sciunitmodels/migrations/0006_modelinstance_hash_id.py
diff --git a/sciunitmodels/migrations/0007_auto_20180525_1008.py b/scidash/sciunitmodels/migrations/0007_auto_20180525_1008.py
similarity index 100%
rename from sciunitmodels/migrations/0007_auto_20180525_1008.py
rename to scidash/sciunitmodels/migrations/0007_auto_20180525_1008.py
diff --git a/sciunittests/__init__.py b/scidash/sciunitmodels/migrations/__init__.py
similarity index 100%
rename from sciunittests/__init__.py
rename to scidash/sciunitmodels/migrations/__init__.py
diff --git a/sciunitmodels/models.py b/scidash/sciunitmodels/models.py
similarity index 100%
rename from sciunitmodels/models.py
rename to scidash/sciunitmodels/models.py
diff --git a/sciunitmodels/serializers.py b/scidash/sciunitmodels/serializers.py
similarity index 79%
rename from sciunitmodels/serializers.py
rename to scidash/sciunitmodels/serializers.py
index c07924d1..1f69cb51 100644
--- a/sciunitmodels/serializers.py
+++ b/scidash/sciunitmodels/serializers.py
@@ -3,8 +3,8 @@
from rest_framework_cache.serializers import CachedSerializerMixin
from rest_framework_cache.registry import cache_registry
-from sciunitmodels.models import Capability, ModelClass, ModelInstance
-from general.mixins import GetByKeyOrCreateMixin
+from scidash.sciunitmodels.models import Capability, ModelClass, ModelInstance
+from scidash.general.mixins import GetByKeyOrCreateMixin
class CapabilitySerializer(GetByKeyOrCreateMixin,
@@ -46,6 +46,6 @@ class Meta:
model = ModelInstance
fields = '__all__'
-# cache_registry.register(CapabilitySerializer)
-# cache_registry.register(ModelClassSerializer)
-# cache_registry.register(ModelInstanceSerializer)
+cache_registry.register(CapabilitySerializer)
+cache_registry.register(ModelClassSerializer)
+cache_registry.register(ModelInstanceSerializer)
diff --git a/sciunittests/api/__init__.py b/scidash/sciunitmodels/tests/__init__.py
similarity index 100%
rename from sciunittests/api/__init__.py
rename to scidash/sciunitmodels/tests/__init__.py
diff --git a/test_data/score_object.json b/scidash/sciunitmodels/tests/test_data/score_object.json
similarity index 100%
rename from test_data/score_object.json
rename to scidash/sciunitmodels/tests/test_data/score_object.json
diff --git a/sciunitmodels/tests.py b/scidash/sciunitmodels/tests/test_sciunit_models.py
similarity index 95%
rename from sciunitmodels/tests.py
rename to scidash/sciunitmodels/tests/test_sciunit_models.py
index 64b70412..3d117f9a 100644
--- a/sciunitmodels/tests.py
+++ b/scidash/sciunitmodels/tests/test_sciunit_models.py
@@ -3,12 +3,12 @@
from django.test import TestCase, Client, RequestFactory
from django.urls import reverse
-from general.models import ScidashUser
+from scidash.general.models import ScidashUser
-from sciunittests.serializers import ScoreInstanceSerializer
-from sciunitmodels.serializers import ModelClassSerializer
+from scidash.sciunittests.serializers import ScoreInstanceSerializer
+from scidash.sciunitmodels.serializers import ModelClassSerializer
-SAMPLE_FILE = os.path.join(os.path.dirname(os.path.dirname(__file__)),
+SAMPLE_FILE = os.path.join(os.path.dirname(__file__),
'test_data/score_object.json')
@@ -152,3 +152,4 @@ def test_is_model_class_match_the_same_object(self):
parsed_response = response.json()
self.assertEqual(len(parsed_response), 1)
+
diff --git a/sciunitmodels/views.py b/scidash/sciunitmodels/views.py
similarity index 100%
rename from sciunitmodels/views.py
rename to scidash/sciunitmodels/views.py
diff --git a/sciunittests/migrations/__init__.py b/scidash/sciunittests/__init__.py
similarity index 100%
rename from sciunittests/migrations/__init__.py
rename to scidash/sciunittests/__init__.py
diff --git a/sciunittests/admin.py b/scidash/sciunittests/admin.py
similarity index 85%
rename from sciunittests/admin.py
rename to scidash/sciunittests/admin.py
index 9bc24319..3b114ec8 100644
--- a/sciunittests/admin.py
+++ b/scidash/sciunittests/admin.py
@@ -1,6 +1,6 @@
from django.contrib import admin
-from sciunittests.models import ScoreInstance, TestInstance, TestClass, TestSuite
+from scidash.sciunittests.models import ScoreInstance, TestInstance, TestClass, TestSuite
# Register your models here.
diff --git a/scidash/sciunittests/api/__init__.py b/scidash/sciunittests/api/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/sciunittests/api/views.py b/scidash/sciunittests/api/views.py
similarity index 88%
rename from sciunittests/api/views.py
rename to scidash/sciunittests/api/views.py
index 976baf43..4c7be806 100644
--- a/sciunittests/api/views.py
+++ b/scidash/sciunittests/api/views.py
@@ -1,14 +1,14 @@
from rest_framework import viewsets, permissions
-from sciunittests.serializers import ScoreInstanceSerializer, \
+from scidash.sciunittests.serializers import ScoreInstanceSerializer, \
TestInstanceSerializer, \
TestSuiteSerializer, TestClassSerializer, \
ScoreClassSerializer
-from sciunittests.models import ScoreInstance, \
+from scidash.sciunittests.models import ScoreInstance, \
TestInstance, TestSuite, TestClass, \
ScoreClass
-from sciunittests.filters import ScoreFilter, TestSuiteFilter, \
+from scidash.sciunittests.filters import ScoreFilter, TestSuiteFilter, \
TestInstanceFilter
diff --git a/sciunittests/apps.py b/scidash/sciunittests/apps.py
similarity index 100%
rename from sciunittests/apps.py
rename to scidash/sciunittests/apps.py
diff --git a/sciunittests/filters.py b/scidash/sciunittests/filters.py
similarity index 97%
rename from sciunittests/filters.py
rename to scidash/sciunittests/filters.py
index 1239c1fc..1c91e314 100644
--- a/sciunittests/filters.py
+++ b/scidash/sciunittests/filters.py
@@ -1,7 +1,7 @@
from django.db.models import Count, Subquery, Q
from django_filters import rest_framework as filters
-from sciunittests.models import ScoreInstance, TestSuite, TestInstance
+from scidash.sciunittests.models import ScoreInstance, TestSuite, TestInstance
class ScoreFilter(filters.FilterSet):
diff --git a/sciunittests/migrations/0001_initial.py b/scidash/sciunittests/migrations/0001_initial.py
similarity index 100%
rename from sciunittests/migrations/0001_initial.py
rename to scidash/sciunittests/migrations/0001_initial.py
diff --git a/sciunittests/migrations/0002_auto_20171226_1339.py b/scidash/sciunittests/migrations/0002_auto_20171226_1339.py
similarity index 100%
rename from sciunittests/migrations/0002_auto_20171226_1339.py
rename to scidash/sciunittests/migrations/0002_auto_20171226_1339.py
diff --git a/sciunittests/migrations/0003_auto_20171226_1757.py b/scidash/sciunittests/migrations/0003_auto_20171226_1757.py
similarity index 100%
rename from sciunittests/migrations/0003_auto_20171226_1757.py
rename to scidash/sciunittests/migrations/0003_auto_20171226_1757.py
diff --git a/sciunittests/migrations/0003_auto_20180115_1232.py b/scidash/sciunittests/migrations/0003_auto_20180115_1232.py
similarity index 100%
rename from sciunittests/migrations/0003_auto_20180115_1232.py
rename to scidash/sciunittests/migrations/0003_auto_20180115_1232.py
diff --git a/sciunittests/migrations/0004_auto_20180118_1513.py b/scidash/sciunittests/migrations/0004_auto_20180118_1513.py
similarity index 100%
rename from sciunittests/migrations/0004_auto_20180118_1513.py
rename to scidash/sciunittests/migrations/0004_auto_20180118_1513.py
diff --git a/sciunittests/migrations/0004_merge_20180119_1445.py b/scidash/sciunittests/migrations/0004_merge_20180119_1445.py
similarity index 100%
rename from sciunittests/migrations/0004_merge_20180119_1445.py
rename to scidash/sciunittests/migrations/0004_merge_20180119_1445.py
diff --git a/sciunittests/migrations/0005_auto_20180118_1516.py b/scidash/sciunittests/migrations/0005_auto_20180118_1516.py
similarity index 100%
rename from sciunittests/migrations/0005_auto_20180118_1516.py
rename to scidash/sciunittests/migrations/0005_auto_20180118_1516.py
diff --git a/sciunittests/migrations/0006_auto_20180123_1151.py b/scidash/sciunittests/migrations/0006_auto_20180123_1151.py
similarity index 100%
rename from sciunittests/migrations/0006_auto_20180123_1151.py
rename to scidash/sciunittests/migrations/0006_auto_20180123_1151.py
diff --git a/sciunittests/migrations/0006_merge_20180119_1504.py b/scidash/sciunittests/migrations/0006_merge_20180119_1504.py
similarity index 100%
rename from sciunittests/migrations/0006_merge_20180119_1504.py
rename to scidash/sciunittests/migrations/0006_merge_20180119_1504.py
diff --git a/sciunittests/migrations/0007_merge_20180123_1527.py b/scidash/sciunittests/migrations/0007_merge_20180123_1527.py
similarity index 100%
rename from sciunittests/migrations/0007_merge_20180123_1527.py
rename to scidash/sciunittests/migrations/0007_merge_20180123_1527.py
diff --git a/sciunittests/migrations/0007_merge_20180124_2257.py b/scidash/sciunittests/migrations/0007_merge_20180124_2257.py
similarity index 100%
rename from sciunittests/migrations/0007_merge_20180124_2257.py
rename to scidash/sciunittests/migrations/0007_merge_20180124_2257.py
diff --git a/sciunittests/migrations/0008_auto_20180124_2257.py b/scidash/sciunittests/migrations/0008_auto_20180124_2257.py
similarity index 100%
rename from sciunittests/migrations/0008_auto_20180124_2257.py
rename to scidash/sciunittests/migrations/0008_auto_20180124_2257.py
diff --git a/sciunittests/migrations/0009_merge_20180205_1233.py b/scidash/sciunittests/migrations/0009_merge_20180205_1233.py
similarity index 100%
rename from sciunittests/migrations/0009_merge_20180205_1233.py
rename to scidash/sciunittests/migrations/0009_merge_20180205_1233.py
diff --git a/sciunittests/migrations/0009_testsuite_hash.py b/scidash/sciunittests/migrations/0009_testsuite_hash.py
similarity index 100%
rename from sciunittests/migrations/0009_testsuite_hash.py
rename to scidash/sciunittests/migrations/0009_testsuite_hash.py
diff --git a/sciunittests/migrations/0010_auto_20180302_0923.py b/scidash/sciunittests/migrations/0010_auto_20180302_0923.py
similarity index 100%
rename from sciunittests/migrations/0010_auto_20180302_0923.py
rename to scidash/sciunittests/migrations/0010_auto_20180302_0923.py
diff --git a/sciunittests/migrations/0011_auto_20180309_1229.py b/scidash/sciunittests/migrations/0011_auto_20180309_1229.py
similarity index 100%
rename from sciunittests/migrations/0011_auto_20180309_1229.py
rename to scidash/sciunittests/migrations/0011_auto_20180309_1229.py
diff --git a/sciunittests/migrations/0012_merge_20180309_1254.py b/scidash/sciunittests/migrations/0012_merge_20180309_1254.py
similarity index 100%
rename from sciunittests/migrations/0012_merge_20180309_1254.py
rename to scidash/sciunittests/migrations/0012_merge_20180309_1254.py
diff --git a/sciunittests/migrations/0013_auto_20180403_1533.py b/scidash/sciunittests/migrations/0013_auto_20180403_1533.py
similarity index 100%
rename from sciunittests/migrations/0013_auto_20180403_1533.py
rename to scidash/sciunittests/migrations/0013_auto_20180403_1533.py
diff --git a/sciunittests/migrations/0013_auto_20180404_1607.py b/scidash/sciunittests/migrations/0013_auto_20180404_1607.py
similarity index 100%
rename from sciunittests/migrations/0013_auto_20180404_1607.py
rename to scidash/sciunittests/migrations/0013_auto_20180404_1607.py
diff --git a/sciunittests/migrations/0014_merge_20180404_1613.py b/scidash/sciunittests/migrations/0014_merge_20180404_1613.py
similarity index 100%
rename from sciunittests/migrations/0014_merge_20180404_1613.py
rename to scidash/sciunittests/migrations/0014_merge_20180404_1613.py
diff --git a/sciunittests/migrations/0015_auto_20180416_1202.py b/scidash/sciunittests/migrations/0015_auto_20180416_1202.py
similarity index 100%
rename from sciunittests/migrations/0015_auto_20180416_1202.py
rename to scidash/sciunittests/migrations/0015_auto_20180416_1202.py
diff --git a/sciunittests/migrations/0016_scoreinstance_score_class.py b/scidash/sciunittests/migrations/0016_scoreinstance_score_class.py
similarity index 100%
rename from sciunittests/migrations/0016_scoreinstance_score_class.py
rename to scidash/sciunittests/migrations/0016_scoreinstance_score_class.py
diff --git a/sciunittests/migrations/0017_auto_20180425_1811.py b/scidash/sciunittests/migrations/0017_auto_20180425_1811.py
similarity index 100%
rename from sciunittests/migrations/0017_auto_20180425_1811.py
rename to scidash/sciunittests/migrations/0017_auto_20180425_1811.py
diff --git a/sciunittests/migrations/0018_testinstance_hash_id.py b/scidash/sciunittests/migrations/0018_testinstance_hash_id.py
similarity index 100%
rename from sciunittests/migrations/0018_testinstance_hash_id.py
rename to scidash/sciunittests/migrations/0018_testinstance_hash_id.py
diff --git a/sciunittests/migrations/0019_auto_20180525_1008.py b/scidash/sciunittests/migrations/0019_auto_20180525_1008.py
similarity index 100%
rename from sciunittests/migrations/0019_auto_20180525_1008.py
rename to scidash/sciunittests/migrations/0019_auto_20180525_1008.py
diff --git a/sciunittests/migrations/0020_auto_20180812_1634.py b/scidash/sciunittests/migrations/0020_auto_20180812_1634.py
similarity index 100%
rename from sciunittests/migrations/0020_auto_20180812_1634.py
rename to scidash/sciunittests/migrations/0020_auto_20180812_1634.py
diff --git a/scidash/sciunittests/migrations/0021_auto_20181203_1227.py b/scidash/sciunittests/migrations/0021_auto_20181203_1227.py
new file mode 100644
index 00000000..a778c4a5
--- /dev/null
+++ b/scidash/sciunittests/migrations/0021_auto_20181203_1227.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.7 on 2018-12-03 12:27
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('sciunittests', '0020_auto_20180812_1634'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='scoreinstance',
+ name='timestamp',
+ field=models.DateField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='testinstance',
+ name='timestamp',
+ field=models.DateField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='testsuite',
+ name='timestamp',
+ field=models.DateField(default=django.utils.timezone.now),
+ ),
+ ]
diff --git a/scidash/sciunittests/migrations/__init__.py b/scidash/sciunittests/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/sciunittests/models.py b/scidash/sciunittests/models.py
similarity index 92%
rename from sciunittests/models.py
rename to scidash/sciunittests/models.py
index 3cfc1932..33b84752 100644
--- a/sciunittests/models.py
+++ b/scidash/sciunittests/models.py
@@ -4,8 +4,8 @@
from django.contrib.postgres.fields import JSONField, HStoreField
from django.utils import timezone
-import sciunitmodels
-from general import models as general_models
+import scidash.sciunitmodels as sciunitmodels
+from scidash.general import models as general_models
logger = logging.getLogger(__name__)
@@ -13,7 +13,7 @@
class TestSuite(models.Model):
name = models.CharField(max_length=50)
hash = models.CharField(max_length=57, null=True, blank=True)
- timestamp = models.DateTimeField(default=timezone.now)
+ timestamp = models.DateField(default=timezone.now)
owner = models.ForeignKey(general_models.ScidashUser, default=None)
class Meta:
@@ -42,7 +42,7 @@ class TestInstance(models.Model):
test_suites = models.ManyToManyField(TestSuite, related_name='tests')
description = models.TextField(blank=True, null=True)
verbose = models.IntegerField(default=0)
- timestamp = models.DateTimeField(default=timezone.now)
+ timestamp = models.DateField(default=timezone.now)
hash_id = models.CharField(max_length=100)
hostname = models.CharField(max_length=200, default='', blank=True,
null=True)
@@ -83,7 +83,7 @@ class ScoreInstance(models.Model):
hash_id = models.CharField(max_length=100)
summary = models.CharField(max_length=200,
default=None, blank=True, null=True)
- timestamp = models.DateTimeField(default=timezone.now)
+ timestamp = models.DateField(default=timezone.now)
owner = models.ForeignKey(general_models.ScidashUser, default=None)
@property
diff --git a/sciunittests/serializers.py b/scidash/sciunittests/serializers.py
similarity index 74%
rename from sciunittests/serializers.py
rename to scidash/sciunittests/serializers.py
index d6b143e4..4266dc9e 100644
--- a/sciunittests/serializers.py
+++ b/scidash/sciunittests/serializers.py
@@ -3,16 +3,16 @@
from rest_framework_cache.registry import cache_registry
from rest_framework_cache.serializers import CachedSerializerMixin
-from general.serializers import ScidashUserSerializer
+from scidash.general.serializers import ScidashUserSerializer
-from sciunittests.models import TestClass, TestSuite, TestInstance, \
+from scidash.sciunittests.models import TestClass, TestSuite, TestInstance, \
ScoreInstance, ScoreClass
-from sciunitmodels.serializers import ModelInstanceSerializer
-from general.mixins import GetOrCreateMixin, GetByKeyOrCreateMixin
+from scidash.sciunitmodels.serializers import ModelInstanceSerializer
+from scidash.general.mixins import GetOrCreateMixin, GetByKeyOrCreateMixin
class TestSuiteSerializer(GetOrCreateMixin,
- WritableNestedModelSerializer
+ WritableNestedModelSerializer, CachedSerializerMixin
):
owner = ScidashUserSerializer(
@@ -26,7 +26,7 @@ class Meta:
class TestClassSerializer(GetByKeyOrCreateMixin,
- WritableNestedModelSerializer
+ WritableNestedModelSerializer, CachedSerializerMixin
):
key = 'url'
url = serializers.CharField(validators=[])
@@ -37,7 +37,7 @@ class Meta:
class TestInstanceSerializer(GetByKeyOrCreateMixin,
- WritableNestedModelSerializer
+ WritableNestedModelSerializer, CachedSerializerMixin
):
test_suites = TestSuiteSerializer(many=True)
test_class = TestClassSerializer()
@@ -51,7 +51,7 @@ class Meta:
class ScoreClassSerializer(GetByKeyOrCreateMixin,
- WritableNestedModelSerializer
+ WritableNestedModelSerializer, CachedSerializerMixin
):
key = 'class_name'
@@ -62,7 +62,7 @@ class Meta:
class ScoreInstanceSerializer(GetByKeyOrCreateMixin,
- WritableNestedModelSerializer
+ WritableNestedModelSerializer, CachedSerializerMixin
):
test_instance = TestInstanceSerializer()
model_instance = ModelInstanceSerializer()
@@ -104,8 +104,8 @@ class Meta:
exclude = ('prediction_dict', 'prediction_numeric', )
-# cache_registry.register(ScoreInstanceSerializer)
-# cache_registry.register(ScoreClassSerializer)
-# cache_registry.register(TestClassSerializer)
-# cache_registry.register(TestInstanceSerializer)
-# cache_registry.register(TestSuiteSerializer)
+cache_registry.register(ScoreInstanceSerializer)
+cache_registry.register(ScoreClassSerializer)
+cache_registry.register(TestClassSerializer)
+cache_registry.register(TestInstanceSerializer)
+cache_registry.register(TestSuiteSerializer)
diff --git a/scidash/sciunittests/tests/__init__.py b/scidash/sciunittests/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/scidash/sciunittests/tests/test_data/score_object.json b/scidash/sciunittests/tests/test_data/score_object.json
new file mode 100644
index 00000000..70ad446b
--- /dev/null
+++ b/scidash/sciunittests/tests/test_data/score_object.json
@@ -0,0 +1,43 @@
+{
+ "score_class": {"class_name": "ZScore", "url": "http://test-url.for/not-spaming-data/in-database"},
+ "hash_id": "111",
+ "model_instance": {
+ "model_class": {
+ "class_name": "ReducedModel",
+ "url": "http://test-url.for/not-spaming-data/in-database",
+ "capabilities": [
+ {
+ "class_name": "CanBeReduced"
+ }
+ ]
+ },
+ "attributes": {},
+ "hash_id": "111",
+ "name": "Izhikevich",
+ "run_params": {},
+ "url": "https://github.com/scidash/neuronunit/blob/master/neuronunit/models/NeuroML2/LEMS_2007One.xml",
+ "backend": "JNeuroML"
+ },
+ "prediction": 13,
+ "score": 1.66666666666667,
+ "sort_key": 0.738882680363527,
+ "score_type": "ZType",
+ "test_instance": {
+ "description": null,
+ "hash_id": "111",
+ "test_suites": [{
+ "hash": "testhash",
+ "name": "ReducedSuite"
+ }],
+ "test_class": {
+ "class_name": "MyTest",
+ "url": "http://test-url.for/not-spaming-data/in-database"
+ },
+ "observation": {
+ "mean":"8",
+ "std": "3",
+ "url": ""
+ },
+ "verbose": 1
+ }
+}
diff --git a/test_data/score_objects_list.json b/scidash/sciunittests/tests/test_data/score_objects_list.json
similarity index 100%
rename from test_data/score_objects_list.json
rename to scidash/sciunittests/tests/test_data/score_objects_list.json
diff --git a/sciunittests/tests.py b/scidash/sciunittests/tests/test_sciunit_tests.py
similarity index 98%
rename from sciunittests/tests.py
rename to scidash/sciunittests/tests/test_sciunit_tests.py
index 73d900cb..ebf57763 100644
--- a/sciunittests/tests.py
+++ b/scidash/sciunittests/tests/test_sciunit_tests.py
@@ -4,12 +4,12 @@
from django.test import TestCase, Client, RequestFactory
from django.urls import reverse
-from general.models import ScidashUser
+from scidash.general.models import ScidashUser
-from sciunittests.serializers import ScoreInstanceSerializer, \
+from scidash.sciunittests.serializers import ScoreInstanceSerializer, \
TestClassSerializer, \
ScoreClassSerializer
-from sciunittests.models import ScoreInstance
+from scidash.sciunittests.models import ScoreInstance
SAMPLE_OBJECT = os.path.join(os.path.dirname(os.path.dirname(__file__)),
'test_data/score_object.json')
@@ -477,3 +477,4 @@ def test_is_score_class_match_the_same_object(self):
parsed_response = response.json()
self.assertEqual(len(parsed_response), 1)
+
diff --git a/sciunittests/views.py b/scidash/sciunittests/views.py
similarity index 89%
rename from sciunittests/views.py
rename to scidash/sciunittests/views.py
index 39124296..3fd04135 100644
--- a/sciunittests/views.py
+++ b/scidash/sciunittests/views.py
@@ -5,7 +5,7 @@
from rest_framework.views import APIView
from rest_framework.response import Response
-from sciunittests.models import ScoreInstance
+from scidash.sciunittests.models import ScoreInstance
class DateRangeView(APIView):
@@ -35,6 +35,9 @@ def get(self, request, *args, **kwargs):
acceptable_period = period
break
+ if acceptable_period is None:
+ acceptable_period = nine_month_ago
+
return Response({
"current_date": current_date_iso,
"acceptable_period": acceptable_period
diff --git a/service/codefresh/codefresh.yml b/service/codefresh/codefresh.yml
new file mode 100644
index 00000000..79ff0e60
--- /dev/null
+++ b/service/codefresh/codefresh.yml
@@ -0,0 +1,30 @@
+version: '1.0'
+steps:
+ InstallFrontend:
+ image: node:8
+ working_directory: ${{main_clone}}
+ commands:
+ - make install-frontend
+ BuildingDockerImage:
+ title: Building Docker Image
+ type: build
+ image_name: metacell/scidash
+ working_directory: ./
+ tag: ${{CF_BRANCH}}-${{CF_BUILD_ID}}
+ no_cache: true
+ dockerfile: ./service/docker/Dockerfile-scidash
+ PushingToDockerRegistry:
+ title: Pushing to Docker Registry
+ type: push
+ candidate: '${{BuildingDockerImage}}'
+ tag: ${{CF_BRANCH}}-${{CF_BUILD_ID}}
+ registry: cfcr
+ Deploy:
+ type: deploy
+ kind: kubernetes
+ cluster: geppetto-cluster
+ namespace: scidash-testing
+ file_path: ./service/kubernetes/scidash/scidash-deployment.yaml
+ candidate:
+ image: ${{BuildingDockerImage}}
+ registry: cfcr
diff --git a/service/docker/Dockerfile-postgres b/service/docker/Dockerfile-postgres
new file mode 100644
index 00000000..e0dd498d
--- /dev/null
+++ b/service/docker/Dockerfile-postgres
@@ -0,0 +1,3 @@
+FROM postgres:9.4
+
+ADD ./service/scripts/db-create-psql.sh /docker-entrypoint-initdb.d/db-create-psql.sh
diff --git a/service/docker/Dockerfile-scidash b/service/docker/Dockerfile-scidash
new file mode 100644
index 00000000..062a297a
--- /dev/null
+++ b/service/docker/Dockerfile-scidash
@@ -0,0 +1,44 @@
+FROM python:3.6
+
+# BUILD VARIABLES
+
+ARG ROOT=/
+ARG APP_DIR=/app
+ARG DOTENV_FILE=env-docker
+ARG VENV_PATH=./venv/
+ARG STATIC_DIR=$APP_DIR/static
+ARG GEPPETTO_DIR=$STATIC_DIR/org.geppetto.frontend/src/main/webapp
+
+WORKDIR $ROOT
+
+# PYTHON INSTALL
+RUN pip install virtualenv
+#ENV PATH $VENV_PATH/bin:$PATH
+ENV PYTHONUNBUFFERED 1
+
+# CREATING PROJECT FOLDERS
+
+RUN mkdir $APP_DIR
+
+#COPYING PROJECT
+
+WORKDIR $APP_DIR
+ADD . $APP_DIR
+
+# INSTALLING REQUIREMENTS
+
+RUN apt-get install curl
+RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
+RUN apt-get update && apt-get install nodejs
+
+RUN make install-backend-with-env
+
+WORKDIR $GEPPETTO_DIR
+RUN npm run build-dev-noTest
+
+
+WORKDIR $APP_DIR
+COPY ./service/dotenv/env-docker $APP_DIR/.env
+
+
+CMD ./service/scripts/run.sh
diff --git a/deploy/dotenv/env-docker b/service/dotenv/env-docker
similarity index 100%
rename from deploy/dotenv/env-docker
rename to service/dotenv/env-docker
diff --git a/deploy/geppetto/GeppettoConfiguration.json b/service/geppetto/GeppettoConfiguration.json
similarity index 100%
rename from deploy/geppetto/GeppettoConfiguration.json
rename to service/geppetto/GeppettoConfiguration.json
diff --git a/deploy/kubernetes/scidash/scidash-deployment.yaml b/service/kubernetes/scidash/scidash-deployment.yaml
similarity index 95%
rename from deploy/kubernetes/scidash/scidash-deployment.yaml
rename to service/kubernetes/scidash/scidash-deployment.yaml
index 44cd6de7..e801f960 100644
--- a/deploy/kubernetes/scidash/scidash-deployment.yaml
+++ b/service/kubernetes/scidash/scidash-deployment.yaml
@@ -21,8 +21,7 @@ spec:
app: scidash
spec:
containers:
-
- - image: r.cfcr.io/tarelli/metacell/scidash:development
+ - image: r.cfcr.io/tarelli/metacell/scidash
imagePullPolicy: Always
name: scidash
ports:
diff --git a/deploy/kubernetes/scidash/scidash-service.yaml b/service/kubernetes/scidash/scidash-service.yaml
similarity index 100%
rename from deploy/kubernetes/scidash/scidash-service.yaml
rename to service/kubernetes/scidash/scidash-service.yaml
diff --git a/deploy/scripts/build-image-db.sh b/service/scripts/build-image-db.sh
similarity index 54%
rename from deploy/scripts/build-image-db.sh
rename to service/scripts/build-image-db.sh
index 18bc99a7..728264bc 100755
--- a/deploy/scripts/build-image-db.sh
+++ b/service/scripts/build-image-db.sh
@@ -1,6 +1,10 @@
#!/bin/bash
-if [ -z "$1" ]
+echo "Input db image version ('latest' by default): "
+
+read dbtag
+
+if [ -z "$dbtag" ]
then
version="latest"
else
@@ -9,6 +13,6 @@ fi
tag="metacell/scidash-db:$version"
directory="."
-dockerfile="./deploy/docker/Dockerfile-postgres"
+dockerfile="./service/docker/Dockerfile-postgres"
docker build -t $tag -f $dockerfile $directory
diff --git a/service/scripts/build-image-scidash.sh b/service/scripts/build-image-scidash.sh
new file mode 100755
index 00000000..5065a7f3
--- /dev/null
+++ b/service/scripts/build-image-scidash.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+echo "Input scidash image version ('latest' by default): "
+
+read scidashtag
+
+if [ -z "$scidashtag" ]
+then
+ version="latest"
+else
+ version=$scidashtag
+fi
+
+tag="metacell/scidash:$version"
+directory="."
+dockerfile="./service/docker/Dockerfile-scidash"
+
+docker build --no-cache -t $tag -f $dockerfile $directory
diff --git a/create_superuser.py b/service/scripts/create_superuser.py
similarity index 100%
rename from create_superuser.py
rename to service/scripts/create_superuser.py
diff --git a/db-backup.sh b/service/scripts/db-backup.sh
similarity index 100%
rename from db-backup.sh
rename to service/scripts/db-backup.sh
diff --git a/deploy/scripts/db-create-psql.sh b/service/scripts/db-create-psql.sh
similarity index 100%
rename from deploy/scripts/db-create-psql.sh
rename to service/scripts/db-create-psql.sh
diff --git a/service/scripts/install-backend.sh b/service/scripts/install-backend.sh
new file mode 100755
index 00000000..96df0f94
--- /dev/null
+++ b/service/scripts/install-backend.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+virtualenv=false;
+pygeppetto_folder="pygeppetto-django"
+pygeppetto_django_repo="https://github.com/MetaCell/pygeppetto-django.git -b development-roman $pygeppetto_folder";
+
+while getopts "v" opt
+do
+ case $opt in
+ v) virtualenv=true;;
+ esac
+done
+
+if [ "$virtualenv" = true ] ; then
+ virtualenv -p python3 ./venv;
+ source ./venv/bin/activate;
+fi
+
+pip install -r requirements.txt;
+
+git clone $pygeppetto_django_repo;
+
+cd $pygeppetto_folder;
+
+pip install -e .
diff --git a/service/scripts/install-frontend.sh b/service/scripts/install-frontend.sh
new file mode 100755
index 00000000..0ddd56bb
--- /dev/null
+++ b/service/scripts/install-frontend.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+node -v
+
+root_path=$PWD;
+
+geppetto_repo="https://github.com/openworm/org.geppetto.frontend.git -b griddle-update";
+extension_repo="https://github.com/MetaCell/geppetto-scidash.git -b refactoring";
+
+geppetto_path="./static/org.geppetto.frontend";
+geppetto_app_path="$geppetto_path/src/main/webapp";
+extension_path="$geppetto_app_path/extensions/geppetto-scidash";
+sample_config_path="./service/geppetto/GeppettoConfiguration.json";
+actual_config_path="$geppetto_app_path/GeppettoConfiguration.json";
+
+git clone $geppetto_repo $geppetto_path;
+git clone $extension_repo $extension_path;
+
+cd $geppetto_app_path;
+
+npm install
+
+cd $root_path;
+
+cp $sample_config_path $actual_config_path;
diff --git a/service/scripts/push-image-scidash-db.sh b/service/scripts/push-image-scidash-db.sh
new file mode 100755
index 00000000..e457efa8
--- /dev/null
+++ b/service/scripts/push-image-scidash-db.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+echo "Input db image version ('latest' by default): ";
+
+read dbtag;
+
+if [ -z "$dbtag" ]
+then
+ docker push metacell/scidash-db;
+else
+ docker push metacell/scidash-db:$dbtag;
+fi
diff --git a/service/scripts/push-image-scidash.sh b/service/scripts/push-image-scidash.sh
new file mode 100755
index 00000000..734f01be
--- /dev/null
+++ b/service/scripts/push-image-scidash.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+echo "Input scidash image version ('latest' by default): ";
+
+read scidashtag;
+
+if [ -z "$scidashtag" ]
+then
+ docker push metacell/scidash;
+else
+ docker push metacell/scidash:$scidashtag;
+fi
+
diff --git a/service/scripts/run.sh b/service/scripts/run.sh
new file mode 100755
index 00000000..43a54b09
--- /dev/null
+++ b/service/scripts/run.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+source ./venv/bin/activate;
+python manage.py migrate;
+cat ./service/scripts/create_superuser.py | ./manage.py shell;
+python manage.py runserver 0.0.0.0:8000;