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.

Reply via email to