1- # $Id: back_metakit.py,v 1.45 2003-03-26 10:44:00 richard Exp $
1+ # $Id: back_metakit.py,v 1.46 2003-04-20 11:58:45 kedder Exp $
22'''
33 Metakit backend for Roundup, originally by Gordon McMillan.
44
@@ -603,10 +603,11 @@ def set(self, nodeid, **propvalues):
603603 if value is None :
604604 setattr (row , key , '' )
605605 else :
606- setattr (row , key , str (value ))
606+ # kedder: we should store interval values serialized
607+ setattr (row , key , value .serialise ())
607608 changes [key ] = str (oldvalue )
608609 propvalues [key ] = str (value )
609-
610+
610611 elif isinstance (prop , hyperdb .Number ):
611612 if value is None :
612613 value = 0
@@ -963,6 +964,10 @@ def filter(self, search_matches, filterspec, sort=(None,None),
963964 if date_rng .from_value :
964965 t = date_rng .from_value .get_tuple ()
965966 where [propname ] = int (calendar .timegm (t ))
967+ else :
968+ # use minimum possible value to exclude items without
969+ # 'prop' property
970+ where [propname ] = 0
966971 if date_rng .to_value :
967972 t = date_rng .to_value .get_tuple ()
968973 wherehigh [propname ] = int (calendar .timegm (t ))
@@ -972,7 +977,24 @@ def filter(self, search_matches, filterspec, sort=(None,None),
972977 # If range creation fails - ignore that search parameter
973978 pass
974979 elif isinstance (prop , hyperdb .Interval ):
975- where [propname ] = str (date .Interval (value ))
980+ try :
981+ # Try to filter on range of intervals
982+ date_rng = Range (value , date .Interval )
983+ if date_rng .from_value :
984+ #t = date_rng.from_value.get_tuple()
985+ where [propname ] = date_rng .from_value .serialise ()
986+ else :
987+ # use minimum possible value to exclude items without
988+ # 'prop' property
989+ where [propname ] = '-99999999999999'
990+ if date_rng .to_value :
991+ #t = date_rng.to_value.get_tuple()
992+ wherehigh [propname ] = date_rng .to_value .serialise ()
993+ else :
994+ wherehigh [propname ] = None
995+ except ValueError :
996+ # If range creation fails - ignore that search parameter
997+ pass
976998 elif isinstance (prop , hyperdb .Number ):
977999 where [propname ] = int (value )
9781000 else :
@@ -1187,7 +1209,7 @@ def import_list(self, propnames, proplist):
11871209 if isinstance (prop , hyperdb .Date ):
11881210 value = int (calendar .timegm (value ))
11891211 elif isinstance (prop , hyperdb .Interval ):
1190- value = str ( date .Interval (value ))
1212+ value = date .Interval (value ). serialise ( )
11911213 elif isinstance (prop , hyperdb .Number ):
11921214 value = int (value )
11931215 elif isinstance (prop , hyperdb .Boolean ):
0 commit comments