- Add some styles and fonts - views and templates for landing page and polls subpagemain
parent
53ad0e8ce6
commit
43eefd6bc1
@ -0,0 +1,11 @@
|
||||
{% extends "base_template.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div hx-get="{% url 'polls' %}"
|
||||
hx-trigger="load"
|
||||
hx-swap="outerHTML"
|
||||
>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
@ -0,0 +1,11 @@
|
||||
from django.urls import path
|
||||
|
||||
from landing.views import landing
|
||||
|
||||
urlpatterns = [
|
||||
path(
|
||||
"",
|
||||
landing,
|
||||
name="landing",
|
||||
),
|
||||
]
|
@ -1,3 +1,14 @@
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
|
||||
@login_required
|
||||
def landing(
|
||||
request,
|
||||
):
|
||||
context = {}
|
||||
return render(
|
||||
request,
|
||||
template_name="landing/landing.html",
|
||||
context=context,
|
||||
)
|
||||
|
@ -0,0 +1,14 @@
|
||||
<div>
|
||||
<div>
|
||||
{{ poll.question }}
|
||||
</div>
|
||||
<div>
|
||||
{% for option in options %}
|
||||
<div>
|
||||
Option: {{ option.text }}
|
||||
</div>
|
||||
{% empty %}
|
||||
No options defined for Question!
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,6 @@
|
||||
<div class="poll-entry"
|
||||
hx-target="#poll-details"
|
||||
hx-get="{% url 'poll-details' poll.pk %}"
|
||||
>
|
||||
{{ poll.question }}
|
||||
</div>
|
@ -0,0 +1,12 @@
|
||||
<div class="polls">
|
||||
<div class="polls-list">
|
||||
{% for poll in polls %}
|
||||
{% include "polls/poll_entry.html" with poll=poll %}
|
||||
{% empty %}
|
||||
No Polls! Define one in the Admin Panel.
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div id="poll-details">
|
||||
Select a Poll on the Left
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,16 @@
|
||||
from django.urls import path
|
||||
|
||||
from polls.views import polls, poll_details
|
||||
|
||||
urlpatterns = [
|
||||
path(
|
||||
"",
|
||||
polls,
|
||||
name="polls",
|
||||
),
|
||||
path(
|
||||
"<int:poll_id>",
|
||||
poll_details,
|
||||
name="poll-details",
|
||||
),
|
||||
]
|
@ -1,3 +1,40 @@
|
||||
from django.shortcuts import render
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
|
||||
# Create your views here.
|
||||
from polls.models import Poll, Option
|
||||
|
||||
|
||||
def polls(
|
||||
request,
|
||||
):
|
||||
context = {}
|
||||
|
||||
context["polls"] = Poll.objects.all()
|
||||
|
||||
return render(
|
||||
request,
|
||||
template_name="polls/polls.html",
|
||||
context=context,
|
||||
)
|
||||
|
||||
|
||||
def poll_details(
|
||||
request,
|
||||
poll_id,
|
||||
):
|
||||
poll = get_object_or_404(
|
||||
Poll,
|
||||
pk=poll_id,
|
||||
)
|
||||
|
||||
context = {}
|
||||
|
||||
context["poll"] = poll
|
||||
context["options"] = Option.objects.filter(
|
||||
poll=poll,
|
||||
)
|
||||
|
||||
return render(
|
||||
request,
|
||||
template_name="polls/poll_details.html",
|
||||
context=context,
|
||||
)
|
||||
|
@ -0,0 +1,96 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Kanit:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
|
||||
|
||||
.h0 {
|
||||
font-size: 48px;
|
||||
}
|
||||
|
||||
.kanit-thin {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-extralight {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 200;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-light {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-regular {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-medium {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-semibold {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-bold {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-extrabold {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 800;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-black {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
}
|
||||
.kanit-thin-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 100;
|
||||
font-style: italic;
|
||||
}
|
||||
.kanit-extralight-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 200;
|
||||
font-style: italic;
|
||||
}
|
||||
.kanit-light-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
}
|
||||
.kanit-regular-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
.kanit-medium-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 500;
|
||||
font-style: italic;
|
||||
}
|
||||
.kanit-semibold-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
}
|
||||
.kanit-bold-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
.kanit-extrabold-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 800;
|
||||
font-style: italic;
|
||||
}
|
||||
.kanit-black-italic {
|
||||
font-family: "Kanit", sans-serif;
|
||||
font-weight: 900;
|
||||
font-style: italic;
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
@import url("https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css");
|
||||
* {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
html,
|
||||
body {
|
||||
margin: 0px;
|
||||
height: 100%;
|
||||
}
|
||||
body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.title {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.content {
|
||||
flex-grow: 1;
|
||||
z-index: 2;
|
||||
height: auto;
|
||||
min-height: 400px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
background-color: rgb(225, 234, 214);
|
||||
border-radius: 16px;
|
||||
box-shadow: 0px 5px 50px #e5e0dd;
|
||||
padding: 16px;
|
||||
margin-bottom: 64px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
footer {
|
||||
z-index: 3;
|
||||
position: fixed;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
display: flex;
|
||||
height: 64px;
|
||||
padding: 8px 16px;
|
||||
align-items: center;
|
||||
background-color: rgb(250, 234, 234);
|
||||
}
|
||||
|
||||
.polls {
|
||||
display: grid;
|
||||
grid-template-rows: 100%;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
Loading…
Reference in new issue