Sektionen
Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support Dokumentation docs ID-Manipulation in Plone

ID-Manipulation in Plone

Wie kann ich bei gesetztem _at_rename_after_creation Einfluss auf den ID String nehmen?

Um die Vergabe einer schicken, kurzen, menschenles- und -verstehbaren ID einzuschalten, muss die Variable

_at_rename_after_creation = True

gesetz werden.

Damit wird der vergebene Titel durch die Methode generateNewId aus Products/Archetypes/BaseObject.py als ID gesetzt:

    def generateNewId(self):
        """Suggest an id for this object.
        This id is used when automatically renaming an object after creation.
        """
        title = self.Title()

        # Can't work w/o a title
        if not title:
            return None

        # Don't do anything without the plone.i18n package
        if not URL_NORMALIZER:
            return None

        if not isinstance(title, unicode):
            charset = self.getCharset()
            title = unicode(title, charset)

        request = getattr(self, 'REQUEST', None)
        if request is not None:
            return IUserPreferredURLNormalizer(request).normalize(title)

        return queryUtility(IURLNormalizer).normalize(title)

Wann immer man also am ID-String herummanipulieren möchte, sollte man sich diesen Block in die entsprechende Klasse kopieren.

Und wenn man die richtigen Imports getätigt hat:

try:
    from plone.i18n.normalizer.interfaces import IUserPreferredURLNormalizer
    from plone.i18n.normalizer.interfaces import IURLNormalizer
    URL_NORMALIZER = True
except ImportError:
    URL_NORMALIZER = False

kann man lustig drauflosmanipulieren.

bitte Sprachlich überarbeiten

Kommentar von Maik Derstappen am 03.06.2009 00:47
die Ausdrucksweise ist für öffentliche Dokumente zu flax, bitte eher so schreiben, als wäre der Text für ein Buch gedacht.Inhaltlich fehlt zu dem Thema auch noch ein bisschen Information, es gibt noch weitere Stellen die normalizer enthalten, dazu bitte Thomas fragen.