Compare commits
No commits in common. "ca1bc12e889c466c8d516fd54f0dc1ee749a53d9" and "8cbb1baf27347bfb34738d1d795e1733983d2a3d" have entirely different histories.
ca1bc12e88
...
8cbb1baf27
@ -7,11 +7,15 @@ from django import forms
|
||||
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
|
||||
from .models import Explorer, Place, PlaceImage, Voucher
|
||||
|
||||
class VoucherVerifyForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Voucher
|
||||
fields = ['code']
|
||||
|
||||
class ExplorerCreationForm(UserCreationForm):
|
||||
class Meta:
|
||||
model = Explorer
|
||||
fields = ('username', 'email')
|
||||
voucher = forms.CharField(max_length=10)
|
||||
|
||||
class ExplorerChangeForm(UserChangeForm):
|
||||
class Meta:
|
||||
|
@ -1,11 +1,3 @@
|
||||
@font-face {
|
||||
font-family: Crimson;
|
||||
src: url("fonts/Crimson/CrimsonText-Regular.ttf"), url("fonts/Crimson/CrimsonText-Bold.ttf"), url("fonts/Crimson/CrimsonText-Italic.ttf"); }
|
||||
|
||||
@font-face {
|
||||
font-family: Montserrat;
|
||||
src: url("fonts/Montserrat/Montserrat-Regular.otf"), url("fonts/Montserrat/Montserrat-Bold.otf"), url("fonts/Montserrat/Montserrat-Italic.otf"); }
|
||||
|
||||
.LP-Link {
|
||||
color: #565656;
|
||||
text-decoration: none;
|
||||
@ -21,7 +13,7 @@
|
||||
display: inline; }
|
||||
|
||||
.LP-Headline {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
font-family: "Trebuchet MS", Helvetica, sans-serif;
|
||||
color: #565656;
|
||||
font-size: 1.7rem;
|
||||
padding-top: 0px;
|
||||
@ -35,9 +27,9 @@
|
||||
.LP-Headline--inline {
|
||||
display: inline; }
|
||||
|
||||
.LP-Paragraph {
|
||||
.LP-Text {
|
||||
color: black;
|
||||
font-family: Crimson, Times, serif;
|
||||
font-family: "Times New Roman", Times, serif;
|
||||
font-size: 1.2rem; }
|
||||
|
||||
.LP-Icon {
|
||||
@ -53,78 +45,6 @@
|
||||
.LP-Icon__List .LP-Icon__Item {
|
||||
padding: 0 3px; }
|
||||
|
||||
.LP-Button {
|
||||
background-color: #C09F80;
|
||||
color: #565656;
|
||||
border: none;
|
||||
padding: 8px 14px;
|
||||
border-radius: 2px;
|
||||
font-weight: bold; }
|
||||
.LP-Button:active {
|
||||
background-color: #76323F;
|
||||
color: #C09F80; }
|
||||
|
||||
.LP-Form .LP-Form__Checkbox {
|
||||
display: none; }
|
||||
|
||||
.LP-Form .LP-Form__CheckBox__CheckMark {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
border: 1px solid black;
|
||||
padding: 0 calc(.5em + 2px);
|
||||
margin-right: .7em; }
|
||||
|
||||
.LP-Input {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: -30px;
|
||||
padding: 10px 0; }
|
||||
.LP-Input .LP-Input__Field {
|
||||
border: none;
|
||||
border-bottom: 1px solid #565656;
|
||||
padding: 8px;
|
||||
margin-bottom: 30px; }
|
||||
.LP-Input .LP-Input__Field:focus, .LP-Input .LP-Input__Field:active {
|
||||
margin-bottom: 29px;
|
||||
border-bottom: 2px solid #76323F;
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 3px 3px 0 0; }
|
||||
.LP-Input .LP-Input__Label {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
font-size: 16px; }
|
||||
.LP-Input .LP-Input__Message {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
font-style: italic;
|
||||
font-size: 13px;
|
||||
padding: 3px;
|
||||
position: relative;
|
||||
top: -30px; }
|
||||
.LP-Input .LP-Input__Message:before {
|
||||
content: '* '; }
|
||||
.LP-Input--error .LP-Input__Field {
|
||||
margin-bottom: 25px;
|
||||
border-bottom: 2px solid #76323F;
|
||||
margin-bottom: 29px; }
|
||||
.LP-Input--error .LP-Input__Message {
|
||||
color: #76323F; }
|
||||
.LP-Input--disabled .LP-Input__Field, .LP-Input--disabled .LP-Input__Field:disabled {
|
||||
background-color: transparent;
|
||||
border-bottom: 1px dashed #565656;
|
||||
cursor: not-allowed; }
|
||||
label + .LP-Input--disabled .LP-Input__Field, label + .LP-Input--disabled .LP-Input__Field:disabled {
|
||||
color: red; }
|
||||
.LP-Input--disabled .LP-Input__Field:focus, .LP-Input--disabled .LP-Input__Field:active, .LP-Input--disabled .LP-Input__Field:disabled:focus, .LP-Input--disabled .LP-Input__Field:disabled:active {
|
||||
margin-bottom: 30px;
|
||||
border-radius: 0; }
|
||||
.LP-Input--disabled .LP-Input__Field ~ .LP-Input__Message, .LP-Input--disabled .LP-Input__Field:disabled ~ .LP-Input__Message {
|
||||
visibility: hidden; }
|
||||
.LP-Input--disabled .LP-Input__Label {
|
||||
color: #565656; }
|
||||
|
||||
.LP-Image {
|
||||
max-width: 100%;
|
||||
max-height: 100%; }
|
||||
|
||||
.LP-Logo {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
@ -141,32 +61,36 @@
|
||||
.LP-TextSection .LP-Text {
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.LP-Place {
|
||||
width: 280px; }
|
||||
.LP-Place .LP-Place__Image {
|
||||
width: 280px;
|
||||
height: 165px;
|
||||
object-fit: fill; }
|
||||
.LP-Place .LP-Place__Meta {
|
||||
object-fit: cover; }
|
||||
|
||||
.LP-Place .LP-Place__Assets {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-top: 0.8rem;
|
||||
padding: 0 10px;
|
||||
padding-bottom: 10px; }
|
||||
.LP-Place .LP-Place__Meta .LP-Paragraph {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-top: 5px;
|
||||
font-size: 0.9rem; }
|
||||
.LP-Place .LP-Place__Meta .LP-Headline {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
|
||||
.LP-Place .LP-Place__Info .LP-Place__Title {
|
||||
font-family: "Trebuchet MS", Helvetica, sans-serif;
|
||||
color: #565656;
|
||||
font-size: 1rem;
|
||||
padding: 0px;
|
||||
margin: 0px; }
|
||||
.LP-Place .LP-Place__Description {
|
||||
|
||||
.LP-Place .LP-Place__Info .LP-Place__Description {
|
||||
font-family: Roboto, Arial, sans-serif;
|
||||
color: #565656;
|
||||
display: none; }
|
||||
color: #565656; }
|
||||
|
||||
.LP-Place .LP-Place__Info .LP-Place__Detail {
|
||||
font-family: "Trebuchet MS", Helvetica, sans-serif;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-top: 5px;
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.LP-SecurityMeasure__List {
|
||||
list-style-type: none;
|
||||
@ -180,7 +104,7 @@
|
||||
background-color: #D7CEC7;
|
||||
border-radius: 2px; }
|
||||
.LP-SecurityMeasure__List .LP-SecurityMeasure__Item .LP-Text {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
font-family: "Trebuchet MS", Helvetica, sans-serif;
|
||||
font-size: 1.2rem; }
|
||||
|
||||
.LP-Header {
|
||||
@ -237,17 +161,10 @@
|
||||
|
||||
.LP-Place__List {
|
||||
list-style-type: none; }
|
||||
.LP-Place__List .LP-Link .LP-Place:hover {
|
||||
color: #565656;
|
||||
background-color: #f9f9f9;
|
||||
position: relative;
|
||||
left: -2px; }
|
||||
.LP-Place__List .LP-Link .LP-Place:hover > .LP-Place__Image {
|
||||
border-left: 2px #565656 solid; }
|
||||
.LP-Place__List .LP-Place__Item {
|
||||
max-width: 900px;
|
||||
min-width: 450px;
|
||||
margin: 18px 0; }
|
||||
margin: 25px 0; }
|
||||
.LP-Place__List .LP-Place__Item .LP-Place {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@ -330,46 +247,6 @@
|
||||
.LP-Footer .LP-LinkList__List .LP-LinkList__Item .LP-Link:hover {
|
||||
background-color: inherit; }
|
||||
|
||||
.LP-Form {
|
||||
max-width: 900px; }
|
||||
.LP-Form .LP-Form__Fieldset {
|
||||
border: none; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Legend {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field {
|
||||
flex: 3 1 100px;
|
||||
padding: 6px 15px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field--wider {
|
||||
flex: 5 1 200px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field--wide {
|
||||
flex: 4 1 150px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field--narrow {
|
||||
flex: 2 0 50px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field--narrower {
|
||||
flex: 1 0 25px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field input {
|
||||
width: 100%; }
|
||||
|
||||
@media (max-width: 650px) {
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition--breakable {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between; } }
|
||||
|
||||
@media (max-width: 450px) {
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field {
|
||||
flex: 3 1 100px;
|
||||
padding: 12px 15px; } }
|
||||
|
||||
.LP-MainContainer {
|
||||
margin: 0 auto;
|
||||
max-width: 1280px; }
|
||||
|
15
lostplaces/lostplaces_app/templates/voucher-verify.html
Normal file
15
lostplaces/lostplaces_app/templates/voucher-verify.html
Normal file
@ -0,0 +1,15 @@
|
||||
{% extends 'global.html'%}
|
||||
{% load static %}
|
||||
|
||||
# {% block title %}Voucher-Überprüfung{% endblock %}
|
||||
|
||||
{% block maincontent %}
|
||||
|
||||
<h2>Voucher-Überprüfung</h2>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ voucher_form.as_p }}
|
||||
<button type="submit">Überprüfen</button>
|
||||
</form>
|
||||
|
||||
{% endblock maincontent %}
|
@ -1,6 +1,7 @@
|
||||
from django.urls import path
|
||||
from .views import (
|
||||
hello_world,
|
||||
VoucherVerifyView,
|
||||
place_detail_view,
|
||||
place_list_view,
|
||||
SignUpView,
|
||||
@ -10,6 +11,7 @@ from .views import (
|
||||
|
||||
urlpatterns = [
|
||||
path('hello_world/', hello_world), # You know what this is :P
|
||||
path('voucher/', VoucherVerifyView.as_view(), name='enter_voucher'),
|
||||
path('signup/', SignUpView.as_view(), name='signup'),
|
||||
path('place/<int:pk>/', place_detail_view, name='place_detail'),
|
||||
path('place/create/', PlaceCreateView.as_view(), name='place_create'),
|
||||
|
@ -2,18 +2,43 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
''' Django views. '''
|
||||
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.urls import reverse_lazy
|
||||
from django.views.generic.edit import CreateView
|
||||
from django.views.generic.edit import CreateView, UpdateView
|
||||
from django.views import View
|
||||
from django.http import Http404
|
||||
from django.views.generic.edit import UpdateView
|
||||
|
||||
from .forms import ExplorerCreationForm, PlaceForm, PlaceImageCreateForm
|
||||
from .forms import ExplorerCreationForm, PlaceForm, PlaceImageCreateForm, VoucherVerifyForm
|
||||
from .models import Place, PlaceImage, Voucher
|
||||
|
||||
# Create your views here.
|
||||
|
||||
class VoucherVerifyView(View):
|
||||
formclass = VoucherVerifyForm
|
||||
fields = ['code']
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
voucher_form = VoucherVerifyForm()
|
||||
return render(request, 'voucher-verify.html', {'voucher_form': voucher_form})
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
voucher_form = VoucherVerifyForm(request.POST)
|
||||
|
||||
if voucher_form.is_valid():
|
||||
# Compare voucher from form with available vouchers in Voucher.
|
||||
for voucher in Voucher.objects.all():
|
||||
print(voucher.code)
|
||||
if voucher.code == voucher_form.cleaned_data.get('code'):
|
||||
kwargs_to_pass = {
|
||||
'voucher_pk': voucher.pk
|
||||
}
|
||||
return redirect(reverse_lazy('signup'), kwargs=kwargs_to_pass)
|
||||
else:
|
||||
return redirect(reverse_lazy('enter_voucher'))
|
||||
else:
|
||||
return redirect(reverse_lazy('enter_voucher'))
|
||||
|
||||
class SignUpView(CreateView):
|
||||
form_class = ExplorerCreationForm
|
||||
success_url = reverse_lazy('login')
|
||||
@ -37,7 +62,6 @@ class PlaceUpdateView(UpdateView):
|
||||
return reverse_lazy('place_detail', kwargs={'pk':self.get_object().pk})
|
||||
|
||||
class PlaceCreateView(View):
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
place_image_form = PlaceImageCreateForm()
|
||||
place_form = PlaceForm()
|
||||
|
Loading…
Reference in New Issue
Block a user