diff --git a/apps/assets/forms.py b/apps/assets/forms.py index 8b526271421e7f2d9f2142506f34dfb7ffb22a0c..1d62eadcbd6129d6b04fe06bf530d532dc994063 100644 --- a/apps/assets/forms.py +++ b/apps/assets/forms.py @@ -21,6 +21,7 @@ class AssetForm(forms.ModelForm): class AssetGroupForm(forms.ModelForm): + # See AdminUserForm comment same it assets = forms.ModelMultipleChoiceField(queryset=Asset.objects.all(), label=_('Asset'), required=False, @@ -51,6 +52,7 @@ class AssetGroupForm(forms.ModelForm): class IDCForm(forms.ModelForm): + # See AdminUserForm comment same it assets = forms.ModelMultipleChoiceField(queryset=Asset.objects.all(), label=_('Asset'), required=False, @@ -81,29 +83,35 @@ class IDCForm(forms.ModelForm): class AdminUserForm(forms.ModelForm): + # Admin user assets define, let user select, save it in form not in view assets = forms.ModelMultipleChoiceField(queryset=Asset.objects.all(), label=_('Asset'), required=False, widget=forms.SelectMultiple( attrs={'class': 'select2', 'data-placeholder': _('Select assets')}) ) + # Form field name can not start with `_`, so redefine it, password = forms.CharField(widget=forms.PasswordInput, max_length=100, min_length=8, strip=True, help_text=_('If also set private key, use that first'), required=False) + # Need use upload private key file except paste private key content private_key_file = forms.FileField(required=False) def __init__(self, *args, **kwargs): + # When update a admin user instance, initial it if kwargs.get('instance'): initial = kwargs.get('initial', {}) initial['assets'] = kwargs['instance'].assets.all() super(AdminUserForm, self).__init__(*args, **kwargs) def _save_m2m(self): + # Save assets relation with admin user super(AdminUserForm, self)._save_m2m() assets = self.cleaned_data['assets'] self.instance.assets.clear() self.instance.assets.add(*tuple(assets)) def save(self, commit=True): + # Because we define custom field, so we need rewrite :method: `save` admin_user = super(AdminUserForm, self).save(commit=commit) password = self.cleaned_data['password'] private_key_file = self.cleaned_data['private_key_file'] @@ -111,6 +119,7 @@ class AdminUserForm(forms.ModelForm): if password: admin_user.password = password print(password) + # Todo: Validate private key file, and generate public key if private_key_file: print(private_key_file) admin_user.private_key = private_key_file.read() diff --git a/apps/assets/views.py b/apps/assets/views.py index 06cec83d283aa62bc52e655dec1d8ff387ee22b8..7ff0292a508ffcef2ddbdc4e3544f54554554909 100644 --- a/apps/assets/views.py +++ b/apps/assets/views.py @@ -277,6 +277,7 @@ class AdminUserDetailView(AdminUserRequiredMixin, SingleObjectMixin, ListView): self.object = self.get_object(queryset=AdminUser.objects.all()) return super(AdminUserDetailView, self).get(request, *args, **kwargs) + # Todo: queryset default order by connectivity, need ops support def get_queryset(self): return self.object.assets.all()