In unserem speziellen Fall wollen wir aus den zwei Feldern Vorname und Nachname den Titel unseres Employee-Artikeltyps erstellen lassen.
Hierzu erhält die Klasse Employee
die Eigenschaft title
, die sich aus den Feldern first_name
und surname
zusammensetzt:
class Employee(Item):
"""Customised Employee content class"""
@property
def title(self):
if hasattr(self, 'first_names') and hasattr(self, 'surname'):
return self.first_name + ' ' + self.surname
else:
return ''
Etwas komplexer ist das Erstellen der ID aus einem berechneten Titel:
from plone.app.content.interfaces import INameFromTitle
class INameFromEmployeeTitle(INameFromTitle):
def title():
"""Return a processed title"""
class NameFromEmployeeTitle(object):
implements(INameFromEmployeeTitle)
def __init__(self, context):
self.context = context
@property
def title(self):
return self.context.first_name + ' ' + self.context.surname
def setTitle(self, value):
return
Nun registrieren wir noch einen Adapter für die Dexterity-Interface-Klasse:
<adapter
for="vs.registration.employee.ISampleEmployee"
provides="vs.registration.employee.INameFromEmployeeTitle"
factory="vs.registration.employee.NameFromEmployeeTitle"
/>