Skip to content
Snippets Groups Projects
Commit de6ae078 authored by AndiMajore's avatar AndiMajore
Browse files

added functions for view from selection feature

Former-commit-id: 994cca1271048cab68b96171815630df76de87b3 [formerly 11b161d031e67718e5121bd8568585bd68d23912]
Former-commit-id: 0ee2866ad504923b4e85f6b986a87f2b05ae4688
parent 322a8c99
No related branches found
No related tags found
No related merge requests found
......@@ -14,3 +14,4 @@ celerybeat-schedule.dat
celerybeat-schedule.dir
docker-django.env.prodnetworks.zip
data/Networks/
docker-django.env
......@@ -9,7 +9,7 @@ services:
- "scripts/docker-entrypoint.sh"
build: .
env_file:
- 'docker-django.env.dev'
- 'docker-django.env'
restart: always
volumes:
- drugstone_db_schema_volume:/usr/src/drugstone/drugstone/migrations
......@@ -62,7 +62,7 @@ services:
volumes:
- ./data:/usr/src/drugstone/data
env_file:
- './docker-django.env.dev'
- './docker-django.env'
depends_on:
- redis
- db
......@@ -77,7 +77,7 @@ services:
container_name: drugstone_celery_beat
hostname: drugstone_celery_beat
env_file:
- './docker-django.env.dev'
- './docker-django.env'
depends_on:
- redis
- db
......
DEBUG=1
SECRET_KEY="0&y9v0@9%@c^woz8m+h2(^$#3gd^c@d82kmmq8tu*nesc_x9i+"
SUPERUSER_NAME=admin
SUPERUSER_PASS=Mb2R7CbqAPbpaKawKg7Z
SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=drugstone
SQL_USER=drugstone
SQL_PASSWORD=t6278yczAH7rPKVMxaDD
SQL_HOST=drugstone_postgres
SQL_PORT=5432
REDIS_HOST=redis
REDIS_PORT=6379
GT_THREADS=16
DJANGO_SETTINGS_MODULE=drugstone.settings
CELERY_BROKER_URL=redis://redis:6379/0
DB_UPDATE_ON_START=0
\ No newline at end of file
......@@ -166,6 +166,14 @@ CACHES = {
}
}
EMAIL_HOST = "exchange.uni-hamburg.de"
EMAIL_PORT = 587
EMAIL_HOST_USER="taa0368"
EMAIL_ADDRESS = "tools-cosybio.zbh@uni-hamburg.de"
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD')
EMAIL_USE_SSL = False
EMAIL_USE_TLS = True
CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL')
# timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
CELERY_TIMEZONE = 'Europe/Berlin'
......
......@@ -19,7 +19,7 @@ from django.urls import path
from drugstone.views import map_nodes, tasks_view, result_view, \
graph_export, TissueView, TissueExpressionView, query_tissue_proteins, TaskView, \
adjacent_drugs, adjacent_disorders, fetch_edges, create_network, load_network, get_license, get_datasets, \
get_max_tissue_expression, convert_compact_ids, get_default_params
get_max_tissue_expression, convert_compact_ids, get_default_params, send_bugreport, save_selection, get_view
# cache time is 6 hours
urlpatterns = [
......@@ -41,5 +41,8 @@ urlpatterns = [
path('create_network', create_network),
path('load_network', load_network),
path('get_default_params', get_default_params),
path('get_license', get_license)
path('get_license', get_license),
path('send_bugreport/', send_bugreport),
path('save_selection', save_selection),
path('view/', get_view)
]
from django.core.mail import send_mail
from drugstone.settings import settings
default_sender = settings.EMAIL_ADDRESS
def bugreport(title, body, cc=None):
if cc is None:
send(title, body)
else:
send(title=title, body=body, recipient=['contact@drugst.one', cc])
def send(title, body, sender=default_sender, recipient=['contact@drugst.one'], fail_silently=False):
send_mail(title, body, sender, recipient, fail_silently=fail_silently)
......@@ -12,9 +12,12 @@ import networkx as nx
from django.http import HttpResponse
from django.db.models import Q, Max
from django.db import IntegrityError
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.views import APIView
from drugstone.util.mailer import bugreport
from drugstone.util.query_db import query_proteins_by_identifier, clean_proteins_from_compact_notation
from drugstone.models import *
......@@ -109,7 +112,8 @@ def get_license(request) -> Response:
def get_default_params(request) -> Response:
algorithm = request.GET.get('algorithm')
connect = {'algorithm': 'multisteiner', 'numTrees': 5, 'tolerance': 5, 'hubPenalty': 0.5}
quick = {'algorithm': 'closeness', 'result_size': 50, 'hub_penalty': 0, 'include_non_approved_drugs': False, 'include_indirect_drugs': False}
quick = {'algorithm': 'closeness', 'result_size': 50, 'hub_penalty': 0, 'include_non_approved_drugs': False,
'include_indirect_drugs': False}
resp = {}
if algorithm in ['quick', 'super', 'connect', 'connectSelected']:
resp['protein'] = connect
......@@ -670,6 +674,47 @@ def query_proteins(request) -> Response:
})
@api_view(['POST'])
def send_bugreport(request) -> Response:
data = request.data
title = data.get("title")
body = data.get("body")
email = data.get("email", None)
if email and len(email) == 0:
email = None
if not title or not body:
return Response({"status": 400})
bugreport(title, body, email)
return Response({"status": 200})
@api_view(['POST'])
def save_selection(request) -> Response:
chars = string.ascii_lowercase + string.ascii_uppercase + string.digits
token_str = ''.join(random.choice(chars) for _ in range(32))
config = request.data.get("config")
network = request.data.get("network")
Network.objects.create(id=token_str, config=config, nodes=network["nodes"], edges=network["edges"])
return Response({
'token': token_str,
})
@api_view(['GET'])
def get_view(request) -> Response:
token = request.query_params.get('token')
network = Network.objects.get(id=token)
return Response({
'config': network.config,
'network': {
'nodes': network.nodes,
'edges': network.edges,
}
})
@api_view(['GET'])
def get_max_tissue_expression(request) -> Response:
tissue = Tissue.objects.get(id=request.query_params.get('tissue'))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment