Skip to content
Snippets Groups Projects
Commit 74b75a15 authored by Alexander Pace's avatar Alexander Pace
Browse files

attempt #2 at turning off api caching

parent 4311c6b2
No related branches found
No related tags found
1 merge request!46Refreshed look and feel
Pipeline #103400 passed
from django.conf.urls import url, include
# Test to disable caching on the /api/ part of the site.
# From django-snippets:
# https://djangosnippets.org/snippets/355/
from django.views.decorators.cache import never_cache
from .v1 import urls as v1_urls
from .v2 import urls as v2_urls
app_name = 'api'
def never_cache_patterns(prefix, *args):
raise ValueError(prefix,args)
pattern_list = [], tterns,
for t in args:
if isinstance(t, (list, tuple)):
t = url(prefix=prefix, *t)
elif isinstance(t, RegexURLPattern):
t.add_prefix(prefix)
t._callback = never_cache(t.callback)
pattern_list.append(t)
return pattern_list
#urlpatterns = [
# url(r'^', include((never_cache(v1_urls), 'default'))),
# url(r'^v1/', include((never_cache(v1_urls), 'v1'))),
# url(r'^v2/', include((never_cache(v2_urls), 'v2'))),
#]
#urlpatterns = [
# url(r'^', include((v1_urls, 'default'))),
# url(r'^v1/', include((v1_urls, 'v1'))),
# url(r'^v2/', include((v2_urls, 'v2'))),
#]
urlpatterns = [
url(r'^', include((v1_urls, 'default'))),
url(r'^v1/', never_cache(include((v1_urls, 'v1')))),
url(r'^v2/', never_cache(include((v2_urls, 'v2')))),
url(r'^v1/', include((v1_urls, 'v1'))),
url(r'^v2/', include((v2_urls, 'v2'))),
]
from django.conf.urls import url, include
# Turn off api caching:
from django.views.decorators.cache import never_cache
from .views import *
......@@ -6,76 +8,76 @@ from .views import *
urlpatterns = [
# Event Resources
# events/[{graceid}[/{version}]]
url(r'^$', EventList.as_view(), name='event-list'),
url(r'^(?P<graceid>[GEHMT]\d+)$', EventDetail.as_view(),
url(r'^$', never_cache(EventList.as_view()), name='event-list'),
url(r'^(?P<graceid>[GEHMT]\d+)$', never_cache(EventDetail.as_view()),
name='event-detail'),
url(r'^(?P<graceid>[GEHMT]\d+)/update-grbevent/$',
GrbEventPatchView.as_view(), name='update-grbevent'),
never_cache(GrbEventPatchView.as_view()), name='update-grbevent'),
# Event Log Resources
# events/{graceid}/logs/[{logid}]
url(r'^(?P<graceid>[GEHMT]\d+)/log/$', EventLogList.as_view(),
url(r'^(?P<graceid>[GEHMT]\d+)/log/$', never_cache(EventLogList.as_view()),
name='eventlog-list'),
url(r'^(?P<graceid>[GEHMT]\d+)/log/(?P<n>\d+)$',
EventLogDetail.as_view(), name='eventlog-detail'),
never_cache(EventLogDetail.as_view()), name='eventlog-detail'),
# VOEvent Resources
# events/{graceid}/voevent/[{serial_number}]
url(r'^(?P<graceid>[GEHMT]\d+)/voevent/$', VOEventList.as_view(),
url(r'^(?P<graceid>[GEHMT]\d+)/voevent/$', never_cache(VOEventList.as_view()),
name='voevent-list'),
url(r'^(?P<graceid>[GEHMT]\d+)/voevent/(?P<n>\d+)$',
VOEventDetail.as_view(), name='voevent-detail'),
never_cache(VOEventDetail.as_view()), name='voevent-detail'),
# EMBB Resources
# events/{graceid}/logs/[{logid}]
url(r'^(?P<graceid>[GEHMT]\d+)/embb/$', EMBBEventLogList.as_view(),
url(r'^(?P<graceid>[GEHMT]\d+)/embb/$', never_cache(EMBBEventLogList.as_view()),
name='embbeventlog-list'),
url(r'^(?P<graceid>[GEHMT]\d+)/embb/(?P<n>\d+)$',
EMBBEventLogDetail.as_view(), name='embbeventlog-detail'),
never_cache(EMBBEventLogDetail.as_view()), name='embbeventlog-detail'),
url(r'^(?P<graceid>[GEHMT]\d+)/emobservation/$',
EMObservationList.as_view(), name='emobservation-list'),
never_cache(EMObservationList.as_view()), name='emobservation-list'),
url(r'^(?P<graceid>[GEHMT]\d+)/emobservation/(?P<n>\d+)$',
EMObservationDetail.as_view(), name='emobservation-detail'),
never_cache(EMObservationDetail.as_view()), name='emobservation-detail'),
# url(r'(?P<graceid>[GEHMT]\d+)/emobservation/(?P<n>\d+)/emfootprint/$',
# EMFootprintList.as_view(), name='emfootprint-list'),
# url(r'(?P<graceid>[GEHMT]\d+)/emobservation/(?P<n>\d+)/emfootprint/(?P<m>\d+)$',
# EMFootprintDetail.as_view(), name='emfootprint-detail'),
# Tag Resources
url(r'^(?P<graceid>[GEHMT]\d+)/tag/$', EventTagList.as_view(),
url(r'^(?P<graceid>[GEHMT]\d+)/tag/$', never_cache(EventTagList.as_view()),
name='eventtag-list'),
url(r'^(?P<graceid>[GEHMT]\d+)/tag/(?P<tagname>.+)$',
EventTagDetail.as_view(), name='eventtag-detail'),
never_cache(EventTagDetail.as_view()), name='eventtag-detail'),
url(r'^(?P<graceid>[GEHMT]\d+)/log/(?P<n>\d+)/tag/$',
EventLogTagList.as_view(), name='eventlogtag-list'),
never_cache(EventLogTagList.as_view()), name='eventlogtag-list'),
url(r'^(?P<graceid>[GEHMT]\d+)/log/(?P<n>\d+)/tag/(?P<tagname>.+)$',
EventLogTagDetail.as_view(), name='eventlogtag-detail'),
never_cache(EventLogTagDetail.as_view()), name='eventlogtag-detail'),
# Permission Resources
url(r'^(?P<graceid>[GEHMT]\d+)/perms/$',
EventPermissionList.as_view(), name='eventpermission-list'),
never_cache(EventPermissionList.as_view()), name='eventpermission-list'),
url(r'^(?P<graceid>[GEHMT]\d+)/perms/(?P<group_name>.+)/$',
GroupEventPermissionList.as_view(), name='groupeventpermission-list'),
never_cache(GroupEventPermissionList.as_view()), name='groupeventpermission-list'),
url(r'^(?P<graceid>[GEHMT]\d+)/perms/(?P<group_name>.+)/(?P<perm_shortname>\w+)$',
GroupEventPermissionDetail.as_view(), name='groupeventpermission-detail'),
never_cache(GroupEventPermissionDetail.as_view()), name='groupeventpermission-detail'),
# Event File Resources
# events/{graceid}/files/[{filename}[/{version}]]
url(r'^(?P<graceid>\w[\d]+)/files/(?P<filename>.+)?$',
Files.as_view(), name="files"),
never_cache(Files.as_view()), name="files"),
# Event Labels
# events/{graceid}/labels/[{label}]
url(r'^(?P<graceid>\w[\d]+)/labels/(?P<label>.+)?$',
EventLabel.as_view(), name="labels"),
never_cache(EventLabel.as_view()), name="labels"),
# Event Neighbors
# events/{graceid}/neighbors/[?delta=(N|(N,N))]
url(r'^(?P<graceid>\w[\d]+)/neighbors/$', EventNeighbors.as_view(),
url(r'^(?P<graceid>\w[\d]+)/neighbors/$', never_cache(EventNeighbors.as_view()),
name="neighbors"),
# Operator Signoff Resources
url(r'^(?P<graceid>[GEHMT]\d+)/signoff/$',
OperatorSignoffList.as_view(), name='signoff-list'),
never_cache(OperatorSignoffList.as_view()), name='signoff-list'),
]
from django.conf.urls import url, include
from django.views.decorators.cache import never_cache
from .views import *
from .settings import SUPEREVENT_LOOKUP_REGEX
......@@ -13,94 +14,94 @@ SUPEREVENT_DETAIL_ROOT = '(?P<{lookup_url_kwarg}>{regex})'.format(
# These are included under a superevent's id URL prefix (see below)
suburlpatterns = [
# Superevent detail and update
url(r'^$', SupereventViewSet.as_view({'get': 'retrieve',
'patch': 'partial_update'}), name='superevent-detail'),
url(r'^$', never_cache(SupereventViewSet.as_view({'get': 'retrieve',
'patch': 'partial_update'})), name='superevent-detail'),
# Superevent GW confirmation
url(r'^confirm-as-gw/$', SupereventViewSet.as_view(
{'post': 'confirm_as_gw'}), name='superevent-confirm-as-gw'),
url(r'^confirm-as-gw/$', never_cache(SupereventViewSet.as_view(
{'post': 'confirm_as_gw'})), name='superevent-confirm-as-gw'),
# Event list and creation (addition to superevent)
url(r'^events/$', SupereventEventViewSet.as_view({'get': 'list',
'post': 'create'}), name='superevent-event-list'),
url(r'^events/$', never_cache(SupereventEventViewSet.as_view({'get': 'list',
'post': 'create'})), name='superevent-event-list'),
# Event detail and delete (remove from superevent)
url(r'^events/(?P<{lookup_url_kwarg}>[GEHMT]\d+)/$'.format(
lookup_url_kwarg=SupereventEventViewSet.lookup_url_kwarg),
SupereventEventViewSet.as_view({'get': 'retrieve',
'delete': 'destroy'}), name='superevent-event-detail'),
never_cache(SupereventEventViewSet.as_view({'get': 'retrieve',
'delete': 'destroy'})), name='superevent-event-detail'),
# Labelling list and creation
url(r'^labels/$', SupereventLabelViewSet.as_view({'get': 'list',
'post': 'create'}), name='superevent-label-list'),
url(r'^labels/$', never_cache(SupereventLabelViewSet.as_view({'get': 'list',
'post': 'create'})), name='superevent-label-list'),
# Labelling detail and deletion
url(r'^labels/(?P<{lookup_url_kwarg}>.+)/$'.format(lookup_url_kwarg=
SupereventLabelViewSet.lookup_url_kwarg),
SupereventLabelViewSet.as_view({'get': 'retrieve',
'delete': 'destroy'}), name='superevent-label-detail'),
never_cache(SupereventLabelViewSet.as_view({'get': 'retrieve',
'delete': 'destroy'})), name='superevent-label-detail'),
# Log list and creation
url(r'^logs/$', SupereventLogViewSet.as_view({'get': 'list',
'post': 'create'}), name='superevent-log-list'),
url(r'^logs/$', never_cache(SupereventLogViewSet.as_view({'get': 'list',
'post': 'create'})), name='superevent-log-list'),
# Log detail
url(r'^logs/(?P<{lookup_url_kwarg}>\d+)/$'.format(lookup_url_kwarg=
SupereventLogViewSet.lookup_url_kwarg), SupereventLogViewSet.as_view({
'get': 'retrieve'}), name='superevent-log-detail'),
SupereventLogViewSet.lookup_url_kwarg), never_cache(SupereventLogViewSet.as_view({
'get': 'retrieve'})), name='superevent-log-detail'),
# Tag list (for log) and creation (addition of tag to log)
url(r'^logs/(?P<{lookup_url_kwarg}>\d+)/tags/$'.format(
lookup_url_kwarg=SupereventLogViewSet.lookup_url_kwarg),
SupereventLogTagViewSet.as_view({'get': 'list', 'post': 'create'}),
never_cache(SupereventLogTagViewSet.as_view({'get': 'list', 'post': 'create'})),
name='superevent-log-tag-list'),
# Tag detail and deletion (removal of tag from log)
url(r'^logs/(?P<{log_lookup}>\d+)/tags/(?P<{tag_lookup}>.+)/$'.format(
log_lookup=SupereventLogViewSet.lookup_url_kwarg, tag_lookup=
SupereventLogTagViewSet.lookup_url_kwarg),
SupereventLogTagViewSet.as_view({'get': 'retrieve',
'delete': 'destroy'}), name='superevent-log-tag-detail'),
never_cache(SupereventLogTagViewSet.as_view({'get': 'retrieve',
'delete': 'destroy'})), name='superevent-log-tag-detail'),
# File list
url(r'^files/$', SupereventFileViewSet.as_view({'get': 'list',}),
url(r'^files/$', never_cache(SupereventFileViewSet.as_view({'get': 'list',})),
name='superevent-file-list'),
# File detail (download)
url(r'^files/(?P<{lookup_url_kwarg}>.+)$'.format(lookup_url_kwarg=
SupereventFileViewSet.lookup_url_kwarg), SupereventFileViewSet.as_view(
{'get': 'retrieve'}), name='superevent-file-detail'),
SupereventFileViewSet.lookup_url_kwarg), never_cache(SupereventFileViewSet.as_view(
{'get': 'retrieve'})), name='superevent-file-detail'),
# Note: no option for POST since file uploads should be handled
# by writing a log message
# VOEvent list and creation
url(r'^voevents/$', SupereventVOEventViewSet.as_view({'get': 'list',
'post': 'create'}), name='superevent-voevent-list'),
url(r'^voevents/$', never_cache(SupereventVOEventViewSet.as_view({'get': 'list',
'post': 'create'})), name='superevent-voevent-list'),
# VOEvent detail
url(r'^voevents/(?P<{lookup_url_kwarg}>\d+)/$'.format(lookup_url_kwarg=
SupereventVOEventViewSet.lookup_url_kwarg),
SupereventVOEventViewSet.as_view({'get': 'retrieve'}),
never_cache(SupereventVOEventViewSet.as_view({'get': 'retrieve'})),
name='superevent-voevent-detail'),
# EMObservation list and creation
url(r'^emobservations/$', SupereventEMObservationViewSet.as_view(
{'get': 'list', 'post': 'create'}),
url(r'^emobservations/$', never_cache(SupereventEMObservationViewSet.as_view(
{'get': 'list', 'post': 'create'})),
name='superevent-emobservation-list'),
# EMObservation detail
url(r'^emobservations/(?P<{lookup_url_kwarg}>\d+)/$'.format(
lookup_url_kwarg=SupereventEMObservationViewSet.lookup_url_kwarg),
SupereventEMObservationViewSet.as_view({'get': 'retrieve'}),
never_cache(SupereventEMObservationViewSet.as_view({'get': 'retrieve'})),
name='superevent-emobservation-detail'),
# Signoff list and creation
url(r'signoffs/$', SupereventSignoffViewSet.as_view(
{'get': 'list', 'post': 'create'}), name='superevent-signoff-list'),
url(r'signoffs/$', never_cache(SupereventSignoffViewSet.as_view(
{'get': 'list', 'post': 'create'})), name='superevent-signoff-list'),
# Signoff detail
url(r'signoffs/(?P<{lookup_url_kwarg}>.+)/$'.format(lookup_url_kwarg=
SupereventSignoffViewSet.lookup_url_kwarg),
SupereventSignoffViewSet.as_view({'get': 'retrieve',
'patch': 'partial_update', 'delete': 'destroy'}),
never_cache(SupereventSignoffViewSet.as_view({'get': 'retrieve',
'patch': 'partial_update', 'delete': 'destroy'})),
name='superevent-signoff-detail'),
# Permissions list and creation
url(r'permissions/$', SupereventGroupObjectPermissionViewSet.as_view(
{'get': 'list'}), name='superevent-permission-list'),
url(r'permissions/$', never_cache(SupereventGroupObjectPermissionViewSet.as_view(
{'get': 'list'})), name='superevent-permission-list'),
# Permissions modification (expose/hide superevent).
url(r'^permissions/modify/$',
SupereventGroupObjectPermissionViewSet.as_view({'post': 'modify'}),
never_cache(SupereventGroupObjectPermissionViewSet.as_view({'post': 'modify'})),
name='superevent-permission-modify'),
]
......@@ -108,7 +109,7 @@ suburlpatterns = [
urlpatterns = [
# Superevent list and creation
url(r'^$', SupereventViewSet.as_view({'get': 'list', 'post': 'create'}),
url(r'^$', never_cache(SupereventViewSet.as_view({'get': 'list', 'post': 'create'})),
name='superevent-list'),
# All sub-URLs for a single superevent
......
......@@ -8,20 +8,23 @@ from .main.views import GracedbRoot, PerformanceInfo, TagList, UserInfoView, \
from .events import urls as event_urls
from .superevents import urls as superevent_urls
# Turn off api caching:
from django.views.decorators.cache import never_cache
urlpatterns = [
# Root level API resources ------------------------------------------------
# API root
url(r'^$', GracedbRoot.as_view(), name="root"),
url(r'^$', never_cache(GracedbRoot.as_view()), name="root"),
# User information
url(r'^user-info/', UserInfoView.as_view(), name='user-info'),
url(r'^user-info/', never_cache(UserInfoView.as_view()), name='user-info'),
# Tags
url(r'^tag/', TagList.as_view(), name='tag-list'),
url(r'^tag/', never_cache(TagList.as_view()), name='tag-list'),
# Performance stats
url(r'^performance/', PerformanceInfo.as_view(), name='performance-info'),
url(r'^performance/', never_cache(PerformanceInfo.as_view()), name='performance-info'),
# Certificate debugging
#url(r'^cert-debug/', CertDebug.as_view(), name='cert-debug'),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment