12084 saved filters (#12090)

* 12084 change back saved filter saving

* 12084 doc string

* 12084 add test

* Pass SavedFilter initial parameters as JSON & relocate test

---------

Co-authored-by: jeremystretch <jstretch@netboxlabs.com>
This commit is contained in:
Arthur Hanson 2023-03-30 08:00:40 -07:00 committed by GitHub
parent 0330c652bd
commit e467589730
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 1 deletions

View File

@ -4,6 +4,7 @@ from django.test import TestCase
from dcim.forms import SiteForm from dcim.forms import SiteForm
from dcim.models import Site from dcim.models import Site
from extras.choices import CustomFieldTypeChoices from extras.choices import CustomFieldTypeChoices
from extras.forms import SavedFilterForm
from extras.models import CustomField from extras.models import CustomField
@ -77,3 +78,24 @@ class CustomFieldModelFormTest(TestCase):
for field_type, _ in CustomFieldTypeChoices.CHOICES: for field_type, _ in CustomFieldTypeChoices.CHOICES:
self.assertIn(field_type, instance.custom_field_data) self.assertIn(field_type, instance.custom_field_data)
self.assertIsNone(instance.custom_field_data[field_type]) self.assertIsNone(instance.custom_field_data[field_type])
class SavedFilterFormTest(TestCase):
def test_basic_submit(self):
"""
Test form submission and validation
"""
form = SavedFilterForm({
'name': 'test-sf',
'slug': 'test-sf',
'content_types': [ContentType.objects.get_for_model(Site).pk],
'weight': 100,
'parameters': {
"status": [
"active"
]
}
})
self.assertTrue(form.is_valid())
form.save()

View File

@ -1,5 +1,6 @@
import datetime import datetime
import decimal import decimal
import json
from urllib.parse import quote from urllib.parse import quote
from typing import Dict, Any from typing import Dict, Any
@ -321,7 +322,7 @@ def applied_filters(context, model, form, query_params):
save_link = None save_link = None
if user.has_perm('extras.add_savedfilter') and 'filter_id' not in context['request'].GET: if user.has_perm('extras.add_savedfilter') and 'filter_id' not in context['request'].GET:
content_type = ContentType.objects.get_for_model(model).pk content_type = ContentType.objects.get_for_model(model).pk
parameters = context['request'].GET.urlencode() parameters = json.dumps(context['request'].GET)
url = reverse('extras:savedfilter_add') url = reverse('extras:savedfilter_add')
save_link = f"{url}?content_types={content_type}&parameters={quote(parameters)}" save_link = f"{url}?content_types={content_type}&parameters={quote(parameters)}"