def response(returndata):

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)

    sourcetype = DQXDbTools.ToSafeIdentifier(returndata['sourcetype'])
    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    workspaceid = DQXDbTools.ToSafeIdentifier(returndata['workspaceid'])
    tableid = DQXDbTools.ToSafeIdentifier(returndata['tableid'])
    sourceid = DQXDbTools.ToSafeIdentifier(returndata['sourceid'])

    contentid = returndata['contentid']
    filename = os.path.join(config.BASEDIR, 'temp', 'store_' + contentid)
    with open(filename, 'r') as fp:
        encodedstr = fp.read()
    os.remove(filename)
    content = DQXbase64.b64decode_var2(encodedstr)

    baseFolder = config.SOURCEDATADIR + '/datasets'
    settingsFile = None
    if sourcetype == 'dataset':
        settingsFile = os.path.join(baseFolder, databaseName, 'settings')
        authorization.VerifyIsDataSetManager(credInfo, databaseName)
    if sourcetype == 'datatable':
        settingsFile = os.path.join(baseFolder, databaseName, 'datatables',
                                    tableid, 'settings')
        authorization.VerifyIsDataSetManager(credInfo, databaseName)
    if sourcetype == 'workspace':
        settingsFile = os.path.join(baseFolder, databaseName, 'workspaces',
                                    workspaceid, 'settings')
        credInfo.VerifyCanDo(
            DQXDbTools.DbOperationWrite(databaseName, 'workspaces'))
    if sourcetype == 'customdata':
        settingsFile = os.path.join(baseFolder, databaseName, 'workspaces',
                                    workspaceid, 'customdata', tableid,
                                    sourceid, 'settings')
        credInfo.VerifyCanDo(
            DQXDbTools.DbOperationWrite(databaseName, 'workspaces'))
    if settingsFile is None:
        returndata['Error'] = 'Invalid file source type'
        return returndata

    try:
        with open(settingsFile, 'w') as fp:
            fp.write(content)

    except Exception as e:
        returndata['Error'] = str(e)

    return returndata
Exemplo n.º 2
0
def response(returndata):

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    workspaceid = DQXDbTools.ToSafeIdentifier(returndata['workspaceid'])
    id = DQXDbTools.ToSafeIdentifier(returndata['id'])
    method = returndata['tpe']

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)
    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    db = DQXDbTools.OpenDatabase(credInfo, databaseName)
    credInfo.VerifyCanDo(DQXDbTools.DbOperationWrite(None, 'storedviews'))
    cur = db.cursor()

    sqlstring = 'SELECT max(ordr) FROM introviews WHERE workspaceid="{0}"'.format(workspaceid)
    cur.execute(sqlstring)
    maxrank = 0
    dbrank = cur.fetchone()[0]
    if dbrank is not None:
        maxrank = dbrank


    sql = 'UPDATE introviews SET ordr={newrank} WHERE id="{id}"'.format(
        id=id,
        newrank=maxrank+1
    )
    cur.execute(sql)
    db.commit()
    db.close()

    return returndata
def response(returndata):

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    encodedstr = returndata['content']

    content = DQXbase64.b64decode_var2(encodedstr)

    baseFolder = config.SOURCEDATADIR + '/datasets'
    genomeFolder = os.path.join(baseFolder, databaseName, 'refgenome')
    settingsFile = os.path.join(genomeFolder, 'chromosomes')

    try:
        if not os.path.exists(genomeFolder):
            os.makedirs(genomeFolder)
        with open(settingsFile, 'w') as fp:
            fp.write(content)

    except Exception as e:
        returndata['Error'] = str(e)

    return returndata
Exemplo n.º 4
0
def response(returndata):

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    workspaceid = DQXDbTools.ToSafeIdentifier(returndata['workspaceid'])
    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    for char in ['.', ' ', ',', '/', '"', "'"]:
        workspaceid = workspaceid.replace(char, '_')
    returndata['workspaceid'] = workspaceid

    baseFolder = config.SOURCEDATADIR + '/datasets'

    try:
        dataFolder = os.path.join(baseFolder, databaseName)
        os.makedirs(os.path.join(dataFolder, 'workspaces', workspaceid))
        with open(
                os.path.join(dataFolder, 'workspaces', workspaceid,
                             'settings'), 'w') as fp:
            fp.write('Name: ' + workspaceid + '\n')

    except Exception as e:
        returndata['Error'] = 'Failed to create workspace: ' + str(e)

    return returndata
