def main(self, args=None): self.progPath = os.path.join(os.getcwd(), sys.argv[0]) self.otherKeys = self.otherKeys # pick up class level value self.parseArgs(args) modelName = self.args.get('model') if not modelName: classesName = self.args.get('classes') if not classesName: self.usage('No model or classes file specified.') outDir = self.args.get('outDir', os.curdir) self.requireDir(outDir) outDir = os.path.join(outDir, 'GeneratedDocs') self.requireDir(outDir) self.outDir = outDir from MiddleKit.Core.Model import Model if modelName: self.model = Model(modelName, havePythonClasses=False) else: self.model = Model(classesFilename=classesName, havePythonClasses=False) source = os.path.join(os.path.dirname(self.progPath), self.sourceStyleSheetFilename) dest = os.path.join(outDir, self.destStyleSheetFilename) shutil.copyfile(source, dest) #self.dump() self.generateHTML()
def test(modelFilename, workDir=workDir, toTestDir='../'): """ modelFilename: the correct filename to the existing model workDir: the directory to remove and create and then put the generated files in toTestDir: a relative path to get from inside the workDir back to the MiddleKit/Tests dir In most cases, the defaults for workDir and toTestDir are sufficient. In funkalicious cases, like the MKMultipleStores test, overriding these defaults comes in handy. """ rmdir(workDir) # get rid of files from previous runs os.mkdir(workDir) # make a space for the files from this run # Run generate, load the model, and import some classes Generate().main('Generate.py --outdir %s --db MySQL --model %s' % (workDir, modelFilename)) curDir = os.getcwd() os.chdir(workDir) try: model = Model(toTestDir+modelFilename) importPyClasses(model.klasses()) return model finally: os.chdir(curDir)
def makeModel(self): """ Constructs and returns a MiddleKit model for use with UserKit. """ from MiddleKit.Core.Model import Model from MiddleKit.Core.Klasses import Klasses from MiddleKit.Core.Klass import Klass from MiddleKit.Core.StringAttr import StringAttr klass = Klass() klass.readDict({'Class': 'UserForMKTest'}) klass.addAttr( StringAttr({ 'Name': 'name', 'Type': 'string', 'isRequired': 1, })) klass.addAttr( StringAttr({ 'Name': 'password', 'Type': 'string', 'isRequired': 1, })) klass.addAttr( StringAttr({ 'Name': 'externalId', 'Type': 'string', 'isRequired': 0, })) model = Model() model.setName(self.__class__.__name__) model.readParents([]) klasses = model.klasses() klasses.addKlass(klass) model.awakeFromRead( ) # @@ 2001-02-17 ce: a little weird regarding name return model
def test(modelFilename, configFilename, workDir=workDir, toTestDir='../'): """Test method. modelFilename: the correct filename to the existing model workDir: the directory to remove and create and then put the generated files in toTestDir: a relative path to get from inside the workDir back to the MiddleKit/Tests dir In most cases, the defaults for workDir and toTestDir are sufficient. In funkalicious cases, like the MKMultipleStores test, overriding these defaults comes in handy. """ rmdir(workDir) # get rid of files from previous runs os.mkdir(workDir) # make a space for the files from this run # Run generate, load the model, and import some classes command = os.path.normpath('../Design/Generate.py') command += ' --outdir %s --db %s --model %s' % (workDir, dbName, modelFilename) if configFilename: command += ' --config ' + configFilename print(command) Generate().main(command) curDir = os.getcwd() os.chdir(workDir) try: if 0: print('getcwd:', os.getcwd()) print('listdir:', os.listdir('.')) print('model path:', repr(toTestDir + modelFilename)) print('sys.path', sys.path) model = Model(toTestDir + modelFilename, configFilename=configFilename) importPyClasses(model.klasses()) return model finally: os.chdir(curDir)