annotate roundup/hyperdb.py @ 905:502a5ae11cc5

Very close now. The cgi and mailgw now use the new security API. The two templates have been migrated to that setup. Lots of unit tests. Still some issue in the web form for editing Roles assigned to users.
author Richard Jones <richard@users.sourceforge.net>
date Fri, 26 Jul 2002 08:27:00 +0000
parents cbefecea6c74
children 299f4890427d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
3 # This module is free software, and you may redistribute it and/or modify
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
4 # under the same terms as Python, so long as this copyright message and
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
5 # disclaimer are retained in their original form.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
6 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
10 # POSSIBILITY OF SUCH DAMAGE.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
11 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
17 #
894
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
18 # $Id: hyperdb.py,v 1.78 2002-07-21 03:26:37 richard Exp $
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
19
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
20 __doc__ = """
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
21 Hyperdatabase implementation, especially field types.
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
22 """
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 # standard python modules
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
25 import sys, os, time, re
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 # roundup modules
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
28 import date, password
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29
719
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
30 # configure up the DEBUG and TRACE captures
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
31 class Sink:
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
32 def write(self, content):
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
33 pass
570
e346a9792335 fixed back_bsddb so it passed the journal tests
Richard Jones <richard@users.sourceforge.net>
parents: 562
diff changeset
34 DEBUG = os.environ.get('HYPERDBDEBUG', '')
719
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
35 if DEBUG and __debug__:
775
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
36 if DEBUG == 'stdout':
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
37 DEBUG = sys.stdout
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
38 else:
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
39 DEBUG = open(DEBUG, 'a')
719
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
40 else:
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
41 DEBUG = Sink()
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
42 TRACE = os.environ.get('HYPERDBTRACE', '')
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
43 if TRACE and __debug__:
775
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
44 if TRACE == 'stdout':
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
45 TRACE = sys.stdout
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
46 else:
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
47 TRACE = open(TRACE, 'w')
719
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
48 else:
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
49 TRACE = Sink()
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
50 def traceMark():
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
51 print >>TRACE, '**MARK', time.ctime()
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
52 del Sink
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 # Types
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 #
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
57 class String:
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
58 """An object designating a String property."""
825
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
59 def __init__(self, indexme='no'):
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
60 self.indexme = indexme == 'yes'
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
61 def __repr__(self):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
62 ' more useful for dumps '
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
63 return '<%s>'%self.__class__
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
65 class Password:
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
66 """An object designating a Password property."""
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
67 def __repr__(self):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
68 ' more useful for dumps '
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
69 return '<%s>'%self.__class__
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
70
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
71 class Date:
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
72 """An object designating a Date property."""
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 def __repr__(self):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
74 ' more useful for dumps '
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 return '<%s>'%self.__class__
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
77 class Interval:
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
78 """An object designating an Interval property."""
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
79 def __repr__(self):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
80 ' more useful for dumps '
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
81 return '<%s>'%self.__class__
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
83 class Link:
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
84 """An object designating a Link property that links to a
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
85 node in a specified class."""
555
5fd94347c6f2 Journal entries for link and multilink properties can now be switched on or off.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 543
diff changeset
86 def __init__(self, classname, do_journal='no'):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
87 ''' Default is to not journal link and unlink events
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
88 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 self.classname = classname
555
5fd94347c6f2 Journal entries for link and multilink properties can now be switched on or off.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 543
diff changeset
90 self.do_journal = do_journal == 'yes'
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 def __repr__(self):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
92 ' more useful for dumps '
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93 return '<%s to "%s">'%(self.__class__, self.classname)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
95 class Multilink:
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96 """An object designating a Multilink property that links
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 to nodes in a specified class.
557
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
98
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
99 "classname" indicates the class to link to
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
100
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
101 "do_journal" indicates whether the linked-to nodes should have
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
102 'link' and 'unlink' events placed in their journal
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
103 """
555
5fd94347c6f2 Journal entries for link and multilink properties can now be switched on or off.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 543
diff changeset
104 def __init__(self, classname, do_journal='no'):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
105 ''' Default is to not journal link and unlink events
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
106 '''
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
107 self.classname = classname
555
5fd94347c6f2 Journal entries for link and multilink properties can now be switched on or off.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 543
diff changeset
108 self.do_journal = do_journal == 'yes'
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
109 def __repr__(self):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
110 ' more useful for dumps '
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
111 return '<%s to "%s">'%(self.__class__, self.classname)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
112
880
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
113 class Boolean:
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
114 """An object designating a boolean property"""
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
115 def __repr__(self):
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
116 'more useful for dumps'
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
117 return '<%s>' % self.__class__
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
118
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
119 class Number:
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
120 """An object designating a numeric property"""
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
121 def __repr__(self):
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
122 'more useful for dumps'
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
123 return '<%s>' % self.__class__
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
124 #
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
125 # Support for splitting designators
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
126 #
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
127 class DesignatorError(ValueError):
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
128 pass
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
129 def splitDesignator(designator, dre=re.compile(r'([^\d]+)(\d+)')):
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
130 ''' Take a foo123 and return ('foo', 123)
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
131 '''
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
132 m = dre.match(designator)
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
133 if m is None:
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
134 raise DesignatorError, '"%s" not a node designator'%designator
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
135 return m.group(1), m.group(2)
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
136
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
137 #
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
138 # the base Database class
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
139 #
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
140 class DatabaseError(ValueError):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
141 '''Error to be raised when there is some problem in the database code
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
142 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
143 pass
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
144 class Database:
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
145 '''A database for storing records containing flexible data types.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
146
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
147 This class defines a hyperdatabase storage layer, which the Classes use to
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
148 store their data.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
149
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
150
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
151 Transactions
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
152 ------------
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
153 The Database should support transactions through the commit() and
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
154 rollback() methods. All other Database methods should be transaction-aware,
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
155 using data from the current transaction before looking up the database.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
156
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
157 An implementation must provide an override for the get() method so that the
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
158 in-database value is returned in preference to the in-transaction value.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
159 This is necessary to determine if any values have changed during a
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
160 transaction.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
161
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
162
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
163 Implementation
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
164 --------------
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
165
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
166 All methods except __repr__ and getnode must be implemented by a
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
167 concrete backend Class.
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
168
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
169 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
170
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
171 # flag to set on retired entries
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
172 RETIRED_FLAG = '__hyperdb_retired'
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
173
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 490
diff changeset
174 # XXX deviates from spec: storagelocator is obtained from the config
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 490
diff changeset
175 def __init__(self, config, journaltag=None):
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
176 """Open a hyperdatabase given a specifier to some storage.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
177
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 490
diff changeset
178 The 'storagelocator' is obtained from config.DATABASE.
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
179 The meaning of 'storagelocator' depends on the particular
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
180 implementation of the hyperdatabase. It could be a file name,
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
181 a directory path, a socket descriptor for a connection to a
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
182 database over the network, etc.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
183
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
184 The 'journaltag' is a token that will be attached to the journal
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
185 entries for any edits done on the database. If 'journaltag' is
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
186 None, the database is opened in read-only mode: the Class.create(),
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
187 Class.set(), and Class.retire() methods are disabled.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
188 """
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
189 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
190
825
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
191 def post_init(self):
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
192 """Called once the schema initialisation has finished."""
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
193 raise NotImplementedError
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
194
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
195 def __getattr__(self, classname):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
196 """A convenient way of calling self.getclass(classname)."""
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
197 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
198
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
199 def addclass(self, cl):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
200 '''Add a Class to the hyperdatabase.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
201 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
202 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
203
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
204 def getclasses(self):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
205 """Return a list of the names of all existing classes."""
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
206 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
207
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
208 def getclass(self, classname):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
209 """Get the Class object representing a particular class.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
210
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
211 If 'classname' is not a valid class name, a KeyError is raised.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
212 """
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
213 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
214
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
215 def clear(self):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
216 '''Delete all database contents.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
217 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
218 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
219
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
220 def getclassdb(self, classname, mode='r'):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
221 '''Obtain a connection to the class db that will be used for
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
222 multiple actions.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
223 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
224 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
225
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
226 def addnode(self, classname, nodeid, node):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
227 '''Add the specified node to its class's db.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
228 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
229 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
230
676
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
231 def serialise(self, classname, node):
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
232 '''Copy the node contents, converting non-marshallable data into
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
233 marshallable data.
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
234 '''
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
235 return node
676
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
236
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
237 def setnode(self, classname, nodeid, node):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
238 '''Change the specified node.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
239 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
240 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
241
676
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
242 def unserialise(self, classname, node):
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
243 '''Decode the marshalled node data
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
244 '''
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
245 return node
676
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
246
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
247 def getnode(self, classname, nodeid, db=None, cache=1):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
248 '''Get a node from the database.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
249 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
250 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
251
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
252 def hasnode(self, classname, nodeid, db=None):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
253 '''Determine if the database has a given node.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
254 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
255 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
256
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
257 def countnodes(self, classname, db=None):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
258 '''Count the number of nodes that exist for a particular Class.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
259 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
260 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
261
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
262 def getnodeids(self, classname, db=None):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
263 '''Retrieve all the ids of the nodes for a particular Class.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
264 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
265 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
266
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
267 def storefile(self, classname, nodeid, property, content):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
268 '''Store the content of the file in the database.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
269
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
270 The property may be None, in which case the filename does not
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
271 indicate which property is being saved.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
272 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
273 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
274
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
275 def getfile(self, classname, nodeid, property):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
276 '''Store the content of the file in the database.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
277 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
278 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
279
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
280 def addjournal(self, classname, nodeid, action, params):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
281 ''' Journal the Action
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
282 'action' may be:
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
283
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
284 'create' or 'set' -- 'params' is a dictionary of property values
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
285 'link' or 'unlink' -- 'params' is (classname, nodeid, propname)
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
286 'retire' -- 'params' is None
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
287 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
288 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
289
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
290 def getjournal(self, classname, nodeid):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
291 ''' get the journal for id
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
292 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
293 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
294
562
62febbd7ffec You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 557
diff changeset
295 def pack(self, pack_before):
62febbd7ffec You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 557
diff changeset
296 ''' pack the database
62febbd7ffec You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 557
diff changeset
297 '''
62febbd7ffec You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 557
diff changeset
298 raise NotImplementedError
62febbd7ffec You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 557
diff changeset
299
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
300 def commit(self):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
301 ''' Commit the current transactions.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
302
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
303 Save all data changed since the database was opened or since the
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
304 last commit() or rollback().
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
305 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
306 raise NotImplementedError
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
307
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
308 def rollback(self):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
309 ''' Reverse all actions from the current transaction.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
310
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
311 Undo all the changes made since the database was opened or the last
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
312 commit() or rollback() was performed.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
313 '''
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
314 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
315
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
316 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
317 # The base Class class
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
318 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
319 class Class:
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
320 """ The handle to a particular class of nodes in a hyperdatabase.
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
321
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
322 All methods except __repr__ and getnode must be implemented by a
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
323 concrete backend Class.
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
324 """
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
325
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
326 def __init__(self, db, classname, **properties):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
327 """Create a new class with a given name and property specification.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
328
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
329 'classname' must not collide with the name of an existing class,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
330 or a ValueError is raised. The keyword arguments in 'properties'
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
331 must map names to property objects, or a TypeError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
332 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
333 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
334
452
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
335 def __repr__(self):
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
336 '''Slightly more useful representation
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
337 '''
452
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
338 return '<hypderdb.Class "%s">'%self.classname
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
339
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
340 # Editing nodes:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
341
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
342 def create(self, **propvalues):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
343 """Create a new node of this class and return its id.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
344
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
345 The keyword arguments in 'propvalues' map property names to values.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
346
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
347 The values of arguments must be acceptable for the types of their
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
348 corresponding properties or a TypeError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
349
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
350 If this class has a key property, it must be present and its value
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
351 must not collide with other key strings or a ValueError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
352
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
353 Any other properties on this class that are missing from the
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
354 'propvalues' dictionary are set to None.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
355
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
356 If an id in a link or multilink property does not refer to a valid
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
357 node, an IndexError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
358 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
359 raise NotImplementedError
775
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
360
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
361 _marker = []
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
362 def get(self, nodeid, propname, default=_marker, cache=1):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
363 """Get the value of a property on an existing node of this class.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
364
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
365 'nodeid' must be the id of an existing node of this class or an
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
366 IndexError is raised. 'propname' must be the name of a property
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
367 of this class or a KeyError is raised.
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
368
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
369 'cache' indicates whether the transaction cache should be queried
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
370 for the node. If the node has been modified and you need to
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
371 determine what its values prior to modification are, you need to
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
372 set cache=0.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
373 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
374 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
375
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
376 # XXX not in spec
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
377 def getnode(self, nodeid, cache=1):
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
378 ''' Return a convenience wrapper for the node.
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
379
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
380 'nodeid' must be the id of an existing node of this class or an
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
381 IndexError is raised.
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
382
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
383 'cache' indicates whether the transaction cache should be queried
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
384 for the node. If the node has been modified and you need to
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
385 determine what its values prior to modification are, you need to
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
386 set cache=0.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
387 '''
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
388 return Node(self, nodeid, cache=cache)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
389
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
390 def set(self, nodeid, **propvalues):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
391 """Modify a property on an existing node of this class.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
392
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
393 'nodeid' must be the id of an existing node of this class or an
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
394 IndexError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
395
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
396 Each key in 'propvalues' must be the name of a property of this
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
397 class or a KeyError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
398
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
399 All values in 'propvalues' must be acceptable types for their
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
400 corresponding properties or a TypeError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
401
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
402 If the value of the key property is set, it must not collide with
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
403 other key strings or a ValueError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
404
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
405 If the value of a Link or Multilink property contains an invalid
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
406 node id, a ValueError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
407 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
408 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
409
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
410 def retire(self, nodeid):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
411 """Retire a node.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
412
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
413 The properties on the node remain available from the get() method,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
414 and the node's id is never reused.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
415
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
416 Retired nodes are not returned by the find(), list(), or lookup()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
417 methods, and other nodes may reuse the values of their key properties.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
418 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
419 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
420
894
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
421 def destroy(self, nodeid):
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
422 """Destroy a node.
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
423
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
424 WARNING: this method should never be used except in extremely rare
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
425 situations where there could never be links to the node being
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
426 deleted
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
427 WARNING: use retire() instead
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
428 WARNING: the properties of this node will not be available ever again
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
429 WARNING: really, use retire() instead
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
430
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
431 Well, I think that's enough warnings. This method exists mostly to
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
432 support the session storage of the cgi interface.
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
433
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
434 The node is completely removed from the hyperdb, including all journal
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
435 entries. It will no longer be available, and will generally break code
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
436 if there are any references to the node.
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
437 """
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
438
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
439 def history(self, nodeid):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
440 """Retrieve the journal of edits on a particular node.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
441
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
442 'nodeid' must be the id of an existing node of this class or an
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
443 IndexError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
444
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
445 The returned list contains tuples of the form
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
446
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
447 (date, tag, action, params)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
448
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
449 'date' is a Timestamp object specifying the time of the change and
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
450 'tag' is the journaltag specified when the database was opened.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
451 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
452 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
453
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
454 # Locating nodes:
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 618
diff changeset
455 def hasnode(self, nodeid):
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 618
diff changeset
456 '''Determine if the given nodeid actually exists
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 618
diff changeset
457 '''
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
458 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
459
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
460 def setkey(self, propname):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
461 """Select a String property of this class to be the key property.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
462
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
463 'propname' must be the name of a String property of this class or
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
464 None, or a TypeError is raised. The values of the key property on
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
465 all existing nodes must be unique or a ValueError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
466 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
467 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
468
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
469 def getkey(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
470 """Return the name of the key property for this class or None."""
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
471 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
472
188
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 172
diff changeset
473 def labelprop(self, default_to_id=0):
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
474 ''' Return the property name for a label for the given node.
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
475
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
476 This method attempts to generate a consistent label for the node.
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
477 It tries the following in order:
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
478 1. key property
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
479 2. "name" property
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
480 3. "title" property
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
481 4. first property from the sorted property name list
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
482 '''
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
483 raise NotImplementedError
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
484
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
485 def lookup(self, keyvalue):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
486 """Locate a particular node by its key property and return its id.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
487
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
488 If this class has no key property, a TypeError is raised. If the
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
489 'keyvalue' matches one of the values for the key property among
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
490 the nodes in this class, the matching node's id is returned;
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
491 otherwise a KeyError is raised.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
492 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
493 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
494
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
495 # XXX: change from spec - allows multiple props to match
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
496 def find(self, **propspec):
834
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
497 """Get the ids of nodes in this class which link to the given nodes.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
498
834
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
499 'propspec' consists of keyword args propname={nodeid:1,}
883
Richard Jones <richard@users.sourceforge.net>
parents: 880
diff changeset
500 'propname' must be the name of a property in this class, or a
Richard Jones <richard@users.sourceforge.net>
parents: 880
diff changeset
501 KeyError is raised. That property must be a Link or Multilink
Richard Jones <richard@users.sourceforge.net>
parents: 880
diff changeset
502 property, or a TypeError is raised.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
503
834
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
504 Any node in this class whose 'propname' property links to any of the
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
505 nodeids will be returned. Used by the full text indexing, which knows
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
506 that "foo" occurs in msg1, msg3 and file7, so we have hits on these
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
507 issues:
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
508
834
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
509 db.issue.find(messages={'1':1,'3':1}, files={'7':1})
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
510 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
511 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
512
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
513 # XXX not in spec
749
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
514 def filter(self, search_matches, filterspec, sort, group,
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
515 num_re = re.compile('^\d+$')):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
516 ''' Return a list of the ids of the active nodes in this class that
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
517 match the 'filter' spec, sorted by the group spec and then the
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
518 sort spec
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
519 '''
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
520 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
521
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
522 def count(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
523 """Get the number of nodes in this class.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
524
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
525 If the returned integer is 'numnodes', the ids of all the nodes
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
526 in this class run from 1 to numnodes, and numnodes+1 will be the
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
527 id of the next node to be created in this class.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
528 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
529 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
530
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
531 # Manipulating properties:
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
532 def getprops(self, protected=1):
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
533 """Return a dictionary mapping property names to property objects.
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
534 If the "protected" flag is true, we include protected properties -
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
535 those which may not be modified.
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
536 """
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
537 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
538
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
539 def addprop(self, **properties):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
540 """Add properties to this class.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
541
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
542 The keyword arguments in 'properties' must map names to property
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
543 objects, or a TypeError is raised. None of the keys in 'properties'
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
544 may collide with the names of existing properties, or a ValueError
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
545 is raised before any properties have been added.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
546 """
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
547 raise NotImplementedError
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
548
825
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
549 def index(self, nodeid):
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
550 '''Add (or refresh) the node to search indexes
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
551 '''
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
552 raise NotImplementedError
825
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
553
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
554 # XXX not in spec
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
555 class Node:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
556 ''' A convenience wrapper for the given node
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
557 '''
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
558 def __init__(self, cl, nodeid, cache=1):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
559 self.__dict__['cl'] = cl
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
560 self.__dict__['nodeid'] = nodeid
490
Richard Jones <richard@users.sourceforge.net>
parents: 477
diff changeset
561 self.__dict__['cache'] = cache
278
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
562 def keys(self, protected=1):
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
563 return self.cl.getprops(protected=protected).keys()
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
564 def values(self, protected=1):
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
565 l = []
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
566 for name in self.cl.getprops(protected=protected).keys():
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
567 l.append(self.cl.get(self.nodeid, name, cache=self.cache))
278
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
568 return l
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
569 def items(self, protected=1):
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
570 l = []
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
571 for name in self.cl.getprops(protected=protected).keys():
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
572 l.append((name, self.cl.get(self.nodeid, name, cache=self.cache)))
278
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
573 return l
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
574 def has_key(self, name):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
575 return self.cl.getprops().has_key(name)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
576 def __getattr__(self, name):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
577 if self.__dict__.has_key(name):
278
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
578 return self.__dict__[name]
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
579 try:
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
580 return self.cl.get(self.nodeid, name, cache=self.cache)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
581 except KeyError, value:
460
9c895b44240a take a copy of the node dict...
Richard Jones <richard@users.sourceforge.net>
parents: 457
diff changeset
582 # we trap this but re-raise it as AttributeError - all other
9c895b44240a take a copy of the node dict...
Richard Jones <richard@users.sourceforge.net>
parents: 457
diff changeset
583 # exceptions should pass through untrapped
9c895b44240a take a copy of the node dict...
Richard Jones <richard@users.sourceforge.net>
parents: 457
diff changeset
584 pass
9c895b44240a take a copy of the node dict...
Richard Jones <richard@users.sourceforge.net>
parents: 457
diff changeset
585 # nope, no such attribute
9c895b44240a take a copy of the node dict...
Richard Jones <richard@users.sourceforge.net>
parents: 457
diff changeset
586 raise AttributeError, str(value)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
587 def __getitem__(self, name):
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
588 return self.cl.get(self.nodeid, name, cache=self.cache)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
589 def __setattr__(self, name, value):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
590 try:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
591 return self.cl.set(self.nodeid, **{name: value})
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
592 except KeyError, value:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
593 raise AttributeError, str(value)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
594 def __setitem__(self, name, value):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
595 self.cl.set(self.nodeid, **{name: value})
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
596 def history(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
597 return self.cl.history(self.nodeid)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
598 def retire(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
599 return self.cl.retire(self.nodeid)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
600
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
601
648
07422fe57db2 Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents: 628
diff changeset
602 def Choice(name, db, *options):
07422fe57db2 Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents: 628
diff changeset
603 '''Quick helper to create a simple class with choices
07422fe57db2 Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents: 628
diff changeset
604 '''
07422fe57db2 Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents: 628
diff changeset
605 cl = Class(db, name, name=String(), order=String())
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
606 for i in range(len(options)):
648
07422fe57db2 Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents: 628
diff changeset
607 cl.create(name=options[i], order=i)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
608 return hyperdb.Link(name)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
609
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
610 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
611 # $Log: not supported by cvs2svn $
894
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
612 # Revision 1.77 2002/07/18 11:27:47 richard
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
613 # ws
cbefecea6c74 Gordon, does this help?
Richard Jones <richard@users.sourceforge.net>
parents: 883
diff changeset
614 #
883
Richard Jones <richard@users.sourceforge.net>
parents: 880
diff changeset
615 # Revision 1.76 2002/07/18 11:17:30 gmcm
Richard Jones <richard@users.sourceforge.net>
parents: 880
diff changeset
616 # Add Number and Boolean types to hyperdb.
Richard Jones <richard@users.sourceforge.net>
parents: 880
diff changeset
617 # Add conversion cases to web, mail & admin interfaces.
Richard Jones <richard@users.sourceforge.net>
parents: 880
diff changeset
618 # Add storage/serialization cases to back_anydbm & back_metakit.
Richard Jones <richard@users.sourceforge.net>
parents: 880
diff changeset
619 #
880
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
620 # Revision 1.75 2002/07/14 02:05:53 richard
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
621 # . all storage-specific code (ie. backend) is now implemented by the backends
de3da99a7c02 Add Number and Boolean types to hyperdb.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 858
diff changeset
622 #
858
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
623 # Revision 1.74 2002/07/10 00:24:10 richard
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
624 # braino
2dd862af72ee all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents: 841
diff changeset
625 #
841
Richard Jones <richard@users.sourceforge.net>
parents: 836
diff changeset
626 # Revision 1.73 2002/07/10 00:19:48 richard
Richard Jones <richard@users.sourceforge.net>
parents: 836
diff changeset
627 # Added explicit closing of backend database handles.
Richard Jones <richard@users.sourceforge.net>
parents: 836
diff changeset
628 #
836
bf55b2b800b9 Added explicit closing of backend database handles.
Richard Jones <richard@users.sourceforge.net>
parents: 834
diff changeset
629 # Revision 1.72 2002/07/09 21:53:38 gmcm
bf55b2b800b9 Added explicit closing of backend database handles.
Richard Jones <richard@users.sourceforge.net>
parents: 834
diff changeset
630 # Optimize Class.find so that the propspec can contain a set of ids to match.
bf55b2b800b9 Added explicit closing of backend database handles.
Richard Jones <richard@users.sourceforge.net>
parents: 834
diff changeset
631 # This is used by indexer.search so it can do just one find for all the index matches.
bf55b2b800b9 Added explicit closing of backend database handles.
Richard Jones <richard@users.sourceforge.net>
parents: 834
diff changeset
632 # This was already confusing code, but for common terms (lots of index matches),
bf55b2b800b9 Added explicit closing of backend database handles.
Richard Jones <richard@users.sourceforge.net>
parents: 834
diff changeset
633 # it is enormously faster.
bf55b2b800b9 Added explicit closing of backend database handles.
Richard Jones <richard@users.sourceforge.net>
parents: 834
diff changeset
634 #
834
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
635 # Revision 1.71 2002/07/09 03:02:52 richard
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
636 # More indexer work:
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
637 # - all String properties may now be indexed too. Currently there's a bit of
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
638 # "issue" specific code in the actual searching which needs to be
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
639 # addressed. In a nutshell:
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
640 # + pass 'indexme="yes"' as a String() property initialisation arg, eg:
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
641 # file = FileClass(db, "file", name=String(), type=String(),
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
642 # comment=String(indexme="yes"))
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
643 # + the comment will then be indexed and be searchable, with the results
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
644 # related back to the issue that the file is linked to
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
645 # - as a result of this work, the FileClass has a default MIME type that may
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
646 # be overridden in a subclass, or by the use of a "type" property as is
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
647 # done in the default templates.
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
648 # - the regeneration of the indexes (if necessary) is done once the schema is
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
649 # set up in the dbinit.
568eed5fb4fd Optimize Class.find so that the propspec can contain a set of ids to match.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 825
diff changeset
650 #
825
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
651 # Revision 1.70 2002/06/27 12:06:20 gmcm
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
652 # Improve an error message.
0779ea9f1f18 More indexer work:
Richard Jones <richard@users.sourceforge.net>
parents: 805
diff changeset
653 #
805
6937eb92061f Improve an error message.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 775
diff changeset
654 # Revision 1.69 2002/06/17 23:15:29 richard
6937eb92061f Improve an error message.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 775
diff changeset
655 # Can debug to stdout now
6937eb92061f Improve an error message.
Gordon B. McMillan <gmcm@users.sourceforge.net>
parents: 775
diff changeset
656 #
775
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
657 # Revision 1.68 2002/06/11 06:52:03 richard
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
658 # . #564271 ] find() and new properties
4409798dfa15 Can debug to stdout now
Richard Jones <richard@users.sourceforge.net>
parents: 764
diff changeset
659 #
764
d913440c534f [SF#564271] find() and new properties
Richard Jones <richard@users.sourceforge.net>
parents: 761
diff changeset
660 # Revision 1.67 2002/06/11 05:02:37 richard
d913440c534f [SF#564271] find() and new properties
Richard Jones <richard@users.sourceforge.net>
parents: 761
diff changeset
661 # . #565979 ] code error in hyperdb.Class.find
d913440c534f [SF#564271] find() and new properties
Richard Jones <richard@users.sourceforge.net>
parents: 761
diff changeset
662 #
761
e7b89de78052 [SF#565979] code error in hyperdb.Class.find
Richard Jones <richard@users.sourceforge.net>
parents: 749
diff changeset
663 # Revision 1.66 2002/05/25 07:16:24 rochecompaan
e7b89de78052 [SF#565979] code error in hyperdb.Class.find
Richard Jones <richard@users.sourceforge.net>
parents: 749
diff changeset
664 # Merged search_indexing-branch with HEAD
e7b89de78052 [SF#565979] code error in hyperdb.Class.find
Richard Jones <richard@users.sourceforge.net>
parents: 749
diff changeset
665 #
749
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
666 # Revision 1.65 2002/05/22 04:12:05 richard
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
667 # . applied patch #558876 ] cgi client customization
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
668 # ... with significant additions and modifications ;)
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
669 # - extended handling of ML assignedto to all places it's handled
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
670 # - added more NotFound info
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
671 #
736
b0d887310f7a applied patch [SF#558876] cgi client customization
Richard Jones <richard@users.sourceforge.net>
parents: 719
diff changeset
672 # Revision 1.64 2002/05/15 06:21:21 richard
b0d887310f7a applied patch [SF#558876] cgi client customization
Richard Jones <richard@users.sourceforge.net>
parents: 719
diff changeset
673 # . node caching now works, and gives a small boost in performance
b0d887310f7a applied patch [SF#558876] cgi client customization
Richard Jones <richard@users.sourceforge.net>
parents: 719
diff changeset
674 #
b0d887310f7a applied patch [SF#558876] cgi client customization
Richard Jones <richard@users.sourceforge.net>
parents: 719
diff changeset
675 # As a part of this, I cleaned up the DEBUG output and implemented TRACE
b0d887310f7a applied patch [SF#558876] cgi client customization
Richard Jones <richard@users.sourceforge.net>
parents: 719
diff changeset
676 # output (HYPERDBTRACE='file to trace to') with checkpoints at the start of
b0d887310f7a applied patch [SF#558876] cgi client customization
Richard Jones <richard@users.sourceforge.net>
parents: 719
diff changeset
677 # CGI requests. Run roundup with python -O to skip all the DEBUG/TRACE stuff
b0d887310f7a applied patch [SF#558876] cgi client customization
Richard Jones <richard@users.sourceforge.net>
parents: 719
diff changeset
678 # (using if __debug__ which is compiled out with -O)
b0d887310f7a applied patch [SF#558876] cgi client customization
Richard Jones <richard@users.sourceforge.net>
parents: 719
diff changeset
679 #
719
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
680 # Revision 1.63 2002/04/15 23:25:15 richard
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
681 # . node ids are now generated from a lockable store - no more race conditions
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
682 #
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
683 # We're using the portalocker code by Jonathan Feinberg that was contributed
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
684 # to the ASPN Python cookbook. This gives us locking across Unix and Windows.
fed4c363a7f3 node caching now works, and gives a small boost in performance
Richard Jones <richard@users.sourceforge.net>
parents: 690
diff changeset
685 #
690
509a101305da node ids are now generated from a lockable store - no more race conditions
Richard Jones <richard@users.sourceforge.net>
parents: 679
diff changeset
686 # Revision 1.62 2002/04/03 07:05:50 richard
509a101305da node ids are now generated from a lockable store - no more race conditions
Richard Jones <richard@users.sourceforge.net>
parents: 679
diff changeset
687 # d'oh! killed retirement of nodes :(
509a101305da node ids are now generated from a lockable store - no more race conditions
Richard Jones <richard@users.sourceforge.net>
parents: 679
diff changeset
688 # all better now...
509a101305da node ids are now generated from a lockable store - no more race conditions
Richard Jones <richard@users.sourceforge.net>
parents: 679
diff changeset
689 #
679
5a4dd342d827 d'oh! killed retirement of nodes :( all better now...
Richard Jones <richard@users.sourceforge.net>
parents: 677
diff changeset
690 # Revision 1.61 2002/04/03 06:11:51 richard
5a4dd342d827 d'oh! killed retirement of nodes :( all better now...
Richard Jones <richard@users.sourceforge.net>
parents: 677
diff changeset
691 # Fix for old databases that contain properties that don't exist any more.
5a4dd342d827 d'oh! killed retirement of nodes :( all better now...
Richard Jones <richard@users.sourceforge.net>
parents: 677
diff changeset
692 #
677
8d3cc8352b89 Fix for old databases that contain properties that don't exist any more.
Richard Jones <richard@users.sourceforge.net>
parents: 676
diff changeset
693 # Revision 1.60 2002/04/03 05:54:31 richard
8d3cc8352b89 Fix for old databases that contain properties that don't exist any more.
Richard Jones <richard@users.sourceforge.net>
parents: 676
diff changeset
694 # Fixed serialisation problem by moving the serialisation step out of the
8d3cc8352b89 Fix for old databases that contain properties that don't exist any more.
Richard Jones <richard@users.sourceforge.net>
parents: 676
diff changeset
695 # hyperdb.Class (get, set) into the hyperdb.Database.
8d3cc8352b89 Fix for old databases that contain properties that don't exist any more.
Richard Jones <richard@users.sourceforge.net>
parents: 676
diff changeset
696 #
8d3cc8352b89 Fix for old databases that contain properties that don't exist any more.
Richard Jones <richard@users.sourceforge.net>
parents: 676
diff changeset
697 # Also fixed htmltemplate after the showid changes I made yesterday.
8d3cc8352b89 Fix for old databases that contain properties that don't exist any more.
Richard Jones <richard@users.sourceforge.net>
parents: 676
diff changeset
698 #
8d3cc8352b89 Fix for old databases that contain properties that don't exist any more.
Richard Jones <richard@users.sourceforge.net>
parents: 676
diff changeset
699 # Unit tests for all of the above written.
8d3cc8352b89 Fix for old databases that contain properties that don't exist any more.
Richard Jones <richard@users.sourceforge.net>
parents: 676
diff changeset
700 #
749
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
701 # Revision 1.59.2.2 2002/04/20 13:23:33 rochecompaan
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
702 # We now have a separate search page for nodes. Search links for
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
703 # different classes can be customized in instance_config similar to
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
704 # index links.
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
705 #
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
706 # Revision 1.59.2.1 2002/04/19 19:54:42 rochecompaan
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
707 # cgi_client.py
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
708 # removed search link for the time being
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
709 # moved rendering of matches to htmltemplate
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
710 # hyperdb.py
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
711 # filtering of nodes on full text search incorporated in filter method
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
712 # roundupdb.py
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
713 # added paramater to call of filter method
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
714 # roundup_indexer.py
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
715 # added search method to RoundupIndexer class
51c425129b35 Merged search_indexing-branch with HEAD
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 736
diff changeset
716 #
676
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
717 # Revision 1.59 2002/03/12 22:52:26 richard
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
718 # more pychecker warnings removed
bc46480e2a2b Fixed serialisation problem...
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
719 #
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
720 # Revision 1.58 2002/02/27 03:23:16 richard
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
721 # Ran it through pychecker, made fixes
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 648
diff changeset
722 #
648
07422fe57db2 Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents: 628
diff changeset
723 # Revision 1.57 2002/02/20 05:23:24 richard
07422fe57db2 Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents: 628
diff changeset
724 # Didn't accomodate new values for new properties
07422fe57db2 Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents: 628
diff changeset
725 #
628
923de4949369 Didn't accomodate new values for new properties
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
726 # Revision 1.56 2002/02/20 05:05:28 richard
923de4949369 Didn't accomodate new values for new properties
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
727 # . Added simple editing for classes that don't define a templated interface.
923de4949369 Didn't accomodate new values for new properties
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
728 # - access using the admin "class list" interface
923de4949369 Didn't accomodate new values for new properties
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
729 # - limited to admin-only
923de4949369 Didn't accomodate new values for new properties
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
730 # - requires the csv module from object-craft (url given if it's missing)
923de4949369 Didn't accomodate new values for new properties
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
731 #
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 618
diff changeset
732 # Revision 1.55 2002/02/15 07:27:12 richard
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 618
diff changeset
733 # Oops, precedences around the way w0rng.
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 618
diff changeset
734 #
618
9431715612ac Oops, precedences around the way w0rng.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
735 # Revision 1.54 2002/02/15 07:08:44 richard
9431715612ac Oops, precedences around the way w0rng.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
736 # . Alternate email addresses are now available for users. See the MIGRATION
9431715612ac Oops, precedences around the way w0rng.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
737 # file for info on how to activate the feature.
9431715612ac Oops, precedences around the way w0rng.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
738 #
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 570
diff changeset
739 # Revision 1.53 2002/01/22 07:21:13 richard
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 570
diff changeset
740 # . fixed back_bsddb so it passed the journal tests
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 570
diff changeset
741 #
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 570
diff changeset
742 # ... it didn't seem happy using the back_anydbm _open method, which is odd.
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 570
diff changeset
743 # Yet another occurrance of whichdb not being able to recognise older bsddb
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 570
diff changeset
744 # databases. Yadda yadda. Made the HYPERDBDEBUG stuff more sane in the
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 570
diff changeset
745 # process.
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 570
diff changeset
746 #
570
e346a9792335 fixed back_bsddb so it passed the journal tests
Richard Jones <richard@users.sourceforge.net>
parents: 562
diff changeset
747 # Revision 1.52 2002/01/21 16:33:19 rochecompaan
e346a9792335 fixed back_bsddb so it passed the journal tests
Richard Jones <richard@users.sourceforge.net>
parents: 562
diff changeset
748 # You can now use the roundup-admin tool to pack the database
e346a9792335 fixed back_bsddb so it passed the journal tests
Richard Jones <richard@users.sourceforge.net>
parents: 562
diff changeset
749 #
562
62febbd7ffec You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 557
diff changeset
750 # Revision 1.51 2002/01/21 03:01:29 richard
62febbd7ffec You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 557
diff changeset
751 # brief docco on the do_journal argument
62febbd7ffec You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 557
diff changeset
752 #
557
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
753 # Revision 1.50 2002/01/19 13:16:04 rochecompaan
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
754 # Journal entries for link and multilink properties can now be switched on
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
755 # or off.
dfac856502d1 brief docco on the do_journal argument
Richard Jones <richard@users.sourceforge.net>
parents: 555
diff changeset
756 #
555
5fd94347c6f2 Journal entries for link and multilink properties can now be switched on or off.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 543
diff changeset
757 # Revision 1.49 2002/01/16 07:02:57 richard
5fd94347c6f2 Journal entries for link and multilink properties can now be switched on or off.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 543
diff changeset
758 # . lots of date/interval related changes:
5fd94347c6f2 Journal entries for link and multilink properties can now be switched on or off.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 543
diff changeset
759 # - more relaxed date format for input
5fd94347c6f2 Journal entries for link and multilink properties can now be switched on or off.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 543
diff changeset
760 #
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 527
diff changeset
761 # Revision 1.48 2002/01/14 06:32:34 richard
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 527
diff changeset
762 # . #502951 ] adding new properties to old database
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 527
diff changeset
763 #
527
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
764 # Revision 1.47 2002/01/14 02:20:15 richard
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
765 # . changed all config accesses so they access either the instance or the
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
766 # config attriubute on the db. This means that all config is obtained from
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
767 # instance_config instead of the mish-mash of classes. This will make
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
768 # switching to a ConfigParser setup easier too, I hope.
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
769 #
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
770 # At a minimum, this makes migration a _little_ easier (a lot easier in the
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
771 # 0.5.0 switch, I hope!)
53839883cab6 [SF#502951] adding new properties to old database
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
772 #
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 490
diff changeset
773 # Revision 1.46 2002/01/07 10:42:23 richard
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 490
diff changeset
774 # oops
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 490
diff changeset
775 #
490
Richard Jones <richard@users.sourceforge.net>
parents: 477
diff changeset
776 # Revision 1.45 2002/01/02 04:18:17 richard
Richard Jones <richard@users.sourceforge.net>
parents: 477
diff changeset
777 # hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 477
diff changeset
778 #
477
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
779 # Revision 1.44 2002/01/02 02:31:38 richard
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
780 # Sorry for the huge checkin message - I was only intending to implement #496356
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
781 # but I found a number of places where things had been broken by transactions:
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
782 # . modified ROUNDUPDBSENDMAILDEBUG to be SENDMAILDEBUG and hold a filename
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
783 # for _all_ roundup-generated smtp messages to be sent to.
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
784 # . the transaction cache had broken the roundupdb.Class set() reactors
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
785 # . newly-created author users in the mailgw weren't being committed to the db
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
786 #
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
787 # Stuff that made it into CHANGES.txt (ie. the stuff I was actually working
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
788 # on when I found that stuff :):
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
789 # . #496356 ] Use threading in messages
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
790 # . detectors were being registered multiple times
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
791 # . added tests for mailgw
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
792 # . much better attaching of erroneous messages in the mail gateway
05a46da7293a hyperdb docstrings
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
793 #
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
794 # Revision 1.43 2001/12/20 06:13:24 rochecompaan
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
795 # Bugs fixed:
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
796 # . Exception handling in hyperdb for strings-that-look-like numbers got
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
797 # lost somewhere
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
798 # . Internet Explorer submits full path for filename - we now strip away
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
799 # the path
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
800 # Features added:
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
801 # . Link and multilink properties are now displayed sorted in the cgi
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
802 # interface
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 466
diff changeset
803 #
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 460
diff changeset
804 # Revision 1.42 2001/12/16 10:53:37 richard
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 460
diff changeset
805 # take a copy of the node dict so that the subsequent set
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 460
diff changeset
806 # operation doesn't modify the oldvalues structure
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 460
diff changeset
807 #
460
9c895b44240a take a copy of the node dict...
Richard Jones <richard@users.sourceforge.net>
parents: 457
diff changeset
808 # Revision 1.41 2001/12/15 23:47:47 richard
9c895b44240a take a copy of the node dict...
Richard Jones <richard@users.sourceforge.net>
parents: 457
diff changeset
809 # Cleaned up some bare except statements
9c895b44240a take a copy of the node dict...
Richard Jones <richard@users.sourceforge.net>
parents: 457
diff changeset
810 #
457
6abdddc506e9 Cleaned up some bare except statements
Richard Jones <richard@users.sourceforge.net>
parents: 452
diff changeset
811 # Revision 1.40 2001/12/14 23:42:57 richard
6abdddc506e9 Cleaned up some bare except statements
Richard Jones <richard@users.sourceforge.net>
parents: 452
diff changeset
812 # yuck, a gdbm instance tests false :(
6abdddc506e9 Cleaned up some bare except statements
Richard Jones <richard@users.sourceforge.net>
parents: 452
diff changeset
813 # I've left the debugging code in - it should be removed one day if we're ever
6abdddc506e9 Cleaned up some bare except statements
Richard Jones <richard@users.sourceforge.net>
parents: 452
diff changeset
814 # _really_ anal about performace :)
6abdddc506e9 Cleaned up some bare except statements
Richard Jones <richard@users.sourceforge.net>
parents: 452
diff changeset
815 #
452
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
816 # Revision 1.39 2001/12/02 05:06:16 richard
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
817 # . We now use weakrefs in the Classes to keep the database reference, so
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
818 # the close() method on the database is no longer needed.
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
819 # I bumped the minimum python requirement up to 2.1 accordingly.
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
820 # . #487480 ] roundup-server
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
821 # . #487476 ] INSTALL.txt
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
822 #
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
823 # I also cleaned up the change message / post-edit stuff in the cgi client.
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
824 # There's now a clearly marked "TODO: append the change note" where I believe
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
825 # the change note should be added there. The "changes" list will obviously
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
826 # have to be modified to be a dict of the changes, or somesuch.
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
827 #
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
828 # More testing needed.
7181efddce66 yuck, a gdbm instance tests false :(
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
829 #
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
830 # Revision 1.38 2001/12/01 07:17:50 richard
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
831 # . We now have basic transaction support! Information is only written to
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
832 # the database when the commit() method is called. Only the anydbm
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
833 # backend is modified in this way - neither of the bsddb backends have been.
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
834 # The mail, admin and cgi interfaces all use commit (except the admin tool
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
835 # doesn't have a commit command, so interactive users can't commit...)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
836 # . Fixed login/registration forwarding the user to the right page (or not,
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
837 # on a failure)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
838 #
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
839 # Revision 1.37 2001/11/28 21:55:35 richard
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
840 # . login_action and newuser_action return values were being ignored
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
841 # . Woohoo! Found that bloody re-login bug that was killing the mail
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
842 # gateway.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
843 # (also a minor cleanup in hyperdb)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
844 #
419
831e91e23963 login_action and newuser_action return values were being ignored
Richard Jones <richard@users.sourceforge.net>
parents: 415
diff changeset
845 # Revision 1.36 2001/11/27 03:16:09 richard
831e91e23963 login_action and newuser_action return values were being ignored
Richard Jones <richard@users.sourceforge.net>
parents: 415
diff changeset
846 # Another place that wasn't handling missing properties.
831e91e23963 login_action and newuser_action return values were being ignored
Richard Jones <richard@users.sourceforge.net>
parents: 415
diff changeset
847 #
415
105a052508a0 Another place that wasn't handling missing properties.
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
848 # Revision 1.35 2001/11/22 15:46:42 jhermann
105a052508a0 Another place that wasn't handling missing properties.
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
849 # Added module docstrings to all modules.
105a052508a0 Another place that wasn't handling missing properties.
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
850 #
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
851 # Revision 1.34 2001/11/21 04:04:43 richard
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
852 # *sigh* more missing value handling
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
853 #
398
bbbcdee47762 *sigh* more missing value handling
Richard Jones <richard@users.sourceforge.net>
parents: 397
diff changeset
854 # Revision 1.33 2001/11/21 03:40:54 richard
bbbcdee47762 *sigh* more missing value handling
Richard Jones <richard@users.sourceforge.net>
parents: 397
diff changeset
855 # more new property handling
bbbcdee47762 *sigh* more missing value handling
Richard Jones <richard@users.sourceforge.net>
parents: 397
diff changeset
856 #
397
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
857 # Revision 1.32 2001/11/21 03:11:28 richard
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
858 # Better handling of new properties.
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
859 #
395
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 380
diff changeset
860 # Revision 1.31 2001/11/12 22:01:06 richard
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 380
diff changeset
861 # Fixed issues with nosy reaction and author copies.
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 380
diff changeset
862 #
380
a1331423eb93 Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents: 377
diff changeset
863 # Revision 1.30 2001/11/09 10:11:08 richard
a1331423eb93 Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents: 377
diff changeset
864 # . roundup-admin now handles all hyperdb exceptions
a1331423eb93 Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents: 377
diff changeset
865 #
377
93dc08528ad9 roundup-admin now handles all hyperdb exceptions
Richard Jones <richard@users.sourceforge.net>
parents: 330
diff changeset
866 # Revision 1.29 2001/10/27 00:17:41 richard
93dc08528ad9 roundup-admin now handles all hyperdb exceptions
Richard Jones <richard@users.sourceforge.net>
parents: 330
diff changeset
867 # Made Class.stringFind() do caseless matching.
93dc08528ad9 roundup-admin now handles all hyperdb exceptions
Richard Jones <richard@users.sourceforge.net>
parents: 330
diff changeset
868 #
330
62f899fb0c03 Made Class.stringFind() do caseless matching.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
869 # Revision 1.28 2001/10/21 04:44:50 richard
62f899fb0c03 Made Class.stringFind() do caseless matching.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
870 # bug #473124: UI inconsistency with Link fields.
62f899fb0c03 Made Class.stringFind() do caseless matching.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
871 # This also prompted me to fix a fairly long-standing usability issue -
62f899fb0c03 Made Class.stringFind() do caseless matching.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
872 # that of being able to turn off certain filters.
62f899fb0c03 Made Class.stringFind() do caseless matching.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
873 #
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 305
diff changeset
874 # Revision 1.27 2001/10/20 23:44:27 richard
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 305
diff changeset
875 # Hyperdatabase sorts strings-that-look-like-numbers as numbers now.
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 305
diff changeset
876 #
305
cb6d168b5aaa Hyperdatabase sorts strings-that-look-like-numbers as numbers now.
Richard Jones <richard@users.sourceforge.net>
parents: 294
diff changeset
877 # Revision 1.26 2001/10/16 03:48:01 richard
cb6d168b5aaa Hyperdatabase sorts strings-that-look-like-numbers as numbers now.
Richard Jones <richard@users.sourceforge.net>
parents: 294
diff changeset
878 # admin tool now complains if a "find" is attempted with a non-link property.
cb6d168b5aaa Hyperdatabase sorts strings-that-look-like-numbers as numbers now.
Richard Jones <richard@users.sourceforge.net>
parents: 294
diff changeset
879 #
294
49be38bb6e9a admin tool now complains if a "find" is attempted with a non-link property.
Richard Jones <richard@users.sourceforge.net>
parents: 282
diff changeset
880 # Revision 1.25 2001/10/11 00:17:51 richard
49be38bb6e9a admin tool now complains if a "find" is attempted with a non-link property.
Richard Jones <richard@users.sourceforge.net>
parents: 282
diff changeset
881 # Reverted a change in hyperdb so the default value for missing property
49be38bb6e9a admin tool now complains if a "find" is attempted with a non-link property.
Richard Jones <richard@users.sourceforge.net>
parents: 282
diff changeset
882 # values in a create() is None and not '' (the empty string.) This obviously
49be38bb6e9a admin tool now complains if a "find" is attempted with a non-link property.
Richard Jones <richard@users.sourceforge.net>
parents: 282
diff changeset
883 # breaks CSV import/export - the string 'None' will be created in an
49be38bb6e9a admin tool now complains if a "find" is attempted with a non-link property.
Richard Jones <richard@users.sourceforge.net>
parents: 282
diff changeset
884 # export/import operation.
49be38bb6e9a admin tool now complains if a "find" is attempted with a non-link property.
Richard Jones <richard@users.sourceforge.net>
parents: 282
diff changeset
885 #
282
fb1b67a8fd98 Reverted a change in hyperdb...
Richard Jones <richard@users.sourceforge.net>
parents: 278
diff changeset
886 # Revision 1.24 2001/10/10 03:54:57 richard
fb1b67a8fd98 Reverted a change in hyperdb...
Richard Jones <richard@users.sourceforge.net>
parents: 278
diff changeset
887 # Added database importing and exporting through CSV files.
fb1b67a8fd98 Reverted a change in hyperdb...
Richard Jones <richard@users.sourceforge.net>
parents: 278
diff changeset
888 # Uses the csv module from object-craft for exporting if it's available.
fb1b67a8fd98 Reverted a change in hyperdb...
Richard Jones <richard@users.sourceforge.net>
parents: 278
diff changeset
889 # Requires the csv module for importing.
fb1b67a8fd98 Reverted a change in hyperdb...
Richard Jones <richard@users.sourceforge.net>
parents: 278
diff changeset
890 #
278
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
891 # Revision 1.23 2001/10/09 23:58:10 richard
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
892 # Moved the data stringification up into the hyperdb.Class class' get, set
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
893 # and create methods. This means that the data is also stringified for the
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
894 # journal call, and removes duplication of code from the backends. The
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
895 # backend code now only sees strings.
a5dabf2430c5 Added database importing and exporting through CSV files.
Richard Jones <richard@users.sourceforge.net>
parents: 275
diff changeset
896 #
275
1cc866cec608 Moved the data stringification up into the hyperdb.Class class's...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
897 # Revision 1.22 2001/10/09 07:25:59 richard
1cc866cec608 Moved the data stringification up into the hyperdb.Class class's...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
898 # Added the Password property type. See "pydoc roundup.password" for
1cc866cec608 Moved the data stringification up into the hyperdb.Class class's...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
899 # implementation details. Have updated some of the documentation too.
1cc866cec608 Moved the data stringification up into the hyperdb.Class class's...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
900 #
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
901 # Revision 1.21 2001/10/05 02:23:24 richard
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
902 # . roundup-admin create now prompts for property info if none is supplied
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
903 # on the command-line.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
904 # . hyperdb Class getprops() method may now return only the mutable
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
905 # properties.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
906 # . Login now uses cookies, which makes it a whole lot more flexible. We can
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
907 # now support anonymous user access (read-only, unless there's an
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
908 # "anonymous" user, in which case write access is permitted). Login
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
909 # handling has been moved into cgi_client.Client.main()
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
910 # . The "extended" schema is now the default in roundup init.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
911 # . The schemas have had their page headings modified to cope with the new
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
912 # login handling. Existing installations should copy the interfaces.py
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
913 # file from the roundup lib directory to their instance home.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
914 # . Incorrectly had a Bizar Software copyright on the cgitb.py module from
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
915 # Ping - has been removed.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
916 # . Fixed a whole bunch of places in the CGI interface where we should have
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
917 # been returning Not Found instead of throwing an exception.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
918 # . Fixed a deviation from the spec: trying to modify the 'id' property of
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
919 # an item now throws an exception.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
920 #
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
921 # Revision 1.20 2001/10/04 02:12:42 richard
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
922 # Added nicer command-line item adding: passing no arguments will enter an
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
923 # interactive more which asks for each property in turn. While I was at it, I
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
924 # fixed an implementation problem WRT the spec - I wasn't raising a
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
925 # ValueError if the key property was missing from a create(). Also added a
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
926 # protected=boolean argument to getprops() so we can list only the mutable
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
927 # properties (defaults to yes, which lists the immutables).
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
928 #
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
929 # Revision 1.19 2001/08/29 04:47:18 richard
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
930 # Fixed CGI client change messages so they actually include the properties
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
931 # changed (again).
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
932 #
236
8827f5931ea8 Fixed CGI client change messages...
Richard Jones <richard@users.sourceforge.net>
parents: 231
diff changeset
933 # Revision 1.18 2001/08/16 07:34:59 richard
8827f5931ea8 Fixed CGI client change messages...
Richard Jones <richard@users.sourceforge.net>
parents: 231
diff changeset
934 # better CGI text searching - but hidden filter fields are disappearing...
8827f5931ea8 Fixed CGI client change messages...
Richard Jones <richard@users.sourceforge.net>
parents: 231
diff changeset
935 #
231
afd428ba6523 better CGI text searching - but hidden filter fields are disappearing...
Richard Jones <richard@users.sourceforge.net>
parents: 230
diff changeset
936 # Revision 1.17 2001/08/16 06:59:58 richard
afd428ba6523 better CGI text searching - but hidden filter fields are disappearing...
Richard Jones <richard@users.sourceforge.net>
parents: 230
diff changeset
937 # all searches use re now - and they're all case insensitive
afd428ba6523 better CGI text searching - but hidden filter fields are disappearing...
Richard Jones <richard@users.sourceforge.net>
parents: 230
diff changeset
938 #
230
e17a43d2c0d0 all searches use re now - and they're all case insensitive
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
939 # Revision 1.16 2001/08/15 23:43:18 richard
e17a43d2c0d0 all searches use re now - and they're all case insensitive
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
940 # Fixed some isFooTypes that I missed.
e17a43d2c0d0 all searches use re now - and they're all case insensitive
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
941 # Refactored some code in the CGI code.
e17a43d2c0d0 all searches use re now - and they're all case insensitive
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
942 #
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
943 # Revision 1.15 2001/08/12 06:32:36 richard
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
944 # using isinstance(blah, Foo) now instead of isFooType
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
945 #
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
946 # Revision 1.14 2001/08/07 00:24:42 richard
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
947 # stupid typo
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
948 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
949 # Revision 1.13 2001/08/07 00:15:51 richard
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
950 # Added the copyright/license notice to (nearly) all files at request of
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
951 # Bizar Software.
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
952 #
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
953 # Revision 1.12 2001/08/02 06:38:17 richard
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
954 # Roundupdb now appends "mailing list" information to its messages which
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
955 # include the e-mail address and web interface address. Templates may
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
956 # override this in their db classes to include specific information (support
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
957 # instructions, etc).
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
958 #
188
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 172
diff changeset
959 # Revision 1.11 2001/08/01 04:24:21 richard
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 172
diff changeset
960 # mailgw was assuming certain properties existed on the issues being created.
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 172
diff changeset
961 #
172
c580555a6508 mailgw was assuming certain properties existed on the issues being created.
Richard Jones <richard@users.sourceforge.net>
parents: 156
diff changeset
962 # Revision 1.10 2001/07/30 02:38:31 richard
c580555a6508 mailgw was assuming certain properties existed on the issues being created.
Richard Jones <richard@users.sourceforge.net>
parents: 156
diff changeset
963 # get() now has a default arg - for migration only.
c580555a6508 mailgw was assuming certain properties existed on the issues being created.
Richard Jones <richard@users.sourceforge.net>
parents: 156
diff changeset
964 #
156
9c5ddad06430 get() now has a default arg - for migration only.
Richard Jones <richard@users.sourceforge.net>
parents: 130
diff changeset
965 # Revision 1.9 2001/07/29 09:28:23 richard
9c5ddad06430 get() now has a default arg - for migration only.
Richard Jones <richard@users.sourceforge.net>
parents: 130
diff changeset
966 # Fixed sorting by clicking on column headings.
9c5ddad06430 get() now has a default arg - for migration only.
Richard Jones <richard@users.sourceforge.net>
parents: 130
diff changeset
967 #
130
204f99944de0 Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
968 # Revision 1.8 2001/07/29 08:27:40 richard
204f99944de0 Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
969 # Fixed handling of passed-in values in form elements (ie. during a
204f99944de0 Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
970 # drill-down)
204f99944de0 Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
971 #
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
972 # Revision 1.7 2001/07/29 07:01:39 richard
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
973 # Added vim command to all source so that we don't get no steenkin' tabs :)
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
974 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
975 # Revision 1.6 2001/07/29 05:36:14 richard
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
976 # Cleanup of the link label generation.
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
977 #
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
978 # Revision 1.5 2001/07/29 04:05:37 richard
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
979 # Added the fabricated property "id".
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 118
diff changeset
980 #
118
a55c1301ba1f Added the fabricated property "id".
Richard Jones <richard@users.sourceforge.net>
parents: 89
diff changeset
981 # Revision 1.4 2001/07/27 06:25:35 richard
a55c1301ba1f Added the fabricated property "id".
Richard Jones <richard@users.sourceforge.net>
parents: 89
diff changeset
982 # Fixed some of the exceptions so they're the right type.
a55c1301ba1f Added the fabricated property "id".
Richard Jones <richard@users.sourceforge.net>
parents: 89
diff changeset
983 # Removed the str()-ification of node ids so we don't mask oopsy errors any
a55c1301ba1f Added the fabricated property "id".
Richard Jones <richard@users.sourceforge.net>
parents: 89
diff changeset
984 # more.
a55c1301ba1f Added the fabricated property "id".
Richard Jones <richard@users.sourceforge.net>
parents: 89
diff changeset
985 #
89
b6b30ba53986 Fixed some of the exceptions so they're the right type.
Richard Jones <richard@users.sourceforge.net>
parents: 86
diff changeset
986 # Revision 1.3 2001/07/27 05:17:14 richard
b6b30ba53986 Fixed some of the exceptions so they're the right type.
Richard Jones <richard@users.sourceforge.net>
parents: 86
diff changeset
987 # just some comments
b6b30ba53986 Fixed some of the exceptions so they're the right type.
Richard Jones <richard@users.sourceforge.net>
parents: 86
diff changeset
988 #
86
b89712288636 just some comments
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
989 # Revision 1.2 2001/07/22 12:09:32 richard
b89712288636 just some comments
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
990 # Final commit of Grande Splite
b89712288636 just some comments
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
991 #
26
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
992 # Revision 1.1 2001/07/22 11:58:35 richard
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
993 # More Grande Splite
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
994 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
995 #
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
996 # vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/