rb-commons 0.7.15__py3-none-any.whl → 0.7.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -136,6 +136,34 @@ class BaseManager(Generic[ModelType]):
136
136
 
137
137
  def _parse_lookup(self, lookup: str, value: Any):
138
138
  parts, operator, rel_attr, col_attr = self._parse_lookup_meta(lookup)
139
+
140
+ if rel_attr is not None and col_attr is None:
141
+ uselist = rel_attr.property.uselist
142
+ primaryjoin = rel_attr.property.primaryjoin
143
+
144
+ if uselist:
145
+ target_cls = rel_attr.property.mapper.class_
146
+ cnt = (
147
+ select(func.count("*"))
148
+ .select_from(target_cls)
149
+ .where(primaryjoin)
150
+ .correlate(self.model)
151
+ .scalar_subquery()
152
+ )
153
+ return self._build_comparison(cnt, operator, value)
154
+ else:
155
+ exists_expr = (
156
+ select(1)
157
+ .where(primaryjoin)
158
+ .correlate(self.model)
159
+ .exists()
160
+ )
161
+ if operator in {"eq", "lte"} and str(value) in {"0", "False", "false"}:
162
+ return ~exists_expr
163
+ if operator in {"gt", "gte", "eq"} and str(value) in {"1", "True", "true"}:
164
+ return exists_expr
165
+ return self._build_comparison(exists_expr, operator, bool(value))
166
+
139
167
  expr = self._build_comparison(col_attr, operator, value)
140
168
 
141
169
  if rel_attr:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rb-commons
3
- Version: 0.7.15
3
+ Version: 0.7.16
4
4
  Summary: Commons of project and simplified orm based on sqlalchemy.
5
5
  Home-page: https://github.com/RoboSell-organization/rb-commons
6
6
  Author: Abdulvoris
@@ -14,7 +14,7 @@ rb_commons/http/exceptions.py,sha256=EGRMr1cRgiJ9Q2tkfANbf0c6-zzXf1CD6J3cmCaT_FA
14
14
  rb_commons/orm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  rb_commons/orm/enum.py,sha256=PRNSuP1X7ADJW1snnxRGcHj9mxE3JaO-a2AyaHmB6es,380
16
16
  rb_commons/orm/exceptions.py,sha256=1aMctiEwrPjyehoXVX1l6ML5ZOhmDkmBISzlTD5ey1Y,509
17
- rb_commons/orm/managers.py,sha256=wo6fq85kxGAzzd3DQfveg-yyCLtDuFOibq6isFNbFc4,24161
17
+ rb_commons/orm/managers.py,sha256=SSKeIy8t0Qw7SdmbAqqz3uAMNIs4ePgkINyg0ch6X0w,25308
18
18
  rb_commons/orm/querysets.py,sha256=Q4iY_TKZItpNnrbCAvlSwyCxJikhaX5qVF3Y2rVgAYQ,1666
19
19
  rb_commons/orm/services.py,sha256=71eRcJ4TxZvzNz-hLXo12X4U7PGK54ZfbLAb27AjZi8,1589
20
20
  rb_commons/permissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -24,7 +24,7 @@ rb_commons/schemes/jwt.py,sha256=ZKLJ5D3fcEmEKySjzbxEgUcza4K-oPoHr14_Z0r9Yic,249
24
24
  rb_commons/schemes/pagination.py,sha256=8VZW1wZGJIPR9jEBUgppZUoB4uqP8ORudHkMwvEJSxg,1866
25
25
  rb_commons/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  rb_commons/utils/media.py,sha256=pwwGyImI5BK-NCJkX0Q6w2Nm-QL9_CCQC7B7O7wz38I,1493
27
- rb_commons-0.7.15.dist-info/METADATA,sha256=sKv6SUepDqAr5CzE7OC4UD6D6VFjH-GlwoiAQzJm95o,6571
28
- rb_commons-0.7.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
- rb_commons-0.7.15.dist-info/top_level.txt,sha256=HPx_WAYo3_fbg1WCeGHsz3wPGio1ucbnrlm2lmqlJog,11
30
- rb_commons-0.7.15.dist-info/RECORD,,
27
+ rb_commons-0.7.16.dist-info/METADATA,sha256=33zDYBVoHrYifxF8AM1tzUuIKRmnRMwW4DqWbf3ddCM,6571
28
+ rb_commons-0.7.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
+ rb_commons-0.7.16.dist-info/top_level.txt,sha256=HPx_WAYo3_fbg1WCeGHsz3wPGio1ucbnrlm2lmqlJog,11
30
+ rb_commons-0.7.16.dist-info/RECORD,,