import os, sys from MiddleKit.Run.MySQLObjectStore import MySQLObjectStore from SitePage import SitePage class StorePage(SitePage): ## Init ## def __init__(self): SitePage.__init__(self) self._store = None ## Access ## def modelFilename(self): req = self.request() filename = req.field('modelFilename', None) if filename: self.response().setCookie('modelFilename', filename) else: filename = req.cookie('modelFilename', None) return filename def store(self): if not self._store: self.saveFieldsToCookies() modelFilename = self.modelFilename() # MK will need access to the Python classes for the model. # We expect to find them with the actual model file, # so we update sys.path appropriately: extraDir = os.path.dirname(modelFilename) # We need the parent directory of the model package: extraDir = os.path.dirname(extraDir) if extraDir not in sys.path: sys.path.insert(1, extraDir) req = self.request() self._store = MySQLObjectStore(host=req.value('host'), user=req.value('user'), passwd=req.value('password')) self._store.readModelFileNamed(modelFilename) self._store.connect() recentModels = self.request().cookie('recentModels', []) if recentModels: recentModels = recentModels.split(';') if modelFilename not in recentModels: recentModels.append(modelFilename) recentModels = ';'.join(recentModels) self.response().setCookie('recentModels', ';'.join(recentModels)) return self._store ## Writing page parts ## def writeTopBar(self): names = os.path.split(self.modelFilename()) self.writeln('

SELECT' ' %s - %s

' % (names[1], names[0])) req = self.request() self.writeln('

SELECT' ' db=%s, host=%s, user=%s

' % (req.value('database'), req.value('host'), req.value('user'))) def writeSideBar(self): self.writeKlasses() def writeKlasses(self): # @@ 2000-11-27 ce: move this to MixIns??? curClassName = self.request().field('class', None) klasses = self.store().model().klasses() names = klasses.keys() names.sort() modelFilename = self.urlEncode(self.modelFilename()) for name in names: urlName = self.urlEncode(name) if name == curClassName: style = 'CurClassLink' else: style = 'ClassLink' self.writeln('

' '%s

' % (name, style, urlName)) def writeContent(self): self.writeln('

Woops. Forgot to override writeContent().

')