Files
tabby-web/backend/tabby/app/views.py

35 lines
1.3 KiB
Python
Raw Normal View History

2021-07-26 17:56:35 +02:00
import fsspec
2021-08-25 01:25:49 +02:00
import os
from fsspec.implementations.local import LocalFileSystem
2021-06-12 13:05:35 +02:00
from django.conf import settings
2021-08-25 01:25:49 +02:00
from django.http.response import FileResponse, HttpResponseNotFound, HttpResponseRedirect
2021-06-12 13:05:35 +02:00
from django.views import static
2021-06-15 23:43:23 +02:00
from rest_framework.views import APIView
2021-07-26 17:56:35 +02:00
from urllib.parse import urlparse
2021-06-12 13:05:35 +02:00
class IndexView(APIView):
def get(self, request, format=None):
2021-07-28 22:14:34 +02:00
if settings.FRONTEND_URL:
return HttpResponseRedirect(settings.FRONTEND_URL)
2021-07-26 17:56:35 +02:00
return static.serve(request, 'index.html', document_root=str(settings.FRONTEND_BUILD_DIR))
2021-06-14 23:00:05 +02:00
class TerminalView(APIView):
def get(self, request, format=None):
2021-07-26 17:56:35 +02:00
response = static.serve(request, 'terminal.html', document_root=str(settings.FRONTEND_BUILD_DIR))
2021-06-14 23:00:05 +02:00
response['X-Frame-Options'] = 'SAMEORIGIN'
return response
2021-06-12 13:05:35 +02:00
class AppDistView(APIView):
2021-06-15 23:43:23 +02:00
def get(self, request, version=None, path=None, format=None):
2021-07-26 17:56:35 +02:00
fs = fsspec.filesystem(urlparse(settings.APP_DIST_STORAGE).scheme)
url = f'{settings.APP_DIST_STORAGE}/{version}/{path}'
2021-08-25 01:25:49 +02:00
if isinstance(fs, LocalFileSystem):
if not fs.exists(url):
return HttpResponseNotFound()
return FileResponse(fs.open(url), filename=os.path.basename(url))
else:
return HttpResponseRedirect(fs.url(url))