python3-commons 0.7.1__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 (53) hide show
  1. {python3_commons-0.7.1 → python3_commons-0.7.3}/PKG-INFO +1 -1
  2. {python3_commons-0.7.1 → python3_commons-0.7.3}/pyproject.toml +1 -1
  3. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/db/models/auth.py +0 -6
  4. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/permissions.py +20 -1
  5. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons.egg-info/PKG-INFO +1 -1
  6. {python3_commons-0.7.1 → python3_commons-0.7.3}/.coveragerc +0 -0
  7. {python3_commons-0.7.1 → python3_commons-0.7.3}/.github/workflows/python-publish.yaml +0 -0
  8. {python3_commons-0.7.1 → python3_commons-0.7.3}/.gitignore +0 -0
  9. {python3_commons-0.7.1 → python3_commons-0.7.3}/AUTHORS.rst +0 -0
  10. {python3_commons-0.7.1 → python3_commons-0.7.3}/CHANGELOG.rst +0 -0
  11. {python3_commons-0.7.1 → python3_commons-0.7.3}/LICENSE +0 -0
  12. {python3_commons-0.7.1 → python3_commons-0.7.3}/README.md +0 -0
  13. {python3_commons-0.7.1 → python3_commons-0.7.3}/README.rst +0 -0
  14. {python3_commons-0.7.1 → python3_commons-0.7.3}/docs/Makefile +0 -0
  15. {python3_commons-0.7.1 → python3_commons-0.7.3}/docs/_static/.gitignore +0 -0
  16. {python3_commons-0.7.1 → python3_commons-0.7.3}/docs/authors.rst +0 -0
  17. {python3_commons-0.7.1 → python3_commons-0.7.3}/docs/changelog.rst +0 -0
  18. {python3_commons-0.7.1 → python3_commons-0.7.3}/docs/conf.py +0 -0
  19. {python3_commons-0.7.1 → python3_commons-0.7.3}/docs/index.rst +0 -0
  20. {python3_commons-0.7.1 → python3_commons-0.7.3}/docs/license.rst +0 -0
  21. {python3_commons-0.7.1 → python3_commons-0.7.3}/requirements.txt +0 -0
  22. {python3_commons-0.7.1 → python3_commons-0.7.3}/requirements_dev.txt +0 -0
  23. {python3_commons-0.7.1 → python3_commons-0.7.3}/requirements_test.txt +0 -0
  24. {python3_commons-0.7.1 → python3_commons-0.7.3}/setup.cfg +0 -0
  25. {python3_commons-0.7.1 → python3_commons-0.7.3}/setup.py +0 -0
  26. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/__init__.py +0 -0
  27. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/api_client.py +0 -0
  28. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/audit.py +0 -0
  29. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/conf.py +0 -0
  30. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/db/__init__.py +0 -0
  31. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/db/helpers.py +0 -0
  32. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/db/models/__init__.py +0 -0
  33. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/db/models/common.py +0 -0
  34. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/db/models/rbac.py +0 -0
  35. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/fs.py +0 -0
  36. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/helpers.py +0 -0
  37. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/logging/__init__.py +0 -0
  38. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/logging/filters.py +0 -0
  39. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/logging/formatters.py +0 -0
  40. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/object_storage.py +0 -0
  41. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/serializers/__init__.py +0 -0
  42. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/serializers/json.py +0 -0
  43. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/serializers/msgpack.py +0 -0
  44. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons/serializers/msgspec.py +0 -0
  45. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons.egg-info/SOURCES.txt +0 -0
  46. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons.egg-info/dependency_links.txt +0 -0
  47. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons.egg-info/requires.txt +0 -0
  48. {python3_commons-0.7.1 → python3_commons-0.7.3}/src/python3_commons.egg-info/top_level.txt +0 -0
  49. {python3_commons-0.7.1 → python3_commons-0.7.3}/tests/conftest.py +0 -0
  50. {python3_commons-0.7.1 → python3_commons-0.7.3}/tests/test_audit.py +0 -0
  51. {python3_commons-0.7.1 → python3_commons-0.7.3}/tests/test_helpers.py +0 -0
  52. {python3_commons-0.7.1 → python3_commons-0.7.3}/tests/test_msgpack.py +0 -0
  53. {python3_commons-0.7.1 → python3_commons-0.7.3}/tests/test_msgspec.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: python3-commons
3
- Version: 0.7.1
3
+ Version: 0.7.3
4
4
  Summary: Re-usable Python3 code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License: gpl-3
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python3-commons"
7
- version = "0.7.1"
7
+ version = "0.7.3"
8
8
  description = "Re-usable Python3 code"
9
9
  authors = [
10
10
  {name = "Oleg Korsak", email = "kamikaze.is.waiting.you@gmail.com"}
@@ -22,12 +22,6 @@ class User(SQLAlchemyBaseUserTableUUID, Base):
22
22
 
23
23
  username: Mapped[str] = mapped_column(String, unique=True, index=True, nullable=False)
24
24
  group_id: Mapped[int | None] = mapped_column(BIGINT, ForeignKey('user_groups.id'))
25
- role_id: Mapped[uuid.UUID | None] = mapped_column(
26
- GUID,
27
- ForeignKey('permissions.id', name='fk_api_key_permission_api_key', ondelete='RESTRICT'),
28
- nullable=False,
29
- index=True,
30
- )
31
25
 
32
26
 
33
27
  class ApiKey(BaseDBUUIDModel, Base):
@@ -5,7 +5,7 @@ import sqlalchemy as sa
5
5
  from sqlalchemy import func, exists, and_
6
6
  from sqlalchemy.ext.asyncio import AsyncSession
7
7
 
8
- from python3_commons.db.models import RBACPermission, RBACApiKeyRole, RBACRolePermission
8
+ from python3_commons.db.models import RBACPermission, RBACApiKeyRole, RBACRolePermission, RBACUserRole
9
9
 
10
10
  logger = logging.getLogger(__name__)
11
11
 
@@ -27,3 +27,22 @@ async def has_api_key_permission(session: AsyncSession, api_key_uid: UUID, permi
27
27
  result = cursor.scalar()
28
28
 
29
29
  return result
30
+
31
+
32
+ async def has_user_permission(session: AsyncSession, user_id: UUID, permission: str) -> bool:
33
+ query = sa.select(
34
+ exists().where(
35
+ and_(
36
+ RBACUserRole.user_id == user_id,
37
+ (RBACUserRole.expires_at.is_(None) | (RBACUserRole.expires_at > func.now())),
38
+ RBACUserRole.role_uid == RBACRolePermission.role_uid,
39
+ RBACRolePermission.permission_uid == RBACPermission.uid,
40
+ RBACPermission.name == permission
41
+ )
42
+ )
43
+ )
44
+
45
+ cursor = await session.execute(query)
46
+ result = cursor.scalar()
47
+
48
+ return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: python3-commons
3
- Version: 0.7.1
3
+ Version: 0.7.3
4
4
  Summary: Re-usable Python3 code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License: gpl-3
File without changes