Re: Python: "dynamische" Klassenvariablen?
"Jens W. Klein" <[email protected]>
| Newsgroups | gmane.comp.web.zope.german |
|---|---|
| Organization | Klein & Partner KEG, BlueDynamics Alliance |
| Message-ID | <1265214373.4663.6.camel@minime> |
Am Mittwoch, den 03.02.2010, 16:50 +0100 schrieb Peter Zechmeister:
> Hallo,
>
> ich schreibe gerade an einem Produkt für Zope. Es hat einige ZPTs, die
> ich im Products/zpt-Verzeichnis haben möchte und beim Erstellen einer
> Instanz _nicht_ in der ZODB haben will.
> Ich denke, das würde in etwa so gehen:
>
> class TestClass(Implicit, Persistent, RoleManager, Item):
> [...]
> zptA=PageTemplateFile('zpt/zptA.htm', globals())
> zptB=PageTemplateFile('zpt/zptB.htm', globals())
> zptC=PageTemplateFile('zpt/zptC.htm', globals())
> [...]
So ganz grob:
import os
class Test (...):
zpt = {}
# im Module danach
dir = os.path.join(os.path.dirname(__file__), 'zpt')
for filename in os.listdir(dir):
name = mach_sinnvoll_aus_file_namen_einen_key(file)
filepath = os.path.join(dir, filename)
TestClass.zpt[name] = PageTemplateFile(filepath)
idee sollte klar sein, oder?
lg Jens
> Diese ZPTs landen dann genauso im Namespace von context, als würden sie
> im ZMI liegen und sie sind immer aktuell - zumindest nach jedem
> Zope-Neustart.
>
> Nur ist es etwas mühsam, für jedes ZPT eine eigene Zeile zu haben.
> Jetzt suche ich nach einer Möglichkeit, mit einem Rutsch alle Files aus
> Products/zpt/* in die Klasse zu bekommen. Wie würde das gehen (also das
> 'dynamische' Anlegen von Klassenvariablen, die Filesystem-Sachen sind
> mir eh klar)?
>
> Hab mir schon überlegt, das im __init__ zu machen und dann jeweils
> self[scriptname] = PageTemplateFile(...) zu machen. Aber wenn ich das
> richtig verstehe, hätte ich die ZPTs dann in jeder Instanz persistent
> drinnen und somit Probleme mit der Versionierung.
>
> BGrü
> PeterZ
>
>
> _______________________________________________
> zope mailing list
> [email protected]
> https://mail.dzug.org/mailman/listinfo/zope
_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope