def dbconfig(argv): """dbconfig [-?D] Options: -? = This help text. -D = Debug on. """ global _session from pycopia import getopt try: optlist, longopts, args = getopt.getopt(argv[1:], "?") except getopt.GetoptError: print (dbconfig.__doc__) return for opt, val in optlist: if opt == "-?": print (dbconfig.__doc__) return if opt == "-D": from pycopia import autodebug io = CLI.ConsoleIO() ui = CLI.UserInterface(io) cmd = ConfigCommands(ui) _session = models.get_session() root = get_root(_session) cmd._setup(root, "%%Ydbconfig%%N:%s> " % (root.name,)) cmd._environ["session"] = _session parser = CLI.CommandParser(cmd, historyfile=os.path.expandvars("$HOME/.hist_dbconfig")) parser.interact()
def get_config(_extrafiles=None, initdict=None, session=None, **kwargs): """get_config([extrafiles], [initdict=], [**kwargs]) Returns a RootContainer instance containing configuration parameters. An extra dictionary may be merged in with the 'initdict' parameter. And finally, extra options may be added with keyword parameters when calling this. """ files = [] files.append(os.path.join(os.environ["HOME"], ".pycopiarc")) if type(_extrafiles) is str: _extrafiles = [_extrafiles] if _extrafiles: files.extend(_extrafiles) session = session or models.get_session() rootnode = config.get_root(session) cache = dictlib.AttrDict() flags = dictlib.AttrDict() # copy flag values to cache so changes don't persist. flagsnode = session.query(Config).filter(and_(Config.parent_id==rootnode.id, Config.name=="flags")).one() for valnode in flagsnode.children: flags[valnode.name] = valnode.value cache.flags = flags cf = RootContainer(session, rootnode, cache) for f in files: if os.path.isfile(f): cf.mergefile(f) if type(initdict) is dict: cf.evalupdate(initdict) cf.update(kwargs) controller.initialize(cf) return cf
def get_config(_extrafiles=None, initdict=None, session=None, **kwargs): """get_config([extrafiles], [initdict=], [**kwargs]) Returns a RootContainer instance containing configuration parameters. An extra dictionary may be merged in with the 'initdict' parameter. And finally, extra options may be added with keyword parameters when calling this. """ files = [] files.append(os.path.join(os.environ["HOME"], ".pycopiarc")) if type(_extrafiles) is str: _extrafiles = [_extrafiles] if _extrafiles: files.extend(_extrafiles) session = session or models.get_session() rootnode = config.get_root(session) cache = dictlib.AttrDict() flags = dictlib.AttrDict() # copy flag values to cache so changes don't persist. flagsnode = session.query(Config).filter( and_(Config.parent_id == rootnode.id, Config.name == "flags")).one() for valnode in flagsnode.children: flags[valnode.name] = valnode.value cache.flags = flags cf = RootContainer(session, rootnode, cache) for f in files: if os.path.isfile(f): cf.mergefile(f) if type(initdict) is dict: cf.evalupdate(initdict) cf.update(kwargs) controller.initialize(cf) return cf
def __init__(self, testrunner): self.runner = testrunner self.dbsession = models.get_session() cf = self.runner.config cf.flags.DEBUG = 0 cf.flags.VERBOSE = 0 cf.flags.INTERACTIVE = False cf.userinterfacetype = "none"
def topomap(argv): verbose = True try: dotout = argv[1] # XXX except IndexError: dotout = "/tmp/eqgraph.dot" try: outfilename = argv[2] # XXX except IndexError: outfilename = "/var/tmp/eqgraph.svg" sess = models.get_session() builder = MapBuilder(sess) try: builder.topology_all(outfilename, dotout) finally: sess.close() if verbose: print(outfilename, "written.")
def get_test_jobs(args): dbsession = models.get_session() TJ = models.TestJob for jobid in args: try: jobid = int(jobid) except ValueError: pass try: if type(jobid) is int: testjob = dbsession.query(TJ).get(jobid) else: testjob = dbsession.query(TJ).filter(TJ.name==jobid).one() except models.NoResultFound: logging.warn("No TestJob with id %r" % jobid) continue else: yield testjob
def get_test_jobs(args): dbsession = models.get_session() TJ = models.TestJob for jobid in args: try: jobid = int(jobid) except ValueError: pass try: if type(jobid) is int: testjob = dbsession.query(TJ).get(jobid) else: testjob = dbsession.query(TJ).filter(TJ.name == jobid).one() except models.NoResultFound: logging.warn("No TestJob with id %r" % jobid) continue else: yield testjob
def main(argv): """dbedit [-d] """ debug = 0 try: optlist, longopts, args = getopt.getopt(argv[1:], "?hdD") except getopt.GetoptError: print(main.__doc__) return for opt, val in optlist: if opt in ("-?", "-h"): print(main.__doc__) return elif opt == "-d": debug += 1 elif opt == "-D": from pycopia import autodebug sess = models.get_session() try: app = DBEditor(sess, debug) try: app.run() except: if debug: ex, val, tb = sys.exc_info() from pycopia import debugger if debug > 1: from pycopia import IOurxvt io = IOurxvt.UrxvtIO() else: io = None debugger.post_mortem(tb, ex, val, io) if debug > 1: io.close() else: raise finally: sess.close()
def main(argv): """dbedit [-d] """ debug = 0 try: optlist, longopts, args = getopt.getopt(argv[1:], "?hdD") except getopt.GetoptError: print (main.__doc__) return for opt, val in optlist: if opt in ("-?", "-h"): print (main.__doc__) return elif opt == "-d": debug += 1 elif opt == "-D": from pycopia import autodebug sess = models.get_session() try: app = DBEditor(sess, debug) try: app.run() except: if debug: ex, val, tb = sys.exc_info() from pycopia import debugger if debug > 1: from pycopia import IOurxvt io = IOurxvt.UrxvtIO() else: io = None debugger.post_mortem(tb, ex, val, io) if debug > 1: io.close() else: raise finally: sess.close()
def dbcli(argv): """dbcli [-?] Provides an interactive session to the database. Options: -? = This help text. """ global _session from pycopia import getopt try: optlist, longopts, args = getopt.getopt(argv[1:], "?") except getopt.GetoptError: print (dbcli.__doc__) return for opt, val in optlist: if opt == "-?": print (dbcli.__doc__) return io = CLI.ConsoleIO() ui = CLI.UserInterface(io) cmd = DBSessionCommands(ui) _session = models.get_session() cmd._setup(_session, "db> ") cmd._environ["session"] = _session parser = CLI.CommandParser(cmd, historyfile=os.path.expandvars("$HOME/.hist_dbcli")) if args: for arg in args: try: parser.parse(arg) except KeyboardInterrupt: break else: parser.interact()
def __call__(self, argv): global _DEBUG, _FORCE, _dbsession, debugger domodule = False opts, longopts, args = getopt.getopt(argv[1:], "h?dMf") for opt, arg in opts: if opt in ("-h", "-?"): print (_DOC) return elif opt == "-d": from pycopia import debugger _DEBUG = True elif opt == "-f": _FORCE = True elif opt == "-M": domodule = True if not args: print (_DOC) return # Look like a test runner. self.config = config.get_config() _dbsession = models.get_session() self.config.options_override = longopts self.config.arguments = [] self.config.username = os.environ["USER"] try: if domodule: for arg in args: self.import_module(arg) else: for arg in args: self.import_package(arg) finally: _dbsession.close() _dbsession = None
def __getattr__(self, name): global _session if isinstance(_session, _Session_builder): _session = models.get_session() return getattr(_session, name)
def __init__(self, basedir): self._basedir = basedir self._dbsession = models.get_session() self._writer = None
def get_config(): session = models.get_session() root = get_root(session) return Container(session, root)
def startDocument(self): self.session = models.get_session()
form = resp.add_form(action=request.get_url(edit, tablename=tablename, rowid=rowid)) webhelpers.build_edit_form(form, klass, dbrow, err) return resp.finalize() else: return framework.HttpResponseRedirect(request.get_url(listtable, tablename=tablename)) edit = auth.need_login(webhelpers.setup_dbsession(EditRequestHandler(doc_constructor))) if __name__ == "__main__": # test db instance serialization from pycopia import autodebug disp = json.JSONDispatcher([query]) disp.register_encoder("models", _modelchecker, _convert_instance) sess = models.get_session() with webhelpers.GlobalDatabaseContext(sess): #rows = query("Equipment", {"active":True}, ["name", "model", "serno"], None, 0, 5) #for rowobj in rows: # #print rowobj # jse = disp._encoder.encode(rowobj) # print jse md = get_table_metadata("TestCase") print(md) json = disp._encoder.encode(md) print json print type(json) print len(json) sess.close()