annotate api.py @ 0:4e8e2f836d0f draft default tip

planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
author itaxotools
date Sun, 29 Jan 2023 16:25:48 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
1 #!/usr/bin/env python
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
2 # -*- coding: utf-8 -*-
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
3
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
4 from flask import Flask, make_response, request, current_app, send_file, url_for
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
5 from flask_restful import Resource, Api, reqparse, abort
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
6 from flask.json import jsonify
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
7 from flasgger import Swagger
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
8 from flask_cors import CORS, cross_origin
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
9 from flask_restful.utils import cors
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
10 import logging
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
11 import base64
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
12 import uuid
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
13 import tempfile
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
14 import os
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
15 import html2text
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
16
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
17 # for emails
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
18 import smtplib
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
19 from email.message import EmailMessage
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
20 from email.mime.multipart import MIMEMultipart
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
21 from email.mime.text import MIMEText
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
22 from email.mime.image import MIMEImage
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
23 from celery import Celery
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
24 from celery.schedules import crontab
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
25
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
26 import json
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
27
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
28 #from MolD_sDNC import SortedDisplayDict
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
29 #from MolD_sDNC import Step1
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
30 #from MolD_sDNC import C_VP_PP
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
31 #from MolD_sDNC import random_position
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
32 #from MolD_sDNC import step_reduction_complist
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
33 #from MolD_sDNC import ConditionD
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
34 #from MolD_sDNC import RemoveRedundantPositions
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
35 #from MolD_sDNC import Diagnostic_combinations
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
36 #from MolD_sDNC import IndependentKey
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
37 #from MolD_sDNC import random_sequence2
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
38 #from MolD_sDNC import GenerateBarcode2
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
39 #from MolD_sDNC import Screwed_dataset31
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
40 from MolD_sDNCFASTA import mainprocessing
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
41
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
42
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
43 logging.basicConfig(format='%(levelname)s: %(asctime)s - %(message)s',
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
44 level=logging.DEBUG, datefmt='%d.%m.%Y %I:%M:%S %p')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
45
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
46 app = Flask(__name__)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
47 app.config.from_envvar('APPSETTINGS')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
48 API_VERSION = app.config.get('API_VERSION', 1)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
49
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
50 cors = CORS(app, resources={r"/*": {"origins": "*"}}, methods=['GET', 'POST', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'])
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
51 api = Api(app, prefix=f"/api/v{API_VERSION}")
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
52
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
53 gunicorn_logger = logging.getLogger('gunicorn.error')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
54 app.logger.handlers = gunicorn_logger.handlers
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
55 app.logger.setLevel(gunicorn_logger.level)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
56
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
57 REDIS_HOST = app.config.get('REDIS_HOST', 'localhost')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
58 REDIS_PORT = app.config.get('REDIS_PORT', 6379)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
59 REDIS_DB = app.config.get('REDIS_DB', 0)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
60
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
61 MAILUSER = app.config.get('MAILUSER')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
62 MAILPASS = app.config.get('MAILPASS')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
63
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
64 app.config['SWAGGER'] = {
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
65 'uiversion': 3
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
66 }
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
67 swtemplate = {
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
68 "info": {
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
69 "title": "MoID API",
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
70 "description": "MoID API is the online version of a tree independent algorithm to retrieve diagnostic nucleotide characters from monolocus datasets. BioRxiv. DOI: 10.1101/838151",
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
71 "version": f"{API_VERSION}",
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
72 },
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
73 "schemes": [
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
74 "https"
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
75 ]
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
76 }
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
77
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
78 swagger_config = {
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
79 "headers": [
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
80 ],
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
81 "specs": [
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
82 {
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
83 "endpoint": 'apidescr',
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
84 "route": '/apidescr.json',
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
85 "rule_filter": lambda rule: True,
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
86 "model_filter": lambda tag: True,
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
87 }
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
88 ],
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
89 "static_url_path": "/flasgger_static",
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
90 "swagger_ui": True,
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
91 "specs_route": "/docs/",
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
92 'uiversion': 3
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
93 }
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
94
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
95 swagger = Swagger(app, config=swagger_config, template=swtemplate)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
96
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
97 SEND_EMAILS = True
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
98
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
99 app.config['CELERY_BROKER_URL'] = 'redis://{}:{}/{}'.format(REDIS_HOST, REDIS_PORT, REDIS_DB)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
100 app.config['CELERY_RESULT_BACKEND'] = 'redis://{}:{}/{}'.format(REDIS_HOST, REDIS_PORT, REDIS_DB)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
101
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
102 def make_celery(app):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
103 celery = Celery(app.import_name, broker=app.config['CELERY_BROKER_URL'])
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
104 celery.conf.update(app.config)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
105 TaskBase = celery.Task
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
106 class ContextTask(TaskBase):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
107 abstract = True
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
108 def __call__(self, *args, **kwargs):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
109 with app.app_context():
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
110 return TaskBase.__call__(self, *args, **kwargs)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
111 celery.Task = ContextTask
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
112 return celery
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
113
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
114 celery = make_celery(app)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
115
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
116 #@celery.on_after_configure.connect
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
117 #def setup_periodic_tasks(sender, **kwargs):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
118 # sender.add_periodic_task(
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
119 # crontab(minute=0, hour='*/3'),
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
120 # check_pending_notifications.s(),
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
121 # )
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
122
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
123
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
124 @celery.task
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
125 def send_email_notification(email, status, parameters, taxalist, orig_filename):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
126 print("Sending email")
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
127 sender = MAILUSER
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
128 taxa = ", ".join(taxalist)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
129 print(taxalist)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
130 taxa1 = "-".join([t.replace(" ", "_") for t in taxalist])
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
131 msg = MIMEMultipart('related')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
132 msg['Subject'] = f'MolD results: {taxa}'
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
133 msg['From'] = sender
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
134 msg['To'] = email
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
135
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
136 # TODO: add three txt files:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
137 #
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
138
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
139 email_body = """\
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
140 <html>
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
141 <head></head>
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
142 <body>
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
143
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
144 Results:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
145 {}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
146
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
147 ***************
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
148
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
149 <p>Citation: <b>Fedosov A.E.</b>, Achaz G., Puillandre N. 2019. Revisiting use of DNA characters in taxonomy with MolD – a tree independent algorithm to retrieve diagnostic nucleotide characters from monolocus datasets. BioRxiv, published online on 11.11.2019. DOI: 10.1101/838151 </p>
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
150 </body>
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
151 </html>
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
152 """.format(status)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
153
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
154 plain_text_results = html2text.html2text(status)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
155
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
156 message_text = MIMEText(email_body, 'html')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
157 msg.attach(message_text)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
158
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
159 text_attachment = f"""
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
160 Results:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
161 {plain_text_results}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
162
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
163 ***************
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
164
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
165 Citation: Fedosov A.E., Achaz G., Puillandre N. 2019. Revisiting use of DNA characters in taxonomy with MolD – a tree independent algorithm to retrieve diagnostic nucleotide characters from monolocus datasets. BioRxiv, published online on 11.11.2019. DOI: 10.1101/838151
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
166 """
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
167
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
168 mail_attachment = MIMEText(text_attachment)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
169 fname = f"{orig_filename}.results.txt"
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
170 mail_attachment.add_header('Content-Disposition', 'attachment', filename=fname)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
171 msg.attach(mail_attachment)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
172
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
173 print("mail ready to be sent")
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
174 s = smtplib.SMTP('smtp.gmail.com', 587)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
175 s.ehlo()
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
176 s.starttls()
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
177 s.login(MAILUSER, MAILPASS)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
178 s.sendmail(sender, email, msg.as_string())
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
179 s.quit()
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
180 print("mail sent")
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
181
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
182
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
183 @celery.task
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
184 def process_data(email, gapsaschars, taxalist, taxonrank, cutoff, numnucl, numiter, maxlenraw, maxlenrefined, pdiff, nmax, thresh, tmpfname, orig_fname):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
185 print("Processing data")
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
186
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
187 results, qclades = mainprocessing(gapsaschars, taxalist, taxonrank, cutoff, numnucl, numiter, maxlenraw, maxlenrefined, pdiff, nmax, thresh, tmpfname, orig_fname)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
188
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
189 parameters = f"""
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
190 List of focus taxa: {taxalist}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
191 Taxon rank: {taxonrank}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
192 Cutoff: {cutoff}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
193 NNNNN...: {numnucl}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
194 Num iterations: {numiter}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
195 Max length for the raw mDNCs: {maxlenraw}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
196 Max length for the refined mDNCs: {maxlenrefined}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
197 Pdiff: {pdiff}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
198 NMaxSeq: {nmax}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
199 Threshold of rDNC rating: {thresh}
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
200 """
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
201
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
202 send_email_notification.delay(email, results, parameters, qclades, orig_fname)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
203
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
204 @app.errorhandler(404)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
205 def not_found(error):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
206 return make_response(jsonify({'error': 'Not found'}), 404)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
207
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
208
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
209 class DataAPI(Resource):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
210 def __init__(self):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
211 self.method_decorators = []
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
212
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
213 def options(self, *args, **kwargs):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
214 return jsonify([])
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
215
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
216
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
217 #@token_required
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
218 @cross_origin()
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
219 def post(self):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
220 """
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
221 POST data to analyse
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
222 ---
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
223 parameters:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
224 - in: formData
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
225 name: file
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
226 type: file
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
227 required: true
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
228 description: Data file
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
229 - in: formData
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
230 name: tags
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
231 type: array
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
232 required: false
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
233 description: A list of image tags to link with the image
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
234 items:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
235 type: string
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
236 description: Tag text
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
237 - in: formData
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
238 name: width
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
239 type: integer
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
240 required: false
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
241 description: Image width
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
242 - in: formData
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
243 name: height
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
244 type: integer
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
245 required: false
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
246 description: Image height
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
247
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
248 responses:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
249 200:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
250 description: Data processing
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
251 400:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
252 description: Bad request
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
253 """
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
254 app.logger.debug(request.files)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
255 app.logger.debug(request.values)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
256 email = request.values.get('email', None)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
257 gapsaschars = request.values.get('gapsaschars', "no")
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
258 taxalist = request.values.get('taxalist', "ALL")
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
259 taxalist = taxalist.replace(" ", '')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
260 taxonrank = int(request.values.get('taxonrank', 2))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
261 cutoff = request.values.get('cutoff', ">0")
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
262 numnucl = int(request.values.get('numnucl', 5))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
263 numiter = int(request.values.get('numites', 10000))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
264 maxlenraw = int(request.values.get('maxlenraw', 12))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
265 maxlenrefined = int(request.values.get('maxlenrefined', 7))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
266 pdiff = int(request.values.get('pdiff', 1))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
267 #prseq = float(request.values.get('prseq', 0.1))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
268 nmax = int(request.values.get('nmax', 20))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
269 thresh = int(request.values.get('thresh', 85))
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
270
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
271 if not all([email, gapsaschars, taxalist, taxonrank, cutoff, numnucl, numiter, maxlenraw, maxlenrefined, pdiff, nmax, thresh]):
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
272 return make_response(jsonify({'error': 'Parameter missing'}), 400)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
273
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
274 if not request.files:
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
275 return make_response(jsonify({'error': 'No file provided'}), 400)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
276
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
277
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
278 data_file = [request.files.get(f) for f in request.files][-1]
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
279
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
280 thumb_height = request.values.get('height', None)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
281 tmpdname = "/tmp"
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
282 tmpfname = str(uuid.uuid4())
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
283 tmp_upl_file = os.path.join(tmpdname, tmpfname)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
284 data_file.save(tmp_upl_file)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
285 app.logger.debug(tmp_upl_file)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
286 process_data.delay(email, gapsaschars, taxalist, taxonrank, cutoff, numnucl, numiter, maxlenraw, maxlenrefined, pdiff, nmax, thresh, tmp_upl_file, data_file.filename)
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
287
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
288 return jsonify("OK"), 200
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
289
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
290
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
291 api.add_resource(DataAPI, '/data', endpoint='processdata')
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
292
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
293 if __name__ == '__main__':
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
294 app.debug = True
4e8e2f836d0f planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff changeset
295 app.run(host='0.0.0.0')