feat: basic FileResponse

This commit is contained in:
eneller committed 2025-03-16 16:09:32 +01:00
1 parent 0589148b6f
commit 5a57693cb3
2 files changed
+17 -5

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
# epub2go-web
A simple Website to provide a `NNI (Non-Nerd Interface)` to [epub2go.py](https://github.com/eneller/epub2go.py).
+15 -5
View File
@@ -1,21 +1,31 @@
from django.shortcuts import render from django.shortcuts import render
from django.http import HttpRequest, HttpResponse from django.http import HttpRequest, HttpResponse, FileResponse
from django.conf import settings
from epub2go.convert import get_all_books, Book from epub2go.convert import get_all_books, Book, GBConvert
import os
def index(request: HttpRequest): def index(request: HttpRequest):
title = 'epub2go' title = 'epub2go'
targetParam = request.GET.get('t', None) targetParam = request.GET.get('t', None)
books = get_all_books() books = get_all_books()
if targetParam is not None: if targetParam:
getEpub(targetParam) epub = getEpub(targetParam)
fname = os.path.join(settings.MEDIA_ROOT, epub)
file = open(fname, 'rb')
response = FileResponse(file)
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = f'attachment; filename="{os.path.basename(fname)}"'
return response
return render(request, 'index.html', locals()) return render(request, 'index.html', locals())
def getEpub(param): def getEpub(param):
print(param) print(param)
# TODO validate / sanitize input # TODO validate / sanitize input
# TODO check for existing file and age # TODO check for existing file and age
# TODO download #GBConvert(param,downloaddir=settings.MEDIA_ROOT).run()
# TODO redirect to loading page # TODO redirect to loading page
# TODO redirect to download page # TODO redirect to download page
raise NotImplementedError raise NotImplementedError