77
88from ansible_base .authentication .models import Authenticator , AuthenticatorUser
99from ansible_base .oauth2_provider .models import OAuth2Application
10+ from ansible_base .rbac import permission_registry
1011from ansible_base .rbac .models import DABContentType , RoleDefinition
1112from test_app .models import EncryptionModel , InstanceGroup , Inventory , Organization , Team , User
1213
@@ -41,6 +42,7 @@ def handle(self, *args, **kwargs):
4142 (galaxy , _ ) = Organization .objects .get_or_create (name = 'Galaxy_community' )
4243
4344 (spud , _ ) = User .objects .get_or_create (username = 'angry_spud' )
45+ (team_member , _ ) = User .objects .get_or_create (username = 'team_member' )
4446 (bull_bot , _ ) = User .objects .get_or_create (username = 'ansibullbot' )
4547 (admin , _ ) = User .objects .get_or_create (username = 'admin' )
4648 spud .set_password ('password' )
@@ -72,8 +74,8 @@ def handle(self, *args, **kwargs):
7274
7375 # Inventory objects exist inside of an organization
7476 Inventory .objects .create (name = 'K8S clusters' , organization = operator_stuff )
75- Inventory .objects .create (name = 'Galaxy Host' , organization = galaxy )
76- Inventory .objects .create (name = 'AWX deployment' , organization = awx )
77+ galaxy_inv = Inventory .objects .create (name = 'Galaxy Host' , organization = galaxy )
78+ awx_inv = Inventory .objects .create (name = 'AWX deployment' , organization = awx )
7779 # Objects that have no associated organization
7880 InstanceGroup .objects .create (name = 'Default' )
7981 isolated_group = InstanceGroup .objects .create (name = 'Isolated Network' )
@@ -95,7 +97,18 @@ def handle(self, *args, **kwargs):
9597 user .set_password ('password' )
9698 user .save ()
9799
98- RoleDefinition .objects .managed .team_member .give_permission (spud , awx_devs )
100+ # Give some users team member and give that team some inventory object permissions
101+ for user in (spud , team_member ):
102+ RoleDefinition .objects .managed .team_member .give_permission (spud , awx_devs )
103+
104+ with impersonate (bull_bot ):
105+ inv_admin = RoleDefinition .objects .create_from_permissions (
106+ permissions = ['change_inventory' , 'view_inventory' ],
107+ name = 'Inventory Admin' ,
108+ content_type = permission_registry .content_type_model .objects .get_for_model (Inventory ),
109+ )
110+ for inv in (awx_inv , galaxy_inv ):
111+ inv_admin .give_permission (awx_devs , inv )
99112
100113 OAuth2Application .objects .get_or_create (
101114 name = "Demo OAuth2 Application" ,
0 commit comments