mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Add custom admin view for the "Group" model
- Ref: https://github.com/Microdisseny/django-groupadmin-users - Adds ability to edit users within a particular group from the group admin page!
This commit is contained in:
parent
d81aa5c051
commit
bedda66949
@ -138,6 +138,7 @@ INSTALLED_APPS = [
|
|||||||
'part.apps.PartConfig',
|
'part.apps.PartConfig',
|
||||||
'report.apps.ReportConfig',
|
'report.apps.ReportConfig',
|
||||||
'stock.apps.StockConfig',
|
'stock.apps.StockConfig',
|
||||||
|
'users.apps.UsersConfig',
|
||||||
|
|
||||||
# Third part add-ons
|
# Third part add-ons
|
||||||
'django_filters', # Extended filter functionality
|
'django_filters', # Extended filter functionality
|
||||||
|
@ -1,3 +1,66 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
# from django.contrib import admin
|
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from django.contrib import admin
|
||||||
|
from django import forms
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.admin.widgets import FilteredSelectMultiple
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
|
|
||||||
|
User = get_user_model()
|
||||||
|
|
||||||
|
|
||||||
|
class InvenTreeGroupAdminForm(forms.ModelForm):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Group
|
||||||
|
exclude = []
|
||||||
|
fields = [
|
||||||
|
'users',
|
||||||
|
'permissions',
|
||||||
|
]
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
if self.instance.pk:
|
||||||
|
# Populate the users field with the current Group users.
|
||||||
|
self.fields['users'].initial = self.instance.user_set.all()
|
||||||
|
|
||||||
|
# Add the users field.
|
||||||
|
users = forms.ModelMultipleChoiceField(
|
||||||
|
queryset=User.objects.all(),
|
||||||
|
required=False,
|
||||||
|
widget=FilteredSelectMultiple('users', False),
|
||||||
|
label=_('Users'),
|
||||||
|
)
|
||||||
|
|
||||||
|
def save_m2m(self):
|
||||||
|
# Add the users to the Group.
|
||||||
|
# Deprecated in Django 1.10: Direct assignment to a reverse foreign key
|
||||||
|
# or many-to-many relation
|
||||||
|
|
||||||
|
self.instance.user_set.set(self.cleaned_data['users'])
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
# Default save
|
||||||
|
instance = super().save()
|
||||||
|
# Save many-to-many data
|
||||||
|
self.save_m2m()
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
||||||
|
class RoleGroupAdmin(admin.ModelAdmin):
|
||||||
|
"""
|
||||||
|
Custom admin interface for the Group model
|
||||||
|
"""
|
||||||
|
|
||||||
|
form = InvenTreeGroupAdminForm
|
||||||
|
|
||||||
|
filter_horizontal = ['permissions']
|
||||||
|
|
||||||
|
|
||||||
|
admin.site.unregister(Group)
|
||||||
|
admin.site.register(Group, RoleGroupAdmin)
|
||||||
|
Loading…
Reference in New Issue
Block a user