3535#
3636class _Type (object ):
3737 """A roundup property type."""
38- def __init__ (self , required = False ):
38+ def __init__ (self , required = False , default_value = None ):
3939 self .required = required
40+ self .__default_value = default_value
4041 def __repr__ (self ):
4142 ' more useful for dumps '
4243 return '<%s.%s>' % (self .__class__ .__module__ , self .__class__ .__name__ )
44+ def get_default_value (self ):
45+ """The default value when creating a new instance of this property."""
46+ return self .__default_value
4347 def sort_repr (self , cls , val , name ):
4448 """Representation used for sorting. This should be a python
4549 built-in type, otherwise sorting will take ages. Note that
@@ -50,8 +54,8 @@ def sort_repr (self, cls, val, name):
5054
5155class String (_Type ):
5256 """An object designating a String property."""
53- def __init__ (self , indexme = 'no' , required = False ):
54- super (String , self ).__init__ (required )
57+ def __init__ (self , indexme = 'no' , required = False , default_value = "" ):
58+ super (String , self ).__init__ (required , default_value )
5559 self .indexme = indexme == 'yes'
5660 def from_raw (self , value , propname = '' , ** kw ):
5761 """fix the CRLF/CR -> LF stuff"""
@@ -85,8 +89,9 @@ def sort_repr (self, cls, val, name):
8589
8690class Date (_Type ):
8791 """An object designating a Date property."""
88- def __init__ (self , offset = None , required = False ):
89- super (Date , self ).__init__ (required )
92+ def __init__ (self , offset = None , required = False , default_value = None ):
93+ super (Date , self ).__init__ (required = required ,
94+ default_value = default_value )
9095 self ._offset = offset
9196 def offset (self , db ):
9297 if self ._offset is not None :
@@ -124,10 +129,11 @@ def sort_repr (self, cls, val, name):
124129class _Pointer (_Type ):
125130 """An object designating a Pointer property that links or multilinks
126131 to a node in a specified class."""
127- def __init__ (self , classname , do_journal = 'yes' , required = False ):
132+ def __init__ (self , classname , do_journal = 'yes' , required = False ,
133+ default_value = None ):
128134 """ Default is to journal link and unlink events
129135 """
130- super (_Pointer , self ).__init__ (required )
136+ super (_Pointer , self ).__init__ (required , default_value )
131137 self .classname = classname
132138 self .do_journal = do_journal == 'yes'
133139 def __repr__ (self ):
@@ -163,6 +169,14 @@ class Multilink(_Pointer):
163169 "do_journal" indicates whether the linked-to nodes should have
164170 'link' and 'unlink' events placed in their journal
165171 """
172+
173+ def __init__ (self , classname , do_journal = 'yes' , required = False ):
174+
175+ super (Multilink , self ).__init__ (classname ,
176+ do_journal ,
177+ required = required ,
178+ default_value = [])
179+
166180 def from_raw (self , value , db , klass , propname , itemid , ** kw ):
167181 if not value :
168182 return []
0 commit comments