[Zope-CMF] GenericSetup: remove columns from catalog.xml

2007-05-15 Thread Maurits van Rees
Hi,

A while ago I proposed to add the possibility to say in GenericSetup's
catalog.xml that an index should be removed.  This has been added to
the code already.

Now I propose to do the same for metadata columns.  So the following
should remove the column from the catalog:

 column value=outdatedColumn remove=True /

I do most of my testing on Plone 2.5, so we are talking GenericSetup
branch 1.2 here.  The code below ought to do it.  I added test code
for this.  And I added some comments to the test to clarify how the
testing is done, as I find myself wondering about that every time I
look at the current test code. :)

If this diff is good, can someone commit it?  I have no rights.


[EMAIL PROTECTED]:~/svn/plone25-zope29/GenericSetup $ svn diff
Index: ZCatalog/tests/test_exportimport.py
===
--- ZCatalog/tests/test_exportimport.py (revision 75759)
+++ ZCatalog/tests/test_exportimport.py (working copy)
@@ -62,7 +62,7 @@
   extra name=index_type value=Okapi BM25 Rank/
   extra name=lexicon_id value=foo_plexicon/
  /index
- column value=eggs/
+%s column value=eggs/
  column value=spam/
 /object
 
@@ -78,17 +78,33 @@
   extra name=lexicon_id value=foo_plexicon/
  /index
  index name=non_existing remove=True/
+ column value=non_existing remove=True/
+ column value=bacon remove=True/
 /object
 
 
+# START SITUATION
+#
+# The catalog starts out as the _CATALOG_BODY above with the following
+# xml snippets inserted.
+
+_VOCABULARY_XML = \
+ object name=foo_vocabulary meta_type=Vocabulary deprecated=True/
+
+
 _TEXT_XML = \
  index name=foo_text meta_type=TextIndex deprecated=True/
 
 
-_VOCABULARY_XML = \
- object name=foo_vocabulary meta_type=Vocabulary deprecated=True/
+_COLUMN_XML = \
+ column value=bacon/
 
 
+# END SITUATION
+#
+# The catalog ends as the _CATALOG_BODY above with the following
+# xml snippets and some empty strings inserted.
+
 _ZCTEXT_XML = \
  index name=foo_text meta_type=ZCTextIndex
   indexed_attr value=foo_text/
@@ -97,7 +113,6 @@
  /index
 
 
-
 class ZCatalogXMLAdapterTests(BodyAdapterTestCase):
 
 def _getTargetClass(self):
@@ -151,6 +166,7 @@
 self._populate(self._obj)
 obj._setObject('foo_vocabulary', Vocabulary('foo_vocabulary'))
 obj.addIndex('foo_text', 'TextIndex')
+obj.addColumn('bacon')
 
 def setUp(self):
 import Products.GenericSetup.PluginIndexes
@@ -165,22 +181,24 @@
 zcml.load_config('configure.zcml', Products.GenericSetup.ZCTextIndex)
 
 self._obj = ZCatalog('foo_catalog')
-self._BODY = _CATALOG_BODY % ('', '')
+self._BODY = _CATALOG_BODY % ('', '', '')
 
 def test_body_get_special(self):
+# Assert that the catalog starts out the way we expect it to.
 self._populate_special(self._obj)
 context = DummySetupEnviron()
 adapted = getMultiAdapter((self._obj, context), IBody)
 self.assertEqual(adapted.body,
- _CATALOG_BODY % (_VOCABULARY_XML, _TEXT_XML))
+ _CATALOG_BODY % (_VOCABULARY_XML, _TEXT_XML, 
_COLUMN_XML))
 
 def test_body_set_update(self):
+# Assert that the catalog ends up the way we expect it to.
 self._populate_special(self._obj)
 context = DummySetupEnviron()
 context._should_purge = False
 adapted = getMultiAdapter((self._obj, context), IBody)
 adapted.body = _CATALOG_UPDATE_BODY
-self.assertEqual(adapted.body, _CATALOG_BODY % ('', _ZCTEXT_XML))
+self.assertEqual(adapted.body, _CATALOG_BODY % ('', _ZCTEXT_XML, ''))
 
 
 def test_suite():
Index: ZCatalog/exportimport.py
===
--- ZCatalog/exportimport.py(revision 75759)
+++ ZCatalog/exportimport.py(working copy)
@@ -137,5 +137,10 @@
 if child.nodeName != 'column':
 continue
 col = str(child.getAttribute('value'))
+if child.hasAttribute('remove'):
+# Remove the column if it is there
+if col in self.context.schema()[:]:
+self.context.delColumn(col)
+continue
 if col not in self.context.schema()[:]:
 self.context.addColumn(col)


-- 
Maurits van Rees | http://maurits.vanrees.org/ [NL]
Work | http://zestsoftware.nl/
Do not worry about your difficulties in computers,
 I can assure you mine are still greater.

___
Zope-CMF maillist  -  Zope-CMF@lists.zope.org
http://mail.zope.org/mailman/listinfo/zope-cmf

See http://collector.zope.org/CMF for bug reports and feature requests


Re: [Zope-CMF] GenericSetup: remove columns from catalog.xml

2007-05-15 Thread Jens Vagelpohl

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1


On 15 May 2007, at 09:59, Maurits van Rees wrote:


Hi,

A while ago I proposed to add the possibility to say in GenericSetup's
catalog.xml that an index should be removed.  This has been added to
the code already.

Now I propose to do the same for metadata columns.  So the following
should remove the column from the catalog:

 column value=outdatedColumn remove=True /

I do most of my testing on Plone 2.5, so we are talking GenericSetup
branch 1.2 here.  The code below ought to do it.  I added test code
for this.  And I added some comments to the test to clarify how the
testing is done, as I find myself wondering about that every time I
look at the current test code. :)

If this diff is good, can someone commit it?  I have no rights.


The mailing list is a bad place for patches. Attempting to copy and  
paste from an email client may introduce problems, and with the  
amounts of email people get nowadays an issue like this is likely to  
flow by without getting any takes because people may be busy right  
now. I know I am.


Please file a collector issue in the CMF collector and attach your  
patches there.


jens


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.7 (Darwin)

iD8DBQFGSeVXRAx5nvEhZLIRAk4RAKCAS0db4Qg7NnZEYN9Rs/lRDDMROQCdEZee
bncZCaM1d6vrIOAKr45iNZI=
=vOsk
-END PGP SIGNATURE-
___
Zope-CMF maillist  -  Zope-CMF@lists.zope.org
http://mail.zope.org/mailman/listinfo/zope-cmf

See http://collector.zope.org/CMF for bug reports and feature requests