class CollabRequest(object): def __init__(self, collab=None, user=None, backend=backend): farmconf = backend.config.get("collab", "farmconf") self.farmconfdir = os.path.dirname(farmconf) self.request = None if collab: self.confdir = os.path.join(backend.wikidir, collab, "config") else: baseinstancedir = backend.config.get("collab", "baseinstancedir") self.confdir = os.path.join(baseinstancedir, "config") if not os.path.isdir(self.confdir): raise OSError(errno.ENOENT, "No such directory: " + self.confdir) if user: self.user = user else: self.user = pwd.getpwuid(posix.getuid())[0] sys.path.insert(0, self.confdir) multiconfig._url_re_cache = None multiconfig._farmconfig_mtime = None multiconfig._config_cache = {} import farmconfig reload(farmconfig) self.request = RequestCLI("FrontPage", parse=False) self.request.user = self.getUser(self.user) def __del__(self): self.close() def __enter__(self): return self def __exit__(self, type, value, traceback): self.close() def close(self): if self.request: self.request.finish() self.request = None if sys.path: if self.confdir in sys.path: sys.path.remove(self.confdir) if self.farmconfdir in sys.path: sys.path.remove(self.farmconfdir) def validUser(self, user): return getUserId(self.request, user) != None def getUser(self, user): return User(self.request, auth_username=user)
def __init__(self, collab=None, user=None, backend=backend): farmconf = backend.config.get("collab", "farmconf") self.farmconfdir = os.path.dirname(farmconf) self.request = None if collab: self.confdir = os.path.join(backend.wikidir, collab, "config") else: baseinstancedir = backend.config.get("collab", "baseinstancedir") self.confdir = os.path.join(baseinstancedir, "config") if not os.path.isdir(self.confdir): raise OSError(errno.ENOENT, "No such directory: " + self.confdir) if user: self.user = user else: self.user = pwd.getpwuid(posix.getuid())[0] sys.path.insert(0, self.confdir) multiconfig._url_re_cache = None multiconfig._farmconfig_mtime = None multiconfig._config_cache = {} import farmconfig reload(farmconfig) self.request = RequestCLI("FrontPage", parse=False) self.request.user = self.getUser(self.user)
def test(): dbname = os.getenv("USER") + "dev-standalone" from graphingwiki import RequestCLI req = RequestCLI() gd = GraphData(req, dbname) if 0: test_inlink(gd) if 0: test_category(gd) print "get_in(FrontPage) ->", gd.get_in(u"FrontPage") print "get_out(FrontPage) ->", gd.get_out(u"FrontPage") if 0: print "FrontPage in pagenames() ->", u"FrontPage" in gd.pagenames() if 0: print 'db dump:' pagelist = gd.pagenames() pagelist.sort() for pn in pagelist: o = gd.get_out(pn) i = gd.get_in(pn) m = gd.get_meta(pn) if not (i or o): continue print pn if o: print ' outgoing links:' for key, link in sorted(o.items()): print ' ' * 4, key, '->', link if i: print ' incoming links:' for key, link in sorted(i.items()): print ' ' * 4, key, '<-[' + link + ']', pn if m: print ' metas:' for key, link in sorted(m.items()): print ' ' * 4, key, '->', link print