def modelsInit(cls, initPath, initName): out = dict() zipIndex = initPath[0].find(PyGlassModelUtils._ZIP_FIND) if zipIndex == -1: moduleList = os.listdir(initPath[0]) else: splitIndex = zipIndex+len(PyGlassModelUtils._ZIP_FIND) zipPath = initPath[0][:splitIndex-1] modulePath = initPath[0][splitIndex:] z = zipfile.ZipFile(zipPath) moduleList = [] for item in z.namelist(): item = os.sep.join(item.split('/')) if item.startswith(modulePath): moduleList.append(item.rsplit(os.sep, 1)[-1]) items = [] for module in moduleList: if module.startswith('__init__.py') or module.find('_') == -1: continue parts = module.rsplit('.', 1) parts[0] = parts[0].rsplit(os.sep, 1)[-1] if not parts[-1].startswith('py') or parts[0] in items: continue items.append(parts[0]) m = None n = None r = None c = None try: n = module.rsplit('.', 1)[0] m = initName + '.' + n r = __import__(m, locals(), globals(), [n]) c = getattr(r, n) out[n] = c if not c.__table__.exists(c.ENGINE): c.__table__.create(c.ENGINE, True) from pyglass.alembic.AlembicUtils import AlembicUtils if AlembicUtils.hasAlembic: AlembicUtils.stampDatabase(c.DATABASE_URL) cls._logger.write( u'CREATED: ' + unicode(c) + u' ' + unicode(c.__table__) + u' [STAMPED head]' ) except Exception, err: cls._logger.writeError([ u'MODEL INITIALIZATION FAILURE:', u'INIT PATH: ' + unicode(initPath), u'INIT NAME: ' + unicode(initName), u'MODULE IMPORT: ' + unicode(m), u'IMPORT CLASS: ' + unicode(n), u'IMPORT RESULT: ' + unicode(r), u'CLASS RESULT: ' + unicode(c) ], err)
def _handleInitializeAllDatabases(self): self.mainWindow.showLoading(self) self.refreshGui() AlembicUtils.initializeAppDatabases( appName=self.currentAppItem.text(), resourcesPath=self.currentAppResourcesPath, localResourcesPath=self.currentLocalAppResourcesPath) self.mainWindow.hideLoading(self) self.refreshGui()
def _initializeImpl(self, *args, **kwargs): # Initialize databases import cadence.models.tracks as tracks headRevision = AlembicUtils.getHeadDatabaseRevision(databaseUrl=tracks.DATABASE_URL) myRevision = AlembicUtils.getCurrentDatabaseRevision(databaseUrl=tracks.DATABASE_URL) print('[TRACKS]: %s [HEAD %s]' % (myRevision, headRevision)) import cadence.models.analysis as analysis headRevision = AlembicUtils.getHeadDatabaseRevision(databaseUrl=analysis.DATABASE_URL) myRevision = AlembicUtils.getCurrentDatabaseRevision(databaseUrl=analysis.DATABASE_URL) print('[ANALYSIS]: %s [HEAD %s]' % (myRevision, headRevision)) super(CadenceMainWindow, self)._initializeImpl()
def upgradeDatabase(cls, databaseUrl): """upgradeDatabase doc...""" from pyglass.alembic.AlembicUtils import AlembicUtils if not AlembicUtils.hasAlembic: return False AlembicUtils.upgradeDatabase( databaseUrl=databaseUrl, resourcesPath=PyGlassEnvironment.getRootResourcePath(isDir=True), localResourcesPath=PyGlassEnvironment.getRootLocalResourcePath(isDir=True), ) return True
def _handleCreate(self): self.mainWindow.showLoading(self) self.refreshGui() mainWidget = self.mainWindow.getWidgetFromID('main') AlembicUtils.createRevision( databaseUrl=mainWidget.currentDatabaseUrl, message=self.migrationTitle, resourcesPath=mainWidget.currentAppResourcesPath, localResourcesPath=mainWidget.currentLocalAppResourcesPath, info=self.migrationInfo) PyGlassBasicDialogManager.openOk( parent=self, header='New Revision Created', message='New migration revision file has been created.') self.mainWindow.hideLoading(self) mainWidget.refresh() self.mainWindow.setActiveWidget('main')
def _handleInitializeDatabase(self): self.mainWindow.showLoading(self) self.refreshGui() if AlembicUtils.initializeDatabase( databaseUrl=self.currentDatabaseUrl, resourcesPath=self.currentAppResourcesPath, localResourcesPath=self.currentLocalAppResourcesPath): PyGlassBasicDialogManager.openOk( self, 'Initialization Complete', 'Alembic migration environment created.') else: PyGlassBasicDialogManager.openOk( self, 'Initialization Aborted', 'Alembic migration already exists.') self.mainWindow.hideLoading(self)
def _refreshDatabaseDisplay(self): w = self.revisionsListWidget w.clear() if self.databasesListWidget.count() == 0: w.setEnabled(False) self.createRevisionBtn.setEnabled(False) self.initializeBtn.setEnabled(False) return else: w.setEnabled(True) self.createRevisionBtn.setEnabled(True) self.initializeBtn.setEnabled(True) revisions = AlembicUtils.getRevisionList( databaseUrl=self.currentDatabaseUrl, resourcesPath=self.currentAppResourcesPath) for rev in revisions: name = StringUtils.toText(rev.revision) + (' (HEAD)' if rev.is_head else '') DataListWidgetItem(name, w, data=rev)
def initialize(self, *args, **kwargs): if AlembicUtils.hasAlembic: self.pyGlassApplication.updateSplashScreen('Conforming internal data') AlembicUtils.upgradeAppDatabases(self.appID) self._initializeImpl(*args, **kwargs)
import sqlalchemy as sqla from pyaid.config.ConfigsDict import ConfigsDict from pyaid.debug.Logger import Logger from pyaid.file.FileUtils import FileUtils from pyaid.string.StringUtils import StringUtils from pyaid.system.SystemUtils import SystemUtils from pyaid.time.TimeUtils import TimeUtils from pyglass.alembic.AlembicUtils import AlembicUtils from pyglass.app.PyGlassEnvironment import PyGlassEnvironment from cadence.analysis.shared import DataLoadUtils PyGlassEnvironment.initializeFromInternalPath(__file__) import cadence.models.tracks as tracks headRevision = AlembicUtils.getHeadDatabaseRevision(databaseUrl=tracks.DATABASE_URL) myRevision = AlembicUtils.getCurrentDatabaseRevision(databaseUrl=tracks.DATABASE_URL) tracksStamp = '[TRACKS]: %s [HEAD %s]' % (myRevision, headRevision) import cadence.models.analysis as analysis headRevision = AlembicUtils.getHeadDatabaseRevision(databaseUrl=analysis.DATABASE_URL) myRevision = AlembicUtils.getCurrentDatabaseRevision(databaseUrl=analysis.DATABASE_URL) analysisStamp = '[ANALYSIS]: %s [HEAD %s]' % (myRevision, headRevision) from cadence.models.tracks.Tracks_SiteMap import Tracks_SiteMap from cadence.models.analysis.Analysis_Sitemap import Analysis_Sitemap try: # TODO: Working with Matplotlib in Virtual environments' in the Matplotlib FAQ from matplotlib import pyplot as plt except Exception as err: