comparison roundup/hyperdb.py @ 543:22e0edf7da6e

lots of date/interval related changes: more relaxed date format for input
author Richard Jones <richard@users.sourceforge.net>
date Wed, 16 Jan 2002 07:02:57 +0000
parents 53839883cab6
children 5fd94347c6f2
comparison
equal deleted inserted replaced
542:d17eecdcfe35 543:22e0edf7da6e
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
17 # 17 #
18 # $Id: hyperdb.py,v 1.48 2002-01-14 06:32:34 richard Exp $ 18 # $Id: hyperdb.py,v 1.49 2002-01-16 07:02:57 richard Exp $
19 19
20 __doc__ = """ 20 __doc__ = """
21 Hyperdatabase implementation, especially field types. 21 Hyperdatabase implementation, especially field types.
22 """ 22 """
23 23
346 elif isinstance(prop, Password): 346 elif isinstance(prop, Password):
347 if not isinstance(value, password.Password): 347 if not isinstance(value, password.Password):
348 raise TypeError, 'new property "%s" not a Password'%key 348 raise TypeError, 'new property "%s" not a Password'%key
349 349
350 elif isinstance(prop, Date): 350 elif isinstance(prop, Date):
351 if not isinstance(value, date.Date): 351 if value is not None and not isinstance(value, date.Date):
352 raise TypeError, 'new property "%s" not a Date'%key 352 raise TypeError, 'new property "%s" not a Date'%key
353 353
354 elif isinstance(prop, Interval): 354 elif isinstance(prop, Interval):
355 if not isinstance(value, date.Interval): 355 if value is not None and not isinstance(value, date.Interval):
356 raise TypeError, 'new property "%s" not an Interval'%key 356 raise TypeError, 'new property "%s" not an Interval'%key
357 357
358 # make sure there's data where there needs to be 358 # make sure there's data where there needs to be
359 for key, prop in self.properties.items(): 359 for key, prop in self.properties.items():
360 if propvalues.has_key(key): 360 if propvalues.has_key(key):
368 propvalues[key] = None 368 propvalues[key] = None
369 369
370 # convert all data to strings 370 # convert all data to strings
371 for key, prop in self.properties.items(): 371 for key, prop in self.properties.items():
372 if isinstance(prop, Date): 372 if isinstance(prop, Date):
373 propvalues[key] = propvalues[key].get_tuple() 373 if propvalues[key] is not None:
374 propvalues[key] = propvalues[key].get_tuple()
374 elif isinstance(prop, Interval): 375 elif isinstance(prop, Interval):
375 propvalues[key] = propvalues[key].get_tuple() 376 if propvalues[key] is not None:
377 propvalues[key] = propvalues[key].get_tuple()
376 elif isinstance(prop, Password): 378 elif isinstance(prop, Password):
377 propvalues[key] = str(propvalues[key]) 379 propvalues[key] = str(propvalues[key])
378 380
379 # done 381 # done
380 self.db.addnode(self.classname, newid, propvalues) 382 self.db.addnode(self.classname, newid, propvalues)
412 else: 414 else:
413 return default 415 return default
414 416
415 # possibly convert the marshalled data to instances 417 # possibly convert the marshalled data to instances
416 if isinstance(prop, Date): 418 if isinstance(prop, Date):
419 if d[propname] is None:
420 return None
417 return date.Date(d[propname]) 421 return date.Date(d[propname])
418 elif isinstance(prop, Interval): 422 elif isinstance(prop, Interval):
423 if d[propname] is None:
424 return None
419 return date.Interval(d[propname]) 425 return date.Interval(d[propname])
420 elif isinstance(prop, Password): 426 elif isinstance(prop, Password):
421 p = password.Password() 427 p = password.Password()
422 p.unpack(d[propname]) 428 p.unpack(d[propname])
423 return p 429 return p
559 elif isinstance(prop, Password): 565 elif isinstance(prop, Password):
560 if not isinstance(value, password.Password): 566 if not isinstance(value, password.Password):
561 raise TypeError, 'new property "%s" not a Password'% key 567 raise TypeError, 'new property "%s" not a Password'% key
562 propvalues[key] = value = str(value) 568 propvalues[key] = value = str(value)
563 569
564 elif isinstance(prop, Date): 570 elif value is not None and isinstance(prop, Date):
565 if not isinstance(value, date.Date): 571 if not isinstance(value, date.Date):
566 raise TypeError, 'new property "%s" not a Date'% key 572 raise TypeError, 'new property "%s" not a Date'% key
567 propvalues[key] = value = value.get_tuple() 573 propvalues[key] = value = value.get_tuple()
568 574
569 elif isinstance(prop, Interval): 575 elif value is not None and isinstance(prop, Interval):
570 if not isinstance(value, date.Interval): 576 if not isinstance(value, date.Interval):
571 raise TypeError, 'new property "%s" not an Interval'% key 577 raise TypeError, 'new property "%s" not an Interval'% key
572 propvalues[key] = value = value.get_tuple() 578 propvalues[key] = value = value.get_tuple()
573 579
574 node[key] = value 580 node[key] = value
1039 cl.create(name=option[i], order=i) 1045 cl.create(name=option[i], order=i)
1040 return hyperdb.Link(name) 1046 return hyperdb.Link(name)
1041 1047
1042 # 1048 #
1043 # $Log: not supported by cvs2svn $ 1049 # $Log: not supported by cvs2svn $
1050 # Revision 1.48 2002/01/14 06:32:34 richard
1051 # . #502951 ] adding new properties to old database
1052 #
1044 # Revision 1.47 2002/01/14 02:20:15 richard 1053 # Revision 1.47 2002/01/14 02:20:15 richard
1045 # . changed all config accesses so they access either the instance or the 1054 # . changed all config accesses so they access either the instance or the
1046 # config attriubute on the db. This means that all config is obtained from 1055 # config attriubute on the db. This means that all config is obtained from
1047 # instance_config instead of the mish-mash of classes. This will make 1056 # instance_config instead of the mish-mash of classes. This will make
1048 # switching to a ConfigParser setup easier too, I hope. 1057 # switching to a ConfigParser setup easier too, I hope.

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