def response(returndata):

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    for char in ['.', ' ', ',', '/', '"', "'"]:
        databaseName = databaseName.replace(char, '_')
    returndata['database'] = databaseName

    baseFolder = config.SOURCEDATADIR + '/datasets'

    try:
        dataFolder = os.path.join(baseFolder, databaseName)
        if os.path.exists(dataFolder):
            returndata['Error'] = 'Dataset {0} already exists'.format(
                databaseName)
            return returndata
        os.makedirs(dataFolder)
        with open(os.path.join(dataFolder, 'settings'), 'w') as fp:
            fp.write('Name: {0}\n'.format(databaseName))
        os.makedirs(os.path.join(dataFolder, 'datatables'))
        os.makedirs(os.path.join(dataFolder, 'workspaces', 'workspace1'))
        with open(
                os.path.join(dataFolder, 'workspaces', 'workspace1',
                             'settings'), 'w') as fp:
            fp.write('Name: Workspace 1\n')

    except Exception as e:
        returndata['Error'] = 'Failed to create dataset: ' + str(e)

    return returndata
def response(returndata):

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    id = DQXDbTools.ToSafeIdentifier(returndata['id'])
    name ='No name'
    if 'name' in returndata:
        name = returndata['name']
    section = ''
    if 'section' in returndata:
        section = returndata['section']
    description = ''
    if 'description' in returndata:
        description = returndata['description']

    #Obtain the settings from storeddata
    credInfo = DQXDbTools.ParseCredentialInfo(returndata)
    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    db = DQXDbTools.OpenDatabase(credInfo, databaseName)
    credInfo.VerifyCanDo(DQXDbTools.DbOperationWrite(None, 'storedviews'))
    cur = db.cursor()


    sql = 'UPDATE introviews SET name="{name}", section="{section}", description="{description}" WHERE id="{id}"'.format(
        name=name,
        section=section,
        description=description,
        id=id
    )
    cur.execute(sql)
    db.commit()
    db.close()

    return returndata
Exemplo n.º 7
0
def response(returndata):

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    workspaceid = DQXDbTools.ToSafeIdentifier(returndata['workspaceid'])
    name = 'No name'
    if 'name' in returndata:
        name = returndata['name']
    section = ''
    if 'section' in returndata:
        section = returndata['section']
    description = ''
    if 'description' in returndata:
        description = returndata['description']
    url = returndata['url']
    storeid = DQXDbTools.ToSafeIdentifier(returndata['storeid'])
    viewstate = DQXDbTools.ToSafeIdentifier(returndata['viewstate'])

    #Obtain the settings from storeddata
    credInfo = DQXDbTools.ParseCredentialInfo(returndata)
    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    db = DQXDbTools.OpenDatabase(credInfo, databaseName)
    credInfo.VerifyCanDo(DQXDbTools.DbOperationWrite(None, 'storedviews'))
    cur = db.cursor()

    sqlstring = 'SELECT max(ordr) FROM introviews WHERE workspaceid="{0}"'.format(
        workspaceid)
    cur.execute(sqlstring)
    rank = 0
    dbrank = cur.fetchone()[0]
    if dbrank is not None:
        rank = dbrank + 1

    sql = 'INSERT INTO introviews VALUES (0, "{workspace}", "{name}", "{section}", "{description}", {rank}, "{url}", "{id}", "{state}")'.format(
        workspace=workspaceid,
        name=name,
        section=section,
        description=description,
        rank=rank,
        url=url,
        id=storeid,
        state=viewstate)
    cur.execute(sql)
    db.commit()
    db.close()

    return returndata
Exemplo n.º 8
0
def response(returndata):

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    id = DQXDbTools.ToSafeIdentifier(returndata['id'])

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)
    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    db = DQXDbTools.OpenDatabase(credInfo, databaseName)
    cur = db.cursor()

    sql = 'DELETE FROM introviews WHERE id={id}'.format(
        id=id
    )
    cur.execute(sql)
    db.commit()
    db.close()

    return returndata
def response(returndata):

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    fileid = DQXDbTools.ToSafeIdentifier(returndata['fileid'])

    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    baseFolder = config.SOURCEDATADIR + '/datasets'

    filename = os.path.join(config.BASEDIR, 'Uploads',
                            DQXDbTools.ToSafeIdentifier(fileid))
    destFolder = os.path.join(baseFolder, databaseName, 'refgenome')

    try:
        if not os.path.exists(destFolder):
            os.makedirs(destFolder)
        shutil.copyfile(filename, os.path.join(destFolder, 'annotation.gff'))

        settingsFileName = os.path.join(destFolder, 'settings')
        if not os.path.exists(settingsFileName):
            with open(settingsFileName, 'w') as fp:
                fp.write(
                    'AnnotMaxViewPortSize: 750000  # Maximum viewport (in bp) the genome browser can have in order to show the annotation track\n'
                )
                fp.write(
                    'RefSequenceSumm: No          # Include a summary track displaying the reference sequence\n'
                )

        chromFileName = os.path.join(destFolder, 'chromosomes')
        if not os.path.exists(chromFileName):
            with open(chromFileName, 'w') as fp:
                fp.write('chrom	length\n')
                fp.write('Chrom_01\t1.54\n')
                fp.write('Chrom_02\t0.85\n')

    except Exception as e:
        returndata['Error'] = str(e)

    os.remove(filename)

    return returndata
