16138 fix user/group permissions (#16152)

* 16138 change view perms

* 16138 add migration of group perms

* 16138 update users and groups in perm selection
This commit is contained in:
Arthur Hanson 2024-05-17 12:07:19 -07:00 committed by GitHub
parent 58da5c1252
commit d060b380c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 60 additions and 8 deletions

View File

@ -372,19 +372,19 @@ ADMIN_MENU = Menu(
link=f'users:user_list',
link_text=_('Users'),
auth_required=True,
permissions=[f'auth.view_user'],
permissions=[f'users.view_user'],
buttons=(
MenuItemButton(
link=f'users:user_add',
title='Add',
icon_class='mdi mdi-plus-thick',
permissions=[f'auth.add_user']
permissions=[f'users.add_user']
),
MenuItemButton(
link=f'users:user_import',
title='Import',
icon_class='mdi mdi-upload',
permissions=[f'auth.add_user']
permissions=[f'users.add_user']
)
)
),
@ -392,19 +392,19 @@ ADMIN_MENU = Menu(
link=f'users:group_list',
link_text=_('Groups'),
auth_required=True,
permissions=[f'auth.view_group'],
permissions=[f'users.view_group'],
buttons=(
MenuItemButton(
link=f'users:group_add',
title='Add',
icon_class='mdi mdi-plus-thick',
permissions=[f'auth.add_group']
permissions=[f'users.add_group']
),
MenuItemButton(
link=f'users:group_import',
title='Import',
icon_class='mdi mdi-upload',
permissions=[f'auth.add_group']
permissions=[f'users.add_group']
)
)
),

View File

@ -3,8 +3,7 @@ from django.db.models import Q
OBJECTPERMISSION_OBJECT_TYPES = Q(
~Q(app_label__in=['account', 'admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users']) |
Q(app_label='auth', model__in=['group', 'user']) |
Q(app_label='users', model__in=['objectpermission', 'token'])
Q(app_label='users', model__in=['objectpermission', 'token', 'group', 'user'])
)
CONSTRAINT_TOKEN_USER = '$user'

View File

@ -0,0 +1,53 @@
# Generated by Django 5.0.5 on 2024-05-15 18:05
from django.db import migrations, models
def update_content_types(apps, schema_editor):
ObjectType = apps.get_model('core', 'ObjectType')
ObjectPermission = apps.get_model('users', 'ObjectPermission')
auth_group_ct = ObjectType.objects.filter(app_label='auth', model='group').first()
users_group_ct = ObjectType.objects.filter(app_label='users', model='group').first()
if auth_group_ct and users_group_ct:
perms = ObjectPermission.objects.filter(object_types__in=[auth_group_ct])
for perm in perms:
perm.object_types.remove(auth_group_ct)
perm.object_types.add(users_group_ct)
perm.save()
class Migration(migrations.Migration):
dependencies = [
('users', '0008_flip_objectpermission_assignments'),
]
operations = [
# Update ContentTypes
migrations.RunPython(
code=update_content_types,
reverse_code=migrations.RunPython.noop
),
migrations.AlterField(
model_name='objectpermission',
name='object_types',
field=models.ManyToManyField(
limit_choices_to=models.Q(
models.Q(
models.Q(
(
'app_label__in',
['account', 'admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users'],
),
_negated=True,
),
models.Q(('app_label', 'users'), ('model__in', ['objectpermission', 'token', 'group', 'user'])),
_connector='OR',
)
),
related_name='object_permissions',
to='core.objecttype',
),
),
]