Користувач:Pavlo Shevelo/Forge
Зовнішній вигляд
Пайтон
[ред.]Hello, world
[ред.]<python> >>> a = range(1,10000000) >>> del a
class c:
def p(self, x): print x
def fun(x):
print x
>>> fun("Hello, %s" % c().p("world")) </python>
Контролер TurboGears навігатора LDAP каталогів
[ред.]<python> import logging
import cherrypy
import turbogears from turbogears import controllers, expose, validate, redirect
from ldapnav import json
import ldap
log = logging.getLogger("ldapnav.controllers")
class Root(controllers.RootController):
"""Контролер для навігатора LDAP каталогів """ login_dn = "domain\\user" login_pw = 'password' host = "192.168.1.6"
def __connect(self): l = ldap.open(self.host) l.simple_bind_s(self.login_dn, self.login_pw) return l
def __disconnect(self, conn): conn.unbind()
@expose(template="ldapnav.templates.index") def index(self): return self.go()
@expose(template="ldapnav.templates.index") def go(self, entry="OU=Unit, DC=company, DC=com"):
def stackLinks(prevLink, remPath): """Builds a list of linkName,linkHref tuples corresponding to the elements in the path tree. """ ## Рекурсивно проходить весь список if len(remPath)>1: item = remPath.pop() currentName = (item.split('=',2))[1] item = remPath.pop() currentName = (item.split('=',2))[1] currentLink = item + prevLink return (currentName, currentLink + stackLinks(',' + currentLink, remPath)) else: item = remPath.pop() currentName = (item.split('=',2))[1] currentLink = item + prevLink return currentName, currentLink pass
conn = self.__connect() res = conn.search_s(entry, ldap.SCOPE_ONELEVEL, "objectclass=*",) current = (conn.search_s(entry, ldap.SCOPE_BASE, "objectclass=*",))[0] self.__disconnect(conn)
pathToCurrent = ldap.explode_dn(current[0]) pathToCurrentLinks = stackLinks(, pathToCurrent)
return dict(entries=res, currentDN=current, pathDN=pathToCurrentLinks)
</python>