Exemplo n.º 10
0
def response(returndata):

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)

    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    tableid = DQXDbTools.ToSafeIdentifier(returndata['tableid'])
    fileid = DQXDbTools.ToSafeIdentifier(returndata['fileid'])

    authorization.VerifyIsDataSetManager(credInfo, databaseName)

    for char in ['.', ' ', ',', '/', '"', "'"]:
        tableid = tableid.replace(char, '_')

    if tableid in Utils.reservedTableNames:
        tableid += '_'

    baseFolder = config.SOURCEDATADIR + '/datasets'

    filename = os.path.join(config.BASEDIR, 'Uploads',
                            DQXDbTools.ToSafeIdentifier(fileid))
    destFolder = os.path.join(baseFolder, databaseName, 'datatables', tableid)

    try:
        if not os.path.exists(destFolder):
            os.makedirs(destFolder)
        shutil.copyfile(filename, os.path.join(destFolder, 'data'))

        dataFileName = os.path.join(destFolder, 'settings')
        if not os.path.exists(dataFileName):
            with open(dataFileName, 'w') as fp:
                fp.write(
                    'NameSingle: item\nNamePlural: items\nPrimKey: AutoKey\n\nAutoScanProperties: true\n'
                )

    except Exception as e:
        returndata['Error'] = str(e)

    os.remove(filename)

    returndata['tableid'] = tableid
    return returndata
Exemplo n.º 11
0
def response(returndata):

    credInfo = DQXDbTools.ParseCredentialInfo(returndata)

    sourcetype = DQXDbTools.ToSafeIdentifier(returndata['sourcetype'])
    databaseName = DQXDbTools.ToSafeIdentifier(returndata['database'])
    workspaceid = DQXDbTools.ToSafeIdentifier(returndata['workspaceid'])
    tableid = DQXDbTools.ToSafeIdentifier(returndata['tableid'])
    sourceid = DQXDbTools.ToSafeIdentifier(returndata['sourceid'])

    baseFolder = config.SOURCEDATADIR + '/datasets'

    calculationObject = asyncresponder.CalculationThread(
        '', None, {'isRunningLocal': 'True'}, '')

    dataFolder = None
    if sourcetype == 'dataset':
        dataFolder = os.path.join(baseFolder, databaseName)
        authorization.VerifyIsDataSetManager(credInfo, databaseName)
        ImpUtils.ExecuteSQL(calculationObject, config.DB,
                            'DROP DATABASE IF EXISTS {0}'.format(databaseName))
        ImpUtils.ExecuteSQL(
            calculationObject, config.DB,
            'DELETE FROM datasetindex WHERE id="{0}"'.format(databaseName))

    if sourcetype == 'datatable':
        dataFolder = os.path.join(baseFolder, databaseName, 'datatables',
                                  tableid)
        authorization.VerifyIsDataSetManager(credInfo, databaseName)
        ImpUtils.ExecuteSQL(calculationObject, databaseName,
                            'DROP TABLE IF EXISTS {0}'.format(tableid))
        ImpUtils.ExecuteSQL(
            calculationObject, databaseName,
            'DELETE FROM tablecatalog WHERE id="{0}"'.format(tableid))
        ImpUtils.ExecuteSQL(
            calculationObject, databaseName,
            'DELETE FROM propertycatalog WHERE tableid="{0}"'.format(tableid))
        ImpUtils.ExecuteSQL(
            calculationObject, databaseName,
            'DELETE FROM summaryvalues WHERE tableid="{0}"'.format(tableid))

    if sourcetype == 'workspace':
        dataFolder = os.path.join(baseFolder, databaseName, 'workspaces',
                                  workspaceid)
        credInfo.VerifyCanDo(
            DQXDbTools.DbOperationWrite(databaseName, 'workspaces'))

    if sourcetype == 'customdata':
        dataFolder = os.path.join(baseFolder, databaseName, 'workspaces',
                                  workspaceid, 'customdata', tableid, sourceid)
        credInfo.VerifyCanDo(
            DQXDbTools.DbOperationWrite(databaseName, 'workspaces'))

    if dataFolder is None:
        returndata['Error'] = 'Invalid file source type'
        return returndata

    try:
        shutil.rmtree(dataFolder)

    except Exception as e:
        returndata['Error'] = 'Failed to delete data: ' + str(e)

    return returndata