[Zope-CMF] Checking which version of the CMF is running

Charlie Clark charlie at begeistert.org
Fri Oct 13 11:07:16 EDT 2006


Dear all,

I noticed recently that Formulator does not work with CMF v2 because  
FSForm.py imports from CMFCore.CMFPermissions so I thought I'd fix  
this and thought it might be useful. Easier said than done as there  
does not seem to be a standard way to find out which version of CMF  
is installed which is presumably why the Plone installer devotes a  
few lines to it.

I've come up with the following:

# Use existing Zope tools to check for the CMFVersion
import App.Product
import OFS.Application
import os.path

CMFVERSION = None

for priority, product_name, index, product_dir in  
OFS.Application.get_products():
     if product_name == "CMFCore":
         class Dummy(object):
             """Dummy object for a dummy product install"""
             def _setObject(self, name, product):
                 pass

         A = Dummy()
         A.Control_Panel = Dummy()
         A.Control_Panel.Products = Dummy()

         package_dir=os.path.join(product_dir, product_name)
         OFS.Application.import_product(product_dir, product_name)
         productObject = App.Product.initializeProduct(
                 None, product_name, package_dir, A)
         version = productObject.version
         version = version.split("-")
         major = int(version[-1][0])
         if major >= 2:
             CMFVERSION = 2

I hope this isn't too weird! I think it is flexible enough to be used  
with other Zope Products if required but does beg the question:  
shouldn't there be an easier way to do this? Should there be a  
standard method of getting a Product's version in Zope.app? I assume  
there are other Products that have similar dependencies, although I  
am not sure if the problem is in FSForm itself which does some pretty  
thoughtless importing.

Charlie
--
Charlie Clark
Helmholtzstr. 20
Düsseldorf
D- 40215
Tel: +49-211-938-5360
GSM: +49-178-782-6226





More information about the Zope-CMF mailing list