From 01469c3d7e7c47ece091abdbbd2b342112901b9d Mon Sep 17 00:00:00 2001 From: Greg Price Date: Thu, 26 Feb 2009 23:09:33 -0500 Subject: [PATCH 1/1] fold FormattableRecord, NullableRecord into Record also shorten types in lists to __name__ (Done with iannucci.) svn path=/trunk/packages/invirt-database/; revision=2192 --- debian/changelog | 4 +++- python/database/owner.py | 4 ++-- python/database/record.py | 41 +++++++++++++---------------------------- 3 files changed, 18 insertions(+), 31 deletions(-) diff --git a/debian/changelog b/debian/changelog index c96b33a..ead1ec7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,8 +6,10 @@ invirt-database (0.1.8) unstable; urgency=low [Greg Price] * use self.c rather than self.__dict__ for SQLAlchemy fields * make Record._ignore, Owner.get* classmethods + * fold FormattableRecord, NullableRecord into Record + * shorten types in lists to __name__ - -- Greg Price Thu, 26 Feb 2009 22:38:02 -0500 + -- Greg Price Thu, 26 Feb 2009 22:51:43 -0500 invirt-database (0.1.7) unstable; urgency=low diff --git a/python/database/owner.py b/python/database/owner.py index 43e7ca4..4988bf3 100755 --- a/python/database/owner.py +++ b/python/database/owner.py @@ -1,6 +1,6 @@ -from record import NullableRecord +from record import Record -class Owner(NullableRecord): +class Owner(Record): _f = { 'ram_quota_total': (512, 'MiB'), 'ram_quota_single': (512, 'MiB'), diff --git a/python/database/record.py b/python/database/record.py index 4962322..dcc99b9 100755 --- a/python/database/record.py +++ b/python/database/record.py @@ -1,23 +1,26 @@ class Record(object): _identity_field = None + _default = {} + _format = {} def get(self, field): - try: - return self.__getattribute__(field) - except: - return None + v = getattr(self, field, None) + if v is None: + return self._default.get(field) + return v def _formatField(self, field): v = self.get(field) + func = self._format.get(field) + if func: + return func(v) if callable(v): v = v() - if hasattr(v, '__iter__'): - if len(v) == 0: - return '[]' - else: - return '[%d x %s]'%(len(v), type(v[0])) - else: + if not hasattr(v, '__iter__'): return repr(v) + if len(v) == 0: + return '[]' + return '[%d x %s]'%(len(v), type(v[0]).__name__) @classmethod def _ignore(cls): @@ -42,21 +45,3 @@ class Record(object): payload = ": "+payload return "<%s%s%s>" % (classname, identity, payload) - -class FormattableRecord(Record): - _format = {} - def _formatField(self, field): - func = self._format.get(field) - if func: - return func(self.get(field)) - else: - return super(FormattableRecord, self)._formatField(field) - -class NullableRecord(FormattableRecord): - _default = {} - def get(self, field): - v = self.__dict__.get(field) - if v != None: - return v - else: - return self._default.get(field) -- 1.7.9.5