[Zope-dev] TrackerBase Product fails (2.4.0b3, Tracker from CVS)

Steve Alexander steve@cat-box.net
Fri, 27 Jul 2001 09:59:26 +0100


This is a multi-part message in MIME format.
--------------050104050904080801090603
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Here's the diffs I forwarded onto the tracker maintainer. However, 
Tracker isn't a "supported product", and I guess updating the CVS 
version to work with 2.4 is some way down the priority list.
When the CVS is open to checkins, the community will be able to take up 
some of this slack :-)

The diff attached is not ideal, but it works.
As Chris Withers pointed out on the recent Xron thread on zope-dev, I 
probably shouldn't be adding things from the SearchIndex module to the 
catalog. Rather, I should be adding instances of classes from the 
Products/PlugInIndexes product. That's easy to change, though.

--
Steve Alexander
Software Engineer
Cat-Box limited

--------------050104050904080801090603
Content-Type: message/rfc822;
 name="Re: Tracker updates for Zope 2.4"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="Re: Tracker updates for Zope 2.4"

Message-ID: <3B474968.5060804@cat-box.net>
Date: Sat, 07 Jul 2001 18:39:52 +0100
From: Steve Alexander <steve@cat-box.net>
User-Agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:0.9.2+) Gecko/20010703
X-Accept-Language: en-us
MIME-Version: 1.0
To: Ken Manheimer <klm@digicool.com>
Subject: Re: Tracker updates for Zope 2.4
References: <Pine.LNX.4.21.0107071223050.1224-100000@serenade.digicool.com>
Content-Type: multipart/mixed;
 boundary="------------010601040709060007060902"

This is a multi-part message in MIME format.
--------------010601040709060007060902
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Ken Manheimer wrote:

> 
> Yes - i'd be glad to get a diff!  The tracker probably has a limited life
> around here, but we're still using it, and there are other folks out in
> the community also using it.  At some point i may have to forego even this
> minimal maintenance - but i expect that will be when we have a viable
> option to offer, like a CMF-based tracker.  In any case - thanks!


Here's a diff!

I'm running this on Zope 2.4, and it appears to work ok.

I haven't tested it for backwards compatibility with Zope 2.3 though, 
but it should work just fine, except for the bit in TrackerMisc.py where 
I took out the stuff for authenticating root users. I'm not sure what to 
do there.

--
Steve Alexander
Software Engineer
Cat-Box limited



--------------010601040709060007060902
Content-Type: text/plain;
 name="diffs.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="diffs.txt"

*** TrackerMethods.py.original
--- TrackerMethods.py
***************
*** 1371,1400 ****
      self._v_threshold = 0
  
      self._catalog.addColumn('type')
!     self._catalog.addIndex('type', 'FieldIndex')
      ## XXX Eventually: self._catalog.manage_addColumn('type')
  
-     self._catalog.addIndex('numid', 'FieldIndex')
- 
-     self._catalog.addIndex('exemptions', 'FieldIndex')
- 
-     self._catalog.addIndex('text_content', 'TextIndex')
- 
-     self._catalog.addIndex('date', 'FieldIndex')
- 
-     self._catalog.addIndex('stage', 'FieldIndex')
- 
-     self._catalog.addIndex('priority', 'FieldIndex')
- 
-     self._catalog.addIndex('private', 'FieldIndex')
- 
-     self._catalog.addIndex('issueOwners', 'KeywordIndex')
- 
-     self._catalog.addIndex('requester', 'FieldIndex')
- 
-     self._catalog.addIndex('subscribers', 'KeywordIndex')
- 
-     self._catalog.addIndex('from', 'FieldIndex')
  
      # XXX Eventually this will need to be a separate index for each trait.
      #     Problem is that the collection of traits is dynamic, and the names
--- 1371,1404 ----
      self._v_threshold = 0
  
      self._catalog.addColumn('type')
!     field_indexes=('type', 'numid', 'exemptions', 'date', 'stage', 'priority',
!                    'requester', 'from', 'private')
!     keyword_indexes=('issueOwners','subscribers','traitVals')
!     text_indexes=('text_content',)
!     addIndex=self._catalog.addIndex
!     # try to add indexes in Zope 2.3 style. If this fails
!     # then add them in Zope 2.4 style
!     try: 
!         for name in field_indexes:
!             addIndex(name, 'FieldIndex')
!         for name in keyword_indexes:
!             addIndex(name, 'KeywordIndex')
!         for name in text_indexes:
!             addIndex(name, 'TextIndex')
!     except TypeError:
!         from SearchIndex.UnIndex import UnIndex
!         from SearchIndex.UnTextIndex import UnTextIndex
!         from SearchIndex.UnKeywordIndex import UnKeywordIndex
!     
!         for name in field_indexes:
!             addIndex(name, UnIndex(name))
!         for name in keyword_indexes:
!             addIndex(name, UnKeywordIndex(name))
!         for name in text_indexes:
!             addIndex(name, UnTextIndex(name))
!       
      ## XXX Eventually: self._catalog.manage_addColumn('type')
  
  
      # XXX Eventually this will need to be a separate index for each trait.
      #     Problem is that the collection of traits is dynamic, and the names
***************
*** 1404,1410 ****
      #     only get an 'or' style search within traits.  If we had some easy
      #     'and'ing mechanism for search results, we would have a way to do
      #     multiple passes, refiningthe search to the desired results.
!     self._catalog.addIndex('traitVals', 'KeywordIndex')
  
      tracker_path = self.absolute_url()
      for issue in self.values():
--- 1408,1414 ----
      #     only get an 'or' style search within traits.  If we had some easy
      #     'and'ing mechanism for search results, we would have a way to do
      #     multiple passes, refiningthe search to the desired results.
!     #self._catalog.addIndex('traitVals', 'KeywordIndex')
  
      tracker_path = self.absolute_url()
      for issue in self.values():

*** TrackerMisc.py.original
--- TrackerMisc.py
***************
*** 2,8 ****
          
  import string
  import re
! from DocumentTemplate import html_quote
  import smtplib, socket
  from DateTime import DateTime
  import urllib
--- 2,8 ----
          
  import string
  import re
! from DocumentTemplate.DT_Util import html_quote
  import smtplib, socket
  from DateTime import DateTime
  import urllib
***************
*** 161,168 ****
      if not user:
          user = REQUEST.AUTHENTICATED_USER
      acl_users = user.acl_users
!     root_users = filter(None, [str(getattr(acl_users, '_emergency_user', '')),
!                                str(getattr(acl_users, '_super', ''))])
      for i in roles:
          if (string.lower(i) in ["anonymous", "anonymous user"]
              and str(acl_users._nobody) == str(user)):
--- 161,172 ----
      if not user:
          user = REQUEST.AUTHENTICATED_USER
      acl_users = user.acl_users
!     # This doesn't work in Zope 2.4, and I'm not sure why.
!     # There's probably a better way of doing this anyway!
!     #root_users = filter(None, [str(getattr(acl_users, '_emergency_user', '')),
!     #                           str(getattr(acl_users, '_super', ''))])
!     root_users=[]
!     
      for i in roles:
          if (string.lower(i) in ["anonymous", "anonymous user"]
              and str(acl_users._nobody) == str(user)):

--------------010601040709060007060902--


--------------050104050904080801090603--