From 126d7fd62c18e24bd5dd7fc30f79f47ee30a6057 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 6 Sep 2016 00:49:42 +0800 Subject: [PATCH] Add asset group add Form m2m --- apps/assets/forms.py | 15 ++++++++++++++- apps/assets/models.py | 2 +- apps/assets/templates/assets/asset_add.html | 10 ---------- .../templates/assets/assetgroup_add.html | 1 + .../templates/assets/assetgroup_list.html | 2 +- apps/assets/views.py | 18 +++++++++++++++--- 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/apps/assets/forms.py b/apps/assets/forms.py index 90283c37a..24d68e02c 100644 --- a/apps/assets/forms.py +++ b/apps/assets/forms.py @@ -6,7 +6,6 @@ from django.utils.translation import gettext_lazy as _ class AssetForm(forms.ModelForm): - class Meta: model = Asset @@ -22,6 +21,20 @@ class AssetForm(forms.ModelForm): class AssetGroupForm(forms.ModelForm): + assets = forms.ModelMultipleChoiceField(queryset=Asset.objects.all()) + + def __init__(self, *args, **kwargs): + if kwargs.get('instance'): + initial = kwargs.get('initial', {}) + initial['assets'] = kwargs['instance'].assets.all() + super(AssetGroupForm, self).__init__(*args, **kwargs) + + def _save_m2m(self): + super(AssetGroupForm, self)._save_m2m() + assets = self.cleaned_data['assets'] + self.instance.assets.clear() + self.instance.assets.add(*tuple(assets)) + class Meta: model = AssetGroup fields = [ diff --git a/apps/assets/models.py b/apps/assets/models.py index c9720601f..f29c2a5f2 100644 --- a/apps/assets/models.py +++ b/apps/assets/models.py @@ -103,7 +103,7 @@ class Asset(models.Model): remote_card_ip = models.CharField(max_length=16, null=True, blank=True, verbose_name=_('Remote card IP')) hostname = models.CharField(max_length=128, unique=True, null=True, blank=True, verbose_name=_('Hostname')) port = models.IntegerField(null=True, blank=True, verbose_name=_('Port')) - groups = models.ManyToManyField(AssetGroup, null=True, blank=True, verbose_name=_('Asset groups')) + groups = models.ManyToManyField(AssetGroup, related_name='assets', verbose_name=_('Asset groups')) username = models.CharField(max_length=16, null=True, blank=True, verbose_name=_('Admin user')) password = models.CharField(max_length=256, null=True, blank=True, verbose_name=_("Admin password")) admin_user = models.ForeignKey(AdminUser, null=True, blank=True, on_delete=models.SET_NULL, verbose_name=_("Admin user")) diff --git a/apps/assets/templates/assets/asset_add.html b/apps/assets/templates/assets/asset_add.html index 5a265253d..fd684a31e 100644 --- a/apps/assets/templates/assets/asset_add.html +++ b/apps/assets/templates/assets/asset_add.html @@ -44,18 +44,8 @@ - -{#
#} -{# #} -{#
#} -{# #} -{#
#} -{#
#} - {{ form.type|bootstrap_horizontal }} - {{ form.comment|bootstrap_horizontal }} -

关联资产用户

diff --git a/apps/assets/templates/assets/assetgroup_add.html b/apps/assets/templates/assets/assetgroup_add.html index 4c032c0a8..0812d8e80 100644 --- a/apps/assets/templates/assets/assetgroup_add.html +++ b/apps/assets/templates/assets/assetgroup_add.html @@ -30,6 +30,7 @@
{% csrf_token %} {{ form.name|bootstrap_horizontal }} +{# {{ form.assets|bootstrap_horizontal }}#}
diff --git a/apps/assets/templates/assets/assetgroup_list.html b/apps/assets/templates/assets/assetgroup_list.html index 8fb196681..bc21bc8d5 100644 --- a/apps/assets/templates/assets/assetgroup_list.html +++ b/apps/assets/templates/assets/assetgroup_list.html @@ -26,7 +26,7 @@ {{ assetgroup.name }} - {{ assetgroup.asset_set.count }} + {{ assetgroup.assets.count }} {{ assetgroup.comment }} {% trans 'Edit' %} diff --git a/apps/assets/views.py b/apps/assets/views.py index 7eb868a72..9f2150956 100644 --- a/apps/assets/views.py +++ b/apps/assets/views.py @@ -2,17 +2,17 @@ from __future__ import absolute_import, unicode_literals from django.utils.translation import ugettext as _ +from django.shortcuts import get_object_or_404 from django.views.generic import TemplateView, ListView from django.urls import reverse_lazy from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView - from django.views.generic import TemplateView, ListView from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView from django.urls import reverse_lazy from django.views.generic.detail import DetailView + from .models import Asset, AssetGroup, IDC, AssetExtend from .forms import AssetForm, AssetGroupForm - from .utils import AdminUserRequiredMixin @@ -83,7 +83,19 @@ class AssetGroupDetailView(DetailView): class AssetGroupEditView(UpdateView): - pass + model = AssetGroup + form_class = AssetGroupForm + template_name = 'assets/assetgroup_add.html' + success_url = reverse_lazy('assets:assetgroup-list') + + def get_context_data(self, **kwargs): + context = { + 'app': _('Assets'), + 'action': _('Create asset group'), + 'assets': Asset.objects.all(), + } + kwargs.update(context) + return super(AssetGroupEditView, self).get_context_data(**kwargs) class AssetGroupDeleteView(DeleteView):