Skip to content

Commit 794013d

Browse files
committed
Nest models into subfolder
1 parent ff418cf commit 794013d

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from django.db import connection
2+
3+
from .role import RoleDefinition, DABPermission, RoleUserAssignment, RoleTeamAssignment, ObjectRole, RoleEvaluation, RoleEvaluationUUID
4+
5+
__all__ = ['RoleDefinition', 'DABPermission', 'RoleUserAssignment', 'RoleTeamAssignment', 'ObjectRole', 'RoleEvaluation', 'RoleEvaluationUUID', 'get_evaluation_model']
6+
7+
8+
def get_evaluation_model(cls):
9+
pk_field = cls._meta.pk
10+
# For proxy models, including django-polymorphic, use the id field from parent table
11+
# we accomplish this by inspecting the raw database type of the field
12+
pk_db_type = pk_field.db_type(connection)
13+
for eval_cls in (RoleEvaluation, RoleEvaluationUUID):
14+
if pk_db_type == eval_cls._meta.get_field('object_id').db_type(connection):
15+
return eval_cls
16+
# HACK: integer pk caching is handled by same model for now, better to use default pk type later
17+
# the integer unsigned case happens in AWX in sqlite3 specifically
18+
if pk_db_type in ('bigint', 'integer', 'integer unsigned'):
19+
return RoleEvaluation
20+
21+
raise RuntimeError(f'Model {cls._meta.model_name} primary key type of {type(pk_field)} (db type {pk_db_type}) is not supported')

ansible_base/rbac/models.py renamed to ansible_base/rbac/models/role.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -749,19 +749,3 @@ class Meta(RoleEvaluationMeta):
749749
help_text=_("The object role that grants this form of permission."),
750750
)
751751
object_id = models.UUIDField(null=False, help_text=_("The object UUID this role evaluation will be applied to."))
752-
753-
754-
def get_evaluation_model(cls):
755-
pk_field = cls._meta.pk
756-
# For proxy models, including django-polymorphic, use the id field from parent table
757-
# we accomplish this by inspecting the raw database type of the field
758-
pk_db_type = pk_field.db_type(connection)
759-
for eval_cls in (RoleEvaluation, RoleEvaluationUUID):
760-
if pk_db_type == eval_cls._meta.get_field('object_id').db_type(connection):
761-
return eval_cls
762-
# HACK: integer pk caching is handled by same model for now, better to use default pk type later
763-
# the integer unsigned case happens in AWX in sqlite3 specifically
764-
if pk_db_type in ('bigint', 'integer', 'integer unsigned'):
765-
return RoleEvaluation
766-
767-
raise RuntimeError(f'Model {cls._meta.model_name} primary key type of {type(pk_field)} (db type {pk_db_type}) is not supported')

0 commit comments

Comments
 (0)