mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-17 04:58: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]
|
||||
queryset = Script.objects.prefetch_related('jobs')
|
||||
serializer_class = serializers.ScriptSerializer
|
||||
# filterset_class = filtersets.ScriptFilterSet
|
||||
filterset_class = filtersets.ScriptFilterSet
|
||||
|
||||
_ignore_model_permissions = True
|
||||
schema = None
|
||||
|
@ -29,11 +29,32 @@ __all__ = (
|
||||
'LocalConfigContextFilterSet',
|
||||
'ObjectChangeFilterSet',
|
||||
'SavedFilterFilterSet',
|
||||
'ScriptFilterSet',
|
||||
'TagFilterSet',
|
||||
'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):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
|
@ -65,6 +65,10 @@ class Script(EventRulesMixin, JobsMixin, models.Model):
|
||||
def get_absolute_url(self):
|
||||
return reverse('extras:script', args=[self.pk])
|
||||
|
||||
@property
|
||||
def result(self):
|
||||
return self.jobs.all().order_by('-created').first()
|
||||
|
||||
@cached_property
|
||||
def python_class(self):
|
||||
return self.module.module_scripts.get(self.name)
|
||||
|
@ -1025,6 +1025,8 @@ class ScriptModuleDeleteView(generic.ObjectDeleteView):
|
||||
|
||||
|
||||
class ScriptListView(ContentTypePermissionRequiredMixin, View):
|
||||
filterset = filtersets.CustomFieldFilterSet
|
||||
filterset_form = forms.CustomFieldFilterForm
|
||||
|
||||
def get_required_permission(self):
|
||||
return 'extras.view_script'
|
||||
@ -1065,7 +1067,7 @@ class BaseScriptView(ContentTypePermissionRequiredMixin, generic.ObjectView):
|
||||
self.jobs = self.script.jobs.all()
|
||||
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)
|
||||
return self._init_vars(request)
|
||||
|
||||
@ -1073,7 +1075,7 @@ class BaseScriptView(ContentTypePermissionRequiredMixin, generic.ObjectView):
|
||||
class ScriptView(BaseScriptView):
|
||||
|
||||
def get(self, request, pk):
|
||||
if ret := self.get_script(request, pk):
|
||||
if ret := self.init_vars_or_redirect(request, pk):
|
||||
return ret
|
||||
|
||||
form = None
|
||||
@ -1092,7 +1094,7 @@ class ScriptView(BaseScriptView):
|
||||
if not request.user.has_perm('extras.run_script'):
|
||||
return HttpResponseForbidden()
|
||||
|
||||
if ret := self.get_script(request, pk):
|
||||
if ret := self.init_vars_or_redirect(request, pk):
|
||||
return ret
|
||||
|
||||
form = None
|
||||
@ -1130,7 +1132,7 @@ class ScriptView(BaseScriptView):
|
||||
class ScriptSourceView(BaseScriptView):
|
||||
|
||||
def get(self, request, pk):
|
||||
if ret := self.get_script(request, pk):
|
||||
if ret := self.init_vars_or_redirect(request, pk):
|
||||
return ret
|
||||
|
||||
return render(request, 'extras/script/source.html', {
|
||||
|
Loading…
Reference in New Issue
Block a user