Пример #1
0
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()
Пример #2
0
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
Пример #3
0
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
Пример #4
0
 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"
Пример #5
0
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.")
Пример #6
0
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
Пример #7
0
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.")
Пример #8
0
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
Пример #9
0
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()
Пример #10
0
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()
Пример #11
0
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()
Пример #12
0
    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
Пример #13
0
 def __getattr__(self, name):
     global _session
     if isinstance(_session, _Session_builder):
         _session = models.get_session()
     return getattr(_session, name)
Пример #14
0
 def __init__(self, basedir):
     self._basedir = basedir
     self._dbsession = models.get_session()
     self._writer = None
Пример #15
0
def get_config():
    session = models.get_session()
    root = get_root(session)
    return Container(session, root)
Пример #16
0
def get_config():
    session = models.get_session()
    root = get_root(session)
    return Container(session, root)
Пример #17
0
 def startDocument(self):
     self.session = models.get_session()
Пример #18
0
 def __init__(self, basedir):
     self._basedir = basedir
     self._dbsession = models.get_session()
     self._writer = None
Пример #19
0
 def __getattr__(self, name):
     global _session
     if isinstance(_session, _Session_builder):
         _session = models.get_session()
     return getattr(_session, name)
Пример #20
0
 def startDocument(self):
     self.session = models.get_session()
Пример #21
0
            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()