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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.