Einarbeitung in Zope/Plone - wie vorgehen?

Django, Flask, Bottle, WSGI, CGI…
Antworten
chri7
User
Beiträge: 13
Registriert: Donnerstag 6. September 2007, 07:05
Wohnort: Speyer

Hallo zusammen,

ich wende mich an euch da viele von euch schon da sind wo ich hin will - also rein fachlich gesehen ;P

Ich bin neu in einer Firma wo Plone (total zerhackt, gepatcht etc...) als Dokumentationstool benutzt wird. Ich soll mich in das System einarbeiten und dann später Erweiterungen (also Products schreiben afaik) die nützliche Sachen erledigen die heute per Hand gemacht werden (z.B. Erstellung von Netzplänen anhand der Asset Daten oder Asset Pflege aus den LivingServer Daten etc...).

Mein Background:
keiner ;P Habe vorher ein Mediawiki auf LAMP Basis betreut und dachte Plone könnte da nicht viel komplexer sein - da habe ich mich um Welten vertan. (sehe im Mom. kein Land .....)

Aber zum Thema:
Ich muss die nächsten Wochen warm werden mit dem Ding, und hab keinen an der Hand (Kollege hat 3 Wochen Urlaub - super Timing für die Einarbeitung *grml*). Ich hab jetzt 1 Woche fulltime mit Hilfe des PloneBuchs (Andy MCKay [zope.de]) schon einiges an Verständnis gesammelt - bin aber noch weit davon entfernt auch nur zu wissen wie ich etwas realisieren müsste ohne es praktisch zu können.

