@@ -16,13 +16,13 @@ jobs:
|
|||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: "3.9"
|
python-version: "3.11"
|
||||||
|
|
||||||
- name: Install tools
|
- name: Install tools
|
||||||
run: pip install .[tools]
|
run: pip install .[tools]
|
||||||
|
|
||||||
- name: Run ruff
|
- name: Run ruff lint
|
||||||
run: ruff netbox_slm
|
run: ruff check netbox_slm
|
||||||
|
|
||||||
- name: Run black
|
- name: Run ruff format
|
||||||
run: black netbox_slm
|
run: ruff format netbox_slm
|
||||||
|
|||||||
+3
-3
@@ -1,4 +1,4 @@
|
|||||||
ARG PYTHON_VERSION=3.10
|
ARG PYTHON_VERSION=3.11
|
||||||
FROM python:${PYTHON_VERSION}-alpine AS compile-image
|
FROM python:${PYTHON_VERSION}-alpine AS compile-image
|
||||||
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
@@ -11,7 +11,7 @@ RUN pip install -U .[build]
|
|||||||
RUN python -m build
|
RUN python -m build
|
||||||
RUN pip install --no-index /build
|
RUN pip install --no-index /build
|
||||||
|
|
||||||
FROM netboxcommunity/netbox:v3.7.2
|
FROM netboxcommunity/netbox:v4.0.6
|
||||||
|
|
||||||
ARG PYTHON_VERSION=3.10
|
ARG PYTHON_VERSION=3.11
|
||||||
COPY --from=compile-image /opt/netbox/venv/lib/python${PYTHON_VERSION}/site-packages/netbox_slm /opt/netbox/venv/lib/python${PYTHON_VERSION}/site-packages/netbox_slm
|
COPY --from=compile-image /opt/netbox/venv/lib/python${PYTHON_VERSION}/site-packages/netbox_slm /opt/netbox/venv/lib/python${PYTHON_VERSION}/site-packages/netbox_slm
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
FROM netboxcommunity/netbox:v3.7.2
|
FROM netboxcommunity/netbox:v4.0.6
|
||||||
|
|
||||||
RUN mkdir /ci && chmod go+w /ci
|
RUN mkdir /ci && chmod go+w /ci
|
||||||
COPY ../ci/requirements_ci.txt /ci/
|
COPY ../ci/requirements_ci.txt /ci/
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
version: '3.7'
|
---
|
||||||
services:
|
services:
|
||||||
netbox:
|
netbox:
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
version: '3.7'
|
---
|
||||||
services:
|
services:
|
||||||
netbox: &netbox
|
netbox: &netbox
|
||||||
image: netboxcommunity/netbox:${VERSION-v3.7.2}
|
image: netboxcommunity/netbox:${VERSION-v4.0.6}
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
- redis
|
- redis
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
coverage==7.2.2
|
coverage==7.5.4
|
||||||
unittest-xml-reporting==3.2.0
|
unittest-xml-reporting==3.2.0
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from extras.plugins import PluginConfig
|
from netbox.plugins import PluginConfig
|
||||||
|
|
||||||
__version__ = "1.6.0"
|
__version__ = "1.6.0"
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class SoftwareLicenseSerializer(NetBoxModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SoftwareLicense
|
model = SoftwareLicense
|
||||||
fields = [
|
fields = (
|
||||||
"id",
|
"id",
|
||||||
"display",
|
"display",
|
||||||
"url",
|
"url",
|
||||||
@@ -31,7 +31,8 @@ class SoftwareLicenseSerializer(NetBoxModelSerializer):
|
|||||||
"custom_field_data",
|
"custom_field_data",
|
||||||
"created",
|
"created",
|
||||||
"last_updated",
|
"last_updated",
|
||||||
]
|
)
|
||||||
|
brief_fields = ("id", "display", "url", "name", "description")
|
||||||
|
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
return f"{obj}"
|
return f"{obj}"
|
||||||
@@ -43,7 +44,7 @@ class SoftwareProductSerializer(NetBoxModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SoftwareProduct
|
model = SoftwareProduct
|
||||||
fields = [
|
fields = (
|
||||||
"id",
|
"id",
|
||||||
"display",
|
"display",
|
||||||
"url",
|
"url",
|
||||||
@@ -55,7 +56,8 @@ class SoftwareProductSerializer(NetBoxModelSerializer):
|
|||||||
"custom_field_data",
|
"custom_field_data",
|
||||||
"created",
|
"created",
|
||||||
"last_updated",
|
"last_updated",
|
||||||
]
|
)
|
||||||
|
brief_fields = ("id", "display", "url", "name", "description")
|
||||||
|
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
return f"{obj.manufacturer} - {obj}"
|
return f"{obj.manufacturer} - {obj}"
|
||||||
@@ -69,7 +71,7 @@ class SoftwareProductInstallationSerializer(NetBoxModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SoftwareProductInstallation
|
model = SoftwareProductInstallation
|
||||||
fields = [
|
fields = (
|
||||||
"id",
|
"id",
|
||||||
"display",
|
"display",
|
||||||
"url",
|
"url",
|
||||||
@@ -83,7 +85,8 @@ class SoftwareProductInstallationSerializer(NetBoxModelSerializer):
|
|||||||
"custom_field_data",
|
"custom_field_data",
|
||||||
"created",
|
"created",
|
||||||
"last_updated",
|
"last_updated",
|
||||||
]
|
)
|
||||||
|
brief_fields = ("id", "display", "url", "name")
|
||||||
|
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
return f"{obj}"
|
return f"{obj}"
|
||||||
@@ -95,7 +98,7 @@ class SoftwareProductVersionSerializer(NetBoxModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SoftwareProductVersion
|
model = SoftwareProductVersion
|
||||||
fields = [
|
fields = (
|
||||||
"id",
|
"id",
|
||||||
"display",
|
"display",
|
||||||
"url",
|
"url",
|
||||||
@@ -113,7 +116,8 @@ class SoftwareProductVersionSerializer(NetBoxModelSerializer):
|
|||||||
"custom_field_data",
|
"custom_field_data",
|
||||||
"created",
|
"created",
|
||||||
"last_updated",
|
"last_updated",
|
||||||
]
|
)
|
||||||
|
brief_fields = ("id", "display", "url", "name")
|
||||||
|
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
return f"{obj}"
|
return f"{obj}"
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from django.urls import reverse_lazy
|
|||||||
from netbox.forms import NetBoxModelForm, NetBoxModelImportForm, NetBoxModelBulkEditForm, NetBoxModelFilterSetForm
|
from netbox.forms import NetBoxModelForm, NetBoxModelImportForm, NetBoxModelBulkEditForm, NetBoxModelFilterSetForm
|
||||||
from netbox_slm.models import SoftwareProduct, SoftwareProductVersion, SoftwareProductInstallation, SoftwareLicense
|
from netbox_slm.models import SoftwareProduct, SoftwareProductVersion, SoftwareProductInstallation, SoftwareLicense
|
||||||
from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField, LaxURLField
|
from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField, LaxURLField
|
||||||
|
from utilities.forms.rendering import FieldSet
|
||||||
from utilities.forms.widgets import APISelect, DatePicker
|
from utilities.forms.widgets import APISelect, DatePicker
|
||||||
|
|
||||||
|
|
||||||
@@ -62,7 +63,7 @@ class SoftwareLicenseForm(NetBoxModelForm):
|
|||||||
|
|
||||||
class SoftwareLicenseFilterForm(NetBoxModelFilterSetForm):
|
class SoftwareLicenseFilterForm(NetBoxModelFilterSetForm):
|
||||||
model = SoftwareLicense
|
model = SoftwareLicense
|
||||||
fieldsets = ((None, ("q", "tag")),)
|
fieldsets = (FieldSet(None, ("q", "tag")),)
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
@@ -85,13 +86,4 @@ class SoftwareLicenseBulkEditForm(NetBoxModelBulkEditForm):
|
|||||||
version = DynamicModelChoiceField(queryset=SoftwareProductVersion.objects.all(), required=False)
|
version = DynamicModelChoiceField(queryset=SoftwareProductVersion.objects.all(), required=False)
|
||||||
installation = DynamicModelChoiceField(queryset=SoftwareProductInstallation.objects.all(), required=False)
|
installation = DynamicModelChoiceField(queryset=SoftwareProductInstallation.objects.all(), required=False)
|
||||||
model = SoftwareLicense
|
model = SoftwareLicense
|
||||||
fieldsets = (
|
fieldsets = (FieldSet(None, ("software_product", "version", "installation")),)
|
||||||
(
|
|
||||||
None,
|
|
||||||
(
|
|
||||||
"software_product",
|
|
||||||
"version",
|
|
||||||
"installation",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from dcim.models import Manufacturer
|
|||||||
from netbox.forms import NetBoxModelForm, NetBoxModelImportForm, NetBoxModelBulkEditForm, NetBoxModelFilterSetForm
|
from netbox.forms import NetBoxModelForm, NetBoxModelImportForm, NetBoxModelBulkEditForm, NetBoxModelFilterSetForm
|
||||||
from netbox_slm.models import SoftwareProduct
|
from netbox_slm.models import SoftwareProduct
|
||||||
from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField
|
from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField
|
||||||
|
from utilities.forms.rendering import FieldSet
|
||||||
|
|
||||||
|
|
||||||
class SoftwareProductForm(NetBoxModelForm):
|
class SoftwareProductForm(NetBoxModelForm):
|
||||||
@@ -29,7 +30,7 @@ class SoftwareProductForm(NetBoxModelForm):
|
|||||||
|
|
||||||
class SoftwareProductFilterForm(NetBoxModelFilterSetForm):
|
class SoftwareProductFilterForm(NetBoxModelFilterSetForm):
|
||||||
model = SoftwareProduct
|
model = SoftwareProduct
|
||||||
fieldsets = ((None, ("q", "tag")),)
|
fieldsets = (FieldSet(None, ("q", "tag")),)
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from dcim.models import Device
|
|||||||
from netbox.forms import NetBoxModelForm, NetBoxModelImportForm, NetBoxModelBulkEditForm, NetBoxModelFilterSetForm
|
from netbox.forms import NetBoxModelForm, NetBoxModelImportForm, NetBoxModelBulkEditForm, NetBoxModelFilterSetForm
|
||||||
from netbox_slm.models import SoftwareProductInstallation, SoftwareProduct, SoftwareProductVersion
|
from netbox_slm.models import SoftwareProductInstallation, SoftwareProduct, SoftwareProductVersion
|
||||||
from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField
|
from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField
|
||||||
|
from utilities.forms.rendering import FieldSet
|
||||||
from utilities.forms.widgets import APISelect
|
from utilities.forms.widgets import APISelect
|
||||||
from virtualization.models import VirtualMachine, Cluster
|
from virtualization.models import VirtualMachine, Cluster
|
||||||
|
|
||||||
@@ -56,7 +57,7 @@ class SoftwareProductInstallationForm(NetBoxModelForm):
|
|||||||
|
|
||||||
class SoftwareProductInstallationFilterForm(NetBoxModelFilterSetForm):
|
class SoftwareProductInstallationFilterForm(NetBoxModelFilterSetForm):
|
||||||
model = SoftwareProductInstallation
|
model = SoftwareProductInstallation
|
||||||
fieldsets = ((None, ("q", "tag")),)
|
fieldsets = (FieldSet(None, ("q", "tag")),)
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
@@ -70,12 +71,4 @@ class SoftwareProductInstallationBulkEditForm(NetBoxModelBulkEditForm):
|
|||||||
software_product = DynamicModelChoiceField(queryset=SoftwareProduct.objects.all(), required=False)
|
software_product = DynamicModelChoiceField(queryset=SoftwareProduct.objects.all(), required=False)
|
||||||
version = DynamicModelChoiceField(queryset=SoftwareProductVersion.objects.all(), required=False)
|
version = DynamicModelChoiceField(queryset=SoftwareProductVersion.objects.all(), required=False)
|
||||||
model = SoftwareProductInstallation
|
model = SoftwareProductInstallation
|
||||||
fieldsets = (
|
fieldsets = (FieldSet(None, ("software_product", "version")),)
|
||||||
(
|
|
||||||
None,
|
|
||||||
(
|
|
||||||
"software_product",
|
|
||||||
"version",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from django.urls import reverse_lazy
|
|||||||
from netbox.forms import NetBoxModelForm, NetBoxModelImportForm, NetBoxModelBulkEditForm, NetBoxModelFilterSetForm
|
from netbox.forms import NetBoxModelForm, NetBoxModelImportForm, NetBoxModelBulkEditForm, NetBoxModelFilterSetForm
|
||||||
from netbox_slm.models import SoftwareProduct, SoftwareProductVersion
|
from netbox_slm.models import SoftwareProduct, SoftwareProductVersion
|
||||||
from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField
|
from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField
|
||||||
|
from utilities.forms.rendering import FieldSet
|
||||||
from utilities.forms.widgets import APISelect, DatePicker
|
from utilities.forms.widgets import APISelect, DatePicker
|
||||||
|
|
||||||
|
|
||||||
@@ -39,7 +40,7 @@ class SoftwareProductVersionForm(NetBoxModelForm):
|
|||||||
|
|
||||||
class SoftwareProductVersionFilterForm(NetBoxModelFilterSetForm):
|
class SoftwareProductVersionFilterForm(NetBoxModelFilterSetForm):
|
||||||
model = SoftwareProductVersion
|
model = SoftwareProductVersion
|
||||||
fieldsets = ((None, ("q", "tag")),)
|
fieldsets = (FieldSet(None, ("q", "tag")),)
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from extras.plugins import PluginMenuButton, PluginMenuItem
|
from netbox.plugins import PluginMenuButton, PluginMenuItem
|
||||||
from utilities.choices import ButtonColorChoices
|
|
||||||
|
|
||||||
menu_items = (
|
menu_items = (
|
||||||
PluginMenuItem(
|
PluginMenuItem(
|
||||||
@@ -10,14 +9,12 @@ menu_items = (
|
|||||||
"plugins:netbox_slm:softwareproduct_add",
|
"plugins:netbox_slm:softwareproduct_add",
|
||||||
"Add",
|
"Add",
|
||||||
"mdi mdi-plus-thick",
|
"mdi mdi-plus-thick",
|
||||||
ButtonColorChoices.GREEN,
|
|
||||||
permissions=["netbox_slm.add_softwareproduct"],
|
permissions=["netbox_slm.add_softwareproduct"],
|
||||||
),
|
),
|
||||||
PluginMenuButton(
|
PluginMenuButton(
|
||||||
"plugins:netbox_slm:softwareproduct_import",
|
"plugins:netbox_slm:softwareproduct_import",
|
||||||
"Import",
|
"Import",
|
||||||
"mdi mdi-upload",
|
"mdi mdi-upload",
|
||||||
ButtonColorChoices.CYAN,
|
|
||||||
permissions=["netbox_slm.add_softwareproduct"],
|
permissions=["netbox_slm.add_softwareproduct"],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -30,14 +27,12 @@ menu_items = (
|
|||||||
"plugins:netbox_slm:softwareproductversion_add",
|
"plugins:netbox_slm:softwareproductversion_add",
|
||||||
"Add",
|
"Add",
|
||||||
"mdi mdi-plus-thick",
|
"mdi mdi-plus-thick",
|
||||||
ButtonColorChoices.GREEN,
|
|
||||||
permissions=["netbox_slm.add_softwareproductversion"],
|
permissions=["netbox_slm.add_softwareproductversion"],
|
||||||
),
|
),
|
||||||
PluginMenuButton(
|
PluginMenuButton(
|
||||||
"plugins:netbox_slm:softwareproductversion_import",
|
"plugins:netbox_slm:softwareproductversion_import",
|
||||||
"Import",
|
"Import",
|
||||||
"mdi mdi-upload",
|
"mdi mdi-upload",
|
||||||
ButtonColorChoices.CYAN,
|
|
||||||
permissions=["netbox_slm.add_softwareproductversion"],
|
permissions=["netbox_slm.add_softwareproductversion"],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -50,14 +45,12 @@ menu_items = (
|
|||||||
"plugins:netbox_slm:softwareproductinstallation_add",
|
"plugins:netbox_slm:softwareproductinstallation_add",
|
||||||
"Add",
|
"Add",
|
||||||
"mdi mdi-plus-thick",
|
"mdi mdi-plus-thick",
|
||||||
ButtonColorChoices.GREEN,
|
|
||||||
permissions=["netbox_slm.add_softwareproductinstallation"],
|
permissions=["netbox_slm.add_softwareproductinstallation"],
|
||||||
),
|
),
|
||||||
PluginMenuButton(
|
PluginMenuButton(
|
||||||
"plugins:netbox_slm:softwareproductinstallation_import",
|
"plugins:netbox_slm:softwareproductinstallation_import",
|
||||||
"Import",
|
"Import",
|
||||||
"mdi mdi-upload",
|
"mdi mdi-upload",
|
||||||
ButtonColorChoices.CYAN,
|
|
||||||
permissions=["netbox_slm.add_softwareproductinstallation"],
|
permissions=["netbox_slm.add_softwareproductinstallation"],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -70,14 +63,12 @@ menu_items = (
|
|||||||
"plugins:netbox_slm:softwarelicense_add",
|
"plugins:netbox_slm:softwarelicense_add",
|
||||||
"Add",
|
"Add",
|
||||||
"mdi mdi-plus-thick",
|
"mdi mdi-plus-thick",
|
||||||
ButtonColorChoices.GREEN,
|
|
||||||
permissions=["netbox_slm.add_softwarelicense"],
|
permissions=["netbox_slm.add_softwarelicense"],
|
||||||
),
|
),
|
||||||
PluginMenuButton(
|
PluginMenuButton(
|
||||||
"plugins:netbox_slm:softwarelicense_import",
|
"plugins:netbox_slm:softwarelicense_import",
|
||||||
"Import",
|
"Import",
|
||||||
"mdi mdi-upload",
|
"mdi mdi-upload",
|
||||||
ButtonColorChoices.CYAN,
|
|
||||||
permissions=["netbox_slm.add_softwarelicense"],
|
permissions=["netbox_slm.add_softwarelicense"],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
<h5 class="card-header">
|
<h5 class="card-header">
|
||||||
Software License
|
Software License
|
||||||
</h5>
|
</h5>
|
||||||
<div class="card-body">
|
|
||||||
<table class="table table-hover attr-table">
|
<table class="table table-hover attr-table">
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
@@ -63,7 +62,6 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% include 'inc/panels/custom_fields.html' %}
|
{% include 'inc/panels/custom_fields.html' %}
|
||||||
{% include 'inc/panels/tags.html' %}
|
{% include 'inc/panels/tags.html' %}
|
||||||
{% include 'inc/panels/comments.html' %}
|
{% include 'inc/panels/comments.html' %}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
<h5 class="card-header">
|
<h5 class="card-header">
|
||||||
Software Product
|
Software Product
|
||||||
</h5>
|
</h5>
|
||||||
<div class="card-body">
|
|
||||||
<table class="table table-hover attr-table">
|
<table class="table table-hover attr-table">
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
@@ -39,7 +38,6 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% include 'inc/panels/custom_fields.html' %}
|
{% include 'inc/panels/custom_fields.html' %}
|
||||||
{% include 'inc/panels/tags.html' %}
|
{% include 'inc/panels/tags.html' %}
|
||||||
{% include 'inc/panels/comments.html' %}
|
{% include 'inc/panels/comments.html' %}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
<h5 class="card-header">
|
<h5 class="card-header">
|
||||||
Software Product Installation
|
Software Product Installation
|
||||||
</h5>
|
</h5>
|
||||||
<div class="card-body">
|
|
||||||
<table class="table table-hover attr-table">
|
<table class="table table-hover attr-table">
|
||||||
{% if object.device %}
|
{% if object.device %}
|
||||||
<tr>
|
<tr>
|
||||||
@@ -39,7 +38,6 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% include 'inc/panels/custom_fields.html' %}
|
{% include 'inc/panels/custom_fields.html' %}
|
||||||
{% include 'inc/panels/tags.html' %}
|
{% include 'inc/panels/tags.html' %}
|
||||||
{% include 'inc/panels/comments.html' %}
|
{% include 'inc/panels/comments.html' %}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
<h5 class="card-header">
|
<h5 class="card-header">
|
||||||
Software Product Version
|
Software Product Version
|
||||||
</h5>
|
</h5>
|
||||||
<div class="card-body">
|
|
||||||
<table class="table table-hover attr-table">
|
<table class="table table-hover attr-table">
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
@@ -55,7 +54,6 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% include 'inc/panels/custom_fields.html' %}
|
{% include 'inc/panels/custom_fields.html' %}
|
||||||
{% include 'inc/panels/tags.html' %}
|
{% include 'inc/panels/tags.html' %}
|
||||||
{% include 'inc/panels/comments.html' %}
|
{% include 'inc/panels/comments.html' %}
|
||||||
|
|||||||
+11
-22
@@ -7,7 +7,7 @@ name = "netbox-slm"
|
|||||||
dynamic = ["version"]
|
dynamic = ["version"]
|
||||||
description = "Software Lifecycle Management Netbox Plugin"
|
description = "Software Lifecycle Management Netbox Plugin"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.9"
|
requires-python = ">=3.11"
|
||||||
license = { text = "Apache-2.0" }
|
license = { text = "Apache-2.0" }
|
||||||
authors = [
|
authors = [
|
||||||
{name = "ICTU", email = "open-source-projects@ictu.nl"},
|
{name = "ICTU", email = "open-source-projects@ictu.nl"},
|
||||||
@@ -21,9 +21,8 @@ classifiers = [
|
|||||||
"Programming Language :: Python",
|
"Programming Language :: Python",
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"Programming Language :: Python :: 3 :: Only",
|
"Programming Language :: Python :: 3 :: Only",
|
||||||
"Programming Language :: Python :: 3.9",
|
|
||||||
"Programming Language :: Python :: 3.10",
|
|
||||||
"Programming Language :: Python :: 3.11",
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Programming Language :: Python :: 3.12",
|
||||||
"Topic :: Internet :: WWW/HTTP",
|
"Topic :: Internet :: WWW/HTTP",
|
||||||
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
||||||
]
|
]
|
||||||
@@ -31,13 +30,12 @@ dependencies = []
|
|||||||
|
|
||||||
[project.optional-dependencies]
|
[project.optional-dependencies]
|
||||||
build = [
|
build = [
|
||||||
"build == 1.0.3",
|
"build == 1.2.1",
|
||||||
"setuptools == 68.2.0",
|
"setuptools == 70.3.0",
|
||||||
"twine == 3.7.1",
|
"twine == 5.1.1",
|
||||||
]
|
]
|
||||||
tools = [
|
tools = [
|
||||||
"black == 23.3.0",
|
"ruff == 0.5.1",
|
||||||
"ruff == 0.0.275",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.setuptools.dynamic]
|
[tool.setuptools.dynamic]
|
||||||
@@ -46,24 +44,12 @@ version = {attr = "netbox_slm.__version__"}
|
|||||||
[tool.setuptools.packages.find]
|
[tool.setuptools.packages.find]
|
||||||
include = ["netbox_slm"]
|
include = ["netbox_slm"]
|
||||||
|
|
||||||
[tool.black]
|
|
||||||
line-length = 120
|
|
||||||
target-version = ["py39"]
|
|
||||||
color = true
|
|
||||||
check = true
|
|
||||||
diff = true
|
|
||||||
fast = true
|
|
||||||
extend-exclude = '''
|
|
||||||
netbox_slm/migrations/.*.py
|
|
||||||
'''
|
|
||||||
|
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
line-length = 120
|
line-length = 120
|
||||||
target-version = "py39"
|
target-version = "py311"
|
||||||
format = "github"
|
|
||||||
src = ["netbox_slm"]
|
src = ["netbox_slm"]
|
||||||
|
|
||||||
[tool.ruff.per-file-ignores]
|
[tool.ruff.lint.per-file-ignores]
|
||||||
"__init__.py" = [
|
"__init__.py" = [
|
||||||
"D104", # https://beta.ruff.rs/docs/rules/#pydocstyle-d - don't require doc strings in __init__.py files
|
"D104", # https://beta.ruff.rs/docs/rules/#pydocstyle-d - don't require doc strings in __init__.py files
|
||||||
"F401", # https://beta.ruff.rs/docs/rules/#pyflakes-f - don't complain about unused imports in __init__.py files
|
"F401", # https://beta.ruff.rs/docs/rules/#pyflakes-f - don't complain about unused imports in __init__.py files
|
||||||
@@ -71,3 +57,6 @@ src = ["netbox_slm"]
|
|||||||
"netbox_slm/migrations/*.py" = [
|
"netbox_slm/migrations/*.py" = [
|
||||||
"E501", # https://beta.ruff.rs/docs/rules/line-too-long/ - don't check on Django generated migration files
|
"E501", # https://beta.ruff.rs/docs/rules/line-too-long/ - don't check on Django generated migration files
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[tool.ruff.format]
|
||||||
|
exclude = ["netbox_slm/migrations/*.py"]
|
||||||
|
|||||||
Reference in New Issue
Block a user