diff --git a/test/requirements.txt b/test/requirements.txt new file mode 100644 index 0000000..55b033e --- /dev/null +++ b/test/requirements.txt @@ -0,0 +1 @@ +pytest \ No newline at end of file diff --git a/test/test_img_replace.py b/test/test_img_replace.py new file mode 100644 index 0000000..f7dc943 --- /dev/null +++ b/test/test_img_replace.py @@ -0,0 +1,14 @@ +import markdown +from bs4 import BeautifulSoup + +md_input = """This is an image of a tree: ![tree image](tree_img) +""" + +def test_image_replace(): + + soup = BeautifulSoup(markdown.markdown(md_input), features="html.parser") + + for img in soup.find_all('img'): + img["src"] = "blah" + + print(soup.prettify()) \ No newline at end of file diff --git a/wedding_site/primary/urls.py b/wedding_site/primary/urls.py index 436bcbe..2306e19 100644 --- a/wedding_site/primary/urls.py +++ b/wedding_site/primary/urls.py @@ -5,8 +5,12 @@ from . import views urlpatterns = [ path("", views.index, name="index"), + path('login', views.login_view, name="login"), path('schedule', views.schedule, name="schedule"), path("thingstodo", views.things_to_do, name="thingstodo"), path("travel", views.travel, name="travel"), + path("accommodation", views.accommodation, name="accommodation"), + path("landing", views.landing, name="landing"), + path("faq", views.faq, name="faq"), ] diff --git a/wedding_site/primary/views.py b/wedding_site/primary/views.py index a2ea822..c5b39cf 100644 --- a/wedding_site/primary/views.py +++ b/wedding_site/primary/views.py @@ -1,12 +1,15 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect from django.http import HttpResponse from django.template import Template from django.template import Context +from django.contrib.auth import authenticate, login +from django.contrib.auth.decorators import login_required + import markdown from bs4 import BeautifulSoup -from .models import Site, Page +from .models import Site, Page, Image _TEMPLATE = """ @@ -42,6 +45,19 @@ def index(request): soup = BeautifulSoup(template.render(context)) return HttpResponse(soup.prettify()) +def login_view(request): + token = request.POST["token"] + user = authenticate(request, username="guest", password=token) + if user is not None: + login(request, user) + return redirect("landing") + else: + return redirect("index") + +@login_required(login_url="/") +def landing(request): + return get_page("Landing") + def get_page_header(site: Site): pages = site.page_set.filter(navigable=True) @@ -66,13 +82,30 @@ def get_page(name:str): content = template.render(context) soup = BeautifulSoup(content, features="html.parser") + + for img in soup.find_all('img'): + img_name = img["src"] + img["src"] = Image.objects.get(name=img_name).content.url + return HttpResponse(soup.prettify()) +@login_required(login_url="/") def schedule(request): return get_page("Schedule") +@login_required(login_url="/") def things_to_do(request): return get_page("ThingsToDo") +@login_required(login_url="/") def travel(request): - return get_page("Travel") \ No newline at end of file + return get_page("Travel") + +@login_required(login_url="/") +def faq(request): + return get_page("Faq") + +@login_required(login_url="/") +def accommodation(request): + return get_page("Accomodation") + diff --git a/wedding_site/wedding_site/settings.py b/wedding_site/wedding_site/settings.py index 022b19a..c43b4ba 100644 --- a/wedding_site/wedding_site/settings.py +++ b/wedding_site/wedding_site/settings.py @@ -44,7 +44,7 @@ MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', + #'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', diff --git a/wedding_site/wedding_site/urls.py b/wedding_site/wedding_site/urls.py index 2e78c8d..6528297 100644 --- a/wedding_site/wedding_site/urls.py +++ b/wedding_site/wedding_site/urls.py @@ -16,8 +16,10 @@ Including another URLconf """ from django.contrib import admin from django.urls import path, include +from django.conf import settings +from django.conf.urls.static import static urlpatterns = [ path("", include('primary.urls')), path('admin/', admin.site.urls), -] +] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)