rb-commons 0.7.2__tar.gz → 0.7.3__tar.gz

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.
Files changed (33) hide show
  1. {rb_commons-0.7.2 → rb_commons-0.7.3}/PKG-INFO +1 -1
  2. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/orm/managers.py +43 -0
  3. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons.egg-info/PKG-INFO +1 -1
  4. {rb_commons-0.7.2 → rb_commons-0.7.3}/setup.py +1 -1
  5. {rb_commons-0.7.2 → rb_commons-0.7.3}/README.md +0 -0
  6. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/__init__.py +0 -0
  7. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/broker/__init__.py +0 -0
  8. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/broker/consumer.py +0 -0
  9. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/configs/__init__.py +0 -0
  10. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/configs/config.py +0 -0
  11. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/configs/injections.py +0 -0
  12. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/configs/rabbitmq.py +0 -0
  13. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/configs/v2/__init__.py +0 -0
  14. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/configs/v2/config.py +0 -0
  15. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/http/__init__.py +0 -0
  16. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/http/base_api.py +0 -0
  17. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/http/consul.py +0 -0
  18. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/http/exceptions.py +0 -0
  19. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/orm/__init__.py +0 -0
  20. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/orm/exceptions.py +0 -0
  21. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/orm/services.py +0 -0
  22. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/permissions/__init__.py +0 -0
  23. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/permissions/role_permissions.py +0 -0
  24. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/schemes/__init__.py +0 -0
  25. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/schemes/jwt.py +0 -0
  26. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/schemes/pagination.py +0 -0
  27. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/utils/__init__.py +0 -0
  28. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons/utils/media.py +0 -0
  29. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons.egg-info/SOURCES.txt +0 -0
  30. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons.egg-info/dependency_links.txt +0 -0
  31. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons.egg-info/requires.txt +0 -0
  32. {rb_commons-0.7.2 → rb_commons-0.7.3}/rb_commons.egg-info/top_level.txt +0 -0
  33. {rb_commons-0.7.2 → rb_commons-0.7.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rb-commons
3
- Version: 0.7.2
3
+ Version: 0.7.3
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
@@ -254,6 +254,49 @@ class BaseManager(Generic[ModelType]):
254
254
  self.filters.append(or_(*or_clauses))
255
255
  return self
256
256
 
257
+ def exclude(self, *expressions: Any, **lookups: Any) -> "BaseManager[ModelType]":
258
+ """
259
+ Exclude records that match the given conditions.
260
+ This is the opposite of filter() - it adds NOT conditions.
261
+
262
+ Args:
263
+ *expressions: Q objects, QJSON objects, or SQLAlchemy expressions
264
+ **lookups: Field lookups (same format as filter())
265
+
266
+ Returns:
267
+ BaseManager instance for method chaining
268
+
269
+ Example:
270
+ # Exclude users with specific names
271
+ manager.exclude(name="John", email__contains="test")
272
+
273
+ # Exclude using Q objects
274
+ manager.exclude(Q(age__lt=18) | Q(status="inactive"))
275
+
276
+ # Exclude using QJSON
277
+ manager.exclude(QJSON("metadata", "type", "eq", "archived"))
278
+ """
279
+ self._filtered = True
280
+
281
+ for k, v in lookups.items():
282
+ root = k.split("__", 1)[0]
283
+ if hasattr(self.model, root):
284
+ attr = getattr(self.model, root)
285
+ if hasattr(attr, "property") and isinstance(attr.property, RelationshipProperty):
286
+ self._joins.add(root)
287
+
288
+ lookup_expr = self._parse_lookup(k, v)
289
+ self.filters.append(~lookup_expr)
290
+
291
+ for expr in expressions:
292
+ if isinstance(expr, Q) or isinstance(expr, QJSON):
293
+ q_expr = self._q_to_expr(expr)
294
+ self.filters.append(~q_expr)
295
+ else:
296
+ self.filters.append(~expr)
297
+
298
+ return self
299
+
257
300
  def limit(self, value: int) -> "BaseManager[ModelType]":
258
301
  self._limit = value
259
302
  return self
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rb-commons
3
- Version: 0.7.2
3
+ Version: 0.7.3
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
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
5
5
 
6
6
  setup(
7
7
  name="rb-commons",
8
- version="0.7.2",
8
+ version="0.7.3",
9
9
  author="Abdulvoris",
10
10
  author_email="erkinovabdulvoris101@gmail.com",
11
11
  description="Commons of project and simplified orm based on sqlalchemy.",
File without changes
File without changes