> Your best bet is probably to drop the default parameters, define a
> custom constructor and in your constructor, do the underlying
> constructor (__super__() ? I forget) and then set your defaults after
> the class has been created.
OK, here's what i tried (the class is a little different - it's the
actual class i'm working on)
--------------------------------------
class TimePeriod(Tree):
# a period of time
start = DateTimeCol(default=None)
end = DateTimeCol(default=None)
duration = PickleCol(default=None)
log = ForeignKey('TimeLog',default=None)
def __init__(self,*args,**kargs):
# extract defaults
temp = list()
for default in
[['start',None],['end',None],['duration',None],['log',None]]:
if default[0] in kargs.keys():
temp.append( [default[0],kargs[default[0]]] )
del( kargs[default[0]] )
else:
temp.append(default)
# instantiate self
super(TimePeriod,self).__init__(*args,**kargs)
# set values
for i in temp:
self.__setattr__(i[0],i[1])
---------------------------------------------------------
This produces the following error:
---------------------------------------------------------
Traceback (most recent call last):
File "/home/jackie/Projects/organizer/organizer/tests/test_model.py",
line 1000, in test_explicitDateDuringAvailable_resource_date
assert e.date == event
File "/home/jackie/Projects/organizer/organizer/model.py", line 162,
in _get_date
return self.getStartDate()
File "/home/jackie/Projects/organizer/organizer/organizerTime.py",
line 591, in getStartDate
precedence = self.getDatePrecedence()
File "/home/jackie/Projects/organizer/organizer/model.py", line 200,
in getDatePrecedence
resourceWindow = self.getResourceWindow()
File "/home/jackie/Projects/organizer/organizer/model.py", line 183,
in getResourceWindow
resourceWindow.intersect( resource.availability, True )
File "/home/jackie/Projects/organizer/organizer/organizerTime.py",
line 864, in intersect
selfPoints = self.extract_points()
File "/home/jackie/Projects/organizer/organizer/organizerTime.py",
line 761, in extract_points
periods = self.periods
File "<string>", line 1, in <lambda>
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.2b1-py2.4.egg/sqlobject/joins.py",
line 147, in performJoin
return self._applyOrderBy([self.otherClass.get(id, conn) for (id,)
in ids if id is not None], self.otherClass)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.2b1-py2.4.egg/sqlobject/inheritance/__init__.py",
line 174, in get
val = super(InheritableSQLObject, cls).get(id, connection,
selectResults)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.2b1-py2.4.egg/sqlobject/main.py",
line 916, in get
val = cls(_SO_fetch_no_create=1)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.2b1-py2.4.egg/sqlobject/declarative.py",
line 93, in _wrapper
return fn(self, *args, **kwargs)
File "/home/jackie/Projects/organizer/organizer/organizerTime.py",
line 190, in __init__
self.__setattr__(i[0],i[1])
File "/home/jackie/Projects/organizer/organizer/organizerTime.py",
line 242, in _set_start
self._SO_set_start(valueDate)
File "<string>", line 1, in <lambda>
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.2b1-py2.4.egg/sqlobject/main.py",
line 1049, in _SO_setValue
dbValue = from_python(value, self._SO_validatorState)
AttributeError: 'TimePeriod' object has no attribute
'_SO_validatorState'
---------------------------------------------------------------
This error happens any time i try to explicitly set an attribute in the
init function.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---