mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-17 13:08:16 -06:00
14438 init_vars_or_redirect
This commit is contained in:
parent
34d3c122e4
commit
f9608f7376
@ -212,7 +212,7 @@ class ScriptViewSet(ModelViewSet):
|
|||||||
permission_classes = [IsAuthenticatedOrLoginNotRequired]
|
permission_classes = [IsAuthenticatedOrLoginNotRequired]
|
||||||
queryset = Script.objects.prefetch_related('jobs')
|
queryset = Script.objects.prefetch_related('jobs')
|
||||||
serializer_class = serializers.ScriptSerializer
|
serializer_class = serializers.ScriptSerializer
|
||||||
# filterset_class = filtersets.ScriptFilterSet
|
filterset_class = filtersets.ScriptFilterSet
|
||||||
|
|
||||||
_ignore_model_permissions = True
|
_ignore_model_permissions = True
|
||||||
schema = None
|
schema = None
|
||||||
|
@ -29,11 +29,32 @@ __all__ = (
|
|||||||
'LocalConfigContextFilterSet',
|
'LocalConfigContextFilterSet',
|
||||||
'ObjectChangeFilterSet',
|
'ObjectChangeFilterSet',
|
||||||
'SavedFilterFilterSet',
|
'SavedFilterFilterSet',
|
||||||
|
'ScriptFilterSet',
|
||||||
'TagFilterSet',
|
'TagFilterSet',
|
||||||
'WebhookFilterSet',
|
'WebhookFilterSet',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ScriptFilterSet(NetBoxModelFilterSet):
|
||||||
|
q = django_filters.CharFilter(
|
||||||
|
method='search',
|
||||||
|
label=_('Search'),
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Webhook
|
||||||
|
fields = [
|
||||||
|
'id', 'name',
|
||||||
|
]
|
||||||
|
|
||||||
|
def search(self, queryset, name, value):
|
||||||
|
if not value.strip():
|
||||||
|
return queryset
|
||||||
|
return queryset.filter(
|
||||||
|
Q(name__icontains=value)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class WebhookFilterSet(NetBoxModelFilterSet):
|
class WebhookFilterSet(NetBoxModelFilterSet):
|
||||||
q = django_filters.CharFilter(
|
q = django_filters.CharFilter(
|
||||||
method='search',
|
method='search',
|
||||||
|
@ -65,6 +65,10 @@ class Script(EventRulesMixin, JobsMixin, models.Model):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('extras:script', args=[self.pk])
|
return reverse('extras:script', args=[self.pk])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def result(self):
|
||||||
|
return self.jobs.all().order_by('-created').first()
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def python_class(self):
|
def python_class(self):
|
||||||
return self.module.module_scripts.get(self.name)
|
return self.module.module_scripts.get(self.name)
|
||||||
|
@ -1025,6 +1025,8 @@ class ScriptModuleDeleteView(generic.ObjectDeleteView):
|
|||||||
|
|
||||||
|
|
||||||
class ScriptListView(ContentTypePermissionRequiredMixin, View):
|
class ScriptListView(ContentTypePermissionRequiredMixin, View):
|
||||||
|
filterset = filtersets.CustomFieldFilterSet
|
||||||
|
filterset_form = forms.CustomFieldFilterForm
|
||||||
|
|
||||||
def get_required_permission(self):
|
def get_required_permission(self):
|
||||||
return 'extras.view_script'
|
return 'extras.view_script'
|
||||||
@ -1065,7 +1067,7 @@ class BaseScriptView(ContentTypePermissionRequiredMixin, generic.ObjectView):
|
|||||||
self.jobs = self.script.jobs.all()
|
self.jobs = self.script.jobs.all()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_script(self, request, pk):
|
def init_vars_or_redirect(self, request, pk):
|
||||||
self.script = get_object_or_404(Script.objects.all(), pk=pk)
|
self.script = get_object_or_404(Script.objects.all(), pk=pk)
|
||||||
return self._init_vars(request)
|
return self._init_vars(request)
|
||||||
|
|
||||||
@ -1073,7 +1075,7 @@ class BaseScriptView(ContentTypePermissionRequiredMixin, generic.ObjectView):
|
|||||||
class ScriptView(BaseScriptView):
|
class ScriptView(BaseScriptView):
|
||||||
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
if ret := self.get_script(request, pk):
|
if ret := self.init_vars_or_redirect(request, pk):
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
form = None
|
form = None
|
||||||
@ -1092,7 +1094,7 @@ class ScriptView(BaseScriptView):
|
|||||||
if not request.user.has_perm('extras.run_script'):
|
if not request.user.has_perm('extras.run_script'):
|
||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
|
|
||||||
if ret := self.get_script(request, pk):
|
if ret := self.init_vars_or_redirect(request, pk):
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
form = None
|
form = None
|
||||||
@ -1130,7 +1132,7 @@ class ScriptView(BaseScriptView):
|
|||||||
class ScriptSourceView(BaseScriptView):
|
class ScriptSourceView(BaseScriptView):
|
||||||
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
if ret := self.get_script(request, pk):
|
if ret := self.init_vars_or_redirect(request, pk):
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
return render(request, 'extras/script/source.html', {
|
return render(request, 'extras/script/source.html', {
|
||||||
|
Loading…
Reference in New Issue
Block a user