[Grok-dev] Grok-dev Digest, Vol 60, Issue 1

Danilo G B danilogbotelho at yahoo.com
Wed Sep 7 22:08:02 EST 2011


Hello, Roberto.

grok.index.Field and all IndexDefinition subclasses are actually just there for grokkers. The actual indexes are defined elsewhere. So to upgrade catalogs you should do:

cat = getUtility(ICatalog, 'my_catalog')
cat['new_attribute'] = grok.index.Field.index_class('new_attribute')
cat.updateIndexes()

Regards,

Danilo G. Botelho

--- On Wed, 9/7/11, grok-dev-request at zope.org <grok-dev-request at zope.org> wrote:

From: grok-dev-request at zope.org <grok-dev-request at zope.org>
Subject: Grok-dev Digest, Vol 60, Issue 1
To: grok-dev at zope.org
Date: Wednesday, September 7, 2011, 9:00 AM

Send Grok-dev mailing list submissions to
    grok-dev at zope.org

To subscribe or unsubscribe via the World Wide Web, visit
    https://mail.zope.org/mailman/listinfo/grok-dev
or, via email, send a message with subject or body 'help' to
    grok-dev-request at zope.org

You can reach the person managing the list at
    grok-dev-owner at zope.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Grok-dev digest..."


Today's Topics:

   1. Upgrading catalog utility (Roberto Allende)


----------------------------------------------------------------------

Message: 1
Date: Tue, 6 Sep 2011 14:28:53 -0300
From: Roberto Allende <rover at menttes.com>
Subject: [Grok-dev] Upgrading catalog utility
To: grok-dev at zope.org
Message-ID:
    <CABZRKQQ2i-qcu0kNocS4YTK+zPjOKCn1-fNQ6+uoYp-yubHE=Q at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Hello

Short version:
How do i recreate, ie delete an create a new catalog for an existing
application ?.

Long Version:
I need to upgrate an applcation made with grok to a new version and i
need to add a new index to its catalog. Following the example at Grok
Documentation[1], let's say i've:

class SiteCatalog(grok.Indexes):
    grok.site(Testvalueindex)
    grok.context(MyObject)
    grok.name('my_catalog')

    counter = Value()

An my new catalog has a new attribute, called new_attribute:

class SiteCatalog(grok.Indexes):
    grok.site(Testvalueindex)
    grok.context(MyObject)
    grok.name('my_catalog')

    counter = Value()
    new_attribute = grok.index.Field()

So, the problem is i've to re create SiteCatalog for my application
and "Source code for grok.index"[2] says  "Note that, since index
creation (and thus a call to our :meth:`setup()` method) currently
occurs only during the creation of a new Grok `Application` object in
the Zope Database".

I tried to instantiate the index and they monkey patch, which it
wouldn't be the most elegant solution but it could solve the problem
runing an upgrade method just once and i got an "can only be
instantiated on class level" exception.

So... any suggestion is very appreciated.

Kind Regards
Roberto Allende

1. http://grok.zope.org/documentation/how-to/implementing-search/view
2. http://grok.zope.org/doc/dev/_modules/grok/index.html


------------------------------

_______________________________________________
Grok-dev mailing list
Grok-dev at zope.org
https://mail.zope.org/mailman/listinfo/grok-dev


End of Grok-dev Digest, Vol 60, Issue 1
***************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/grok-dev/attachments/20110907/a3eb8f60/attachment.html 


More information about the Grok-dev mailing list