From e97aac1a3dde888687a4b0b4404ef90937182a67 Mon Sep 17 00:00:00 2001 From: richard Date: Tue, 10 Dec 2002 00:11:16 +0000 Subject: [PATCH] Lots of little fixes in this update: - fixed Date.local() - email quoted text stripping is controllable again (sf bug 650742) - extract attachment name from content-disposition if name is missing (sf bug 637278) - removed FILTER_POSITION from bundled configs - reverse message listing in issue display (reversion of recent change) - bad entries for multilink editing in cgi don't traceback now (sf bug 640310) git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1394 57a73879-2fb5-44c3-a270-3262357dd7e2 --- CHANGES.txt | 7 ++++ TODO.txt | 10 ++++- doc/customizing.txt | 7 +++- roundup/__init__.py | 4 +- roundup/cgi/client.py | 19 ++++++--- roundup/cgi/templating.py | 9 ++++ roundup/mailgw.py | 12 ++++-- roundup/templates/classic/config.py | 5 +-- roundup/templates/classic/html/issue.item | 2 +- roundup/templates/minimal/config.py | 5 +-- setup.py | 23 ++++++++++- test/test_mailgw.py | 50 ++++++++++++++++++++++- 12 files changed, 128 insertions(+), 25 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 2077d29..6f7e5db 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -9,6 +9,13 @@ are given with the most recent entry first. - removed use of string/strop from TAL/TALInterpreter - handle KeyboardInterrupt nicely - fixed Date and Interval form value handling +- fixed Date.local() +- email quoted text stripping is controllable again (sf bug 650742) +- extract attachment name from content-disposition if name is missing (sf + bug 637278) +- removed FILTER_POSITION from bundled configs +- reverse message listing in issue display (reversion of recent change) +- bad entries for multilink editing in cgi don't traceback now (sf bug 640310) 2002-11-07 0.5.2 diff --git a/TODO.txt b/TODO.txt index e37e0a6..88a5335 100644 --- a/TODO.txt +++ b/TODO.txt @@ -16,6 +16,8 @@ pending hyperdb range searching of values (dates in particular). [value, value, ...] implies "in" pending hyperdb migrate "id" property to be Number type pending hyperdb multilink sorting by length is dumb +pending hyperdb lastchangedby auto-property giving last user to change an + item pending tracker split instance.open() into open() and login() pending mailgw allow commands (feature request #556996) like "help", "dump issue123" (would send all info about @@ -33,6 +35,8 @@ pending mailgw Identification of users should have a configurable degree of strictness (ie. turn off username==address matching) pending mailgw Use in-reply-to for determining message lineage when subject line lets us down +pending mailgw Allow different brackets delimiting [issueNNN] in Subject +pending email email sig could use a "remove me from this list" pending messages Snarf the first whole sentence, or full first line of messages for the summary - whichever is longer. pending project switch to a Roundup instance for Roundup bug/feature tracking @@ -56,14 +60,18 @@ pending web allow multilink selections to select a "none" element to allow pending web automagically link designators pending web add checkbox-based removal/addition for multilink entries (eg "add me"/"remove me" for nosy list) -pending web multilink item removal action (with retirement) pending web search "refinement" - pre-fill the search page with the current search parameters pending web column-heading sort stuff isn't implemented +pending web multilink item removal action with retirement +pending web implement a python dict version of the form values active web UNIX init.d script for roundup-server bug web query editing isn't fully implemented bug web no testing for parsePropsFromForm active web revert to showing entire message in classic issue display +bug hyperdb pysqlite and locks + http://www.hwaci.com/sw/sqlite/c_interface.html +bug web implement the request.url attribute? ======= ========= ============================================================= diff --git a/doc/customizing.txt b/doc/customizing.txt index d67e395..068e907 100644 --- a/doc/customizing.txt +++ b/doc/customizing.txt @@ -2,7 +2,7 @@ Customising Roundup =================== -:Version: $Revision: 1.63 $ +:Version: $Revision: 1.64 $ .. This document borrows from the ZopeBook section on ZPT. The original is at: http://www.zope.org/Documentation/Books/ZopeBook/current/ZPT.stx @@ -1486,6 +1486,10 @@ the "status" and "topic" properties, and the table includes columns for the Searching Views --------------- +Note: if you add a new column to the ``:columns`` form variable potentials + then you will need to add the column to the `index view`_ + template so it is actually displayed. + This is one of the class context views. The template used is typically "*classname*.search". The form on this page should have "search" as its ``:action`` variable. The "search" action: @@ -1515,7 +1519,6 @@ action are: template schema does not. - Item Views ---------- diff --git a/roundup/__init__.py b/roundup/__init__.py index b5440b9..9935146 100644 --- a/roundup/__init__.py +++ b/roundup/__init__.py @@ -15,7 +15,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: __init__.py,v 1.16 2002-11-06 11:38:42 richard Exp $ +# $Id: __init__.py,v 1.17 2002-12-10 00:11:14 richard Exp $ ''' Roundup - issue tracking for knowledge workers. @@ -67,6 +67,6 @@ written by Ka-Ping Yee in the "doc" directory. If nothing else, it has a much prettier cake :) ''' -__version__ = '0.5.2' +__version__ = '0.5.3' # vim: set filetype=python ts=4 sw=4 et si diff --git a/roundup/cgi/client.py b/roundup/cgi/client.py index 77e625d..f45b336 100644 --- a/roundup/cgi/client.py +++ b/roundup/cgi/client.py @@ -1,4 +1,4 @@ -# $Id: client.py,v 1.58 2002-11-28 07:08:39 richard Exp $ +# $Id: client.py,v 1.59 2002-12-10 00:11:15 richard Exp $ __doc__ = """ WWW request handler (also used in the stand-alone server). @@ -691,7 +691,7 @@ class Client: props = self._changenode(props) # handle linked nodes self._post_editnode(self.nodeid) - except (ValueError, KeyError), message: + except (ValueError, KeyError, IndexError), message: self.error_message.append(_('Error: ') + str(message)) return @@ -771,7 +771,19 @@ class Client: try: # do the create nid = self._createnode(props) + except (ValueError, KeyError, IndexError), message: + # these errors might just be indicative of user dumbness + self.error_message.append(_('Error: ') + str(message)) + return + except: + # oops + self.db.rollback() + s = StringIO.StringIO() + traceback.print_exc(None, s) + self.error_message.append('
%s
'%cgi.escape(s.getvalue())) + return + try: # handle linked nodes self._post_editnode(nid) @@ -783,9 +795,6 @@ class Client: # and some nice feedback for the user message = _('%(classname)s created ok')%self.__dict__ + xtra - except (ValueError, KeyError), message: - self.error_message.append(_('Error: ') + str(message)) - return except: # oops self.db.rollback() diff --git a/roundup/cgi/templating.py b/roundup/cgi/templating.py index cd31529..35bc234 100644 --- a/roundup/cgi/templating.py +++ b/roundup/cgi/templating.py @@ -891,6 +891,12 @@ class DateHTMLProperty(HTMLProperty): ''' return self._value.pretty() + def local(self, offset): + ''' Return the date/time as a local (timezone offset) date/time. + ''' + return DateHTMLProperty(self._client, self._nodeid, self._prop, + self._name, self._value.local()) + class IntervalHTMLProperty(HTMLProperty): def plain(self): ''' Render a "plain" representation of the property @@ -965,6 +971,7 @@ class LinkHTMLProperty(HTMLProperty): else: s = '' l.append(_('')%s) + # XXX if the current value is retired, then list it explicitly for optionid in options: # get the option value, and if it's None use an empty string option = linkcl.get(optionid, k) or '' @@ -1011,6 +1018,7 @@ class LinkHTMLProperty(HTMLProperty): else: sort_on = ('+', linkcl.labelprop()) options = linkcl.filter(None, conditions, sort_on, (None, None)) + # XXX if the current value is retired, then list it explicitly for optionid in options: # get the option value, and if it's None use an empty string option = linkcl.get(optionid, k) or '' @@ -1131,6 +1139,7 @@ class MultilinkHTMLProperty(HTMLProperty): height = height or min(len(options), 7) l = ['