def txs_session(prog=None, sa=None, opts=None, settings=None): # default SA session dbref = opts.dbref if opts.init: log.debug("Initializing SQLAlchemy session for %s", dbref) sa = SessionMixin.get_session('default', opts.dbref, opts.init) # Host hostnamestr = current_hostname(opts.init, opts.interactive) if opts.init: hostname = hostname_find([hostnamestr], sa) assert not hostname or not isinstance(hostname, (tuple, list)), hostname if not hostname: log.note("New Name: %s", hostnamestr) hostname = Name( name=hostnamestr, date_added=datetime.now()) hostname.commit() else: log.warn("Name exists: %s", hostname) assert hostname host = host_find([hostname], sa) if not host: log.note("New Host: %s", hostnamestr) host = Host( hostname=hostname, date_added=datetime.now()) host.commit() else: log.warn("Host exists: %s", host) assert host else: host, name = sa.query(Host, Name)\ .join('hostname')\ .filter(Name.name == hostnamestr).one() if not host: log.crit("Could not get host") urlresolver = LocalPathResolver(host, sa) log.info("On %s", host) yield Keywords(sa=sa, ur=urlresolver)