> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to