Sektionen
Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support Dokumentation docs Inhalte in Plone anlegen oder manipulieren mit einem Python-Skript

Inhalte in Plone anlegen oder manipulieren mit einem Python-Skript

Um schnell mal Inhalte in Plone anzulegen oder zu manipulieren, kann man sich eines Script (Python) im Zope Management Interface (ZMI) bedienen.

Bemerkungen zum Script (Python)

Diese Python Skripte sind vom Sprachumfang her begrenzt, man kann dort nicht alles machen, was in richtigem Filesystem Code (in einem eigenen Package) machbar ist. Auch ist eine Funktion im Filesystem um einiges schneller, da nicht so viele Sicherheitsüberprüfungen vorgenommen werden müssen, als ein Script (Python) im ZMI.

Script (Python) anlegen

Wir können uns ein Script (Python) entweder im Plone Root oder besser unter /portsl_skins/custom anlegen. Hierzu wählen wir in der linken Auswahlbox Script (Python) aus und geben dem Script (Python) eine id.

Python Code

request = container.REQUEST

from Products.CMFCore.utils import getToolByName
portal_url = getToolByName(context, "portal_url")
portal = portal_url.getPortalObject()

news_items = []

news_items.append({'title': 'Plone 4 ist da!', 'description': 'alles ist schneller, schöner, toller ;)', 'body_text': 'Am 1. September 2010 konnte die Plone-Community stolz die Veröffentlichung von Plone 4 bekanntgeben. Plone 4 ist die jüngste Version des »State-of-the-Art« Open-Source-CMS. Es ist schneller, leistungsfähiger und attraktiver als zuvor.'})
news_items.append({'title': 'Plone 4 auf der Ubucon 2010', 'description': 'Vom 15. bis 17. Oktober fand in Räumen der Universität Leipzig die Ubucon 2010, die deutschsprachige Konferenz der Ubuntu-Community statt. ', 'body_text': 'Jan Ulrich Hasecke vom DZUG e.V. stellte auf der Konferenz das CMS Plone 4 vor. Obwohl gleichzeitig fünf andere Tracks mit hoch interessanten Themen liefen, war der Vortragsraum mit rund 15 Teilnehmern gut gefüllt. Der Vortrag basierte inhaltlich auf dem White Paper für Plone und erklärte, welche Vorteile Plone für große Unternehmen und Organisationen bereit hält.'})


dest_container = portal.restrictedTraverse('news/imported')
for news_item in news_items:
id = dest_container.plone_utils.normalizeString(news_item['title']).lower()
new_id = id
while hasattr(dest_container, new_id):
if new_id == id:
new_id = id + '-1'
else:
prefix, suffix = new_id.rsplit('-', 1)
try:
nr = int(suffix)
except ValueError:
new_id = id + '-1'
nr += 1
new_id = '%s-%i' %(prefix, nr)
id = new_id
news_id = dest_container.invokeFactory('News Item', id=id, title=news_item['title'])
news_obj = dest_container[news_id]
news_obj.setDescription(news_item['description'])
news_obj.setText(news_item['body_text'])
news_path = news_obj.absolute_url()
print("created news item: %s at %s
" % (news_item['title'], news_path, news_path))

return printed

Testen des Python Skriptes

Um das Skript zu testen (auszuführen), speichern wir es und betätigen den Tab "test".