Hi Johnothan, I think the problem with these (issubclass, isinstance) is that they deal with class objects, and they may not be that easy to handle in dtml. On the other hand, meta_types are just strings... so they can be easily created/changed. I still like the idea of simply defining some property in the base class that I can quickly check for in any instance i.e., <dtml-in objectValues> <dtml-if "_.hasattr(_['sequence-item'],'iCanDoTheChaCha')"> blah blah blah.... </dtml-if> </dtml-in> but if you're dead set against that I don't understand why you couldn't use something like: <dtml-in objectValues> <dtml-if "checkObjectMetaType(_['sequence-item'], metaTypeToCheck)"> blah blah blah.... </dtml-if> </dtml-in> where 'metaTypeToCheck' could be "Dokument" as mentioned in another post, and 'checkObjectMetaType' is defined as below. -steve ---------------------------------------------------------------------- # # # Check a classes base types for a certain meta_type... a little # safer this time..... # # def checkClassMetaType(theClass, meta_type): """ check a class... and all super classess for meta_type....""" result = 0 if hasattr(theClass, 'meta_type') and theClass.meta_type == meta_type: result = 1 else: for subClass in theClass.__bases__: result = checkClassMetaType( subClass, meta_type) if result: break return result def checkObjectMetaType(self, object, meta_type): """ check and object for an ancestral meta_type...""" try: if hasattr(object, 'meta_type') and object.meta_type == meta_type: return 1 else: return checkClassMetaType(object.__class__, meta_type) except AttributeError: return 0 ----------------------------------------------------------------------
"Jonothan" == Jonothan Farr <jfarr@real.com> writes:
>> Isn't there some method like >> _.inheritsfrom(_['sequence-item'],'Folder') Jonothan> There's issubclass() in Python. Is this what you're Jonothan> looking for? Jonothan> issubclass (class1, class2) Return true if class1 is a Jonothan> subclass (direct or indirect) of class2. A class is Jonothan> considered a subclass of itself. If either argument is Jonothan> not a class object, a TypeError exception is raised. Jonothan> -jfarr