Hi,

I have a before flush event set up that sets the current user_id and datetime on new objects that are going to be commited to the database (all tables have these fields).

Unfortunately, it seems to ignore changes I make to existing objects, ie when I set the user_id (which i get from pyramid) and last_updated columns in the event handler, the sql only issues updates for the other columns that where modified.

Any ideas as to what am I missing?

Thanks in advance,
Damian


def attach_user_committing(Session, flush_context, instances):
    """This function gets called by the before_flush event,
    it grabs the current threads request and extracts the
    authenticated user_id out of it.  You can only
    commit things if you are authenticated.

    Once it has that id, it goes through and adds the id
    of the user who modified it to new commits- need to be careful that
    _new doesn't change.
    """

    #this is used when creating databases & testing only
    user_id = 1
    if not creating_database:
user_id = authenticated_userid(pyramid.threadlocal.get_current_request()) #for each object being committed/flushed, set the flushing/commiting user
    for obj in Session._new.values():
        #log.debug(obj)
        obj.user_id = user_id
        obj.last_updated = datetime.now()
    log.debug('Session dirty is : %s' %Session.dirty)
    for obj in Session.dirty:
        log.debug('Objects in dirty: %s' % obj.__dict__)
        #if obj._sa_instance_state.modified:
        obj.user_id = user_id
        obj.last_updated = datetime.now()


    #session.user_id = request
#this event ensures that user_id & lastupdate is correctly stored on each commit.
event.listen(Session, "before_flush", attach_user_committing)

--
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to