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

Adds WirelessLANGroup.comments to all the required places

- [x] 1. Add the field to the model class
- [x] 2. Generate and run database migrations
- [NA] 3. Add validation logic to clean()
- [NA] 4. Update relevant querysets
- [x] 5. Update API serializer
- [x] 6. Add fields to forms
    - [x] wireless.forms.model_forms, create/edit (e.g. model_forms.py)
    - [x] wireless.forms.bulk_edit, bulk edit
    - [x] wireless.forms.bulk_import, CSV import
    - [NA] filter (UI and API)
- [x] 7. Extend object filter set
- [NA] 8. Add column to object table (Note: was already present)
- [x] 9. Update the SearchIndex
- [x] 10. Update the UI templates
- [x] 11. Create/extend test cases
    - [NA] models
    - [x] views
    - [NA] forms
    - [x] filtersets
    - [x] api
- [NA] 12. Update the model's documentation
Jason Novinger 11 месяцев назад
Родитель
Сommit
c0b019b735

+ 1 - 0
netbox/templates/wireless/wirelesslangroup.html

@@ -40,6 +40,7 @@
       </table>
     </div>
     {% include 'inc/panels/tags.html' %}
+    {% include 'inc/panels/comments.html' %}
     {% plugin_left_page object %}
   </div>
 	<div class="col col-md-6">

+ 1 - 1
netbox/wireless/api/serializers_/wirelesslans.py

@@ -26,7 +26,7 @@ class WirelessLANGroupSerializer(NestedGroupModelSerializer):
         model = WirelessLANGroup
         fields = [
             'id', 'url', 'display_url', 'display', 'name', 'slug', 'parent', 'description', 'tags', 'custom_fields',
-            'created', 'last_updated', 'wirelesslan_count', '_depth',
+            'created', 'last_updated', 'wirelesslan_count', 'comments', '_depth',
         ]
         brief_fields = ('id', 'url', 'display', 'name', 'slug', 'description', 'wirelesslan_count', '_depth')
 

+ 10 - 0
netbox/wireless/filtersets.py

@@ -43,6 +43,16 @@ class WirelessLANGroupFilterSet(OrganizationalModelFilterSet):
         model = WirelessLANGroup
         fields = ('id', 'name', 'slug', 'description')
 
+    def search(self, queryset, name, value):
+        if not value.strip():
+            return queryset
+        return queryset.filter(
+            Q(name__icontains=value) |
+            Q(slug__icontains=value) |
+            Q(description__icontains=value) |
+            Q(comments__icontains=value)
+        )
+
 
 class WirelessLANFilterSet(NetBoxModelFilterSet, ScopedFilterSet, TenancyFilterSet):
     group_id = TreeNodeMultipleChoiceFilter(

+ 2 - 1
netbox/wireless/forms/bulk_edit.py

@@ -32,12 +32,13 @@ class WirelessLANGroupBulkEditForm(NetBoxModelBulkEditForm):
         max_length=200,
         required=False
     )
+    comments = CommentField()
 
     model = WirelessLANGroup
     fieldsets = (
         FieldSet('parent', 'description'),
     )
-    nullable_fields = ('parent', 'description')
+    nullable_fields = ('parent', 'description', 'comments')
 
 
 class WirelessLANBulkEditForm(ScopedBulkEditForm, NetBoxModelBulkEditForm):

+ 1 - 1
netbox/wireless/forms/bulk_import.py

@@ -30,7 +30,7 @@ class WirelessLANGroupImportForm(NetBoxModelImportForm):
 
     class Meta:
         model = WirelessLANGroup
-        fields = ('name', 'slug', 'parent', 'description', 'tags')
+        fields = ('name', 'slug', 'parent', 'description', 'tags', 'comments')
 
 
 class WirelessLANImportForm(ScopedImportForm, NetBoxModelImportForm):

+ 2 - 1
netbox/wireless/forms/model_forms.py

@@ -24,6 +24,7 @@ class WirelessLANGroupForm(NetBoxModelForm):
         required=False
     )
     slug = SlugField()
+    comments = CommentField()
 
     fieldsets = (
         FieldSet('parent', 'name', 'slug', 'description', 'tags', name=_('Wireless LAN Group')),
@@ -32,7 +33,7 @@ class WirelessLANGroupForm(NetBoxModelForm):
     class Meta:
         model = WirelessLANGroup
         fields = [
-            'parent', 'name', 'slug', 'description', 'tags',
+            'parent', 'name', 'slug', 'description', 'tags', 'comments',
         ]
 
 

+ 1 - 0
netbox/wireless/search.py

@@ -21,6 +21,7 @@ class WirelessLANGroupIndex(SearchIndex):
         ('name', 100),
         ('slug', 110),
         ('description', 500),
+        ('comments', 5000),
     )
     display_attrs = ('description',)
 

+ 3 - 0
netbox/wireless/tests/test_api.py

