Mercurial > p > roundup > code
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. |
