cardo-python-utils 0.5.dev7__tar.gz → 0.5.dev9__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 (35) hide show
  1. cardo_python_utils-0.5.dev9/MANIFEST.in +4 -0
  2. {cardo_python_utils-0.5.dev7/cardo_python_utils.egg-info → cardo_python_utils-0.5.dev9}/PKG-INFO +1 -1
  3. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9/cardo_python_utils.egg-info}/PKG-INFO +1 -1
  4. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/cardo_python_utils.egg-info/SOURCES.txt +9 -5
  5. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/pyproject.toml +1 -1
  6. cardo_python_utils-0.5.dev9/python_utils/django/keycloak/admin/__init__.py +0 -0
  7. cardo_python_utils-0.5.dev9/python_utils/django/keycloak/admin/auth.py +48 -0
  8. cardo_python_utils-0.5.dev7/python_utils/django/keycloak/admin.py → cardo_python_utils-0.5.dev9/python_utils/django/keycloak/admin/user_group.py +1 -49
  9. cardo_python_utils-0.5.dev9/python_utils/django/keycloak/api/__init__.py +0 -0
  10. cardo_python_utils-0.5.dev9/python_utils/django/keycloak/models/__init__.py +0 -0
  11. cardo_python_utils-0.5.dev7/MANIFEST.in +0 -4
  12. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/LICENSE +0 -0
  13. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/README.rst +0 -0
  14. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/cardo_python_utils.egg-info/dependency_links.txt +0 -0
  15. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/cardo_python_utils.egg-info/requires.txt +0 -0
  16. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/cardo_python_utils.egg-info/top_level.txt +0 -0
  17. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/__init__.py +0 -0
  18. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/choices.py +0 -0
  19. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/data_structures.py +0 -0
  20. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/db.py +0 -0
  21. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/django/keycloak/__init__.py +0 -0
  22. {cardo_python_utils-0.5.dev7/python_utils/django/keycloak → cardo_python_utils-0.5.dev9/python_utils/django/keycloak/admin}/user_groups_changelist.html +0 -0
  23. {cardo_python_utils-0.5.dev7/python_utils/django/keycloak → cardo_python_utils-0.5.dev9/python_utils/django/keycloak/api}/drf.py +0 -0
  24. {cardo_python_utils-0.5.dev7/python_utils/django/keycloak → cardo_python_utils-0.5.dev9/python_utils/django/keycloak/api}/ninja.py +0 -0
  25. /cardo_python_utils-0.5.dev7/python_utils/django/keycloak/models.py → /cardo_python_utils-0.5.dev9/python_utils/django/keycloak/models/user_group.py +0 -0
  26. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/django/keycloak/service.py +0 -0
  27. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/django/utils.py +0 -0
  28. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/esma_choices.py +0 -0
  29. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/exceptions.py +0 -0
  30. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/imports.py +0 -0
  31. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/math.py +0 -0
  32. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/text.py +0 -0
  33. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/time.py +0 -0
  34. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/python_utils/types_hinting.py +0 -0
  35. {cardo_python_utils-0.5.dev7 → cardo_python_utils-0.5.dev9}/setup.cfg +0 -0
@@ -0,0 +1,4 @@
1
+ include LICENSE
2
+ include README.rst
3
+ include python_utils/django/keycloak/admin/user_groups_changelist.html
4
+ recursive-exclude tests *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cardo-python-utils
3
- Version: 0.5.dev7
3
+ Version: 0.5.dev9
4
4
  Summary: Python library enhanced with a wide range of functions for different scenarios.
5
5
  Author-email: CardoAI <hello@cardoai.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cardo-python-utils
3
- Version: 0.5.dev7
3
+ Version: 0.5.dev9
4
4
  Summary: Python library enhanced with a wide range of functions for different scenarios.
5
5
  Author-email: CardoAI <hello@cardoai.com>
6
6
  License: MIT
@@ -20,9 +20,13 @@ python_utils/time.py
20
20
  python_utils/types_hinting.py
21
21
  python_utils/django/utils.py
22
22
  python_utils/django/keycloak/__init__.py
23
- python_utils/django/keycloak/admin.py
24
- python_utils/django/keycloak/drf.py
25
- python_utils/django/keycloak/models.py
26
- python_utils/django/keycloak/ninja.py
27
23
  python_utils/django/keycloak/service.py
28
- python_utils/django/keycloak/user_groups_changelist.html
24
+ python_utils/django/keycloak/admin/__init__.py
25
+ python_utils/django/keycloak/admin/auth.py
26
+ python_utils/django/keycloak/admin/user_group.py
27
+ python_utils/django/keycloak/admin/user_groups_changelist.html
28
+ python_utils/django/keycloak/api/__init__.py
29
+ python_utils/django/keycloak/api/drf.py
30
+ python_utils/django/keycloak/api/ninja.py
31
+ python_utils/django/keycloak/models/__init__.py
32
+ python_utils/django/keycloak/models/user_group.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cardo-python-utils"
7
- version = "0.5.dev7"
7
+ version = "0.5.dev9"
8
8
  description = "Python library enhanced with a wide range of functions for different scenarios."
9
9
  readme = "README.rst"
10
10
  requires-python = ">=3.8"
@@ -0,0 +1,48 @@
1
+ from django.conf import settings
2
+ from mozilla_django_oidc.auth import OIDCAuthenticationBackend
3
+
4
+
5
+ class AdminAuthenticationBackend(OIDCAuthenticationBackend):
6
+ def _get_user_data(self, claims) -> dict:
7
+ client_roles = (
8
+ claims.get("resource_access", {})
9
+ .get(getattr(settings, "OIDC_RP_CLIENT_ID", ""), {})
10
+ .get("roles", [])
11
+ )
12
+ is_superuser = "Admin" in client_roles
13
+
14
+ return {
15
+ "username": claims.get("preferred_username"),
16
+ "email": claims.get("email"),
17
+ "first_name": claims.get("given_name", ""),
18
+ "last_name": claims.get("family_name", ""),
19
+ "is_staff": claims.get("is_staff", False),
20
+ "is_superuser": is_superuser,
21
+ }
22
+
23
+ def filter_users_by_claims(self, claims):
24
+ username = claims.get("preferred_username")
25
+ if not username:
26
+ return self.UserModel.objects.none()
27
+ return self.UserModel.objects.filter(username=username)
28
+
29
+ def create_user(self, claims):
30
+ return self.UserModel.objects.create_user(**self._get_user_data(claims))
31
+
32
+ def update_user(self, user, claims):
33
+ save_needed = False
34
+
35
+ for attr, value in self._get_user_data(claims).items():
36
+ if getattr(user, attr) != value:
37
+ setattr(user, attr, value)
38
+ save_needed = True
39
+
40
+ if save_needed:
41
+ user.save()
42
+
43
+ return user
44
+
45
+
46
+ def has_admin_site_permission(request):
47
+ """Admin site is not publicly accessible."""
48
+ return request.user.is_active
@@ -1,57 +1,9 @@
1
- from django.conf import settings
2
1
  from django.contrib import admin, messages
3
2
  from django.core.cache import cache
4
3
  from django.urls import path
5
4
  from django.shortcuts import redirect
6
- from mozilla_django_oidc.auth import OIDCAuthenticationBackend
7
5
 
8
- from .service import KeycloakService
9
-
10
-
11
- class KeycloakAuthenticationBackend(OIDCAuthenticationBackend):
12
- def _get_user_data(self, claims) -> dict:
13
- client_roles = (
14
- claims.get("resource_access", {})
15
- .get(getattr(settings, "OIDC_RP_CLIENT_ID", ""), {})
16
- .get("roles", [])
17
- )
18
- is_superuser = "Admin" in client_roles
19
-
20
- return {
21
- "username": claims.get("preferred_username"),
22
- "email": claims.get("email"),
23
- "first_name": claims.get("given_name", ""),
24
- "last_name": claims.get("family_name", ""),
25
- "is_staff": claims.get("is_staff", False),
26
- "is_superuser": is_superuser,
27
- }
28
-
29
- def filter_users_by_claims(self, claims):
30
- username = claims.get("preferred_username")
31
- if not username:
32
- return self.UserModel.objects.none()
33
- return self.UserModel.objects.filter(username=username)
34
-
35
- def create_user(self, claims):
36
- return self.UserModel.objects.create_user(**self._get_user_data(claims))
37
-
38
- def update_user(self, user, claims):
39
- save_needed = False
40
-
41
- for attr, value in self._get_user_data(claims).items():
42
- if getattr(user, attr) != value:
43
- setattr(user, attr, value)
44
- save_needed = True
45
-
46
- if save_needed:
47
- user.save()
48
-
49
- return user
50
-
51
-
52
- def has_admin_site_permission(request):
53
- """Admin site is not publicly accessible."""
54
- return request.user.is_active
6
+ from ..service import KeycloakService
55
7
 
56
8
 
57
9
  class UserGroupAdminBase(admin.ModelAdmin):
@@ -1,4 +0,0 @@
1
- include LICENSE
2
- include README.rst
3
- include python_utils/django/keycloak/user_groups_changelist.html
4
- recursive-exclude tests *