Session unter Zope und Plone

Django, Flask, Bottle, WSGI, CGI…
Antworten
rgroll
User
Beiträge: 14
Registriert: Dienstag 24. Juli 2012, 08:42

Hallo,

ich bein ein umfangreich gelernter Programmierer mit sehr wenig Praxiserfahrung. Und wenig bis keine Erfahrung in Python, aber eine neue Programmiersprache lernt sich ja schnell wenn bereits ein paar kennt.
Ich möchte die Parameter einer bereits vorhandenen Session auslesen um einen Hinweis darauf zu finden wer gerade auf dem Plone CMS angemeldet ist.
Ich habe diesen Beitrag gefunden aber leider kennt Zope self nicht, Muss noch etwas importiert werden?

c = self.request.cookies
if c.has_key('PHPSESSID'):
self.id = c['PHPSESSID'].value
sessionfile = self.session_prefix + str(self.id)
data = file(sessionfile).readline()
self.data = PHPUnserialize().session_decode(data)

Kann man mir da helfen?
Vielen Dank!
deets

Bitte benutze Python-Code-Tags zum formatieren von Sourcecode.

Und das gezeigte Snippet ist offensichtlich nicht auf ZOPE/Plone Sessions bezogen, sondern auf PHP. Ausserdem bezweifele ich, dass es sich um code handelt, der innerhalb von ZOPE ausgefuehrt wird - self.request gibt's da nicht.

Darum:

- woher kommt der Code?
- womit arbeitest du wirklich - mit ZOPE, oder mit einem anderen Webframeworks?
- muss es ZOPE sein, oder ist das egal?
- was genau willst du erreichen?
rgroll
User
Beiträge: 14
Registriert: Dienstag 24. Juli 2012, 08:42

1. Der Code kommt von http://de.comp.lang.python.narkive.com/ ... t-auslesen
2. Ich realisiere den code erst in Zope und danach integriere ich ihn in Plone
3. Es muss zope sein
4. Ich will die Session auslesen um auf den angemeldeten Benutzter zugreifen zu können und damit eine db Abfrage machen

Und das ganze wird in einem Python(script) umgesetzt
deets

In dem Referenzierten Artikel steht ganz deutlich "(Unter colubrid)" - der Code funktioniert also nicht in ZOPE.

Und mir ist immer noch nich klar, *was* du eigentlich willst. Willst du jetzt eine PHP-Session auslesen, oder eine ZOPE-Session?
rgroll
User
Beiträge: 14
Registriert: Dienstag 24. Juli 2012, 08:42

Ich weiß nicht genau ob ich eine Zope oder php session auslesen möchte. Ich glaube aber eine Zope oder Plone session. Kannst du mir helfen?
lunar

@rgroll: Man kann Dir schwerlich helfen, wenn Du nicht einmal selbst weißt, was Du willst…
deets

Man muss keine "Session auslesen", wenn man Teil eines Requests ist, welches fuer einen bestimmten User gemacht wird.

Und ich verstehen auch nicht, was das mit einer DB zu tun hat. Die bindet man unter ZOPE mittels SQL-Methoden an. Hast du das mal versucht? Da muss man gar nix programmieren.

Wenn man dir hier weiterhelfen soll, dann solltest du mal von gaaaaaaanz Anfang an erzaehlen, was du eigentlich tun willst.
rgroll
User
Beiträge: 14
Registriert: Dienstag 24. Juli 2012, 08:42

:K Also die Webseiten werden in Zope erstellt und dann einfach per <object... Tag in Plone eingebunden.
Und es wird implementiert für die Nutzer von Plone.

Wie kann das System, bei Benutzung durch einen User, jetzt herausfinden welcher Benutzer sich gerade angemeldet hat?
Ich vermutete, dass mir das einer der Session Variablen sagen könnte.
Jetzt verstanden.

Vielen Dank.
deets

Also damit hat das ganze schon mal *nichts* mit dem gezeigten Code zu tun. Der bezieht sich auf cubrid + PHP. Nichts davon hat was hiermit zu tun.

ZOPE ist eine ziemlich eigene Welt, darin zu entwickeln ist nicht einfach. Auch wenn's besser ist, als viele Leute es denken. Wie dem auch sei - hier findest du zB einen Weg, den Usernamen eines Benutzers auszugeben. Damit kannst du dann wiederum eine SQLMethode fuettern, die dann was zurueckliefert.

http://docs.zope.org/zope2/zope2book/Se ... ity-checks

Ob das hilft? kA. Ich weiss immer noch nicht genug ueber deine eigentliches Problem, welches du loesen willst. Irgendwas mit session und datenbanken und so...
rgroll
User
Beiträge: 14
Registriert: Dienstag 24. Juli 2012, 08:42

Dieser Tipp war schon mal ganz gut. Danke.

Um noch mehr zu meinen Anforderungen zu sagen. Ich möchte mithilfe dieses usernames eine sql-Abfrage machen. Es dreht sich dabei um eine Urlaubsplanung. Der user soll seinen bereits registrierten Urlaulb aufgelistet bekommen. Dazu habe ich eine z-sql-methode angelegt.
Frage: wie kann ich dieser Z-sql-methode diesen Wert(username) übergeben. Meine Idee dabei wäre die z-sql-methode in einer dtml-method mithilfe des dtml-var-tags aufzurufen, damit ich auch meine eigene standard_html_header datei einbinden kann.

Vielleicht hat das geholfen um den Sachverhalt einigermaßen zu erläutern.
deets

Na, das sollte doch nun wirklich genug in der Doku beschrieben sein: du kannst SQL-Methoden mit Parametern schreiben. Schreib dir ein, und ruf sie mit dtml-var erstmal mit einem hard-kodierten Namen auf, damit du sehen kannst, dass das alles so klappt. Dann benutze zB dtml-let, um den Usernamen an einen temporaeren Variablen-Namen zu binden, und innerhalb des dtml-let rufst du dann wieder die sql-Methode auf - diesmal eben mit dem dynamischen Parameter.

So naehrt sich dann das Eichhoernchen.
rgroll
User
Beiträge: 14
Registriert: Dienstag 24. Juli 2012, 08:42

Vielleicht kannst du mir noch genauer sagen wie ich das schreiben soll. Das mit dem let tag habe ich verstanden.
Hat der dtml-var-tag ein attribut womit ich der z-sql-method einen wert mitgeben kann?
Ich weiß nicht genau wie das geht. Das tutorial hilft mir leider auch nicht wirklich weiter.
deets

Also ohne Doku zu lesen geht's nicht. In keiner Programmiersprache..

http://docs.zope.org/zope2/zope2book/DT ... -from-dtml

Das mal alles durchlesen und nachvollziehen, an kleinen, simplen beispielen. Und wo die ein Skript benutzen kannst du natuerlich auch eine SQLMethode verwenden. Es lohnt sich auch mal in die Templates von Plone oder anderen ZOPE-Produkten zu schauen.
Antworten