## Life is Good

From: andrew cooke <andrew@...>

Date: Tue, 18 Aug 2009 13:01:24 -0400

Feeling good at the moment (the last few weeks confirm my suspicions I
am slightly manic depressive, so thank god I am back on the up).
Anyway, for I am feeling good for the following reasons:

- Dire Straits.  Yeah, I'm old and uncool.

- I am working on a Linux computer, that's emulating a Windows
computer, that's got windows open on a Linux computer in Vienna,
running code.  And it's usably fast.  The stuff that's happening in
the background for that to work...

- I had a bug in my code - was calling model constructors like
Parameter(value=incoming.value, date=incoming.date...)
where "incoming" was read from XMLRPC and Parameter is ORMed to an
underlying database.  The problem was that where the incoming data had
None (because values were unknown) I didn't want to store NULL in the
database, but the default table value (it turns out Oracle does this
anywya, but SQLite doesn't - and I think SQLite is correct).
What made me happy was that all I need to do to fix this, for all my
code, was add this class method to a common base of my ORM classes
(it's Python2.4, so more verbose than I would normally write):

@classmethod
def no_nulls(cls, **kargs):
'''
A constructor that removes None values from arguments.  This avoids
us specifying None where we want the default value.
'''
new_args = {}
for key in kargs:
if kargs[key] is not None:
new_args[key] = kargs[key]
return cls(**new_args)

and then change calls like the above to:

Parameter.no_nulls(value=incoming.value, date=incoming.date...)

(I could have over-written the constructor, but I'd like to leave this
explicit).

Anyway, point being that being able to use Python at work is a real pleasure.

Andrew