Martijn Faassen wrote:
>
> Hi there,
>
> I'm investigating ways to make an ORM-mapped instance read-only,
> dependent the value of a particular attribute (database backed or not).
> If an object has a certain state, I want to prevent normal users from
> making a modification. Other objects connected to the same session
> should be editable however.
>
> I've tried to figure out various possibilities, but none of them seem
> entirely satisfactory:
>
> * I could use AttributeExtension that checks the 'readonly' attribute
> and if so, raises an exception when modification is attempted. As far as
> I can see I'd need to manually define an AttributeExtension for *all*
> attributes, and I'd just like to do this once per mapped class at most.
>
> * It may be possible to use MapperExtension and modify before_update
> somehow. This is a bit late however - I'd prefer an exception to be
> raised as soon as someone tries to modify an attribute.
>
> * I could proxy the whole instance with a security proxy, along the
> lines of zope.security, which could then do the checks. I'd like to
> avoid security proxies if I can get away with it however. I'd prefer it
> if the objects that came back from session.query() were already
> configured to do read-only checks.
>
> * I could try to use some form of row-level security on the database
> level. MySQL, the database I'm working with, doesn't have such feature
> as far as I'm aware, however. Also this'd be warning the developer a bit
> late - I'd prefer if it happened directly when modifying the attribute.
>
> Does anyone have any clues as to what a good implementation strategy
> would be?

did you try implementing __getattribute__() ?


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