コード例 #1
0
ファイル: PyGlassModelUtils.py プロジェクト: hannahp/PyGlass
    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)
コード例 #2
0
    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()
コード例 #3
0
ファイル: CadenceMainWindow.py プロジェクト: sernst/Cadence
    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()
コード例 #4
0
ファイル: PyGlassModelUtils.py プロジェクト: sernst/PyGlass
    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
コード例 #5
0
    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')
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
0
ファイル: PyGlassWindow.py プロジェクト: hannahp/PyGlass
    def initialize(self, *args, **kwargs):
        if AlembicUtils.hasAlembic:
            self.pyGlassApplication.updateSplashScreen('Conforming internal data')
            AlembicUtils.upgradeAppDatabases(self.appID)

        self._initializeImpl(*args, **kwargs)
コード例 #9
0
ファイル: AnalyzerBase.py プロジェクト: sernst/Cadence
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: