From 72274e59b5bea4892902ceb233af2e6e661bfaed Mon Sep 17 00:00:00 2001 From: Hedde van der Heide Date: Fri, 11 Feb 2022 12:51:37 +0100 Subject: [PATCH] fixed bugs and updated to version 0.93: --- README.rst | 3 ++- src/netbox_slm/__init__.py | 2 +- src/netbox_slm/forms.py | 8 ++++---- ...0002_alter_softwareproduct_manufacturer.py | 20 +++++++++++++++++++ src/netbox_slm/models.py | 3 ++- 5 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 src/netbox_slm/migrations/0002_alter_softwareproduct_manufacturer.py diff --git a/README.rst b/README.rst index 557ceed..1b5dca3 100644 --- a/README.rst +++ b/README.rst @@ -20,7 +20,7 @@ to install the Netbox SLM plugin: 1. Add ``netbox_slm`` to the ``PLUGINS`` list in ``configuration/configuration.py``. -2. Create a ``plugin_requirements.txt`` with ``netbox-slm==0.9`` as +2. Create a ``plugin_requirements.txt`` with ``netbox-slm==0.93`` as contents. 3. Create a ``Dockerfile-SLM`` with contents: @@ -63,6 +63,7 @@ directory run :: + # make sure to update the version in netbox_slm/__init__.py $ python setup.py sdist $ twine upload dist/* diff --git a/src/netbox_slm/__init__.py b/src/netbox_slm/__init__.py index 11d1e52..c1ba6d3 100644 --- a/src/netbox_slm/__init__.py +++ b/src/netbox_slm/__init__.py @@ -5,7 +5,7 @@ class SLMConfig(PluginConfig): name = 'netbox_slm' verbose_name = 'Software Lifecycle Management' description = 'Software Lifecycle Management' - version = '0.1' + version = '0.93' author = 'Hedde van der Heide' author_email = 'hedde.vanderheide@ictu.nl' base_url = 'slm' diff --git a/src/netbox_slm/forms.py b/src/netbox_slm/forms.py index 388d553..2150253 100644 --- a/src/netbox_slm/forms.py +++ b/src/netbox_slm/forms.py @@ -74,7 +74,6 @@ class SoftwareProductVersionForm(BootstrapMixin, CustomFieldModelForm): software_product = DynamicModelChoiceField( queryset=SoftwareProduct.objects.all(), - required=False, widget=APISelect( attrs={"data-url": reverse_lazy("plugins-api:netbox_slm-api:softwareproduct-list")} ), @@ -171,9 +170,10 @@ class SoftwareProductInstallationForm(BootstrapMixin, CustomFieldModelForm): model = SoftwareProductInstallation fields = ("device", "virtualmachine", "software_product", "version",) # "tags") - # def clean(self): - # import pdb;pdb.set_trace() - # return super(SoftwareProductInstallationForm, self).clean() + def clean(self): + if not any([self.cleaned_data['device'], self.cleaned_data['virtualmachine']]): + raise forms.ValidationError(_("Installation requires atleast one virtualmachine or device destination.")) + return super(SoftwareProductInstallationForm, self).clean() class SoftwareProductInstallationFilterForm(BootstrapMixin, CustomFieldModelFilterForm): diff --git a/src/netbox_slm/migrations/0002_alter_softwareproduct_manufacturer.py b/src/netbox_slm/migrations/0002_alter_softwareproduct_manufacturer.py new file mode 100644 index 0000000..c579ffb --- /dev/null +++ b/src/netbox_slm/migrations/0002_alter_softwareproduct_manufacturer.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.9 on 2022-01-24 08:05 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0133_port_colors'), + ('netbox_slm', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='softwareproduct', + name='manufacturer', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='software_products', to='dcim.manufacturer'), + ), + ] diff --git a/src/netbox_slm/models.py b/src/netbox_slm/models.py index f2fb592..89449d7 100644 --- a/src/netbox_slm/models.py +++ b/src/netbox_slm/models.py @@ -17,7 +17,8 @@ class SoftwareProduct(PrimaryModel): manufacturer = models.ForeignKey( to='dcim.Manufacturer', on_delete=models.PROTECT, - related_name='software_products' + related_name='software_products', + null=True, blank=True ) objects = RestrictedQuerySet.as_manager()