summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Vagelpohl <jens@netz.ooo>2008-10-07 09:15:45 +0000
committerJens Vagelpohl <jens@netz.ooo>2008-10-07 09:15:45 +0000
commit82f2275cf90d80b91f06a1560aa286ec202b6b28 (patch)
treea53bc216ec6623175c8bfadf92d1da769189efc1
parent836629ac1443038e6388b18487ddba8c145efe17 (diff)
downloadJTracker-82f2275cf90d80b91f06a1560aa286ec202b6b28.zip
JTracker-82f2275cf90d80b91f06a1560aa286ec202b6b28.tar.gz
- reformat all documentation files
- update all license headers
-rw-r--r--CHANGES.txt542
-rw-r--r--COPYRIGHT.txt2
-rw-r--r--Extensions/convertTracker.py16
-rw-r--r--Extensions/emailAccepter.py25
-rw-r--r--Extensions/updater.py19
-rw-r--r--Extensions/utf8Converter.py20
-rw-r--r--JTracker.py19
-rw-r--r--JTrackerIssue.py19
-rw-r--r--Permissions.py17
-rw-r--r--README.txt289
-rw-r--r--VERSION.txt2
-rw-r--r--__init__.py17
-rw-r--r--utils.py19
13 files changed, 492 insertions, 514 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 08a638a..0cbed33 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,379 +1,351 @@
-CHANGES.txt for the JTracker
+Changelog for the JTracker product
+==================================
- This file contains change information for the JTracker product.
+1.16 (unreleased)
+-----------------
- 1.15 (01/10/2008)
+- added an external method to go through and convert all those
+ test files in issues and replies to UTF-8 which may be Latin-1
- Features added
+- updated and fixed the BTree converter script
- - Continuing the work on spam prevention, three new properties have
- been added so the admin can specify lists of words to look for in
- the subject, email and description of an incoming issue or issue
- reply. If one of the specified terms is found, Unauthorized is
- raised and all further processing is stopped.
+- updated the documentation files
- 1.14 (07/31/2006)
+1.15 (2008-01-10)
+-----------------
- Bugs fixed
+- Continuing the work on spam prevention, three new properties have
+ been added so the admin can specify lists of words to look for in
+ the subject, email and description of an incoming issue or issue
+ reply. If one of the specified terms is found, Unauthorized is
+ raised and all further processing is stopped.
- - The Spam prevention was improved to ensure replies to existing
- issues will never cause spam to be sent to existing subscribers
- and the spammer address will not be added to the subscriber list
- until explicitly unrestricted.
- - Admin users are now able to circumvent Spam protection.
+1.14 (2006-07-31)
+-----------------
-
- 1.13 (6/22/2006)
+- The Spam prevention was improved to ensure replies to existing
+ issues will never cause spam to be sent to existing subscribers
+ and the spammer address will not be added to the subscriber list
+ until explicitly unrestricted.
- Bugs fixed:
+- Admin users are now able to circumvent Spam protection.
- - The introduction of the email module in version 1.12 caused
- backwards incompatibilities with Python 2.1 - Python 2.2 or
- higher is required now. This is now mentioned in the INSTALL
- and README files. (http://www.dataflake.org/tracker/issue_00458
- by Deb Lewis)
- Features added:
+1.13 (2006-06-22)
+-----------------
- - The website spam prevention has been tightened down a lot. If you
- select the "review_issues" property on the JTracker property
- view, the following will happen:
+- The introduction of the email module in version 1.12 caused
+ backwards incompatibilities with Python 2.1 - Python 2.2 or
+ higher is required now. This is now mentioned in the INSTALL
+ and README files. (http://www.dataflake.org/tracker/issue_00458
+ by Deb Lewis)
- New issues will receive restricted permissions so that trying
- to view them as Anonymous will raise Unauthorized. Issues in the
- Private state will not be cataloged at all, so they cannot be
- found using searches, either.
+- The website spam prevention has been tightened down a lot. If you
+ select the "review_issues" property on the JTracker property
+ view, the following will happen:
- The tracker administrator will have two links at the bottom of
- new issue notification emails to quickly and easily delete or
- unrestrict a new issue with a single click. Unrestricting an
- issue will fix the permissions to inherit the defaults from the
- JTracker and also reindex it.
+ New issues will receive restricted permissions so that trying
+ to view them as Anonymous will raise Unauthorized. Issues in the
+ Private state will not be cataloged at all, so they cannot be
+ found using searches, either.
- New replies will be invisible for anonymous visitors. They are
- not indexed so their text cannot be found using searches.
+ The tracker administrator will have two links at the bottom of
+ new issue notification emails to quickly and easily delete or
+ unrestrict a new issue with a single click. Unrestricting an
+ issue will fix the permissions to inherit the defaults from the
+ JTracker and also reindex it.
- The tracker administrator will have two links at the bottom of
- new reply notification messages to either delete or make a reply
- visible in one single click, which will also trigger a reindex.
+ New replies will be invisible for anonymous visitors. They are
+ not indexed so their text cannot be found using searches.
+ The tracker administrator will have two links at the bottom of
+ new reply notification messages to either delete or make a reply
+ visible in one single click, which will also trigger a reindex.
- 1.12
- Features added:
+1.12 (2005-05-05)
+-----------------
- - To prevent website spam by anonymous posters a very simplistic
- mechanism will prevent newly posted issues from being visible,
- if the admin enables the "review_issues" property on the
- JTracker object. If "review_issues" is active, new issues will
- not go into "Pending" but into "Private" stage. The web forms
- then ensure that only tracker supporters can search for items
- in "Private" stage. This is not some super-secure solution, but
- it puts the bar higher and, even more important, Google and
- other crawlers will not find the spam by themselves.
- (http://www.dataflake.org/tracker/issue_00440)
+- To prevent website spam by anonymous posters a very simplistic
+ mechanism will prevent newly posted issues from being visible,
+ if the admin enables the "review_issues" property on the
+ JTracker object. If "review_issues" is active, new issues will
+ not go into "Pending" but into "Private" stage. The web forms
+ then ensure that only tracker supporters can search for items
+ in "Private" stage. This is not some super-secure solution, but
+ it puts the bar higher and, even more important, Google and
+ other crawlers will not find the spam by themselves.
+ (http://www.dataflake.org/tracker/issue_00440)
- If you have modified the forms please review the default search
- form and the default JTracker main view to see the change and
- apply it to your setup.
+ If you have modified the forms please review the default search
+ form and the default JTracker main view to see the change and
+ apply it to your setup.
- **IMPORTANT**: Since this change included adding another
- property to the JTracker class you must run the updater. See
- the section "Updating existing JTrackers" in the README.
+ **IMPORTANT**: Since this change included adding another
+ property to the JTracker class you must run the updater. See
+ the section "Updating existing JTrackers" in the README.
- - The Python email module is now used to handle incoming
- email interaction. This complicates the code but it also
- reduces the garbage showing when people send
- HTML-formatted email from Microsofts's junk email clients.
- (http://www.dataflake.org/tracker/issue_00397/)
+- The Python email module is now used to handle incoming
+ email interaction. This complicates the code but it also
+ reduces the garbage showing when people send
+ HTML-formatted email from Microsofts's junk email clients.
+ (http://www.dataflake.org/tracker/issue_00397/)
- - To ease deployment of JTracker in non-English environments
- a simple way to translate English phrases sent by the
- JTracker has been added. A new "translate" method can be
- used to pull the translated value into your view templates.
+- To ease deployment of JTracker in non-English environments
+ a simple way to translate English phrases sent by the
+ JTracker has been added. A new "translate" method can be
+ used to pull the translated value into your view templates.
- - Along with the internal phrases the templates used to generate
- email notices are fully customizable, too.
+- Along with the internal phrases the templates used to generate
+ email notices are fully customizable, too.
- Bugs fixed:
+- Worked around a bug in Zope 2.7.1 and up by removing the
+ ability to select a MaildropHost or MailHost object from the
+ "Add"-form. The call to superValues on the dispatcher is
+ now disallowed due to the security changes in Zope.
+ (http://www.dataflake.org/tracker/issue_00412 by Olavo Santos)
- - Worked around a bug in Zope 2.7.1 and up by removing the
- ability to select a MaildropHost or MailHost object from the
- "Add"-form. The call to superValues on the dispatcher is
- now disallowed due to the security changes in Zope.
- (http://www.dataflake.org/tracker/issue_00412 by Olavo Santos)
+1.11 (2004-05-16)
+-----------------
- 1.11
+- Changed the license used for this product to the new
+ ZPL 2.1 which is also used for all future Zope releases.
- Features added:
+- Adapt to the fact that PropertyManagers store sequences
+ as tuples and not lists anymore (JTracker issue 377 by
+ Ulrich Goertz).
- - Changed the license used for this product to the new
- ZPL 2.1 which is also used for all future Zope releases.
- Bugs fixed:
+1.10 (2004-04-15)
+-----------------
- - Adapt to the fact that PropertyManagers store sequences
- as tuples and not lists anymore (JTracker issue 377 by
- Ulrich Goertz).
+- New issues only triggered email notifications to the
+ JTracker admin, but not to those accounts defined as
+ supporters on the "Advanced" tab. Thanks go to Phil
+ Schumm for pointing out this (mis)behavior.
+- Added Zope 2.7.x as "tested platform" in the README.
- 1.10
+- Noted potential pitfalls with the "mailhost" path in the
+ JTracker in the face of virtual hosting in the README.
- Bugs fixed:
- - New issues only triggered email notifications to the
- JTracker admin, but not to those accounts defined as
- supporters on the "Advanced" tab. Thanks go to Phil
- Schumm for pointing out this (mis)behavior.
+1.9 (2003-09-28)
+----------------
- - Added Zope 2.7.x as "tested platform" in the README.
+- Show a little more information on the reply form.
- - Noted potential pitfalls with the "mailhost" path in the
- JTracker in the face of virtual hosting in the README.
+- Zope 2.7 does not like tal:content on singleton tags, so
+ the reply form blew up (pointed out by Eugene Morozov in
+ issue 321).
- 1.9
+1.8 (2003-02-23)
+----------------
- Features added:
+- The list of items that can be added to a JTracker from the
+ ZMI is now mor intelligent. It will allow adding a ZCatalog
+ if there is no object named 'catalog' contained in it and
+ it will allow adding a Mail Host (and Maildrop Host if the
+ product is installed) if no object named 'MailHost' is
+ in the JTracker (Tracker issue 243).
- - Show a little more information on the reply form.
+- Eliminated all cases where a mutable type was used as the
+ default value in a function's argument list. This should
+ fix the mysterious subscriber multiplication (Tracker issue
+ 241)
- Bugs fixed:
+- Worked around a IE/Windoze dumbness where file uploads
+ would end up with a file name equal to the full path of the
+ uploaded file on the uploader's system. Normal browsers
+ provide a correct file name. (Tracker issue 238 posted by
+ Jim Harrison)
- - Zope 2.7 does not like tal:content on singleton tags, so
- the reply form blew up (pointed out by Eugene Morozov in
- issue 321).
+1.7 (2003-02-02)
+----------------
- 1.8
+- Searches can be re-executed from an issue view page. Once
+ a custom search has been run the search terms are saved
+ using the built-in sessioning in Zope and can be re-called
+ from an issue view. This follows the typical use case of
+ going through several issues that were found via a search.
+ (Tracker issue 223 by myself)
- Features added:
+- Added id attributes to several places like tracker title
+ and issue title displays to enable some style customizations
+ (tracker issue 217 by Dave Lehman).
- - The list of items that can be added to a JTracker from the
- ZMI is now mor intelligent. It will allow adding a ZCatalog
- if there is no object named 'catalog' contained in it and
- it will allow adding a Mail Host (and Maildrop Host if the
- product is installed) if no object named 'MailHost' is
- in the JTracker (Tracker issue 243).
+- The JTracker administrator's full name is now editable. This
+ change requires that the updater script be run before or after
+ applying the new software. (Tracker issue 218 by Dave Lehman)
+
+- Worked over the way subscriber addresses are handled to try
+ and pin down the mysterious addition of subscribers (Tracker
+ issue 230, added by myself).
- Bugs fixed:
- - Eliminated all cases where a mutable type was used as the
- default value in a function's argument list. This should
- fix the mysterious subscriber multiplication (Tracker issue
- 241)
+1.6 (2002-12-20)
+----------------
+
+- A missed wrong indentation in the email processing code
+ led to replies to issues that would also create brand new
+ issues at the same time.
- - Worked around a IE/Windoze dumbness where file uploads
- would end up with a file name equal to the full path of the
- uploaded file on the uploader's system. Normal browsers
- provide a correct file name. (Tracker issue 238 posted by
- Jim Harrison)
+- A missing import would prevent an error message to be sent
+ to the JTracker administrator if there was an error
+ sending email during normal operation of the JTracker.
+ (Tracker issue 213, thanks go to Eugene Morozow)
+- Completed the "hookup" of account settings to all those
+ forms where names or emails are needed. If the currently
+ logged-in user has an account (see "Advanced" tab in the
+ ZMI) then these values will be pre-filled with the correct
+ email address and full name. (Tracker issue 212, thanks to
+ Alan Milligan for reminding me that this piece was not filled
+ in completely)
- 1.7
+- The addIssue method can now be scripted better because
+ it does not require REQUEST to be passed in anymore
+ (Tracker issue 211 by Alan Milligan).
- Features added:
- - Searches can be re-executed from an issue view page. Once
- a custom search has been run the search terms are saved
- using the built-in sessioning in Zope and can be re-called
- from an issue view. This follows the typical use case of
- going through several issues that were found via a search.
- (Tracker issue 223 by myself)
+1.5 (2002-12-13)
+----------------
- - Added id attributes to several places like tracker title
- and issue title displays to enable some style customizations
- (tracker issue 217 by Dave Lehman).
+- Better error handling for the mail handler: If something
+ goes awry during message reception a error report is sent
+ to the email address set as the admin email. Furthermore,
+ there is now some tests to see if an incoming message is
+ just a bounce message so that infinite mail loops are
+ avoided. Removed all such tests from the email accepter
+ standalone script to simplify it.
- - The JTracker administrator's full name is now editable. This
- change requires that the updater script be run before or after
- applying the new software. (Tracker issue 218 by Dave Lehman)
+- An incoming message subject line is now always mime-decoded
+ so that it does not show up with garbage mime code. (Tracker
+ issue 205, thanks go to Alan Milligan)
- Bugs fixed:
- - Worked over the way subscriber addresses are handled to try
- and pin down the mysterious addition of subscribers (Tracker
- issue 230, added by myself).
+1.4 (2002-12-09)
+----------------
+- A property on the Properties tab (accept_email) lets the
+ administrator turn the email processing for emails put into
+ the JTracker viw the receiveEmail method on or off.
- 1.6
+- A permissions problem crept into version 1.3 that had to do
+ with the (very unintuitive) way permissions are initialized
+ on base classes. The problem would have the "Support
+ JTracker Issues" permission disappear and only allow true
+ Manager users do issue support work.
- Bugs fixed:
+- Added a (really lame) attempt to detect if an incoming email
+ message is actually a bounce from dumb mail servers that do
+ not complain about non-existing recipients but accept mail
+ like everything is alright and then send a separate bounce
+ message (to the JTracker address) later. As to be expected,
+ this weird and unintuitive behavior only shows up on Micro$haft
+ wannabe-email servers so far ("Exchange").
- * A missed wrong indentation in the email processing code
- led to replies to issues that would also create brand new
- issues at the same time.
- * A missing import would prevent an error message to be sent
- to the JTracker administrator if there was an error
- sending email during normal operation of the JTracker.
- (Tracker issue 213, thanks go to Eugene Morozow)
+1.3 (2002-12-07)
+----------------
- * Completed the "hookup" of account settings to all those
- forms where names or emails are needed. If the currently
- logged-in user has an account (see "Advanced" tab in the
- ZMI) then these values will be pre-filled with the correct
- email address and full name. (Tracker issue 212, thanks to
- Alan Milligan for reminding me that this piece was not filled
- in completely)
+- Email subscriber handling has been simplified. Now the
+ JTracker admin and the issue poster are just entries in the
+ issue subscriber list, which also means they can be
+ removed from it if so desired.
- Features added:
+- The issue numbering scheme has been changed to pad the issue
+ number with zeros. This scheme allows getting rid of the
+ issue_number method/index kludge that was put in to allow
+ correct sorting in the views.
- * The addIssue method can now be scripted better because
- it does not require REQUEST to be passed in anymore
- (Tracker issue 211 by Alan Milligan).
+- If the BTreeFolder2 package is installed it will be used
+ for all newly instantiated JTrackers. A script is provided
+ that allows upgrading existing JTracker instances to use
+ the BTreeFolder2-based version. See README.txt for details
+ on how to upgrade. Installing the BTreeFolder2 product
+ and upgrading your JTracker to use it is the recommended
+ configuration.
+- An updater script is included that allows reasonably safe
+ updates in place so that the user can install the latest
+ software release, run the updater and the existing JTracker
+ instances will be updated to work with the new code if they
+ need updating. See README.txt for how to use the updater
+ script.
- 1.5
+- Add support for uploading files. The upload capability
+ can be switched on and off by the administrator and a
+ specific kilobyte limit for allowable file sizes can be
+ set. A single file can be uploaded per issue entry. The
+ administrator user can add or delete these files from the
+ Zope Management Interface, regardless of filesize limit
+ settings on the JTracker. This feature introduced in response
+ to Tracker issue 196 by Jim Harrison.
- Features added:
+- Issue descriptions and issue reply bodies were not HTML-encoded
+ in the JTracker Issue view. This is a security risk that can
+ allow someone to insert malicious HTML or client-side scripting
+ into an issue or a followup. All these text fields are quoted
+ now. Thanks to Artur Zaprzala for the heads-up on this.
- * Better error handling for the mail handler: If something
- goes awry during message reception a error report is sent
- to the email address set as the admin email. Furthermore,
- there is now some tests to see if an incoming message is
- just a bounce message so that infinite mail loops are
- avoided. Removed all such tests from the email accepter
- standalone script to simplify it.
- Bugs fixed:
+1.2 (2002-12-03)
+----------------
- * An incoming message subject line is now always mime-decoded
- so that it does not show up with garbage mime code. (Tracker
- issue 205, thanks go to Alan Milligan)
+- The Mail Host to be used for mail handling can now be
+ selected upon instantiation and changed in the JTracker
+ properties view.
+- You can now talk to the JTracker using email. How to set
+ it up and what it is that you can do via email is explained
+ in the README.
- 1.4
- Features added:
+1.1 (2002-11-30)
+----------------
- * A property on the Properties tab (accept_email) lets the
- administrator turn the email processing for emails put into
- the JTracker viw the receiveEmail method on or off.
+- Replies could get a wrong date attached to them because
+ of the way default arguments were handled
- Bugs fixed:
+- Overriding manage_editProperties so that editing an issue
+ on its Property tab will now recatalog as well. This
+ allowed me to remove the "Advanced" tab in the ZMI.
- * A permissions problem crept into version 1.3 that had to do
- with the (very unintuitive) way permissions are initialized
- on base classes. The problem would have the "Support
- JTracker Issues" permission disappear and only allow true
- Manager users do issue support work.
+- Replies can now be deleted or their text body edited via
+ the ZMI.
- * Added a (really lame) attempt to detect if an incoming email
- message is actually a bounce from dumb mail servers that do
- not complain about non-existing recipients but accept mail
- like everything is alright and then send a separate bounce
- message (to the JTracker address) later. As to be expected,
- this weird and unintuitive behavior only shows up on Micro$haft
- wannabe-email servers so far ("Exchange").
+- the view form for issues had a couple convenience links
+ added, one of them to the issue itself and another one,
+ if the current user has the permission to manage this
+ JTracker, that links directly to the ZMI.
- 1.3
+1.0 (2002-11-27)
+----------------
- Features added:
+- Text searches now find text in replies as well, whereas it used
+ to be limited for the issue title and description before.
- * Email subscriber handling has been simplified. Now the
- JTracker admin and the issue poster are just entries in the
- issue subscriber list, which also means they can be
- removed from it if so desired.
+- Better issue sorting in search results views with the help of
+ another catalog index and a helper variable.
- * The issue numbering scheme has been changed to pad the issue
- number with zeros. This scheme allows getting rid of the
- issue_number method/index kludge that was put in to allow
- correct sorting in the views.
+- JTracker issue searches can now be bookmarked because it will
+ show the full search criteria in the URL query string.
- * If the BTreeFolder2 package is installed it will be used
- for all newly instantiated JTrackers. A script is provided
- that allows upgrading existing JTracker instances to use
- the BTreeFolder2-based version. See README.txt for details
- on how to upgrade. Installing the BTreeFolder2 product
- and upgrading your JTracker to use it is the recommended
- configuration.
- * An updater script is included that allows reasonably safe
- updates in place so that the user can install the latest
- software release, run the updater and the existing JTracker
- instances will be updated to work with the new code if they
- need updating. See README.txt for how to use the updater
- script.
+0.9 (2002-11-20)
+----------------
- * Add support for uploading files. The upload capability
- can be switched on and off by the administrator and a
- specific kilobyte limit for allowable file sizes can be
- set. A single file can be uploaded per issue entry. The
- administrator user can add or delete these files from the
- Zope Management Interface, regardless of filesize limit
- settings on the JTracker. This feature introduced in response
- to Tracker issue 196 by Jim Harrison.
+First official release
- Bugs fixed:
- * Issue descriptions and issue reply bodies were not HTML-encoded
- in the JTracker Issue view. This is a security risk that can
- allow someone to insert malicious HTML or client-side scripting
- into an issue or a followup. All these text fields are quoted
- now. Thanks to Artur Zaprzala for the heads-up on this.
+0.5 (2002-10-15)
+----------------
-
- 1.2
-
- Features added:
-
- * The Mail Host to be used for mail handling can now be
- selected upon instantiation and changed in the JTracker
- properties view.
-
- * You can now talk to the JTracker using email. How to set
- it up and what it is that you can do via email is explained
- in the README.
-
-
- 1.1
-
- Bugs fixed:
-
- * Replies could get a wrong date attached to them because
- of the way default arguments were handled
-
- Features added:
-
- * Overriding manage_editProperties so that editing an issue
- on its Property tab will now recatalog as well. This
- allowed me to remove the "Advanced" tab in the ZMI.
-
- * Replies can now be deleted or their text body edited via
- the ZMI.
-
- * the view form for issues had a couple convenience links
- added, one of them to the issue itself and another one,
- if the current user has the permission to manage this
- JTracker, that links directly to the ZMI.
-
-
- 1.0
-
- Bugs fixed:
-
- * Text searches now find text in replies as well, whereas it used
- to be limited for the issue title and description before.
-
- * Better issue sorting in search results views with the help of
- another catalog index and a helper variable.
-
- Features added:
-
- * JTracker issue searches can now be bookmarked because it will
- show the full search criteria in the URL query string.
-
-
- 0.9
-
- First official release
-
-
- 0.5
-
- First version
+First version
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index ee8eeaa..6e79bae 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2008 Jens Vagelpohl.
+Copyright (c) 2002-2008 Jens Vagelpohl and Contributors.
All Rights Reserved.
This software is subject to the provisions of the Zope Public License,
diff --git a/Extensions/convertTracker.py b/Extensions/convertTracker.py
index ed66fc4..eb51460 100644
--- a/Extensions/convertTracker.py
+++ b/Extensions/convertTracker.py
@@ -1,11 +1,19 @@
##############################################################################
#
-# convertTracker convert a Tracker to a JTracker
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
-#
##############################################################################
+""" Script to convert a CMF Tracker to a JTracker
+
+$Id$
+"""
from DateTime.DateTime import DateTime
from Products.JTracker.JTracker import manage_addJTracker
diff --git a/Extensions/emailAccepter.py b/Extensions/emailAccepter.py
index 605891f..7c4a1a8 100644
--- a/Extensions/emailAccepter.py
+++ b/Extensions/emailAccepter.py
@@ -1,17 +1,24 @@
#!/usr/bin/env python
-#####################################################################
+##############################################################################
#
-# emailAccepter Script to launch from /etc/aliases or procmail
-# to accept email messages and push them into the
-# JTracker instance at JTRACKER_URL
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-#####################################################################
-__version__='$Revision$'[11:-2]
+##############################################################################
+""" emailAccepter: Receive email on STDIN and hand it to a JTracker
+ Launch this from e.g. /etc/aliases or procmail
-import sys, urllib
+$Id$
+"""
+
+import sys
+import urllib
JTRACKER_URL = 'http://server.my.org:8080/tracker'
LOGIN = None # Use None if anonymous access is sufficient
diff --git a/Extensions/updater.py b/Extensions/updater.py
index 9d13709..305602c 100644
--- a/Extensions/updater.py
+++ b/Extensions/updater.py
@@ -1,12 +1,19 @@
-#####################################################################
+##############################################################################
#
-# updater Update existing JTracker instances
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-#####################################################################
-__version__='$Revision$'[11:-2]
+##############################################################################
+""" updater: Script to update JTracker instances in-place
+
+$Id$
+"""
from copy import deepcopy
from string import zfill
diff --git a/Extensions/utf8Converter.py b/Extensions/utf8Converter.py
index 20c4a05..680b774 100644
--- a/Extensions/utf8Converter.py
+++ b/Extensions/utf8Converter.py
@@ -1,15 +1,21 @@
-#####################################################################
+##############################################################################
#
-# utf8Converter Make sure all properties are UTF-8
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-#####################################################################
-__version__='$Revision: 1370 $'[11:-2]
+##############################################################################
+""" utf8Converter: Find and convert Latin-1-text to UTF-8
+
+$Id$
+"""
from copy import deepcopy
-from string import zfill
def update(self, REQUEST):
""" Update existing instances """
diff --git a/JTracker.py b/JTracker.py
index 35fc93e..06916db 100644
--- a/JTracker.py
+++ b/JTracker.py
@@ -1,12 +1,19 @@
-#####################################################################
+##############################################################################
#
-# JTracker A Issue Tracker
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-#####################################################################
-__version__='$Revision$'[11:-2]
+##############################################################################
+""" JTracker: A simple issue tracker
+
+$Id$
+"""
# General python imports
from email import message_from_string
diff --git a/JTrackerIssue.py b/JTrackerIssue.py
index a16bc40..63c9237 100644
--- a/JTrackerIssue.py
+++ b/JTrackerIssue.py
@@ -1,12 +1,19 @@
-######################################################################
+##############################################################################
#
-# JTrackerIssue A support issue
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-######################################################################
-__version__='$Revision$'[11:-2]
+##############################################################################
+""" JTrackerIssue: Support issue class for the JTracker issue tracker
+
+$Id$
+"""
# General Python imports
import os, string, random
diff --git a/Permissions.py b/Permissions.py
index a1d9bab..68f3e28 100644
--- a/Permissions.py
+++ b/Permissions.py
@@ -1,14 +1,19 @@
##############################################################################
#
-# Permissions.py Permissions defined for use with the JTracker Product
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
-#
##############################################################################
+""" Permissions: Permission definitions used for the JTracker product
-__doc__ = """ JTracker Permission definitions """
-__version__ = '$Revision$'[11:-2]
+$Id$
+"""
ManageJTracker = 'Manage JTracker'
SubmitJTrackerIssues = 'Submit JTracker Issues'
diff --git a/README.txt b/README.txt
index 6aa5b4a..a65db8a 100644
--- a/README.txt
+++ b/README.txt
@@ -1,210 +1,157 @@
-README for the Zope JTracker Product
+==========
+ JTracker
+==========
- This product is an issue tracker for Zope.
+.. contents::
- **Tested Platforms**
+This product is an issue tracker for Zope.
- This version of the JTracker has been written on and for
- Zope 2.6.0 and up. I have run the JTracker successfully
- on Zope versions 2.6.x up to 2.10.x
- Please note that JTracker versions 1.12 and higher require Python
- 2.2 or higher to work.
+If you use virtual hosting
+==========================
+If virtual hosting is used the auto-generated (or manually
+filled in) path to the MailHost can be incorrect. If you see
+errors adding or following up to issues where the traceback shows
+references to "unrestrictedTraverse" at the end the "mailhost"
+property is set incorrectly. If you do know the true physical path
+to the MailHost you want to use and it differs from the value
+shown then correct it. If you do not know the path you can also
+just fill in the ID of your MailHost object without any leading
+slashes and the first object with that ID that can be acquired
+by the JTracker will be used.
- **If you use virtual hosting**
- If virtual hosting is used the auto-generated (or manually
- filled in) path to the MailHost can be incorrect. If you see
- errors adding or following up to issues where the traceback shows
- references to "unrestrictedTraverse" at the end the "mailhost"
- property is set incorrectly. If you do know the true physical path
- to the MailHost you want to use and it differs from the value
- shown then correct it. If you do not know the path you can also
- just fill in the ID of your MailHost object without any leading
- slashes and the first object with that ID that can be acquired
- by the JTracker will be used.
+How to upgrade
+==============
+
+JTracker now comes with an updater script that can be invoked as
+an External Method. To update an existing JTracker instance
+follow the following steps:
+- Log into the Zope Management Interface (ZMI) and go to the
+ folder where your JTracker(s) are located.
- **Please use the BTreeFolder2 Product**
+- From the "Add" dropdown select "External Method".
- Since version 1.3 of the JTracker it is recommended that you
- install BTreeFolder2. To download BTreeFolder2, see
- http://hathaway.freezope.org/Software/BTreeFolder2 .
+- Fill in the following fields:
- BTreeFolder2 is a BTree-based Folder that is much more
- efficient than standard Zope folders and is able to scale to
- a much higher number of contained items.
+ - Id: Any ID that is not yet taken
- Once the BTreeFolder2 product is installed it is recognized
- by the JTracker package and it will be used for all subsequent
- newly instantiated JTracker objects. Existing JTracker instances
- can be upgraded with the help of a script that comes with this
- package. In order to upgrade, follow these steps:
+ - Title: (optional) title
- - Log into the Zope Management Interface (ZMI) and go to the
- folder where your JTracker(s) are located.
+ - Module Name: JTracker.updater
- - From the "Add" dropdown select "External Method".
+ - Function Name: update
- - Fill in the following fields:
+- Hit the "Add" button to instantiate the External Method
- - Id: Any ID that is not yet taken
+- Click on your new external method in the ZMI
- - Title: (optional) title
+- Click on the "Test" tab in the External Method to update.
- - Module Name: JTracker.updater
+Depending on the number of JTrackers in the folder and the
+number of issues in each this update may take a while. Once
+it is done you will see a small log of the changes that were
+applied.
- - Function Name: BTreeConverter
+In some cases the upgrade process actually requires restarting
+your Zope server. A symptom that signals the need to restart is
+the appearance of error messages when clicking through the
+JTracker and some of the issues.
- - Hit the "Add" button to instantiate the External Method
- - Click on your new external method in the ZMI
+Talking to the JTracker via Email
+=================================
- - Click on the "Test" tab in the External Method to update.
+The JTracker allows you to perform certain tasks via email. This
+requires cooperation from several components, namely a dedicated
+email address (must be the same as the address set as
+"jtracker_emailaddress" in the JTracker properties) and a mail
+server that allows you to pipe mail for the dedicated email address
+into a script instead of delivering it to a mail spool. The script
+gets the raw email text and issues a POST request to a method
+on the JTracker.
- Depending on the number of JTrackers in the folder and the
- number of issues in each this update may take a while. Once
- it is done you will see a small log of the changes that were
- applied.
+One important consideration that must be kept in mind is that if
+someone talks to the JTracker via email it is not possible to determine
+what user they really are. Email addresses can be spoofed easily.
+For that reason the email interaction is limited to the following:
- In some cases the upgrade process actually requires restarting
- your Zope server. A symptom that signals the need to restart is
- the appearance of error messages when clicking through the
- JTracker and some of the issues.
+- creating new issues
+- commenting on existing issues
- **Upgrading existing JTrackers**
-
- JTrackers now come with an updater script that can be invoked as
- an External Method. To update an existing JTracker instance
- follow the following steps:
+This is basically what everyone with the permission "Submit JTracker
+Issues" can do. All other administrative requests must go through the
+normal web interface.
- - Log into the Zope Management Interface (ZMI) and go to the
- folder where your JTracker(s) are located.
+This is what you need to do to set it up:
- - From the "Add" dropdown select "External Method".
+- Edit the configuration parameters in the "emailAccepter.py" script.
+ This script is in the Extensions directory of the JTracker package.
+ It allows you to specify the full URL where your JTracker resides,
+ the email address that it receives mail under (this is just for
+ verification purposes to make sure only legitimate mail is piped
+ into Zope), and an optional login and password in case your JTracker
+ is not reachable for anonymous users or you have not enabled the
+ "Submit JTracker issues" permission for Anonymous in the JTracker
+ "Security" ZMI view.
- - Fill in the following fields:
+- Make your mail server invoke the "emailAccepter.py" script. How this
+ is done varies from one mail server software package to another. I
+ have set it up with Postfix (easiest) and Sendmail (a little more
+ complicated). I used the /etc/aliases file to specify the email
+ handling, like so::
- - Id: Any ID that is not yet taken
+ # JTracker email account is jtracker
+ jtracker: "|python2.x /path/to/JTracker/Extensions/emailAccepter.py"
- - Title: (optional) title
+ You must ensure that the emailAccepter script can be found/read by the
+ user account your mail server runs under (you may copy the script
+ anywhere, there are no dependencies with the JTracker package itself)
+ and that your mail server can execute the python binary. This is the
+ added snag with sendmail, it wants all "approved" binaries to be
+ in (or linked into) a specific folder (/etc/smrsh on RedHat).
- - Module Name: JTracker.updater
+ The script invocation can be done using other methods as well, such
+ as procmail.
- - Function Name: update
+ If you used the /etc/aliases route do not forget to run "newaliases"
+ when you are done. At this point you should be OK, if not your email
+ will bounce back. It is hard to debug the real reason for bouncing
+ emails to the JTracker, I suggest you read up on your mail server
+ package to get debugging help.
- - Hit the "Add" button to instantiate the External Method
+Once you are set up on the receiving end here are the rules for sending
+email to the JTracker:
- - Click on your new external method in the ZMI
+- Email that does not have a issue ID ("issue_23") in the subject line
+ but one of the items defined as "components" in the JTracker
+ properties will create a new issue. The subject line should also
+ contain one of the request types defined under "request_types" in
+ the JTrackeer properties. The full subject will end up being the
+ issue title.
- - Click on the "Test" tab in the External Method to update.
-
- Depending on the number of JTrackers in the folder and the
- number of issues in each this update may take a while. Once
- it is done you will see a small log of the changes that were
- applied.
-
- In some cases the upgrade process actually requires restarting
- your Zope server. A symptom that signals the need to restart is
- the appearance of error messages when clicking through the
- JTracker and some of the issues.
-
-
- **Talking to the JTracker via Email**
-
- The JTracker allows you to perform certain tasks via email. This
- requires cooperation from several components, namely a dedicated
- email address (must be the same as the address set as
- "jtracker_emailaddress" in the JTracker properties) and a mail
- server that allows you to pipe mail for the dedicated email address
- into a script instead of delivering it to a mail spool. The script
- gets the raw email text and issues a POST request to a method
- on the JTracker.
-
- One important consideration that must be kept in mind is that if
- someone talks to the JTracker via email it is not possible to determine
- what user they really are. Email addresses can be spoofed easily.
- For that reason the email interaction is limited to the following:
-
- - creating new issues
-
- - commenting on existing issues
-
- This is basically what everyone with the permission "Submit JTracker
- Issues" can do. All other administrative requests must go through the
- normal web interface.
-
- This is what you need to do to set it up:
-
- - Edit the configuration parameters in the "emailAccepter.py" script.
- This script is in the Extensions directory of the JTracker package.
- It allows you to specify the full URL where your JTracker resides,
- the email address that it receives mail under (this is just for
- verification purposes to make sure only legitimate mail is piped
- into Zope), and an optional login and password in case your JTracker
- is not reachable for anonymous users or you have not enabled the
- "Submit JTracker issues" permission for Anonymous in the JTracker
- "Security" ZMI view.
-
- - Make your mail server invoke the "emailAccepter.py" script. How this
- is done varies from one mail server software package to another. I
- have set it up with Postfix (easiest) and Sendmail (a little more
- complicated). I used the /etc/aliases file to specify the email
- handling, like so::
-
- # JTracker email account is jtracker
- jtracker: "|python2.x /path/to/JTracker/Extensions/emailAccepter.py"
-
- You must ensure that the emailAccepter script can be found/read by the
- user account your mail server runs under (you may copy the script
- anywhere, there are no dependencies with the JTracker package itself)
- and that your mail server can execute the python binary. This is the
- added snag with sendmail, it wants all "approved" binaries to be
- in (or linked into) a specific folder (/etc/smrsh on RedHat).
-
- The script invocation can be done using other methods as well, such
- as procmail.
-
- If you used the /etc/aliases route do not forget to run "newaliases"
- when you are done. At this point you should be OK, if not your email
- will bounce back. It is hard to debug the real reason for bouncing
- emails to the JTracker, I suggest you read up on your mail server
- package to get debugging help.
-
- Once you are set up on the receiving end here are the rules for sending
- email to the JTracker:
-
- - Email that does not have a issue ID ("issue_23") in the subject line
- but one of the items defined as "components" in the JTracker
- properties will create a new issue. The subject line should also
- contain one of the request types defined under "request_types" in
- the JTrackeer properties. The full subject will end up being the
- issue title.
-
- Parsing for component and request type is case-insensitive. It must
- be spelled correctly, though. Faulty email will be discarded silently
- and will not lead to malformed issues being created.
-
- A subject line that will create a "Bug Report"-type issue for
- component "Widget" could look like this::
-
- widget bug report: I cannot log in anymore
-
- - Email that has a issue ID in the subject line is assumed to be a
- comment on the issue. Since issue followups do not use titles the
- rest of the subject is not important and it will be discarded. An
- example subject line can be as simple as this::
-
- issue_123
-
- For convenience purposes it is possible to take the email sent out
- by the JTracker about a new issue or an issue followup and simply
- hit "Reply" and adding your comment in the body. This will do
- "the right thing" and create an issue followup. To improve readability
- you should make sure to trim unnecessarily quoted text from your
- reply.
+ Parsing for component and request type is case-insensitive. It must
+ be spelled correctly, though. Faulty email will be discarded silently
+ and will not lead to malformed issues being created.
+ A subject line that will create a "Bug Report"-type issue for
+ component "Widget" could look like this::
+ widget bug report: I cannot log in anymore
+- Email that has a issue ID in the subject line is assumed to be a
+ comment on the issue. Since issue followups do not use titles the
+ rest of the subject is not important and it will be discarded. An
+ example subject line can be as simple as this::
+
+ issue_123
+
+ For convenience purposes it is possible to take the email sent out
+ by the JTracker about a new issue or an issue followup and simply
+ hit "Reply" and adding your comment in the body. This will do
+ "the right thing" and create an issue followup. To improve readability
+ you should make sure to trim unnecessarily quoted text from your
+ reply.
diff --git a/VERSION.txt b/VERSION.txt
index d40acaa..78786a9 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-1.15
+1.16dev
diff --git a/__init__.py b/__init__.py
index 06cf225..15c5081 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,14 +1,19 @@
##############################################################################
#
-# __init__.py Initialization code for the JTracker
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
-#
##############################################################################
+""" JTracker, a simple issue tracker
-__doc__ = """ JTracker initialization module """
-__version__ = '$Revision$'[11:-2]
+$Id$
+"""
from Permissions import ManageJTracker, SubmitJTrackerIssues
from Globals import ImageFile
diff --git a/utils.py b/utils.py
index d6206d3..3331854 100644
--- a/utils.py
+++ b/utils.py
@@ -1,12 +1,19 @@
-######################################################################
+##############################################################################
#
-# utils Utility functions for the JTracker product
+# Copyright (c) 2002-2008 Jens Vagelpohl and Contributors. All Rights Reserved.
#
-# This software is governed by a license. See
-# LICENSE.txt for the terms of this license.
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
#
-######################################################################
-__version__='$Revision$'[11:-2]
+##############################################################################
+""" utils: Utility functions for the JTracker product
+
+$Id$
+"""
from Acquisition import aq_base