adds tags on webhook model #11936

This commit is contained in:
Abhimanyu Saharan 2023-08-01 22:21:55 +05:30
parent 836e6e008d
commit a5c56b73f1
11 changed files with 23 additions and 20 deletions

View File

@ -61,7 +61,7 @@ __all__ = (
# Webhooks # Webhooks
# #
class WebhookSerializer(CustomFieldModelSerializer, ValidatedModelSerializer): class WebhookSerializer(NetBoxModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='extras-api:webhook-detail') url = serializers.HyperlinkedIdentityField(view_name='extras-api:webhook-detail')
content_types = ContentTypeField( content_types = ContentTypeField(
queryset=ContentType.objects.filter(FeatureQuery('webhooks').get_query()), queryset=ContentType.objects.filter(FeatureQuery('webhooks').get_query()),
@ -74,7 +74,7 @@ class WebhookSerializer(CustomFieldModelSerializer, ValidatedModelSerializer):
'id', 'url', 'display', 'content_types', 'name', 'type_create', 'type_update', 'type_delete', 'id', 'url', 'display', 'content_types', 'name', 'type_create', 'type_update', 'type_delete',
'type_job_start', 'type_job_end', 'payload_url', 'enabled', 'http_method', 'http_content_type', 'type_job_start', 'type_job_end', 'payload_url', 'enabled', 'http_method', 'http_content_type',
'additional_headers', 'body_template', 'secret', 'conditions', 'ssl_verification', 'ca_file_path', 'additional_headers', 'body_template', 'secret', 'conditions', 'ssl_verification', 'ca_file_path',
'custom_fields', 'created', 'last_updated', 'custom_fields', 'tags', 'created', 'last_updated',
] ]

View File

@ -34,7 +34,7 @@ __all__ = (
) )
class WebhookFilterSet(BaseFilterSet): class WebhookFilterSet(NetBoxModelFilterSet):
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label=_('Search'), label=_('Search'),

View File

@ -226,10 +226,6 @@ class WebhookBulkEditForm(NetBoxModelBulkEditForm):
label=_('CA file path') label=_('CA file path')
) )
add_tags = None
remove_tags = None
nullable_fields = ('secret', 'conditions', 'ca_file_path') nullable_fields = ('secret', 'conditions', 'ca_file_path')

View File

@ -148,14 +148,12 @@ class WebhookImportForm(NetBoxModelImportForm):
help_text=_("One or more assigned object types") help_text=_("One or more assigned object types")
) )
tags = None
class Meta: class Meta:
model = Webhook model = Webhook
fields = ( fields = (
'name', 'enabled', 'content_types', 'type_create', 'type_update', 'type_delete', 'type_job_start', 'name', 'enabled', 'content_types', 'type_create', 'type_update', 'type_delete', 'type_job_start',
'type_job_end', 'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'type_job_end', 'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template',
'secret', 'ssl_verification', 'ca_file_path' 'secret', 'ssl_verification', 'ca_file_path', 'tags'
) )

View File

@ -219,11 +219,12 @@ class SavedFilterFilterForm(SavedFiltersMixin, FilterForm):
) )
class WebhookFilterForm(CustomFieldsMixin, SavedFiltersMixin, FilterForm): class WebhookFilterForm(NetBoxModelFilterSetForm):
model = Webhook model = Webhook
tag = TagFilterField(model)
fieldsets = ( fieldsets = (
(None, ('q', 'filter_id')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('content_type_id', 'http_method', 'enabled')), (_('Attributes'), ('content_type_id', 'http_method', 'enabled')),
(_('Events'), ('type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end')), (_('Events'), ('type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end')),
) )

View File

@ -221,10 +221,8 @@ class WebhookForm(NetBoxModelForm):
limit_choices_to=FeatureQuery('webhooks') limit_choices_to=FeatureQuery('webhooks')
) )
tags = None
fieldsets = ( fieldsets = (
(_('Webhook'), ('name', 'content_types', 'enabled')), (_('Webhook'), ('name', 'content_types', 'enabled', 'tags')),
(_('Events'), ('type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end')), (_('Events'), ('type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end')),
(_('HTTP Request'), ( (_('HTTP Request'), (
'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret', 'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret',

View File

@ -1,6 +1,6 @@
from extras import filtersets, models from extras import filtersets, models
from extras.graphql.mixins import CustomFieldsMixin, TagsMixin from extras.graphql.mixins import CustomFieldsMixin, TagsMixin
from netbox.graphql.types import BaseObjectType, ObjectType from netbox.graphql.types import BaseObjectType, ObjectType, OrganizationalObjectType
__all__ = ( __all__ = (
'ConfigContextType', 'ConfigContextType',
@ -106,7 +106,7 @@ class TagType(ObjectType):
filterset_class = filtersets.TagFilterSet filterset_class = filtersets.TagFilterSet
class WebhookType(CustomFieldsMixin, ObjectType): class WebhookType(OrganizationalObjectType):
class Meta: class Meta:
model = models.Webhook model = models.Webhook

View File

@ -1,6 +1,7 @@
# Generated by Django 4.1.10 on 2023-08-01 15:29 # Generated by Django 4.1.10 on 2023-08-01 16:32
from django.db import migrations, models from django.db import migrations, models
import taggit.managers
import utilities.json import utilities.json
@ -16,4 +17,9 @@ class Migration(migrations.Migration):
name='custom_field_data', name='custom_field_data',
field=models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder), field=models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder),
), ),
migrations.AddField(
model_name='webhook',
name='tags',
field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'),
),
] ]

View File

@ -39,7 +39,7 @@ __all__ = (
) )
class Webhook(CustomFieldsMixin, ExportTemplatesMixin, ChangeLoggedModel): class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel):
""" """
A Webhook defines a request that will be sent to a remote application when an object is created, updated, and/or A Webhook defines a request that will be sent to a remote application when an object is created, updated, and/or
delete in NetBox. The request will contain a representation of the object, which the remote application can act on. delete in NetBox. The request will contain a representation of the object, which the remote application can act on.

View File

@ -297,13 +297,16 @@ class WebhookTable(NetBoxTable):
ssl_validation = columns.BooleanColumn( ssl_validation = columns.BooleanColumn(
verbose_name=_('SSL Validation') verbose_name=_('SSL Validation')
) )
tags = columns.TagColumn(
url_name='extras:webhook_list'
)
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = Webhook model = Webhook
fields = ( fields = (
'pk', 'id', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', 'pk', 'id', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete',
'type_job_start', 'type_job_end', 'http_method', 'payload_url', 'secret', 'ssl_validation', 'ca_file_path', 'type_job_start', 'type_job_end', 'http_method', 'payload_url', 'secret', 'ssl_validation', 'ca_file_path',
'created', 'last_updated', 'tags', 'created', 'last_updated',
) )
default_columns = ( default_columns = (
'pk', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', 'type_job_start', 'pk', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', 'type_job_start',

View File

@ -148,6 +148,7 @@
</div> </div>
</div> </div>
{% include 'inc/panels/custom_fields.html' %} {% include 'inc/panels/custom_fields.html' %}
{% include 'inc/panels/tags.html' %}
{% plugin_right_page object %} {% plugin_right_page object %}
</div> </div>
</div> </div>