diff --git a/jass/server.py b/jass/server.py index 7f931125f2f472c9159c567d9fc5d94d9ab01b6f..a2c7969e8d0306716a866adb0ee36226a4d57c57 100644 --- a/jass/server.py +++ b/jass/server.py @@ -40,6 +40,7 @@ class LocalProjectParamsSchema(ma.Schema): chromosome = ma.fields.Integer() start = ma.fields.Integer() end = ma.fields.Integer() + to_init = ma.fields.Integer() class ProjectStatusSchema(ma.Schema): @@ -120,6 +121,7 @@ class LocalProjectCreateMethodView(MethodView): str(parameters["chromosome"]), str(parameters["start"]), str(parameters["end"]), + str(parameters["to_init"]), ) @@ -396,6 +398,45 @@ class ProjectZoomPlotMethodView(MethodView): abort(500) +@blp_projects.route("/<project_id>/gene_exon") +class ProjectGeneExonMethodView(MethodView): + def get(self, project_id): + try: + return ( + Project(id=project_id).get_project_gene_exon_data(), + 200, + {"Content-Type": "text/plain; charset=utf-8"}, + ) + except FileNotFoundError: + status = Project(id=project_id).status + if status == Project.DOES_NOT_EXIST: + return ( + f"project {project_id} does not exist", + 404, + {"Content-Type": "text/plain; charset=utf-8"}, + ) + elif status["worktable"] == Project.CREATING: + return ( + "data not ready yet", + 202, + {"Content-Type": "text/plain; charset=utf-8"}, + ) + else: + abort(500) + + +@blp_projects.route("/<project_id>/error_msg") +class ProjectErrorMsgMethodView(MethodView): + def get(self, project_id): + return Project(id=project_id).get_error_msg() + + +@blp_projects.route("/<project_id>/dispo_gene_exon") +class ProjectDispoGeneExonMethodView(MethodView): + def get(self, project_id): + return Project(id=project_id).get_dispo_gene_exon() + + class JassApp(Flask): """ JassApp builds the JASS Flask application