2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 20:45:44 +00:00

Merge branch 'master' into categories_parameters

This commit is contained in:
Francois
2020-11-03 07:01:56 -05:00
committed by GitHub
84 changed files with 7218 additions and 3669 deletions

View File

@ -3,12 +3,13 @@ from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
from django.contrib import admin
from django.contrib import admin, messages
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
from django.contrib.auth.admin import UserAdmin
from django.utils.safestring import mark_safe
from users.models import RuleSet
@ -94,15 +95,37 @@ class RoleGroupAdmin(admin.ModelAdmin):
filter_horizontal = ['permissions']
# Save inlines before model
# https://stackoverflow.com/a/14860703/12794913
def save_model(self, request, obj, form, change):
pass # don't actually save the parent instance
"""
This method serves two purposes:
- show warning message whenever the group users belong to multiple groups
- skip saving of the group instance model as inlines needs to be saved before.
"""
# Get form cleaned data
users = form.cleaned_data['users']
# Check for users who are members of multiple groups
warning_message = ''
for user in users:
if user.groups.all().count() > 1:
warning_message += f'<br>- <b>{user.username}</b> is member of: '
for idx, group in enumerate(user.groups.all()):
warning_message += f'<b>{group.name}</b>'
if idx < len(user.groups.all()) - 1:
warning_message += ', '
# If any, display warning message when group is saved
if warning_message:
warning_message = mark_safe(_(f'The following users are members of multiple groups:'
f'{warning_message}'))
messages.add_message(request, messages.WARNING, warning_message)
def save_formset(self, request, form, formset, change):
formset.save() # this will save the children
# update_fields is required to trigger permissions update
form.instance.save(update_fields=['name']) # form.instance is the parent
# Save inline Rulesets
formset.save()
# Save Group instance and update permissions
form.instance.save(update_fields=['name'])
class InvenTreeUserAdmin(UserAdmin):

View File

@ -57,6 +57,7 @@ class RuleSet(models.Model):
'part_parttesttemplate',
'part_partparametertemplate',
'part_partparameter',
'part_partrelated',
'part_partcategoryparametertemplate',
],
'stock': [
@ -72,6 +73,7 @@ class RuleSet(models.Model):
'part_bomitem',
'build_build',
'build_builditem',
'build_buildorderattachment',
'stock_stockitem',
'stock_stocklocation',
],