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 ...@@ -14,3 +14,4 @@ celerybeat-schedule.dat
celerybeat-schedule.dir celerybeat-schedule.dir
docker-django.env.prodnetworks.zip docker-django.env.prodnetworks.zip
data/Networks/ data/Networks/
docker-django.env
...@@ -9,7 +9,7 @@ services: ...@@ -9,7 +9,7 @@ services:
- "scripts/docker-entrypoint.sh" - "scripts/docker-entrypoint.sh"
build: . build: .
env_file: env_file:
- 'docker-django.env.dev' - 'docker-django.env'
restart: always restart: always
volumes: volumes:
- drugstone_db_schema_volume:/usr/src/drugstone/drugstone/migrations - drugstone_db_schema_volume:/usr/src/drugstone/drugstone/migrations
...@@ -62,7 +62,7 @@ services: ...@@ -62,7 +62,7 @@ services:
volumes: volumes:
- ./data:/usr/src/drugstone/data - ./data:/usr/src/drugstone/data
env_file: env_file:
- './docker-django.env.dev' - './docker-django.env'
depends_on: depends_on:
- redis - redis
- db - db
...@@ -77,7 +77,7 @@ services: ...@@ -77,7 +77,7 @@ services:
container_name: drugstone_celery_beat container_name: drugstone_celery_beat
hostname: drugstone_celery_beat hostname: drugstone_celery_beat
env_file: env_file:
- './docker-django.env.dev' - './docker-django.env'
depends_on: depends_on:
- redis - redis
- db - 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 = { ...@@ -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') CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL')
# timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones # timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
CELERY_TIMEZONE = 'Europe/Berlin' CELERY_TIMEZONE = 'Europe/Berlin'
......
...@@ -19,7 +19,7 @@ from django.urls import path ...@@ -19,7 +19,7 @@ from django.urls import path
from drugstone.views import map_nodes, tasks_view, result_view, \ from drugstone.views import map_nodes, tasks_view, result_view, \
graph_export, TissueView, TissueExpressionView, query_tissue_proteins, TaskView, \ graph_export, TissueView, TissueExpressionView, query_tissue_proteins, TaskView, \
adjacent_drugs, adjacent_disorders, fetch_edges, create_network, load_network, get_license, get_datasets, \ 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 # cache time is 6 hours
urlpatterns = [ urlpatterns = [
...@@ -41,5 +41,8 @@ urlpatterns = [ ...@@ -41,5 +41,8 @@ urlpatterns = [
path('create_network', create_network), path('create_network', create_network),
path('load_network', load_network), path('load_network', load_network),
path('get_default_params', get_default_params), 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 ...@@ -12,9 +12,12 @@ import networkx as nx
from django.http import HttpResponse from django.http import HttpResponse
from django.db.models import Q, Max from django.db.models import Q, Max
from django.db import IntegrityError from django.db import IntegrityError
from rest_framework import status
from rest_framework.decorators import api_view from rest_framework.decorators import api_view
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.views import APIView 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.util.query_db import query_proteins_by_identifier, clean_proteins_from_compact_notation
from drugstone.models import * from drugstone.models import *
...@@ -109,7 +112,8 @@ def get_license(request) -> Response: ...@@ -109,7 +112,8 @@ def get_license(request) -> Response:
def get_default_params(request) -> Response: def get_default_params(request) -> Response:
algorithm = request.GET.get('algorithm') algorithm = request.GET.get('algorithm')
connect = {'algorithm': 'multisteiner', 'numTrees': 5, 'tolerance': 5, 'hubPenalty': 0.5} 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 = {} resp = {}
if algorithm in ['quick', 'super', 'connect', 'connectSelected']: if algorithm in ['quick', 'super', 'connect', 'connectSelected']:
resp['protein'] = connect resp['protein'] = connect
...@@ -670,6 +674,47 @@ def query_proteins(request) -> Response: ...@@ -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']) @api_view(['GET'])
def get_max_tissue_expression(request) -> Response: def get_max_tissue_expression(request) -> Response:
tissue = Tissue.objects.get(id=request.query_params.get('tissue')) 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