mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-15 19:52:52 -06:00
change cacheing to use cacheops
This commit is contained in:
parent
6034265dfd
commit
2580b026fe
@ -2,6 +2,10 @@
|
|||||||
# https://github.com/django/django
|
# https://github.com/django/django
|
||||||
Django
|
Django
|
||||||
|
|
||||||
|
# Django caching using Redis
|
||||||
|
# https://github.com/Suor/django-cacheops
|
||||||
|
django-cacheops
|
||||||
|
|
||||||
# Django middleware which permits cross-domain API requests
|
# Django middleware which permits cross-domain API requests
|
||||||
# https://github.com/OttoYiu/django-cors-headers
|
# https://github.com/OttoYiu/django-cors-headers
|
||||||
django-cors-headers
|
django-cors-headers
|
||||||
@ -18,10 +22,6 @@ django-filter
|
|||||||
# https://github.com/django-mptt/django-mptt
|
# https://github.com/django-mptt/django-mptt
|
||||||
django-mptt
|
django-mptt
|
||||||
|
|
||||||
# Django caching using Redis
|
|
||||||
# https://github.com/niwinz/django-redis
|
|
||||||
django-redis
|
|
||||||
|
|
||||||
# Abstraction models for rendering and paginating HTML tables
|
# Abstraction models for rendering and paginating HTML tables
|
||||||
# https://github.com/jieter/django-tables2
|
# https://github.com/jieter/django-tables2
|
||||||
django-tables2
|
django-tables2
|
||||||
|
@ -197,7 +197,6 @@ class SiteListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class SiteView(PermissionRequiredMixin, View):
|
class SiteView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_site'
|
permission_required = 'dcim.view_site'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, slug):
|
def get(self, request, slug):
|
||||||
|
|
||||||
site = get_object_or_404(Site.objects.select_related('region', 'tenant__group'), slug=slug)
|
site = get_object_or_404(Site.objects.select_related('region', 'tenant__group'), slug=slug)
|
||||||
@ -356,7 +355,6 @@ class RackElevationListView(PermissionRequiredMixin, View):
|
|||||||
"""
|
"""
|
||||||
permission_required = 'dcim.view_rack'
|
permission_required = 'dcim.view_rack'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
|
||||||
racks = Rack.objects.select_related(
|
racks = Rack.objects.select_related(
|
||||||
@ -396,7 +394,6 @@ class RackElevationListView(PermissionRequiredMixin, View):
|
|||||||
class RackView(PermissionRequiredMixin, View):
|
class RackView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_rack'
|
permission_required = 'dcim.view_rack'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
rack = get_object_or_404(Rack.objects.select_related('site__region', 'tenant__group', 'group', 'role'), pk=pk)
|
rack = get_object_or_404(Rack.objects.select_related('site__region', 'tenant__group', 'group', 'role'), pk=pk)
|
||||||
@ -575,7 +572,6 @@ class DeviceTypeListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class DeviceTypeView(PermissionRequiredMixin, View):
|
class DeviceTypeView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_devicetype'
|
permission_required = 'dcim.view_devicetype'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
devicetype = get_object_or_404(DeviceType, pk=pk)
|
devicetype = get_object_or_404(DeviceType, pk=pk)
|
||||||
@ -916,7 +912,6 @@ class DeviceListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class DeviceView(PermissionRequiredMixin, View):
|
class DeviceView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_device'
|
permission_required = 'dcim.view_device'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
device = get_object_or_404(Device.objects.select_related(
|
device = get_object_or_404(Device.objects.select_related(
|
||||||
@ -998,7 +993,6 @@ class DeviceView(PermissionRequiredMixin, View):
|
|||||||
class DeviceInventoryView(PermissionRequiredMixin, View):
|
class DeviceInventoryView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_device'
|
permission_required = 'dcim.view_device'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
device = get_object_or_404(Device, pk=pk)
|
device = get_object_or_404(Device, pk=pk)
|
||||||
@ -1020,7 +1014,6 @@ class DeviceInventoryView(PermissionRequiredMixin, View):
|
|||||||
class DeviceStatusView(PermissionRequiredMixin, View):
|
class DeviceStatusView(PermissionRequiredMixin, View):
|
||||||
permission_required = ('dcim.view_device', 'dcim.napalm_read')
|
permission_required = ('dcim.view_device', 'dcim.napalm_read')
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
device = get_object_or_404(Device, pk=pk)
|
device = get_object_or_404(Device, pk=pk)
|
||||||
@ -1034,7 +1027,6 @@ class DeviceStatusView(PermissionRequiredMixin, View):
|
|||||||
class DeviceLLDPNeighborsView(PermissionRequiredMixin, View):
|
class DeviceLLDPNeighborsView(PermissionRequiredMixin, View):
|
||||||
permission_required = ('dcim.view_device', 'dcim.napalm_read')
|
permission_required = ('dcim.view_device', 'dcim.napalm_read')
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
device = get_object_or_404(Device, pk=pk)
|
device = get_object_or_404(Device, pk=pk)
|
||||||
@ -1052,7 +1044,6 @@ class DeviceLLDPNeighborsView(PermissionRequiredMixin, View):
|
|||||||
class DeviceConfigView(PermissionRequiredMixin, View):
|
class DeviceConfigView(PermissionRequiredMixin, View):
|
||||||
permission_required = ('dcim.view_device', 'dcim.napalm_read')
|
permission_required = ('dcim.view_device', 'dcim.napalm_read')
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
device = get_object_or_404(Device, pk=pk)
|
device = get_object_or_404(Device, pk=pk)
|
||||||
@ -1290,7 +1281,6 @@ class PowerOutletBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
|||||||
class InterfaceView(PermissionRequiredMixin, View):
|
class InterfaceView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_interface'
|
permission_required = 'dcim.view_interface'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
interface = get_object_or_404(Interface, pk=pk)
|
interface = get_object_or_404(Interface, pk=pk)
|
||||||
@ -1511,7 +1501,6 @@ class DeviceBayDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
|||||||
class DeviceBayPopulateView(PermissionRequiredMixin, View):
|
class DeviceBayPopulateView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.change_devicebay'
|
permission_required = 'dcim.change_devicebay'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
device_bay = get_object_or_404(DeviceBay, pk=pk)
|
device_bay = get_object_or_404(DeviceBay, pk=pk)
|
||||||
@ -1546,7 +1535,6 @@ class DeviceBayPopulateView(PermissionRequiredMixin, View):
|
|||||||
class DeviceBayDepopulateView(PermissionRequiredMixin, View):
|
class DeviceBayDepopulateView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.change_devicebay'
|
permission_required = 'dcim.change_devicebay'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
device_bay = get_object_or_404(DeviceBay, pk=pk)
|
device_bay = get_object_or_404(DeviceBay, pk=pk)
|
||||||
@ -1686,7 +1674,6 @@ class CableListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class CableView(PermissionRequiredMixin, View):
|
class CableView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_cable'
|
permission_required = 'dcim.view_cable'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
cable = get_object_or_404(Cable, pk=pk)
|
cable = get_object_or_404(Cable, pk=pk)
|
||||||
@ -1702,7 +1689,6 @@ class CableTraceView(PermissionRequiredMixin, View):
|
|||||||
"""
|
"""
|
||||||
permission_required = 'dcim.view_cable'
|
permission_required = 'dcim.view_cable'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, model, pk):
|
def get(self, request, model, pk):
|
||||||
|
|
||||||
obj = get_object_or_404(model, pk=pk)
|
obj = get_object_or_404(model, pk=pk)
|
||||||
@ -1742,7 +1728,6 @@ class CableCreateView(PermissionRequiredMixin, GetReturnURLMixin, View):
|
|||||||
|
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
|
||||||
# Parse initial data manually to avoid setting field values as lists
|
# Parse initial data manually to avoid setting field values as lists
|
||||||
@ -2059,7 +2044,6 @@ class VirtualChassisCreateView(PermissionRequiredMixin, View):
|
|||||||
class VirtualChassisEditView(PermissionRequiredMixin, GetReturnURLMixin, View):
|
class VirtualChassisEditView(PermissionRequiredMixin, GetReturnURLMixin, View):
|
||||||
permission_required = 'dcim.change_virtualchassis'
|
permission_required = 'dcim.change_virtualchassis'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
virtual_chassis = get_object_or_404(VirtualChassis, pk=pk)
|
virtual_chassis = get_object_or_404(VirtualChassis, pk=pk)
|
||||||
@ -2128,7 +2112,6 @@ class VirtualChassisDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
|||||||
class VirtualChassisAddMemberView(PermissionRequiredMixin, GetReturnURLMixin, View):
|
class VirtualChassisAddMemberView(PermissionRequiredMixin, GetReturnURLMixin, View):
|
||||||
permission_required = 'dcim.change_virtualchassis'
|
permission_required = 'dcim.change_virtualchassis'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
virtual_chassis = get_object_or_404(VirtualChassis, pk=pk)
|
virtual_chassis = get_object_or_404(VirtualChassis, pk=pk)
|
||||||
@ -2183,7 +2166,6 @@ class VirtualChassisAddMemberView(PermissionRequiredMixin, GetReturnURLMixin, Vi
|
|||||||
class VirtualChassisRemoveMemberView(PermissionRequiredMixin, GetReturnURLMixin, View):
|
class VirtualChassisRemoveMemberView(PermissionRequiredMixin, GetReturnURLMixin, View):
|
||||||
permission_required = 'dcim.change_virtualchassis'
|
permission_required = 'dcim.change_virtualchassis'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
device = get_object_or_404(Device, pk=pk, virtual_chassis__isnull=False)
|
device = get_object_or_404(Device, pk=pk, virtual_chassis__isnull=False)
|
||||||
@ -2247,7 +2229,6 @@ class PowerPanelListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class PowerPanelView(PermissionRequiredMixin, View):
|
class PowerPanelView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_powerpanel'
|
permission_required = 'dcim.view_powerpanel'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
powerpanel = get_object_or_404(PowerPanel.objects.select_related('site', 'rack_group'), pk=pk)
|
powerpanel = get_object_or_404(PowerPanel.objects.select_related('site', 'rack_group'), pk=pk)
|
||||||
@ -2317,7 +2298,6 @@ class PowerFeedListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class PowerFeedView(PermissionRequiredMixin, View):
|
class PowerFeedView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'dcim.view_powerfeed'
|
permission_required = 'dcim.view_powerfeed'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
powerfeed = get_object_or_404(PowerFeed.objects.select_related('power_panel', 'rack'), pk=pk)
|
powerfeed = get_object_or_404(PowerFeed.objects.select_related('power_panel', 'rack'), pk=pk)
|
||||||
|
@ -43,7 +43,6 @@ class TagListView(ObjectListView):
|
|||||||
|
|
||||||
class TagView(View):
|
class TagView(View):
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, slug):
|
def get(self, request, slug):
|
||||||
|
|
||||||
tag = get_object_or_404(Tag, slug=slug)
|
tag = get_object_or_404(Tag, slug=slug)
|
||||||
@ -111,7 +110,6 @@ class ConfigContextListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class ConfigContextView(PermissionRequiredMixin, View):
|
class ConfigContextView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'extras.view_configcontext'
|
permission_required = 'extras.view_configcontext'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
configcontext = get_object_or_404(ConfigContext, pk=pk)
|
configcontext = get_object_or_404(ConfigContext, pk=pk)
|
||||||
@ -159,7 +157,6 @@ class ObjectConfigContextView(View):
|
|||||||
object_class = None
|
object_class = None
|
||||||
base_template = None
|
base_template = None
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
obj = get_object_or_404(self.object_class, pk=pk)
|
obj = get_object_or_404(self.object_class, pk=pk)
|
||||||
@ -192,7 +189,6 @@ class ObjectChangeListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class ObjectChangeView(PermissionRequiredMixin, View):
|
class ObjectChangeView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'extras.view_objectchange'
|
permission_required = 'extras.view_objectchange'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
objectchange = get_object_or_404(ObjectChange, pk=pk)
|
objectchange = get_object_or_404(ObjectChange, pk=pk)
|
||||||
@ -215,7 +211,6 @@ class ObjectChangeLogView(View):
|
|||||||
Present a history of changes made to a particular object.
|
Present a history of changes made to a particular object.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, model, **kwargs):
|
def get(self, request, model, **kwargs):
|
||||||
|
|
||||||
# Get object my model and kwargs (e.g. slug='foo')
|
# Get object my model and kwargs (e.g. slug='foo')
|
||||||
@ -289,7 +284,6 @@ class ReportListView(PermissionRequiredMixin, View):
|
|||||||
"""
|
"""
|
||||||
permission_required = 'extras.view_reportresult'
|
permission_required = 'extras.view_reportresult'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
|
||||||
reports = get_reports()
|
reports = get_reports()
|
||||||
@ -314,7 +308,6 @@ class ReportView(PermissionRequiredMixin, View):
|
|||||||
"""
|
"""
|
||||||
permission_required = 'extras.view_reportresult'
|
permission_required = 'extras.view_reportresult'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, name):
|
def get(self, request, name):
|
||||||
|
|
||||||
# Retrieve the Report by "<module>.<report>"
|
# Retrieve the Report by "<module>.<report>"
|
||||||
|
@ -127,7 +127,6 @@ class VRFListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class VRFView(PermissionRequiredMixin, View):
|
class VRFView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_vrf'
|
permission_required = 'ipam.view_vrf'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
vrf = get_object_or_404(VRF.objects.all(), pk=pk)
|
vrf = get_object_or_404(VRF.objects.all(), pk=pk)
|
||||||
@ -322,7 +321,6 @@ class AggregateListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class AggregateView(PermissionRequiredMixin, View):
|
class AggregateView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_aggregate'
|
permission_required = 'ipam.view_aggregate'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
aggregate = get_object_or_404(Aggregate, pk=pk)
|
aggregate = get_object_or_404(Aggregate, pk=pk)
|
||||||
@ -460,7 +458,6 @@ class PrefixListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class PrefixView(PermissionRequiredMixin, View):
|
class PrefixView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_prefix'
|
permission_required = 'ipam.view_prefix'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
prefix = get_object_or_404(Prefix.objects.select_related(
|
prefix = get_object_or_404(Prefix.objects.select_related(
|
||||||
@ -505,7 +502,6 @@ class PrefixView(PermissionRequiredMixin, View):
|
|||||||
class PrefixPrefixesView(PermissionRequiredMixin, View):
|
class PrefixPrefixesView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_prefix'
|
permission_required = 'ipam.view_prefix'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
prefix = get_object_or_404(Prefix.objects.all(), pk=pk)
|
prefix = get_object_or_404(Prefix.objects.all(), pk=pk)
|
||||||
@ -549,7 +545,6 @@ class PrefixPrefixesView(PermissionRequiredMixin, View):
|
|||||||
class PrefixIPAddressesView(PermissionRequiredMixin, View):
|
class PrefixIPAddressesView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_prefix'
|
permission_required = 'ipam.view_prefix'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
prefix = get_object_or_404(Prefix.objects.all(), pk=pk)
|
prefix = get_object_or_404(Prefix.objects.all(), pk=pk)
|
||||||
@ -650,7 +645,6 @@ class IPAddressListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class IPAddressView(PermissionRequiredMixin, View):
|
class IPAddressView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_ipaddress'
|
permission_required = 'ipam.view_ipaddress'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
ipaddress = get_object_or_404(IPAddress.objects.select_related('vrf__tenant', 'tenant'), pk=pk)
|
ipaddress = get_object_or_404(IPAddress.objects.select_related('vrf__tenant', 'tenant'), pk=pk)
|
||||||
@ -734,7 +728,6 @@ class IPAddressAssignView(PermissionRequiredMixin, View):
|
|||||||
|
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
|
||||||
form = forms.IPAddressAssignForm()
|
form = forms.IPAddressAssignForm()
|
||||||
@ -847,7 +840,6 @@ class VLANGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
|||||||
class VLANGroupVLANsView(PermissionRequiredMixin, View):
|
class VLANGroupVLANsView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_vlangroup'
|
permission_required = 'ipam.view_vlangroup'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
vlan_group = get_object_or_404(VLANGroup.objects.all(), pk=pk)
|
vlan_group = get_object_or_404(VLANGroup.objects.all(), pk=pk)
|
||||||
@ -898,7 +890,6 @@ class VLANListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class VLANView(PermissionRequiredMixin, View):
|
class VLANView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_vlan'
|
permission_required = 'ipam.view_vlan'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
vlan = get_object_or_404(VLAN.objects.select_related(
|
vlan = get_object_or_404(VLAN.objects.select_related(
|
||||||
@ -917,7 +908,6 @@ class VLANView(PermissionRequiredMixin, View):
|
|||||||
class VLANMembersView(PermissionRequiredMixin, View):
|
class VLANMembersView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_vlan'
|
permission_required = 'ipam.view_vlan'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
vlan = get_object_or_404(VLAN.objects.all(), pk=pk)
|
vlan = get_object_or_404(VLAN.objects.all(), pk=pk)
|
||||||
@ -996,7 +986,6 @@ class ServiceListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class ServiceView(PermissionRequiredMixin, View):
|
class ServiceView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'ipam.view_service'
|
permission_required = 'ipam.view_service'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
service = get_object_or_404(Service, pk=pk)
|
service = get_object_or_404(Service, pk=pk)
|
||||||
|
@ -31,6 +31,7 @@ REDIS = {
|
|||||||
'PORT': 6379,
|
'PORT': 6379,
|
||||||
'PASSWORD': '',
|
'PASSWORD': '',
|
||||||
'DATABASE': 0,
|
'DATABASE': 0,
|
||||||
|
'CACHE_DATABASE': 1,
|
||||||
'DEFAULT_TIMEOUT': 300,
|
'DEFAULT_TIMEOUT': 300,
|
||||||
'SSL': False,
|
'SSL': False,
|
||||||
}
|
}
|
||||||
@ -60,16 +61,7 @@ BANNER_LOGIN = ''
|
|||||||
# BASE_PATH = 'netbox/'
|
# BASE_PATH = 'netbox/'
|
||||||
BASE_PATH = ''
|
BASE_PATH = ''
|
||||||
|
|
||||||
# The fraction of entries that are culled when CACHE_MAX_ENTRIES is reached. The actual ratio is 1 / CACHE_CULL_FREQUENCY,
|
# Cache timeout in seconds. Set to 0 to dissable caching. Defaults to 900 (15 minutes)
|
||||||
# so set CACHE_CULL_FREQUENCY to 2 to cull half the entries when CACHE_MAX_ENTRIES is reached. This setting should be an
|
|
||||||
# integer and defaults to 3
|
|
||||||
CACHE_CULL_FREQUENCY = 3
|
|
||||||
|
|
||||||
# Max number of entries (unique pages) to store in the cache at a time.
|
|
||||||
CACHE_MAX_ENTRIES = 300
|
|
||||||
|
|
||||||
# Cache timeout in seconds. Set to `None` to enforce an infinate timeout. Set to 0 to dissable caching by immediatly
|
|
||||||
# expiring keys. Defaults to 900 (15 minutes)
|
|
||||||
CACHE_TIMEOUT = 900
|
CACHE_TIMEOUT = 900
|
||||||
|
|
||||||
# Maximum number of days to retain logged changes. Set to 0 to retain changes indefinitely. (Default: 90)
|
# Maximum number of days to retain logged changes. Set to 0 to retain changes indefinitely. (Default: 90)
|
||||||
|
@ -138,6 +138,7 @@ REDIS_HOST = REDIS.get('HOST', 'localhost')
|
|||||||
REDIS_PORT = REDIS.get('PORT', 6379)
|
REDIS_PORT = REDIS.get('PORT', 6379)
|
||||||
REDIS_PASSWORD = REDIS.get('PASSWORD', '')
|
REDIS_PASSWORD = REDIS.get('PASSWORD', '')
|
||||||
REDIS_DATABASE = REDIS.get('DATABASE', 0)
|
REDIS_DATABASE = REDIS.get('DATABASE', 0)
|
||||||
|
REDIS_CACHE_DATABASE = REDIS.get('CACHE_DATABASE', 1)
|
||||||
REDIS_DEFAULT_TIMEOUT = REDIS.get('DEFAULT_TIMEOUT', 300)
|
REDIS_DEFAULT_TIMEOUT = REDIS.get('DEFAULT_TIMEOUT', 300)
|
||||||
REDIS_SSL = REDIS.get('SSL', False)
|
REDIS_SSL = REDIS.get('SSL', False)
|
||||||
|
|
||||||
@ -159,8 +160,8 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
'django.contrib.humanize',
|
'django.contrib.humanize',
|
||||||
|
'cacheops',
|
||||||
'corsheaders',
|
'corsheaders',
|
||||||
'django_redis',
|
|
||||||
'debug_toolbar',
|
'debug_toolbar',
|
||||||
'django_filters',
|
'django_filters',
|
||||||
'django_tables2',
|
'django_tables2',
|
||||||
@ -231,21 +232,30 @@ else:
|
|||||||
if REDIS_PASSWORD:
|
if REDIS_PASSWORD:
|
||||||
REDIS_CACHE_CON_STRING = '{}@{}'.format(REDIS_PASSWORD, REDIS_CACHE_CON_STRING)
|
REDIS_CACHE_CON_STRING = '{}@{}'.format(REDIS_PASSWORD, REDIS_CACHE_CON_STRING)
|
||||||
|
|
||||||
REDIS_CACHE_CON_STRING = '{}{}:{}/{}'.format(REDIS_CACHE_CON_STRING, REDIS_HOST, REDIS_PORT, REDIS_DATABASE)
|
REDIS_CACHE_CON_STRING = '{}{}:{}/{}'.format(REDIS_CACHE_CON_STRING, REDIS_HOST, REDIS_PORT, REDIS_CACHE_DATABASE)
|
||||||
CACHE_BACKEND = 'django_redis.cache.RedisCache'
|
|
||||||
|
|
||||||
CACHES = {
|
if not CACHE_TIMEOUT:
|
||||||
"default": {
|
CACHEOPS_ENABLED = False
|
||||||
"BACKEND": CACHE_BACKEND,
|
else:
|
||||||
"LOCATION": REDIS_CACHE_CON_STRING,
|
CACHEOPS_ENABLED = True
|
||||||
'TIMEOUT': CACHE_TIMEOUT,
|
|
||||||
"OPTIONS": {
|
CACHEOPS_REDIS = REDIS_CACHE_CON_STRING
|
||||||
"CLIENT_CLASS": "django_redis.client.DefaultClient",
|
CACHEOPS_DEFAULTS = {
|
||||||
"MAX_ENTRIES": CACHE_MAX_ENTRIES,
|
'timeout': CACHE_TIMEOUT
|
||||||
"CULL_FREQUENCY": CACHE_CULL_FREQUENCY
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
CACHEOPS = {
|
||||||
|
'auth.user': {'ops': 'get', 'timeout': 60*15},
|
||||||
|
'auth.*': {'ops': ('fetch', 'get')},
|
||||||
|
'auth.permission': {'ops': 'all'},
|
||||||
|
'dcim.*': {'ops': 'all'},
|
||||||
|
'ipam.*': {'ops': 'all'},
|
||||||
|
'extras.*': {'ops': 'all'},
|
||||||
|
'secrets.*': {'ops': 'all'},
|
||||||
|
'users.*': {'ops': 'all'},
|
||||||
|
'tenancy.*': {'ops': 'all'},
|
||||||
|
'virtualization.*': {'ops': 'all'},
|
||||||
|
}
|
||||||
|
CACHEOPS_DEGRADE_ON_FAILURE = True
|
||||||
|
|
||||||
# WSGI
|
# WSGI
|
||||||
WSGI_APPLICATION = 'netbox.wsgi.application'
|
WSGI_APPLICATION = 'netbox.wsgi.application'
|
||||||
|
@ -163,7 +163,6 @@ SEARCH_TYPES = OrderedDict((
|
|||||||
class HomeView(View):
|
class HomeView(View):
|
||||||
template_name = 'home.html'
|
template_name = 'home.html'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
|
||||||
connected_consoleports = ConsolePort.objects.filter(
|
connected_consoleports = ConsolePort.objects.filter(
|
||||||
@ -223,7 +222,6 @@ class HomeView(View):
|
|||||||
|
|
||||||
class SearchView(View):
|
class SearchView(View):
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
|
||||||
# No query
|
# No query
|
||||||
@ -277,7 +275,6 @@ class APIRootView(APIView):
|
|||||||
def get_view_name(self):
|
def get_view_name(self):
|
||||||
return "API Root"
|
return "API Root"
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, format=None):
|
def get(self, request, format=None):
|
||||||
|
|
||||||
return Response(OrderedDict((
|
return Response(OrderedDict((
|
||||||
|
@ -82,7 +82,6 @@ class SecretListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class SecretView(PermissionRequiredMixin, View):
|
class SecretView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'secrets.view_secret'
|
permission_required = 'secrets.view_secret'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
secret = get_object_or_404(Secret, pk=pk)
|
secret = get_object_or_404(Secret, pk=pk)
|
||||||
|
@ -69,7 +69,6 @@ class TenantListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class TenantView(PermissionRequiredMixin, View):
|
class TenantView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'tenancy.view_tenant'
|
permission_required = 'tenancy.view_tenant'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, slug):
|
def get(self, request, slug):
|
||||||
|
|
||||||
tenant = get_object_or_404(Tenant, slug=slug)
|
tenant = get_object_or_404(Tenant, slug=slug)
|
||||||
|
@ -108,7 +108,6 @@ class ObjectListView(View):
|
|||||||
|
|
||||||
return csv_data
|
return csv_data
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
|
||||||
model = self.queryset.model
|
model = self.queryset.model
|
||||||
@ -716,7 +715,6 @@ class ComponentCreateView(View):
|
|||||||
model_form = None
|
model_form = None
|
||||||
template_name = None
|
template_name = None
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
parent = get_object_or_404(self.parent_model, pk=pk)
|
parent = get_object_or_404(self.parent_model, pk=pk)
|
||||||
|
@ -109,7 +109,6 @@ class ClusterListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class ClusterView(PermissionRequiredMixin, View):
|
class ClusterView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'virtualization.view_cluster'
|
permission_required = 'virtualization.view_cluster'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
cluster = get_object_or_404(Cluster, pk=pk)
|
cluster = get_object_or_404(Cluster, pk=pk)
|
||||||
@ -172,7 +171,6 @@ class ClusterAddDevicesView(PermissionRequiredMixin, View):
|
|||||||
form = forms.ClusterAddDevicesForm
|
form = forms.ClusterAddDevicesForm
|
||||||
template_name = 'virtualization/cluster_add_devices.html'
|
template_name = 'virtualization/cluster_add_devices.html'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
cluster = get_object_or_404(Cluster, pk=pk)
|
cluster = get_object_or_404(Cluster, pk=pk)
|
||||||
@ -268,7 +266,6 @@ class VirtualMachineListView(PermissionRequiredMixin, ObjectListView):
|
|||||||
class VirtualMachineView(PermissionRequiredMixin, View):
|
class VirtualMachineView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'virtualization.view_virtualmachine'
|
permission_required = 'virtualization.view_virtualmachine'
|
||||||
|
|
||||||
@method_decorator(cache_page(settings.CACHE_TIMEOUT))
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
virtualmachine = get_object_or_404(VirtualMachine.objects.select_related('tenant__group'), pk=pk)
|
virtualmachine = get_object_or_404(VirtualMachine.objects.select_related('tenant__group'), pk=pk)
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
Django>=2.2,<2.3
|
Django>=2.2,<2.3
|
||||||
|
django-cacheops==4.1
|
||||||
django-cors-headers==2.5.2
|
django-cors-headers==2.5.2
|
||||||
django-debug-toolbar==1.11
|
django-debug-toolbar==1.11
|
||||||
django-filter==2.1.0
|
django-filter==2.1.0
|
||||||
django-mptt==0.9.1
|
django-mptt==0.9.1
|
||||||
django-redis==4.5.0
|
|
||||||
django-tables2==2.0.6
|
django-tables2==2.0.6
|
||||||
django-taggit==1.1.0
|
django-taggit==1.1.0
|
||||||
django-taggit-serializer==0.1.7
|
django-taggit-serializer==0.1.7
|
||||||
|
Loading…
Reference in New Issue
Block a user