feat: basic template

This commit is contained in:
eneller
2025-03-16 11:53:21 +01:00
parent bc8c4f61c7
commit 677e85a0f7
3 changed files with 90 additions and 7 deletions

View File

@@ -54,7 +54,9 @@ ROOT_URLCONF = "epub2go_web.urls"
TEMPLATES = [ TEMPLATES = [
{ {
"BACKEND": "django.template.backends.django.DjangoTemplates", "BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [], "DIRS": [
'epub2go_web/templates/'
],
"APP_DIRS": True, "APP_DIRS": True,
"OPTIONS": { "OPTIONS": {
"context_processors": [ "context_processors": [
@@ -73,12 +75,12 @@ WSGI_APPLICATION = "epub2go_web.wsgi.application"
# Database # Database
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases # https://docs.djangoproject.com/en/5.1/ref/settings/#databases
DATABASES = { #DATABASES = {
"default": { # "default": {
"ENGINE": "django.db.backends.sqlite3", # "ENGINE": "django.db.backends.sqlite3",
"NAME": BASE_DIR / "db.sqlite3", # "NAME": BASE_DIR / "db.sqlite3",
} # }
} #}
# Password validation # Password validation

View File

@@ -0,0 +1,63 @@
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<header>
<h1>{{ title }}</h1>
<search>
<form onsubmit="submitSearch(event)">
<input type="su" id="searchInput" placeholder="Search">
</form>
</search>
</header>
<table id="table">
{% for item in items %}
<tr>
<td class="table-data">
<a href= {{ item.url }}>
{{ item.title }}
</a>
</td>
<td>Download</td>
</tr>
{% endfor %}
</table>
<footer>
<a href="javascript:void(window.open('./?t='+encodeURIComponent(window.location.toString())))">Bookmarklet</a> <!--TODO fix domain part as variable-->
<a href="https://github.com/eneller/epub2go.py">GitHub</a>
</footer>
</body>
</html>
<script>
// get document references
const params = new URLSearchParams(window.location.search);
const searchInput = document.getElementById('searchInput');
const table = document.getElementById('table');
const table_r = Array.from(table.getElementsByTagName('tr'));
// allow search from url parameter
let searchParam = params.get('s');
if (searchParam){
searchInput.value = searchParam;
search(searchParam);
}
function submitSearch(event){
event.preventDefault();
search();
}
function search(searchStr = searchInput.value){
function showMatch(tr){
// match search with list
let searchSuccess = Array.from(tr.getElementsByClassName('table-data')).map(e => e.textContent)
.join(' ')
.indexOf(searchStr) > -1;
if (searchSuccess) tr.style.display = "";
else tr.style.display = "none";
}
table_r.map(showMatch, table_r);
}
</script>

View File

@@ -17,7 +17,25 @@ Including another URLconf
from django.contrib import admin from django.contrib import admin
from django.urls import path from django.urls import path
from django.http import HttpRequest, HttpResponse
from django.shortcuts import render, redirect
def root(request:HttpRequest):
title = 'epub2go'
targetParam = request.GET.get('t', None)
if targetParam is not None:
getEpub(targetParam)
return render(request, 'index.html', locals())
urlpatterns = [ urlpatterns = [
path("admin/", admin.site.urls), path("admin/", admin.site.urls),
path('',root, name='root')
] ]
def getEpub(param):
# TODO validate / sanitize input
# TODO check for existing file and age
# TODO download
# TODO redirect to loading page
# TODO redirect to download page
raise NotImplementedError