Пример #1
0
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)
Пример #2
0
    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)
Пример #3
0
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