summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 00525ba)
raw | patch | inline | side by side (parent: 00525ba)
author | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Mon, 7 Oct 2002 00:52:51 +0000 (00:52 +0000) | ||
committer | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Mon, 7 Oct 2002 00:52:51 +0000 (00:52 +0000) |
- fixed register with no session (sf bug 618611)
- fixed log / pid file path handling in roundup-server (sf bug 617981)
- fixed old gadfly compatibiltiy problem, for sure this time (sf bug 612873)
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1322 57a73879-2fb5-44c3-a270-3262357dd7e2
- fixed log / pid file path handling in roundup-server (sf bug 617981)
- fixed old gadfly compatibiltiy problem, for sure this time (sf bug 612873)
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1322 57a73879-2fb5-44c3-a270-3262357dd7e2
12 files changed:
diff --git a/CHANGES.txt b/CHANGES.txt
index 422fb2d84e66c0ee49eade38a59718b50b0aec90..c8ae24f256d02bbd6217e0ee033a9b75d6a7111d 100644 (file)
--- a/CHANGES.txt
+++ b/CHANGES.txt
- metakit cleanups
- nicer "navigation" style in index views
- handle missing Link values in anydbm backend set() operation
+- fixed filter() with no sort/group (sf bug 618614)
+- fixed register with no session (sf bug 618611)
+- fixed log / pid file path handling in roundup-server (sf bug 617981)
+- fixed old gadfly compatibiltiy problem, for sure this time (sf bug 612873)
2002-10-02 0.5.0
diff --git a/MANIFEST.in b/MANIFEST.in
index b7c6a328ad9347f9f103c1a69963668c9f8fb67a..29d70e322a43c83a07d14781f4c5abff01434f82 100644 (file)
--- a/MANIFEST.in
+++ b/MANIFEST.in
recursive-exclude frontends *.pyc *.pyo .cvsignore
include run_tests *.txt
exclude BUILD.txt I18N_PROGRESS.txt TODO.txt
+exclude doc/security.txt doc/templating.txt
diff --git a/doc/Makefile b/doc/Makefile
index 987dfe7071249eaccb6ccda635c58dea3b3599e5..dcfb826731a1a5ae8b0c1d24cb8ae2d9900d29d3 100644 (file)
--- a/doc/Makefile
+++ b/doc/Makefile
SOURCE = announcement.txt customizing.txt developers.txt FAQ.txt features.txt \
glossary.txt implementation.txt index.txt design.txt \
- installation.txt security.txt upgrading.txt user_guide.txt \
- maintenance.txt
+ installation.txt upgrading.txt user_guide.txt maintenance.txt
COMPILED := $(SOURCE:.txt=.html)
index 8a6b1079a54dac2899627b997de4fd489481b751..047c29452e43d15d645900e952414a070fb2b7b4 100644 (file)
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#
-# $Id: __init__.py,v 1.19 2002-10-03 06:56:29 richard Exp $
+# $Id: __init__.py,v 1.20 2002-10-07 00:52:51 richard Exp $
''' Container for the hyperdb storage backend implementations.
import gadfly
import gadfly.client
except ImportError, message:
- if str(message) != 'No module named gadfly': raise
+ if str(message) == 'No module named client':
+ # don't keep the old gadfly around
+ del gadfly
+ elif str(message) != 'No module named gadfly':
+ raise
else:
import back_gadfly
gadfly = back_gadfly
index 19a94d7b3ccf26c51ca2f30e493f8815f2ea6ee0..d99094fc016a3fe67fc3ab3d17ef7853228d1587 100644 (file)
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#
-#$Id: back_anydbm.py,v 1.87 2002-10-04 06:30:30 richard Exp $
+#$Id: back_anydbm.py,v 1.88 2002-10-07 00:52:51 richard Exp $
'''
This module defines a backend that saves the hyperdatabase in a database
chosen by anydbm. It is guaranteed to always be available in python
l.sort()
return l
- def filter(self, search_matches, filterspec, sort, group,
- num_re = re.compile('^\d+$')):
+ def filter(self, search_matches, filterspec, sort=(None,None),
+ group=(None,None), num_re = re.compile('^\d+$')):
''' Return a list of the ids of the active nodes in this class that
match the 'filter' spec, sorted by the group spec and then the
sort spec.
index f81dd04826b4e38432da7062747c691dc057f654..62dfee21a6551ce413413d7fd4e5be86bd8795f2 100644 (file)
-# $Id: back_gadfly.py,v 1.28 2002-10-03 06:56:29 richard Exp $
+# $Id: back_gadfly.py,v 1.29 2002-10-07 00:52:51 richard Exp $
''' Gadlfy relational database hypderb backend.
About Gadfly
return res
class GadflyClass:
- def filter(self, search_matches, filterspec, sort, group):
+ def filter(self, search_matches, filterspec, sort=(None,None),
+ group=(None,None)):
''' Gadfly doesn't have a LIKE predicate :(
'''
cn = self.classname
index 1cdcda30f4a2880d33a69e69580bf9f174fe4894..c8e220d8cfdbbafe927eb65854264e25580665ad 100755 (executable)
view = self.__getview()
self.db.commit()
# ---- end of ping's spec
- def filter(self, search_matches, filterspec, sort, group):
+ def filter(self, search_matches, filterspec, sort=(None,None),
+ group=(None,None)):
# search_matches is None or a set (dict of {nodeid: {propname:[nodeid,...]}})
# filterspec is a dict {propname:value}
- # sort and group are lists of propnames
# sort and group are (dir, prop) where dir is '+', '-' or None
# and prop is a prop name or None
index ced7ccaf31b56211202d91c24395e6806799052e..8839273f11243e08bb9e2ca1b07f48414e151321 100644 (file)
-# $Id: rdbms_common.py,v 1.20 2002-10-03 06:56:29 richard Exp $
+# $Id: rdbms_common.py,v 1.21 2002-10-07 00:52:51 richard Exp $
''' Relational database (SQL) backend common code.
Basics:
'''
return self.db.getnodeids(self.classname, retired=0)
- def filter(self, search_matches, filterspec, sort, group):
+ def filter(self, search_matches, filterspec, sort=(None,None),
+ group=(None,None)):
''' Return a list of the ids of the active nodes in this class that
match the 'filter' spec, sorted by the group spec and then the
sort spec
diff --git a/roundup/cgi/client.py b/roundup/cgi/client.py
index df85b0c85d596b753b84e39327bce2c1fa79c2c6..46167ebfaf52118a0ac38c5fca75d84fd10765af 100644 (file)
--- a/roundup/cgi/client.py
+++ b/roundup/cgi/client.py
-# $Id: client.py,v 1.49 2002-10-03 06:56:29 richard Exp $
+# $Id: client.py,v 1.50 2002-10-07 00:52:51 richard Exp $
__doc__ = """
WWW request handler (also used in the stand-alone server).
# re-open the database for real, using the user
self.opendb(self.user)
- # update the user's session
- if self.session:
+ # if we have a session, update it
+ if hasattr(self, 'session'):
self.db.sessions.set(self.session, user=self.user,
last_use=time.time())
else:
diff --git a/roundup/hyperdb.py b/roundup/hyperdb.py
index 221377c478b94bdcd8be2de04cd4b34ae1372b5e..56f7ab0cc06dfc590073e5b4942606151fb6e42a 100644 (file)
--- a/roundup/hyperdb.py
+++ b/roundup/hyperdb.py
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#
-# $Id: hyperdb.py,v 1.83 2002-10-03 06:56:29 richard Exp $
+# $Id: hyperdb.py,v 1.84 2002-10-07 00:52:51 richard Exp $
"""
Hyperdatabase implementation, especially field types.
"""
raise NotImplementedError
- def filter(self, search_matches, filterspec, sort, group,
- num_re = re.compile('^\d+$')):
+ def filter(self, search_matches, filterspec, sort=(None,None),
+ group=(None,None)):
''' Return a list of the ids of the active nodes in this class that
match the 'filter' spec, sorted by the group spec and then the
- sort spec
+ sort spec.
+
+ "filterspec" is {propname: value(s)}
+ "sort" and "group" are (dir, prop) where dir is '+', '-' or None
+ and prop is a prop name or None
+ "search_matches" is {nodeid: marker}
+
+ The filter must match all properties specificed - but if the
+ property value to match is a list, any one of the values in the
+ list may match for that property to match.
'''
raise NotImplementedError
diff --git a/roundup/mailgw.py b/roundup/mailgw.py
index 501da003ca21070f568fb94b37c76864d968ff23..9bb022949163fdd0a5e9c9a719e4420963d840f7 100644 (file)
--- a/roundup/mailgw.py
+++ b/roundup/mailgw.py
an exception, the original message is bounced back to the sender with the
explanatory message given in the exception.
-$Id: mailgw.py,v 1.94 2002-10-03 06:56:29 richard Exp $
+$Id: mailgw.py,v 1.95 2002-10-07 00:52:51 richard Exp $
'''
import string, re, os, mimetools, cStringIO, smtplib, socket, binascii, quopri
# try the user alternate addresses if possible
props = db.user.getprops()
if props.has_key('alternate_addresses'):
- users = db.user.filter(None, {'alternate_addresses': address},
- [], [])
+ users = db.user.filter(None, {'alternate_addresses': address})
user = extractUserFromList(db.user, users)
if user is not None: return user
index 72d7d380b0fac9c9220af2cdd59c922806d186e6..86f8444a6d8ae8d2d02f72633d7aff8831f4905a 100644 (file)
#
""" HTTP Server that serves roundup.
-$Id: roundup_server.py,v 1.12 2002-09-23 06:48:35 richard Exp $
+$Id: roundup_server.py,v 1.13 2002-10-07 00:52:51 richard Exp $
"""
# python version check
os.dup2(devnull, 1)
os.dup2(devnull, 2)
+def abspath(path):
+ ''' Make the given path an absolute path.
+
+ Code from Zope-Coders posting of 2002-10-06 by GvR.
+ '''
+ if not os.path.isabs(path):
+ path = os.path.join(os.getcwd(), path)
+ return os.path.normpath(path)
+
def run():
+ ''' Script entry point - handle args and figure out what to to.
+ '''
hostname = ''
port = 8080
pidfile = None
if opt == '-n': hostname = arg
elif opt == '-p': port = int(arg)
elif opt == '-u': user = arg
- elif opt == '-d': pidfile = arg
- elif opt == '-l': logfile = arg
+ elif opt == '-d': pidfile = abspath(arg)
+ elif opt == '-l': logfile = abspath(arg)
elif opt == '-h': usage()
if hasattr(os, 'getuid'):