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
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
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
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
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
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
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