@@ -24,10 +24,12 @@ class WirelessLANGroupTest(APIViewTestCases.APIViewTestCase):
         {
             'name': 'Wireless LAN Group 4',
             'slug': 'wireless-lan-group-4',
+            'comments': '',
         },
         {
             'name': 'Wireless LAN Group 5',
             'slug': 'wireless-lan-group-5',
+            'comments': 'LAN Group 5 comment',
         },
         {
             'name': 'Wireless LAN Group 6',
@@ -36,6 +38,7 @@ class WirelessLANGroupTest(APIViewTestCases.APIViewTestCase):
     ]
     bulk_update_data = {
         'description': 'New description',
+        'comments': 'New comment',
     }
 
     @classmethod

+ 17 - 2
netbox/wireless/tests/test_filtersets.py

@@ -21,7 +21,10 @@ class WirelessLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests):
         parent_groups = (
             WirelessLANGroup(name='Wireless LAN Group 1', slug='wireless-lan-group-1', description='A'),
             WirelessLANGroup(name='Wireless LAN Group 2', slug='wireless-lan-group-2', description='B'),
-            WirelessLANGroup(name='Wireless LAN Group 3', slug='wireless-lan-group-3', description='C'),
+            WirelessLANGroup(
+                name='Wireless LAN Group 3', slug='wireless-lan-group-3', description='C',
+                comments='Parent Group 3 comment',
+            ),
         )
         for group in parent_groups:
             group.save()
@@ -38,10 +41,15 @@ class WirelessLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests):
                 slug='wireless-lan-group-1b',
                 parent=parent_groups[0],
                 description='foobar2',
+                comments='Child Group 1B comment',
             ),
             WirelessLANGroup(name='Wireless LAN Group 2A', slug='wireless-lan-group-2a', parent=parent_groups[1]),
             WirelessLANGroup(name='Wireless LAN Group 2B', slug='wireless-lan-group-2b', parent=parent_groups[1]),
-            WirelessLANGroup(name='Wireless LAN Group 3A', slug='wireless-lan-group-3a', parent=parent_groups[2]),
+            WirelessLANGroup(
+                name='Wireless LAN Group 3A', slug='wireless-lan-group-3a', parent=parent_groups[2],
+                comments='Wireless LAN Group 3A comment',
+
+            ),
             WirelessLANGroup(name='Wireless LAN Group 3B', slug='wireless-lan-group-3b', parent=parent_groups[2]),
         )
         for group in groups:
@@ -62,6 +70,13 @@ class WirelessLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests):
         params = {'q': 'foobar1'}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
+    def test_q_comments(self):
+        params = {'q': 'parent'}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
+
+        params = {'q': 'comment'}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
+
     def test_name(self):
         params = {'name': ['Wireless LAN Group 1', 'Wireless LAN Group 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 13 - 9
netbox/wireless/tests/test_views.py

@@ -16,7 +16,9 @@ class WirelessLANGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
 
         groups = (
             WirelessLANGroup(name='Wireless LAN Group 1', slug='wireless-lan-group-1'),
-            WirelessLANGroup(name='Wireless LAN Group 2', slug='wireless-lan-group-2'),
+            WirelessLANGroup(
+                name='Wireless LAN Group 2', slug='wireless-lan-group-2', comments='LAN Group 2 comment',
+            ),
             WirelessLANGroup(name='Wireless LAN Group 3', slug='wireless-lan-group-3'),
         )
         for group in groups:
@@ -30,24 +32,26 @@ class WirelessLANGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
             'parent': groups[2].pk,
             'description': 'A new wireless LAN group',
             'tags': [t.pk for t in tags],
+            'comments': 'LAN Group X comment',
         }
 
         cls.csv_data = (
-            "name,slug,description",
-            "Wireless LAN Group 4,wireless-lan-group-4,Fourth wireless LAN group",
-            "Wireless LAN Group 5,wireless-lan-group-5,Fifth wireless LAN group",
-            "Wireless LAN Group 6,wireless-lan-group-6,Sixth wireless LAN group",
+            "name,slug,description,comments",
+            "Wireless LAN Group 4,wireless-lan-group-4,Fourth wireless LAN group,",
+            "Wireless LAN Group 5,wireless-lan-group-5,Fifth wireless LAN group,",
+            "Wireless LAN Group 6,wireless-lan-group-6,Sixth wireless LAN group,LAN Group 6 comment",
         )
 
         cls.csv_update_data = (
-            "id,name,description",
-            f"{groups[0].pk},Wireless LAN Group 7,Fourth wireless LAN group7",
-            f"{groups[1].pk},Wireless LAN Group 8,Fifth wireless LAN group8",
-            f"{groups[2].pk},Wireless LAN Group 0,Sixth wireless LAN group9",
+            "id,name,description,comments",
+            f"{groups[0].pk},Wireless LAN Group 7,Fourth wireless LAN group7,Group 7 comment",
+            f"{groups[1].pk},Wireless LAN Group 8,Fifth wireless LAN group8,",
+            f"{groups[2].pk},Wireless LAN Group 0,Sixth wireless LAN group9,",
         )
 
         cls.bulk_edit_data = {
             'description': 'New description',
+            'comments': 'New Comments',
         }