In a little while the git master will have new accessors: ORMExecuteState.bind_mapper ORMExecuteState.all_mappers
so that you can reliably get at the Mapper objects that are the target of an ORM-enabled select(), update() , or delete() see https://gerrit.sqlalchemy.org/c/sqlalchemy/sqlalchemy/+/2432 for the patch going through testing now. On Wed, Dec 23, 2020, at 10:16 AM, Mike Bayer wrote: > First off I admire your motivation to make that happen, that's all new stuff > and note there's a lot of fixes to the with_loader_criteria() thing that are > sitting in github master right now that will be in 1.4.0b2. > > The good news is that update() and delete() both support options as well so > feel free to use with_loader_criteria() with these constructs as well, using > the 2.0-style execution described at > https://docs.sqlalchemy.org/en/14/orm/session_basics.html#update-and-delete-with-arbitrary-where-clause > . > > it might be nice for us to add a universal "mappers" accessor to > ORMExecuteState but for the moment you can likely work for all statements > generically as: > > if orm_execute_state.is_orm_statement: > mapper = orm_execute_state.bind_arguments['mapper'] > cls = mapper.class_ > > see if that works out and we will likely need to add an accessor that > guarantees being able to provide the target "mapper" and/or mappers for any > operation. > > > > > > On Wed, Dec 23, 2020, at 4:54 AM, Frédéric CLEMENT wrote: >> Hi the list, >> >> >> Version 1.4Beta (hopefully 2.0 very soon) >> >> I am writing a multitenant application and I need to filter all requests >> using subqueries. >> I succeeded to do it for selects doing something like that : >> >> *for desc in orm_execute_state.statement.column_descriptions: >> t = desc['type'] >> classname = desc['name'] >> scope = get_scope(classname) >> >> if scope != None: >> rights = check_rights(session, infos, role, scope) >> orm_execute_state.statement = orm_execute_state.statement.options( >> with_loader_criteria( >> t, >> t.id.in_(rights), >> include_aliases=True >> ) >> )* >> >> But I didn't find out how to do it for updates and deletes. >> If some of yours have an idea .... :) >> >> Thanks a lot, >> >> Fred >> >> >> >> -- >> SQLAlchemy - >> The Python SQL Toolkit and Object Relational Mapper >> >> http://www.sqlalchemy.org/ >> >> To post example code, please provide an MCVE: Minimal, Complete, and >> Verifiable Example. See http://stackoverflow.com/help/mcve for a full >> description. >> --- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sqlalchemy/69ab301d-e223-4b5d-9e37-756ce5b04801n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/sqlalchemy/69ab301d-e223-4b5d-9e37-756ce5b04801n%40googlegroups.com?utm_medium=email&utm_source=footer>. > > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sqlalchemy/7c47c079-bca5-44de-aea2-40d8eb708c7b%40www.fastmail.com > > <https://groups.google.com/d/msgid/sqlalchemy/7c47c079-bca5-44de-aea2-40d8eb708c7b%40www.fastmail.com?utm_medium=email&utm_source=footer>. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/2cb102e6-e063-4abc-8713-2d995d8cbe99%40www.fastmail.com.
