Geez, reading comprehension on saturdays is sucking.

Just in case anyone else needs this I offer the solution I came up with.I'm
sure there's better ways though


class SQLBase(SQLObject):
    '''Hook some events for auditing(created/last updated)'''
    createDate = DateTimeCol(default=datetime.now,notNone=True)
    updateDate = DateTimeCol(default=datetime.now,notNone=True)

    def __init__(self,*args,**kwargs):
        SQLObject.__init__(self,*args,**kwargs)

        #hook events
        events.listen(self.event_CreateRow,self.__class__,
events.RowCreateSignal)
        events.listen(self.event_UpdateRow,self.__class__,
events.RowUpdateSignal)

    def event_UpdateRow(self,instance,kwargs):
        if not kwargs.has_key("createDate") and not kwargs.has_key
("updateDate"):
            instance.updateDate = datetime.now()

        return
    def event_CreateRow(self,instance,kwargs):
        if not kwargs.has_key("createDate") and not kwargs.has_key
("updateDate"):
            instance.createDate = datetime.now()
            instance.updateDate = datetime.now()

        return


On 7/7/07, Thomas G. Willis <[EMAIL PROTECTED]> wrote:
>
> Hello,
>
> I realize this may not be the best place to ask a SQLobject question
> but there doesn't seem to be a group for SQLobject specifically
> correct me if I'm wrong.
>
> Anyway, my question. I want to have columns for updateDate and
> createDate. I'm sure you can guess what the functionality would be.
>
> I saw this.
>
> http://www.sqlobject.org/module-sqlobject.events.html
>
>
> and this
>
> http://xentac.net/~jchu/blog/2005/Nov/14
>
> I thought I understood things and came up with a base class
>
> class SQLBase(SQLObject):
>     '''Hook some events for auditing(created/last updated)'''
>     createDate = DateTimeCol(default=datetime.now,notNone=True)
>     updateDate = DateTimeCol(default=datetime.now,notNone=True)
>
>     def __init__(self,*args,**kwargs):
>         SQLObject.__init__(self,*args,**kwargs)
>
>         #hook events
>
> events.listen(self.event_CreateRow,self,events.RowCreateSignal)
>
> events.listen(self.event_UpdateRow,self,events.RowUpdateSignal)
>
>     def event_UpdateRow(self,kwargs):
>         print "updaterow: kwargs %s" % str(kwargs)
>         setattr(self,'updateDate', datetime.now())
>         return
>     def event_CreateRow(self,kwargs):
>         print "updaterow: kwargs %s" % str(kwargs)
>         setattr(self,'createDate', datetime.now())
>         setattr(self,'updateDate', datetime.now())
>         return
>
> and a class to test with
>
> class TestDateCols(SQLBase):
>     data = UnicodeCol(notNone=True)
>     def __init__(self,*args,**kwargs):
>         SQLBase.__init__(self,*args,**kwargs)
>
>
>
> when created in tg-admin shell
>
> In [1]: import model
>
> In [2]: tobj = model.TestDateCols(data="goo")
>
> In [3]: tobj.data = "foo"
>
> In [4]: tobj.updateDate
> Out[4]: datetime.datetime(2007, 7, 7, 13, 57, 20)
>
> In [5]: tobj.createDate
> Out[5]: datetime.datetime(2007, 7, 7, 13, 57, 20)
>
> In [6]:
>
>
> Any  guidance is appreciated.
>
>


-- 
Thomas G. Willis

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