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 sqlalchemy+unsubscr...@googlegroups.com. > 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 sqlalchemy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/7c47c079-bca5-44de-aea2-40d8eb708c7b%40www.fastmail.com.