1
0
Fork 0
mirror of synced 2024-06-27 18:40:52 +12:00

healthcheck endpoint

This commit is contained in:
Igor Rzegocki 2021-10-03 19:12:03 +02:00
parent 63693bdc77
commit 05de1c9fe6
No known key found for this signature in database
GPG key ID: DBF5E35526B27548
2 changed files with 24 additions and 7 deletions

View file

@ -6,7 +6,7 @@ from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf import settings from django.conf import settings
from django.views.generic.base import RedirectView from django.views.generic.base import RedirectView
from core.views import HomepageView, SnapshotView, PublicIndexView, AddView from core.views import HomepageView, SnapshotView, PublicIndexView, AddView, HealthCheckView
# print('DEBUG', settings.DEBUG) # print('DEBUG', settings.DEBUG)
@ -24,14 +24,16 @@ urlpatterns = [
path('admin/core/snapshot/add/', RedirectView.as_view(url='/add/')), path('admin/core/snapshot/add/', RedirectView.as_view(url='/add/')),
path('add/', AddView.as_view(), name='add'), path('add/', AddView.as_view(), name='add'),
path('accounts/login/', RedirectView.as_view(url='/admin/login/')), path('accounts/login/', RedirectView.as_view(url='/admin/login/')),
path('accounts/logout/', RedirectView.as_view(url='/admin/logout/')), path('accounts/logout/', RedirectView.as_view(url='/admin/logout/')),
path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('django.contrib.auth.urls')),
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('health/', HealthCheckView.as_view(), name='healthcheck'),
path('index.html', RedirectView.as_view(url='/')), path('index.html', RedirectView.as_view(url='/')),
path('index.json', static.serve, {'document_root': settings.OUTPUT_DIR, 'path': 'index.json'}), path('index.json', static.serve, {'document_root': settings.OUTPUT_DIR, 'path': 'index.json'}),
path('', HomepageView.as_view(), name='Home'), path('', HomepageView.as_view(), name='Home'),

View file

@ -38,7 +38,7 @@ class HomepageView(View):
if PUBLIC_INDEX: if PUBLIC_INDEX:
return redirect('/public') return redirect('/public')
return redirect(f'/admin/login/?next={request.path}') return redirect(f'/admin/login/?next={request.path}')
@ -205,7 +205,7 @@ class SnapshotView(View):
content_type="text/html", content_type="text/html",
status=404, status=404,
) )
class PublicIndexView(ListView): class PublicIndexView(ListView):
template_name = 'public_index.html' template_name = 'public_index.html'
@ -220,7 +220,7 @@ class PublicIndexView(ListView):
'FOOTER_INFO': FOOTER_INFO, 'FOOTER_INFO': FOOTER_INFO,
} }
def get_queryset(self, **kwargs): def get_queryset(self, **kwargs):
qs = super().get_queryset(**kwargs) qs = super().get_queryset(**kwargs)
query = self.request.GET.get('q') query = self.request.GET.get('q')
if query and query.strip(): if query and query.strip():
@ -249,7 +249,7 @@ class AddView(UserPassesTestMixin, FormView):
url = self.request.GET.get('url', None) url = self.request.GET.get('url', None)
if url: if url:
return {'url': url if '://' in url else f'https://{url}'} return {'url': url if '://' in url else f'https://{url}'}
return super().get_initial() return super().get_initial()
def test_func(self): def test_func(self):
@ -295,3 +295,18 @@ class AddView(UserPassesTestMixin, FormView):
"form": AddLinkForm() "form": AddLinkForm()
}) })
return render(template_name=self.template_name, request=self.request, context=context) return render(template_name=self.template_name, request=self.request, context=context)
class HealthCheckView(View):
"""
A Django view that renders plain text "OK" for service discovery tools
"""
def get(self, request):
"""
Handle a GET request
"""
return HttpResponse(
'OK',
content_type='text/plain',
status=200
)