mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
2.0 KiB
47 lines
2.0 KiB
# ~*~ coding: utf-8 ~*~
|
|
|
|
from __future__ import absolute_import, unicode_literals
|
|
from django import forms
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
# from .hands import User, UserGroup, Asset, AssetGroup, SystemUser
|
|
from .models import AssetPermission
|
|
from .hands import associate_system_users_with_assets
|
|
|
|
|
|
class AssetPermissionForm(forms.ModelForm):
|
|
def save(self, commit=True):
|
|
instance = super(AssetPermissionForm, self).save(commit=commit)
|
|
|
|
assets = instance.assets.all()
|
|
asset_groups = instance.asset_groups.all()
|
|
system_users = instance.system_users.all()
|
|
associate_system_users_with_assets(system_users, assets, asset_groups)
|
|
return instance
|
|
|
|
class Meta:
|
|
model = AssetPermission
|
|
fields = [
|
|
'name', 'users', 'user_groups', 'assets', 'asset_groups',
|
|
'system_users', 'is_active', 'date_expired', 'comment',
|
|
]
|
|
widgets = {
|
|
'users': forms.SelectMultiple(attrs={'class': 'select2',
|
|
'data-placeholder': _('Select users')}),
|
|
'user_groups': forms.SelectMultiple(attrs={'class': 'select2',
|
|
'data-placeholder': _('Select user groups')}),
|
|
'assets': forms.SelectMultiple(attrs={'class': 'select2',
|
|
'data-placeholder': _('Select assets')}),
|
|
'asset_groups': forms.SelectMultiple(attrs={'class': 'select2',
|
|
'data-placeholder': _('Select asset groups')}),
|
|
'system_users': forms.SelectMultiple(attrs={'class': 'select2',
|
|
'data-placeholder': _('Select system users')}),
|
|
}
|
|
help_texts = {
|
|
'name': '* required',
|
|
'user_groups': '* User or user group at least one required',
|
|
'asset_groups': '* Asset or Asset group at least one required',
|
|
'system_users': '* required',
|
|
}
|
|
|