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

Calendar

« February 2012 »
  Mo Tu We Th Fr Sa Su
5 1 2 3 4 5
6 6 7 8 9 10 11 12
7 13 14 15 16 17 18 19
8 20 21 22 23 24 25 26
9 27 28 29