2003-01-30  Benjamin Saller  <bcsaller@yahoo.com>

	* BaseObject.py (BaseObject.__getitem__): Play nice with Aq again

	* GeneratorTool.py (getType): added introspect tab so when people
	as me what types got registered we can just look now.... This is a
	step towards exposing the schema on the web.

	* BaseUnit.py (BaseUnit.__str__): __call__ maps to str for the
	catalog to work.

2003-01-14  Benjamin Saller  <bcsaller@yahoo.com>

	* templates/singleselection_pulldown_body: use the str() to cmp
	the values. better for int keys

	* Field.py (DateTimeField.set): Don't cvt if if you don't need
	to... duh

	* Storage.py: removed deprecated method from iface

	* BaseUnit.py (BaseUnit.reConvert): docstring to publish

	* GeneratorTool.py (modify_fti): allowed_content_types on a klass
	now sets up the fti, yum.
	(listTypes): listTypes specific to a package with the new argument

2003-01-07  Benjamin Saller  <bcsaller@yahoo.com>

	* GeneratorTool.py (process_types): got rid of the old
	view/edit/script dirs in favor of a simple target_dir (its all
	generated code anyway). This should be honored now, with a default
	of the cmft skin directory.

	* Generator.py (Generator.__init__): All references to editable
	are removed from generator and the templates. The str method on
	BaseUnits mostly covers this as we always return the raw object. 

	* ClassGen.py (Generator.makeMethod): Generate uniform lambda for
	the created methods, this works now that we delegate to the schema
	all the time. Also gets rid of the methods template directory as
	its not needed anymore.

	* Field.py (FieldList.initalizeLayers): Play nice with the layer
	code, I hope to bulid this out a little more in the future, but
	for now its very simple.

	* cmf_types/DDocument.py (content_type): Broke out the schema to
	the module level, types only keep a ref to it. Also see how the
	type is the composite of BaseContent.type and
	ExtensibleMetadata.type.

	* Extensions/utils.py (install_navigation): changes to all the
	external method calls to skip most of the special metadata
	handling. 

	* ExtensibleMetadata.py: Its just called 'type' now, metadata type
	is deprecated and we have more uniform handling of data/metadata.

	* Generator.py (_modes): Generation modes, generate views takes a
	list of either keys to this dict or just new dicts in this format
	that are the modes to be generated. Have fun.

2003-01-05  Benjamin Saller  <bcsaller@yahoo.com>

	* Field.py (FieldList.initalizeLayers): Added Layers calls to
	FieldList and the base Field Object. We explicitly register layers
	and expect that they will get initalized. The idea is that
	subsystems may require particular initalization on the part of an
	instance or an instance's field. The current interfaces support
	this.

2003-01-04  Benjamin Saller  <bcsaller@yahoo.com>

	* ContentTool.py (ContentTool._genId): Mr.Topf caught a bug in id
	generation where I wasn't incrementing the counter
	properly. Patched in accordance with his idea.

	* Storage.py (MetadataStorage.get): Thinking it might make more
	sense to call out to the metadata interface for this, handing off
	the storage concern once again. This can change when storage can
	perform initalization on the object during construction via a
	callback into the schema. Thus each storage item might be able to
	modify the instance if need be.

2003-01-03  Benjamin Saller  <bcsaller@yahoo.com>

	* ExtensibleMetadata.py (metadatatype): Updated field to use
	MetadataField type (and the new Metadata Storage) and removed a
	number of fields that are in the DublinCore but were
	invisible. Trying to let CMFTypes manage these internal fields
	seems to be a mistake so I let the default impl handle it.

	* ClassGen.py (_modes): one more step towards removing editable. I
	will be happy when this is gone

	* BaseObject.py (BaseObject.__init__): Had to move id mgmt to
	later to avoid a special case in the default handling
	(BaseObject.get): delegate through schema

2003-01-02  Benjamin Saller  <bcsaller@yahoo.com>

	* BaseObject.py (BaseObject.Vocabulary): Still trying to figure
	out just what I want to bubble up to this level and what should
	remain in the schema.

	* skins/cmft/collectKeywords.py: use new BaseObject.Vocabulary
	method.

	* Field.py (FieldList._properties): Easier to read/manage way of
	setting Field defaults/properties. See how the other fields use
	the _properties to set defaults and attributes now.

	* debug.py (Log.log_exc): take msg='' and **kwargs now, like log

	* Field.py (ObjectField.get): changed get/set to drive through
	Field.storage (see below)

	* Storage.py: Provide sample storage interface. This layer of
	indirection can be overridden on a per field basis to alter the
	way storage is handled. With the right tool it should be a simple
	task to store large fields on the filesystem or in a RDB of some
	sort. 

	* Field.py (FieldList.setDefaults): Simplfied setDefaults, but now
	it really only should be called when object is uninitalized (which
	I may want to track)

	* BaseUnit.py (BaseUnit.PUT): Fixed PUT to use new driver code	

	* __init__.py (listTypes): Updated to use generatorTool, still
	generates on initalize though

	* GeneratorTool.py (modify_fti): new tool, moved fti stuff here as
	well as process_types and registerType. Also added "icon" as an
	attribute of your content class so you can override its icon

