From c0adf2fa300c2a2cb596dc739f488341fb5d4260 Mon Sep 17 00:00:00 2001 From: rushilwiz Date: Wed, 26 Aug 2020 02:42:31 -0400 Subject: [PATCH] working poll, models, and options --- config/settings.py | 1 + homepage/admin.py | 5 +- homepage/migrations/0001_initial.py | 28 ++++- homepage/models.py | 48 +++++++-- homepage/templates/homepage/index.html | 144 ++++++++++++------------- homepage/urls.py | 3 +- homepage/views.py | 70 +++++++++++- requirements.txt | 11 +- static/css/styles.css | 23 +++- static/css/styles.scss | 24 +++++ 10 files changed, 262 insertions(+), 95 deletions(-) diff --git a/config/settings.py b/config/settings.py index 0a63074..b2d9e57 100755 --- a/config/settings.py +++ b/config/settings.py @@ -38,6 +38,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'widget_tweaks', ] MIDDLEWARE = [ diff --git a/homepage/admin.py b/homepage/admin.py index ecde288..5c9c3a9 100755 --- a/homepage/admin.py +++ b/homepage/admin.py @@ -1,6 +1,7 @@ from django.contrib import admin -from .models import Poll +from .models import Poll, Answer # Register your models here. -admin.site.register(Poll) \ No newline at end of file +admin.site.register(Poll) +admin.site.register(Answer) \ No newline at end of file diff --git a/homepage/migrations/0001_initial.py b/homepage/migrations/0001_initial.py index 813bbca..66eef4e 100755 --- a/homepage/migrations/0001_initial.py +++ b/homepage/migrations/0001_initial.py @@ -1,6 +1,7 @@ -# Generated by Django 3.1 on 2020-08-18 22:01 +# Generated by Django 3.0.8 on 2020-08-25 21:41 from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): @@ -15,11 +16,30 @@ class Migration(migrations.Migration): name='Poll', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('question1', models.CharField(max_length=200)), - ('question2', models.CharField(max_length=200)), - ('question3', models.CharField(max_length=200)), + ('askHi', models.BooleanField(default=True)), + ('HiText', models.CharField(blank=True, max_length=50, null=True)), + ('askLo', models.BooleanField(default=True)), + ('LoText', models.CharField(blank=True, max_length=50, null=True)), ('askEmotion', models.BooleanField(default=True)), + ('EmotionText', models.CharField(blank=True, max_length=50, null=True)), + ('askName', models.BooleanField(default=True)), + ('NameText', models.CharField(blank=True, max_length=50, null=True)), + ('askPlace', models.BooleanField(default=True)), + ('PlaceText', models.CharField(blank=True, max_length=50, null=True)), + ('askQuestion', models.BooleanField(default=True)), + ('QuestionText', models.CharField(blank=True, max_length=50, null=True)), ('pub_date', models.DateTimeField(verbose_name='date published')), ], ), + migrations.CreateModel( + name='Answer', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('hi', models.CharField(blank=True, max_length=200, null=True)), + ('lo', models.CharField(blank=True, max_length=200, null=True)), + ('name', models.CharField(blank=True, max_length=200, null=True)), + ('place', models.CharField(blank=True, max_length=200, null=True)), + ('poll', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='homepage.Poll')), + ], + ), ] diff --git a/homepage/models.py b/homepage/models.py index d127b95..6b775c4 100755 --- a/homepage/models.py +++ b/homepage/models.py @@ -3,11 +3,45 @@ from django.db import models # Create your models here. class Poll (models.Model): - askHi = models.BooleanField(default=True) - askLo = models.BooleanField(default=True) - askEmotion = models.BooleanField(default=True) - askEmotion = models.BooleanField(default=True) + ask_hi = models.BooleanField(default=True) + hi_text = models.CharField(max_length=50, blank=True, null=True) + + ask_lo = models.BooleanField(default=True) + lo_text = models.CharField(max_length=50, blank=True, null=True) + + ask_emotion = models.BooleanField(default=True) + emotion_text = models.CharField(max_length=50, blank=True, null=True) + + ask_name = models.BooleanField(default=True) + name_text = models.CharField(max_length=50, blank=True, null=True) + + ask_place = models.BooleanField(default=True) + place_text = models.CharField(max_length=50, blank=True, null=True) + + ask_question = models.BooleanField(default=False) + question_text = models.CharField(max_length=50, blank=True, null=True) + pub_date = models.DateTimeField('date published') - extraQuestion1 = models.CharField(max_length=50, blank=True, null=True) - extraQuestion2 = models.CharField(max_length=50, blank=True, null=True) - extraQuestion3 = models.CharField(max_length=50, blank=True, null=True) + + def __str__(self): + return 'Current Poll' + + + +EMOTION_CHOICES= [ + ('happy', 'Happy'), + ('meh', 'Meh'), + ('sad', 'Sad'), +] + +class Answer (models.Model): + poll = models.ForeignKey(Poll, on_delete=models.CASCADE) + hi = models.CharField(max_length=200, blank=True, null=True) + lo = models.CharField(max_length=200, blank=True, null=True) + emotion = models.CharField(max_length=8, default='meh', choices=EMOTION_CHOICES, blank=True, null=True) + name = models.CharField(max_length=100, blank=True, null=True) + place = models.CharField(max_length=100, blank=True, null=True) + question = models.CharField(max_length=200, blank=True, null=True) + + def __str__(self): + return self.name \ No newline at end of file diff --git a/homepage/templates/homepage/index.html b/homepage/templates/homepage/index.html index 0f63793..3d9ddf7 100755 --- a/homepage/templates/homepage/index.html +++ b/homepage/templates/homepage/index.html @@ -1,34 +1,9 @@ +{% extends 'homepage/base.html' %} {% load static %} - - - - - - +{% load widget_tweaks %} - - - - - - - - - - - - - HiLo Arlington - - - - - +{% block content %}
@@ -77,61 +52,91 @@

- -
-
+
-
- {% csrf_token %} + {% if messages %} + {% for message in messages %} +
+ {{ message }} + +
+ {% endfor %} + {% endif %} + + {% csrf_token %} + {% for hidden in form.hidden_fields %} + {{ hidden }} + {% endfor %}

NOW IS YOUR TIME TO SHINE

+ {% if hi_text %} +
+ + {{ form.hi|add_class:'w-75 mx-auto rounded' }} + {% for error in form.hi.errors %} + {{ error }} + {% endfor %} +
+ {% endif %} + {% if lo_text %}
- - -
-
- - + + {{ form.lo|add_class:'w-75 mx-auto rounded' }} + {% for error in form.lo.errors %} + {{ error }} + {% endfor %}
+ {% endif %}

SOME MORE QUESTIONS FOR THE SOUL

+ {% if emotion_text %}
-
+
+ + {% for radio in form.emotion %}
- -
-
- -
-
- +
+ {% endfor %}
-
- - -
-
- - + {% endif %} + {% if name_text %} +
+ + {{ form.name|add_class:'w-75 mx-auto rounded' }} + {% for error in form.name.errors %} + {{ error }} + {% endfor %}
+ {% endif %} + {% if place_text %} +
+ + {{ form.place|add_class:'w-75 mx-auto rounded' }} + {% for error in form.place.errors %} + {{ error }} + {% endfor %} +
+ {% endif %} + {% if question_text %} +
+ + {{ form.question|add_class:'w-75 mx-auto rounded' }} + {% for error in form.question.errors %} + {{ error }} + {% endfor %} +
+ {% endif %}
- - - - - - +{% endblock %} \ No newline at end of file diff --git a/homepage/urls.py b/homepage/urls.py index 168aced..f8aeec5 100755 --- a/homepage/urls.py +++ b/homepage/urls.py @@ -2,5 +2,6 @@ from django.urls import path from . import views urlpatterns = [ - path ('', views.homepage, name="homepage") + path ('', views.homepage, name="homepage"), + path ('finish/', views.finish, name="finish") ] diff --git a/homepage/views.py b/homepage/views.py index 369ae80..8dc59ec 100755 --- a/homepage/views.py +++ b/homepage/views.py @@ -1,6 +1,72 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect +from django.contrib import messages +from django.shortcuts import get_object_or_404 + +from .forms import PollForm +from .models import Poll # Create your views here. def homepage (request): - return render(request, 'homepage/index.html') + poll = get_object_or_404(Poll) + + if poll.ask_hi: + hi_text = poll.hi_text + else: + hi_text = None + + if poll.ask_lo: + lo_text = poll.lo_text + else: + lo_text = None + + if poll.ask_emotion: + emotion_text = poll.emotion_text + else: + emotion_text = None + + if poll.ask_name: + name_text = poll.name_text + else: + name_text = None + + if poll.ask_place: + place_text = poll.place_text + else: + place_text = None + + if poll.ask_question: + question_text = poll.question_text + else: + question_text = None + + if request.method == 'POST': + print(request.POST) + form = PollForm(request.POST) + if form.is_valid(): + print("valid form!") + instance = form.save(commit=False) + instance.poll = poll + instance.save() + print(instance.pk) + return redirect('finish') + else: + messages.error(request, 'Looks like there were some problems with your form!', extra_tags='danger') + print("invalid form!") + else: + form = PollForm() + + context = { + 'form': form, + 'hi_text': hi_text, + 'lo_text': lo_text, + 'emotion_text': emotion_text, + 'place_text': place_text, + 'name_text': name_text, + 'question_text': question_text, + } + + return render(request, 'homepage/index.html', context=context) + +def finish (request): + pass \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 8ac23ea..57c44ad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ -argparse==1.2.1 -django==1.11.29 -pip-chill==1.0.0 -python==2.7.17 -wsgiref==0.1.2 +argparse +django +django-widget-tweaks +pip-chill +python +wsgiref diff --git a/static/css/styles.css b/static/css/styles.css index c52eaae..4488a8e 100644 --- a/static/css/styles.css +++ b/static/css/styles.css @@ -2,6 +2,9 @@ @font-face { src: url("./fonts/Hanson-Bold.ttf"); font-family: "Hanson-Bold"; } +@font-face { + src: url("./fonts/WildYouth-Regular.otf"); + font-family: "WildYouth"; } @font-face { src: url("./fonts/FuturaPTMedium.otf"); font-family: "Futura"; @@ -152,9 +155,25 @@ label { border-image-repeat: none; } .hi { - color: #48B93E; } + color: #48B93E; + font-family: "WildYouth", "Hanson-Bold", "Arial", sans-serif; } .lo { - color: #E34848; } + color: #E34848; + font-family: "WildYouth", "Hanson-Bold", "Arial", sans-serif; } + +[type=radio] { + position: absolute; + opacity: 0; + width: 0; + height: 0; } + +/* IMAGE STYLES */ +[type=radio] + img { + cursor: pointer; } + +/* CHECKED STYLES */ +[type=radio]:checked + img { + outline: 2px solid #2b5291; } /*# sourceMappingURL=styles.css.map */ diff --git a/static/css/styles.scss b/static/css/styles.scss index eae9721..6492c03 100755 --- a/static/css/styles.scss +++ b/static/css/styles.scss @@ -19,6 +19,11 @@ $font-stack: 'Hanson-Bold','Arial',sans-serif; font-family: "Hanson-Bold"; } +@font-face { + src: url("./fonts/WildYouth-Regular.otf"); + font-family: "WildYouth"; +} + @font-face { src: url("./fonts/FuturaPTMedium.otf"); font-family: "Futura"; @@ -234,8 +239,27 @@ label { .hi { color: $green; + font-family: "WildYouth", $font-stack; } .lo { color: $red; + font-family: "WildYouth", $font-stack; +} + +[type=radio] { + position: absolute; + opacity: 0; + width: 0; + height: 0; +} + +/* IMAGE STYLES */ +[type=radio] + img { + cursor: pointer; +} + +/* CHECKED STYLES */ +[type=radio]:checked + img { + outline: 2px solid $text; } \ No newline at end of file