コード例 #1
0
ファイル: cli.py プロジェクト: tijmengit/pycopia
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
ファイル: config.py プロジェクト: bharathi26/pycopia
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
ファイル: config.py プロジェクト: wildone/pycopia
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
ファイル: suiterunner.py プロジェクト: tijmengit/pycopia
 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
ファイル: equipment.py プロジェクト: bharathi26/pycopia
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
ファイル: jobrunner.py プロジェクト: bharathi26/pycopia
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
ファイル: equipment.py プロジェクト: tijmengit/pycopia
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
ファイル: jobrunner.py プロジェクト: tinkone/pycopia
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
ファイル: main.py プロジェクト: bharathi26/pycopia
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
ファイル: cli.py プロジェクト: tijmengit/pycopia
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
ファイル: testcases.py プロジェクト: wildone/pycopia
    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
ファイル: db.py プロジェクト: bharathi26/pycopia
 def __getattr__(self, name):
     global _session
     if isinstance(_session, _Session_builder):
         _session = models.get_session()
     return getattr(_session, name)
コード例 #14
0
ファイル: tests.py プロジェクト: bharathi26/pycopia
 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
ファイル: config.py プロジェクト: bharathi26/pycopia
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
ファイル: nmap.py プロジェクト: bharathi26/pycopia
 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()