Tipps
Installation von Python Packages
Python-Erweiterungsmodule, Programmbibliotheken und sonstige Python-Packages sind in der Regel über den Python Package Index (pypi) erhältlich und können auf einfache Weise mit easy_install installiert werden.
- Voraussetzung: Installation der setuptools
ez_setup.py herunterladen und mit Python aufrufen:
python ez_setup.py
Anschließend können neue Packages durch easy_install <package name> installiert werden, z.B.:
easy_install zope.interface
Unter Window muss in der Regel der volle Pfad zum Python-Interpreter bzw. zum easy_install Script angegeben werden, also z.B.:
c:\Python2.7\python ez_setup.py c:\Python2.7\scripts\easy_install ...
Twisted
- Start von Prozessen im Betriebssystem
- Die Funktionen der Python-Standard-Library (s. popen & Co) blockieren den Twisted-Prozess. Darum sollte hier unbedingt reactor.spawnProcess() verwendet werden, s. APIDoc spawnProcess
- Zugriff auf SQL-Datenbanken
- Auch hier gilt: Die Standard-Funktionen blockieren den Twisted-Prozess; darum gibt es twisted.enterprise.adbapi, arbeitet mit allen Python-dbapi-kompatiblen Datenbanken zusammen
Nevow
Abfrage von Formular-Variablen aus einem Page Objekt
from nevow.inevow import IRequest
...
class ...(Page):
def data_...(self, context, data):
form = IRequest(context).args
...
option-Liste für ein select-Tag (Dropdown) mit selektiertem Eintrag
Formulierung im HTML-Template:
<select name="operator"
nevow:data="operators"
nevow:render="sequence">
<option nevow:pattern="item"
nevow:render="option" />
</select>
Renderer im Python-Modul:
def render_option(self, context, data):
tag = context.tag(value=data['value'])[data['text']]
if data['selected']:
return tag(selected='')
return tag
BlueBream
Aktivierung Management Interface
Einfügen in configure.zcml der Site (z. B. tc/main):
<include package="zope.app.zcmlfiles" />
Einfügen in securitypolicy.zcml:
<grant permission="zope.dublincore.view" role="zope.Manager" />
Benutzerverwaltung
- Zugänglich über: http://localhost:8080/++etc++site/default/@@contents.html
- Dort eine "Austauschbare Authentifizierungs-Utility" anlegen und registrieren
- Darin hinzufügen
- Ordner über Nutzungsberechtigten ("users")
- Gruppenordner ("groups")
- In der Konfiguration der Authentication Utility beide neuen "Plugins für Authentifizierung" aktivieren; außerdem unter "Plugins zum Sich-Ausweisen" die "Session Credentials (Utility)" aktivieren
- Berechtigungen können in einem Folder über den Link "Zugriffsrechte" an Gruppen oder einzelne User vergeben werden
- Wichtig!
- Wenn die "Session Credentials (Utility)" aktiviert wird, unbedingt einen User admin anlegen und diesem im root Folder die "Site Manager" Rolle geben, sonst ist die Site nicht mehr zugänglich.
Beispiel für Anlegen von Benutzern im Programmcode:
from zope.app.authentication.principalfolder import InternalPrincipal
from zope.app.security.interfaces import IAuthentication, PrincipalLookupError
from zope import component
def createUser(context, userId, password, title, groupName,
principalFolderName='users', groupsFolderName='groups',):
pau = component.getUtility(IAuthentication, context=context)
for name, plugin in pau.getAuthenticatorPlugins():
if name == principalFolderName:
principalFolder = plugin
elif name == groupsFolderName:
groupsFolder = plugin
principal = InternalPrincipal(userId, password, title)
principalFolder[userId] = principal
group = groupsFolder[groupName]
members = list(group.principals)
members.append(str(principalFolder.prefix + userId))
group.principals = members
