13
13
from django .utils .html import escape
14
14
from django .utils .http import is_safe_url
15
15
from django .utils .safestring import mark_safe
16
+ from django .utils .decorators import method_decorator
17
+ from django .views .decorators .cache import cache_page
16
18
from django .views .generic import View
17
19
18
20
from circuits .models import Circuit
@@ -195,6 +197,7 @@ class SiteListView(PermissionRequiredMixin, ObjectListView):
195
197
class SiteView (PermissionRequiredMixin , View ):
196
198
permission_required = 'dcim.view_site'
197
199
200
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
198
201
def get (self , request , slug ):
199
202
200
203
site = get_object_or_404 (Site .objects .select_related ('region' , 'tenant__group' ), slug = slug )
@@ -353,6 +356,7 @@ class RackElevationListView(PermissionRequiredMixin, View):
353
356
"""
354
357
permission_required = 'dcim.view_rack'
355
358
359
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
356
360
def get (self , request ):
357
361
358
362
racks = Rack .objects .select_related (
@@ -392,6 +396,7 @@ def get(self, request):
392
396
class RackView (PermissionRequiredMixin , View ):
393
397
permission_required = 'dcim.view_rack'
394
398
399
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
395
400
def get (self , request , pk ):
396
401
397
402
rack = get_object_or_404 (Rack .objects .select_related ('site__region' , 'tenant__group' , 'group' , 'role' ), pk = pk )
@@ -570,6 +575,7 @@ class DeviceTypeListView(PermissionRequiredMixin, ObjectListView):
570
575
class DeviceTypeView (PermissionRequiredMixin , View ):
571
576
permission_required = 'dcim.view_devicetype'
572
577
578
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
573
579
def get (self , request , pk ):
574
580
575
581
devicetype = get_object_or_404 (DeviceType , pk = pk )
@@ -910,6 +916,7 @@ class DeviceListView(PermissionRequiredMixin, ObjectListView):
910
916
class DeviceView (PermissionRequiredMixin , View ):
911
917
permission_required = 'dcim.view_device'
912
918
919
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
913
920
def get (self , request , pk ):
914
921
915
922
device = get_object_or_404 (Device .objects .select_related (
@@ -991,6 +998,7 @@ def get(self, request, pk):
991
998
class DeviceInventoryView (PermissionRequiredMixin , View ):
992
999
permission_required = 'dcim.view_device'
993
1000
1001
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
994
1002
def get (self , request , pk ):
995
1003
996
1004
device = get_object_or_404 (Device , pk = pk )
@@ -1012,6 +1020,7 @@ def get(self, request, pk):
1012
1020
class DeviceStatusView (PermissionRequiredMixin , View ):
1013
1021
permission_required = ('dcim.view_device' , 'dcim.napalm_read' )
1014
1022
1023
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1015
1024
def get (self , request , pk ):
1016
1025
1017
1026
device = get_object_or_404 (Device , pk = pk )
@@ -1025,6 +1034,7 @@ def get(self, request, pk):
1025
1034
class DeviceLLDPNeighborsView (PermissionRequiredMixin , View ):
1026
1035
permission_required = ('dcim.view_device' , 'dcim.napalm_read' )
1027
1036
1037
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1028
1038
def get (self , request , pk ):
1029
1039
1030
1040
device = get_object_or_404 (Device , pk = pk )
@@ -1042,6 +1052,7 @@ def get(self, request, pk):
1042
1052
class DeviceConfigView (PermissionRequiredMixin , View ):
1043
1053
permission_required = ('dcim.view_device' , 'dcim.napalm_read' )
1044
1054
1055
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1045
1056
def get (self , request , pk ):
1046
1057
1047
1058
device = get_object_or_404 (Device , pk = pk )
@@ -1279,6 +1290,7 @@ class PowerOutletBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
1279
1290
class InterfaceView (PermissionRequiredMixin , View ):
1280
1291
permission_required = 'dcim.view_interface'
1281
1292
1293
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1282
1294
def get (self , request , pk ):
1283
1295
1284
1296
interface = get_object_or_404 (Interface , pk = pk )
@@ -1499,6 +1511,7 @@ class DeviceBayDeleteView(PermissionRequiredMixin, ObjectDeleteView):
1499
1511
class DeviceBayPopulateView (PermissionRequiredMixin , View ):
1500
1512
permission_required = 'dcim.change_devicebay'
1501
1513
1514
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1502
1515
def get (self , request , pk ):
1503
1516
1504
1517
device_bay = get_object_or_404 (DeviceBay , pk = pk )
@@ -1533,6 +1546,7 @@ def post(self, request, pk):
1533
1546
class DeviceBayDepopulateView (PermissionRequiredMixin , View ):
1534
1547
permission_required = 'dcim.change_devicebay'
1535
1548
1549
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1536
1550
def get (self , request , pk ):
1537
1551
1538
1552
device_bay = get_object_or_404 (DeviceBay , pk = pk )
@@ -1672,6 +1686,7 @@ class CableListView(PermissionRequiredMixin, ObjectListView):
1672
1686
class CableView (PermissionRequiredMixin , View ):
1673
1687
permission_required = 'dcim.view_cable'
1674
1688
1689
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1675
1690
def get (self , request , pk ):
1676
1691
1677
1692
cable = get_object_or_404 (Cable , pk = pk )
@@ -1687,6 +1702,7 @@ class CableTraceView(PermissionRequiredMixin, View):
1687
1702
"""
1688
1703
permission_required = 'dcim.view_cable'
1689
1704
1705
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1690
1706
def get (self , request , model , pk ):
1691
1707
1692
1708
obj = get_object_or_404 (model , pk = pk )
@@ -1726,6 +1742,7 @@ def dispatch(self, request, *args, **kwargs):
1726
1742
1727
1743
return super ().dispatch (request , * args , ** kwargs )
1728
1744
1745
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
1729
1746
def get (self , request , * args , ** kwargs ):
1730
1747
1731
1748
# Parse initial data manually to avoid setting field values as lists
@@ -2042,6 +2059,7 @@ def post(self, request):
2042
2059
class VirtualChassisEditView (PermissionRequiredMixin , GetReturnURLMixin , View ):
2043
2060
permission_required = 'dcim.change_virtualchassis'
2044
2061
2062
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
2045
2063
def get (self , request , pk ):
2046
2064
2047
2065
virtual_chassis = get_object_or_404 (VirtualChassis , pk = pk )
@@ -2110,6 +2128,7 @@ class VirtualChassisDeleteView(PermissionRequiredMixin, ObjectDeleteView):
2110
2128
class VirtualChassisAddMemberView (PermissionRequiredMixin , GetReturnURLMixin , View ):
2111
2129
permission_required = 'dcim.change_virtualchassis'
2112
2130
2131
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
2113
2132
def get (self , request , pk ):
2114
2133
2115
2134
virtual_chassis = get_object_or_404 (VirtualChassis , pk = pk )
@@ -2164,6 +2183,7 @@ def post(self, request, pk):
2164
2183
class VirtualChassisRemoveMemberView (PermissionRequiredMixin , GetReturnURLMixin , View ):
2165
2184
permission_required = 'dcim.change_virtualchassis'
2166
2185
2186
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
2167
2187
def get (self , request , pk ):
2168
2188
2169
2189
device = get_object_or_404 (Device , pk = pk , virtual_chassis__isnull = False )
@@ -2227,6 +2247,7 @@ class PowerPanelListView(PermissionRequiredMixin, ObjectListView):
2227
2247
class PowerPanelView (PermissionRequiredMixin , View ):
2228
2248
permission_required = 'dcim.view_powerpanel'
2229
2249
2250
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
2230
2251
def get (self , request , pk ):
2231
2252
2232
2253
powerpanel = get_object_or_404 (PowerPanel .objects .select_related ('site' , 'rack_group' ), pk = pk )
@@ -2296,6 +2317,7 @@ class PowerFeedListView(PermissionRequiredMixin, ObjectListView):
2296
2317
class PowerFeedView (PermissionRequiredMixin , View ):
2297
2318
permission_required = 'dcim.view_powerfeed'
2298
2319
2320
+ @method_decorator (cache_page (settings .CACHE_TIMEOUT ))
2299
2321
def get (self , request , pk ):
2300
2322
2301
2323
powerfeed = get_object_or_404 (PowerFeed .objects .select_related ('power_panel' , 'rack' ), pk = pk )
0 commit comments