diff util/subtools.py @ 3:6f262a92e8dc draft default tip

planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 91b46f7c891c2466bc5b6a063411cdae75964515-dirty
author yating-l
date Mon, 27 Nov 2017 12:06:18 -0500
parents 8ff4b84d709f
children
line wrap: on
line diff
--- a/util/subtools.py	Wed Oct 25 12:41:34 2017 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-#!/usr/bin/env python
-
-"""
-This file include common used functions for converting file format to gff3
-"""
-from collections import OrderedDict
-import json
-import subprocess
-import os
-import sys
-import tempfile
-import string
-import logging
-
-class PopenError(Exception):
-    def __init__(self, cmd, error, return_code):
-        self.cmd = cmd
-        self.error = error
-        self.return_code = return_code
-
-    def __str__(self):
-        message = "The subprocess {0} has returned the error: {1}.".format(
-            self.cmd, self.return_code)
-        message = ','.join(
-            (message, "Its error message is: {0}".format(self.error)))
-        return repr(message)
-
-
-def _handleExceptionAndCheckCall(array_call, **kwargs):
-    """
-    This class handle exceptions and call the tool.
-    It maps the signature of subprocess.check_call:
-    See https://docs.python.org/2/library/subprocess.html#subprocess.check_call
-    """
-    stdout = kwargs.get('stdout', subprocess.PIPE)
-    stderr = kwargs.get('stderr', subprocess.PIPE)
-    shell = kwargs.get('shell', False)
-    stdin = kwargs.get('stdin', None)
-
-    cmd = array_call[0]
-
-    output = None
-    error = None
-
-    # TODO: Check the value of array_call and <=[0]
-    logging.debug("Calling {0}:".format(cmd))
-    logging.debug("%s", array_call)
-    logging.debug("---------")
-
-    # TODO: Use universal_newlines option from Popen?
-    try:
-        p = subprocess.Popen(array_call, stdout=stdout,
-                             stderr=stderr, shell=shell, stdin=stdin)
-
-        # TODO: Change this because of possible memory issues => https://docs.python.org/2/library/subprocess.html#subprocess.Popen.communicate
-
-        output, error = p.communicate()
-
-        if stdout == subprocess.PIPE:
-            logging.debug("\t{0}".format(output))
-        else:
-            logging.debug("\tOutput in file {0}".format(stdout.name))
-        # If we detect an error from the subprocess, then we raise an exception
-        # TODO: Manage if we raise an exception for everything, or use CRITICAL etc... but not stop process
-        # TODO: The responsability of returning a sys.exit() should not be there, but up in the app.
-        if p.returncode:
-            if stderr == subprocess.PIPE:
-                raise PopenError(cmd, error, p.returncode)
-            else:
-                # TODO: To Handle properly with a design behind, if we received a option as a file for the error
-                raise Exception("Error when calling {0}. Error as been logged in your file {1}. Error code: {2}".format(cmd, stderr.name, p.returncode))
-
-    except OSError as e:
-        message = "The subprocess {0} has encountered an OSError: {1}".format(
-            cmd, e.strerror)
-        if e.filename:
-            message = '\n'.join(
-                (message, ", against this file: {0}".format(e.filename)))
-        logging.error(message)
-        sys.exit(-1)
-    except PopenError as p:
-        message = "The subprocess {0} has returned the error: {1}.".format(
-            p.cmd, p.return_code)
-        message = '\n'.join(
-            (message, "Its error message is: {0}".format(p.error)))
-
-        logging.exception(message)
-
-        sys.exit(p.return_code)
-    except Exception as e:
-        message = "The subprocess {0} has encountered an unknown error: {1}".format(
-            cmd, e)
-        logging.exception(message)
-
-        sys.exit(-1)
-    return output
-
-def arrow_add_organism(organism_name, organism_dir, public=False):
-    array_call = ['arrow', 'organisms', 'add_organism', organism_name, organism_dir]
-    if public:
-        array_call.append('--public')
-    p = _handleExceptionAndCheckCall(array_call)
-    #p = subprocess.check_output(array_call)
-    return p
-
-def arrow_create_user(user_email, firstname, lastname, password, admin=False):
-    """ Create a new user of Apollo, the default user_role is "user" """
-    array_call = ['arrow', 'users', 'create_user', user_email, firstname, lastname, password]
-    if admin:
-        array_call += ['--role', 'admin']
-    logging.debug("%s", array_call)
-    print array_call
-    p = subprocess.check_output(array_call)
-    print ("p = %s", p)
-    return p
-
-def arrow_update_organism_permissions(user_id, organism, **user_permissions):
-    array_call = ['arrow', 'users', 'update_organism_permissions', str(user_id), str(organism)]
-    admin = user_permissions.get("admin", False)
-    write = user_permissions.get("write", False)
-    read = user_permissions.get("read", False)
-    export = user_permissions.get("export", False)
-    if admin:
-        array_call.append('--administrate')
-    if write:
-        array_call.append('--write')
-    if read:
-        array_call.append('--read')
-    if export:
-        array_call.append('--export')
-    p = subprocess.check_output(array_call)
-    return p
-
-def arrow_get_users(user_email):
-    array_call = ['arrow', 'users', 'get_users']
-    logging.debug("%s", array_call)
-    print array_call
-    p = subprocess.check_output(array_call)
-    all_users = json.loads(p)
-    for d  in all_users:
-        if d['username'] == user_email:
-            return d['userId']
-    logging.error("Cannot find user %s", user_email)
-
-def verify_user_login(username, password, apollo_host):
-    user_info = {'username': username, 'password': password}
-    array_call = ['curl', 
-                  '-b', 'cookies.txt', 
-                  '-c', 'cookies.txt', 
-                  '-H', 'Content-Type:application/json',
-                  '-d', json.dumps(user_info),
-                  apollo_host + '/Login?operation=login'
-                  ]
-    p = _handleExceptionAndCheckCall(array_call)
-    msg = json.loads(p)
-    if 'error' in msg:
-        logging.error("The Authentication for user %s failed. Get error message %s", username, msg['error'])
-        exit(-1)
-    
-