Bsp: Formulardaten - in php ist das klar (Formular -> parser -> mysql). Bei Plone hab ich noch kein funktionierendes Formular geschafft, geschweige denn das ich wüsste wo ich die Daten abspeichen soll (eine DB in der Richtung gibt es ja nicht ....)
Das ist alles so komplex ... (ich weiss das es ctp's gibt, validatoren und actions - aber wie die Daten transportiert werden und viel wichtiger wo ich Daten speichern kann weiss ich nicht).

So ... genug geheult:
Meine Frage an euch: Wie anfangen - das Buch ist mir zu wenig, hat viel geholfen - aber ich hänge an den Formularen im Mom. und da hilft das Buch nicht weiter. Ich habe im Mom. null verständnis wo ich Daten in Plone speichern kann - geschweige denn wo die Daten im Produktivsystem im Moment gespeichert sind. Ich sehe 2,5gb an ZODB aber Daten sehe ich nur im FrontEnd, im Backend hab ich null plan wo da die Daten sind ...

Gibt es Online gute Queleln die Grundlagen in Plone erklären - und zwar für Entwickler/Admins - also wo speichert Plone wie was ab etc .... (und was macht Zope eigentl.? Wo ist da der Unterschied?)

Oder einen Buch Tipp? (Das Buch das ich habe steht ja voll online ....)

Vlt. gibt es im Großraum Mannheim/LU - Karlsruhe auch Usergruppen oder LUGs mit Schwerpunkten auf Zope/Python die ich mal ansteuern kann ...

Und zum momentanen Fall bei mir inner Firma:
Plone-Versionsübersicht
Plone 2.5.2,
CMF-1.6.2,
Zope (Zope 2.9.5-final, python 2.4.4, linux2),
Five 1.3.7,
Python 2.4.4c1 (#2, Oct 11 2006, 20:00:03) [GCC 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)],
PIL 1.1.5
Mein erstes Ziel ist diese "Produktivmaschine" - an der einiges gedreht wurde (braucht per cron alle 2h nen zope restart denn bei Dauerbetrieb hängt zope *kopfschüttel*) - auf ein sauberes System zustellen.

Zielvorgabe ist Ubuntu Server 7.04 - das läuft soweit mir der alten ZODB ohne Probleme - nur einige Products bekomme ich nicht ans laufen - aber das ist ein anderer Thread http://www.python-forum.de/topic-11869.html

Ich hoffe dass ich auch bald zur elitären Plone Gemeinde gehören kann mit eurer Hilfe :)

Gruß, Chris
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

chri7 hat geschrieben:Ich muss die nächsten Wochen warm werden mit dem Ding
Hallo Chris!

Ich habe jetzt nicht viel Zeit. Deshalb gebe ich die Antworten in kleinen Stücken.

Da dur nur ein paar Wochen Zeit hast um aus dir einen "Profi" zu machen...

Besorge dir sofort diese beiden Bücher:

"Zope" von Peter Walerowski. Und fange mit diesem Buch an. -- Zuerst dieses Buch!!! Fast alles, was in diesem Buch für Zope 2.6.4 geschrieben wurde, stimmt auch noch für Zope 2.7, 2.8 und auch einiges für 2.9.

"Plone - Das definitive Handbuch für Administratoren und Entwickler" von Andy McKay. Besorge dir das Buch, damit du es auch wirklich von vorne bis hinten durchliest und nicht wie es bei Onlineversionen üblich ist, einfach nur überliest.

Das ist mal das Wichtigste! Beeile dich, dass du die Bücher so schnell wie möglich in Händen hälst. -- Schicke die Freundin auf Urlaub, damit du auch im Bett noch ungestört lesen kannst. :twisted:

Sobald ich wieder Zeit habe, schreibe ich zu den anderen Punkten auch noch etwas.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
chri7
User
Beiträge: 13
Registriert: Donnerstag 6. September 2007, 07:05
Wohnort: Speyer

Also ist Zope Literatur geeignet? Ich ging davon aus das Plone vieles "selbst" löst und ich dann unötige Methoden lerne ...

Sollte ich nicht lieber "Plone 2.0. Umfassender Einstieg in Plone, Zope, Python und CMF" vom gleichen Autor lesen?

edit ist besteltl :D
Zuletzt geändert von chri7 am Mittwoch 12. September 2007, 14:38, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Chris!
chri7 hat geschrieben:Also ist Zope Literatur geeignet? Ich ging davon aus das Plone vieles "selbst" löst und ich dann unötige Methoden lerne ...
Ohne Zope zu kennen bist du mit Plone komplett aufgeschmissen.
chri7 hat geschrieben:Sollte ich nicht lieber "Plone 2.0. Umfassender Einstieg in Plone, Zope, Python und CMF" vom gleichen Autor lesen?
Nein.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

chri7 hat geschrieben:also wo speichert Plone wie was ab etc .... (und was macht Zope eigentl.? Wo ist da der Unterschied?)
Hallo Chris!

Zope ist die Basis. Zope speichert alles -- Daten, Metadaten, Objekte, Klasseninstanzen, Quellcode, ... -- wirklich alles (!!!) in eine Objektdatenbank, die ZODB.

Ich kann, rein theoretisch, eine Klasse erstellen und diese so herrichten, dass jede Klasseninstanz dieser Klasse in die ZODB gespeichert wird. Innerhalb der ZODB wird alles hierarchisch **ordnerartig** abgelegt. Du kannst also in der ZODB sozusagen einen "Ordner" mit dem Namen "adresses" anlegen und in diesen Ordner viele Objekte (Klasseninstanzen) der Klasse "Address" ablegen.

Mit einfachen Befehlen kannst du dann alle Adressen dieses Ordners auflisten lassen, durchlaufen, manipulieren, usw.

Das ist der große Unterschied zu den üblichen "Relationalen Datenbanksystemen". Die Daten sind nicht nur Daten in Tabellen, sondern es sind alles Klasseninstanzen in Ordnern. Diese Klasseninstanzen enhalten nicht nur die Daten, sondern auch Methoden. Diese Methoden können wie in Python gewohnt, direkt aufgerufen werden.

-------------

Plone ist ein Content Management System, das auf Zope aufbaut. Plone verwendet also zum Speichern direkt die ZODB. Jede Seite, die man in Plone sieht, existiert also in der ZODB als Klasseninstanz-Objekt. Jede Seite ist also ein eigenständiges Objekt mit dessen eigenen Daten und dessen eigenen Methoden. Diese Seiten liegen wiederum in aufgemotzten Zope-Ordnern. Diese Ordner (Plone-Folder) enthalten auch wieder ein paar Metadaten und Methoden. Es gibt natürlich auch Ausnahmen. Die Seiten können auch im Dateisystem liegen. Als eigenständiges Zope-Produkt. Aber darauf möchte ich hier nicht eingehen.

-------------

Du kannst dir die Programmierung von Zope/Plone also wie das Dateisystem, von einer Konsole aus betrachtet, vorstellen.

In der Konsole kommst du von einem Ordner in den anderen, indem du den Befehl "cd" verwendest. Du kannst in der Konsole auch direkt einen Ordner anvisieren, indem du den kompletten Pfad angibst.

In Zope ist das ähnlich. Du kannst dir eine Referenz auf ein Ordnerobjekt erstellen. In einem Python-Script sieht das z.B. so aus:

Code: Alles auswählen

addresses = container.addresses
for address in addresses:
    print address.first_name
    print address.last_name
Durch die Acquisition von Zope sucht Zope, vom aktuellen "container" ausgehend, bis zum Root-Ordner zurück, nach einem Objekt mit dem Namen "addresses" und verwendet es.

Und in einer Seitenvorlage (ZPT) könntest du z.B. so durch die Adressen iterieren:

Code: Alles auswählen

<p tal:repeat="address root/addresses">
  <span tal:content="address/first_name" /><br />
  <span tal:content="address/last_name" />
</p>
Dabei wird durch "root" direkt, ohne Acquisition, auf das Objekt zugegriffen.

- die Daten sind an Klasseninstanzen gebunden
- die Klasseninstanzen können auch Methoden enthalten
- alles wird in die ZODB gespeichert
- die ZODB ist eine Objektdatenbank mit Ordnerstruktur
- man kann sich durch die Objekte der ZODB bewegen, ähnlich wie in einer Konsole. (darauf bin ich hier nicht eingegangen)

Du solltest auf jeden Fall auch das in Zope eingebaute Zope-Tutorial durchgehen (ausprobieren und nicht nur lesen). Dort wird einiges erklärt.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten