Просмотр исходного кода

Miscellaneous cleanup for tags

Jeremy Stretch 7 лет назад
Родитель
Сommit
f7f7764a6e

+ 9 - 0
netbox/dcim/filters.py

@@ -558,6 +558,9 @@ class DeviceComponentFilterSet(django_filters.FilterSet):
         to_field_name='name',
         label='Device (name)',
     )
+    tag = django_filters.CharFilter(
+        name='tags__slug',
+    )
 
 
 class ConsolePortFilter(DeviceComponentFilterSet):
@@ -616,6 +619,9 @@ class InterfaceFilter(django_filters.FilterSet):
         method='_mac_address',
         label='MAC address',
     )
+    tag = django_filters.CharFilter(
+        name='tags__slug',
+    )
 
     class Meta:
         model = Interface
@@ -722,6 +728,9 @@ class VirtualChassisFilter(django_filters.FilterSet):
         to_field_name='slug',
         label='Tenant (slug)',
     )
+    tag = django_filters.CharFilter(
+        name='tags__slug',
+    )
 
     class Meta:
         model = VirtualChassis

+ 3 - 0
netbox/ipam/filters.py

@@ -466,6 +466,9 @@ class ServiceFilter(django_filters.FilterSet):
         to_field_name='name',
         label='Virtual machine (name)',
     )
+    tag = django_filters.CharFilter(
+        name='tags__slug',
+    )
 
     class Meta:
         model = Service

+ 2 - 1
netbox/ipam/forms.py

@@ -918,10 +918,11 @@ class VLANFilterForm(BootstrapMixin, CustomFieldFilterForm):
 #
 
 class ServiceForm(BootstrapMixin, CustomFieldForm):
+    tags = TagField(required=False)
 
     class Meta:
         model = Service
-        fields = ['name', 'protocol', 'port', 'ipaddresses', 'description']
+        fields = ['name', 'protocol', 'port', 'ipaddresses', 'description', 'tags']
         help_texts = {
             'ipaddresses': "IP address assignment is optional. If no IPs are selected, the service is assumed to be "
                            "reachable via all IPs assigned to the device.",

+ 2 - 0
netbox/ipam/models.py

@@ -877,6 +877,8 @@ class Service(ChangeLoggedModel, CustomFieldModel):
         object_id_field='obj_id'
     )
 
+    tags = TaggableManager()
+
     serializer = 'ipam.api.serializers.ServiceSerializer'
 
     class Meta:

+ 6 - 0
netbox/templates/dcim/interface_edit.html

@@ -16,6 +16,12 @@
             {% render_field form.mode %}
         </div>
     </div>
+    <div class="panel panel-default">
+        <div class="panel-heading"><strong>Tags</strong></div>
+        <div class="panel-body">
+            {% render_field form.tags %}
+        </div>
+    </div>
     {% if obj.mode %}
         <div class="panel panel-default" id="vlans_panel">
             <div class="panel-heading"><strong>802.1Q VLANs</strong></div>

+ 1 - 0
netbox/templates/dcim/virtualchassis_list.html

@@ -9,6 +9,7 @@
     </div>
     <div class="col-md-3">
 		{% include 'inc/search_panel.html' %}
+		{% include 'inc/tags_panel.html' %}
     </div>
 </div>
 {% endblock %}

+ 6 - 0
netbox/templates/ipam/service_edit.html

@@ -40,4 +40,10 @@
             </div>
         </div>
     {% endif %}
+    <div class="panel panel-default">
+        <div class="panel-heading"><strong>Tags</strong></div>
+        <div class="panel-body">
+            {% render_field form.tags %}
+        </div>
+    </div>
 {% endblock %}

+ 1 - 0
netbox/templates/ipam/service_list.html

@@ -8,6 +8,7 @@
 	</div>
 	<div class="col-md-3">
 		{% include 'inc/search_panel.html' %}
+		{% include 'inc/tags_panel.html' %}
 	</div>
 </div>
 {% endblock %}