From 696b0c48bf5636c9ed1058e539f2b6907683f1be Mon Sep 17 00:00:00 2001 From: Midhat Date: Sat, 20 Oct 2018 00:24:43 +0300 Subject: [PATCH 1/3] F.A.Q page --- .../cfp/migrations/0011_auto_20181018_1949.py | 18 +++++++ .../static/css/components/faq-accordion.css | 52 +++++++++++++++++++ pyconbalkan/core/static/js/accordion.js | 14 +++++ pyconbalkan/core/templates/base.html | 1 + .../core/templates/includes/header.html | 1 + pyconbalkan/faq/__init__.py | 0 pyconbalkan/faq/admin.py | 12 +++++ pyconbalkan/faq/api_urls.py | 6 +++ pyconbalkan/faq/apps.py | 5 ++ pyconbalkan/faq/migrations/0001_initial.py | 26 ++++++++++ pyconbalkan/faq/migrations/__init__.py | 0 pyconbalkan/faq/models.py | 11 ++++ pyconbalkan/faq/serializers.py | 9 ++++ pyconbalkan/faq/templates/faq.html | 41 +++++++++++++++ pyconbalkan/faq/tests.py | 3 ++ pyconbalkan/faq/views.py | 20 +++++++ pyconbalkan/settings.py | 1 + pyconbalkan/urls.py | 6 ++- 18 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 pyconbalkan/cfp/migrations/0011_auto_20181018_1949.py create mode 100644 pyconbalkan/core/static/css/components/faq-accordion.css create mode 100644 pyconbalkan/core/static/js/accordion.js create mode 100644 pyconbalkan/faq/__init__.py create mode 100644 pyconbalkan/faq/admin.py create mode 100644 pyconbalkan/faq/api_urls.py create mode 100644 pyconbalkan/faq/apps.py create mode 100644 pyconbalkan/faq/migrations/0001_initial.py create mode 100644 pyconbalkan/faq/migrations/__init__.py create mode 100644 pyconbalkan/faq/models.py create mode 100644 pyconbalkan/faq/serializers.py create mode 100644 pyconbalkan/faq/templates/faq.html create mode 100644 pyconbalkan/faq/tests.py create mode 100644 pyconbalkan/faq/views.py diff --git a/pyconbalkan/cfp/migrations/0011_auto_20181018_1949.py b/pyconbalkan/cfp/migrations/0011_auto_20181018_1949.py new file mode 100644 index 00000000..d2a0e969 --- /dev/null +++ b/pyconbalkan/cfp/migrations/0011_auto_20181018_1949.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.5 on 2018-10-18 19:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cfp', '0010_cfp_active'), + ] + + operations = [ + migrations.AlterField( + model_name='cfp', + name='active', + field=models.BooleanField(default=False), + ), + ] diff --git a/pyconbalkan/core/static/css/components/faq-accordion.css b/pyconbalkan/core/static/css/components/faq-accordion.css new file mode 100644 index 00000000..e976040c --- /dev/null +++ b/pyconbalkan/core/static/css/components/faq-accordion.css @@ -0,0 +1,52 @@ +.accordion { + background-color: #eee; + color: #444; + cursor: pointer; + padding: 18px; + width: 100%; + border: none; + text-align: left; + outline: none; + font-size: 15px; + transition: 0.4s; +} + +.accordion:hover { + background-color: #ccc; +} + +.accordion:after { + content: "\25BA"; /* "play" icon */ + float: right; + color: #454444; + font-size: 18px; + line-height: 22px; + /* rotate "play" icon from > (right arrow) to down arrow */ + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} + +.active:after { + /* rotate "play" icon from > (right arrow) to ^ (up arrow) */ + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); + color: #F58723; +} + +.panel { + padding: 0 18px; + background-color: #32383A; + max-height: 0; + overflow: hidden; + transition: max-height 0.2s ease-out; +} + +p { + margin: 20px; +} \ No newline at end of file diff --git a/pyconbalkan/core/static/js/accordion.js b/pyconbalkan/core/static/js/accordion.js new file mode 100644 index 00000000..a4c80ff9 --- /dev/null +++ b/pyconbalkan/core/static/js/accordion.js @@ -0,0 +1,14 @@ +var acc = document.getElementsByClassName("accordion"); +var i; + +for (i = 0; i < acc.length; i++) { + acc[i].addEventListener("click", function() { + this.classList.toggle("active"); + var panel = this.nextElementSibling; + if (panel.style.maxHeight){ + panel.style.maxHeight = null; + } else { + panel.style.maxHeight = panel.scrollHeight + "px"; + } + }); +} \ No newline at end of file diff --git a/pyconbalkan/core/templates/base.html b/pyconbalkan/core/templates/base.html index b751ad26..ec5880b2 100644 --- a/pyconbalkan/core/templates/base.html +++ b/pyconbalkan/core/templates/base.html @@ -43,6 +43,7 @@ + diff --git a/pyconbalkan/core/templates/includes/header.html b/pyconbalkan/core/templates/includes/header.html index 15f7450c..22798395 100644 --- a/pyconbalkan/core/templates/includes/header.html +++ b/pyconbalkan/core/templates/includes/header.html @@ -15,6 +15,7 @@ diff --git a/pyconbalkan/faq/__init__.py b/pyconbalkan/faq/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyconbalkan/faq/admin.py b/pyconbalkan/faq/admin.py new file mode 100644 index 00000000..3081a880 --- /dev/null +++ b/pyconbalkan/faq/admin.py @@ -0,0 +1,12 @@ +from django.contrib import admin + +from .models import Faq + + +class FaqAdmin(admin.ModelAdmin): + class Meta: + model = Faq + + +admin.site.register(Faq, FaqAdmin) + diff --git a/pyconbalkan/faq/api_urls.py b/pyconbalkan/faq/api_urls.py new file mode 100644 index 00000000..c4e80fae --- /dev/null +++ b/pyconbalkan/faq/api_urls.py @@ -0,0 +1,6 @@ +from rest_framework import routers + +from pyconbalkan.faq.views import FaqViewSet + +router = routers.DefaultRouter() +router.register(r'faq', FaqViewSet) diff --git a/pyconbalkan/faq/apps.py b/pyconbalkan/faq/apps.py new file mode 100644 index 00000000..adcba729 --- /dev/null +++ b/pyconbalkan/faq/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class FaqConfig(AppConfig): + name = 'faq' diff --git a/pyconbalkan/faq/migrations/0001_initial.py b/pyconbalkan/faq/migrations/0001_initial.py new file mode 100644 index 00000000..e7ff0a73 --- /dev/null +++ b/pyconbalkan/faq/migrations/0001_initial.py @@ -0,0 +1,26 @@ +# Generated by Django 2.0.5 on 2018-10-19 20:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Faq', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('active', models.BooleanField(default=False)), + ('question', models.CharField(blank=True, max_length=100, null=True)), + ('answer', models.TextField(blank=True, null=True)), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/pyconbalkan/faq/migrations/__init__.py b/pyconbalkan/faq/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyconbalkan/faq/models.py b/pyconbalkan/faq/models.py new file mode 100644 index 00000000..edf37288 --- /dev/null +++ b/pyconbalkan/faq/models.py @@ -0,0 +1,11 @@ +from django.db import models + +from pyconbalkan.core.models import ActiveModel + + +class Faq(ActiveModel): + question = models.CharField(null=True, blank=True, max_length=100) + answer = models.TextField(null=True, blank=True) + + def __str__(self): + return self.question diff --git a/pyconbalkan/faq/serializers.py b/pyconbalkan/faq/serializers.py new file mode 100644 index 00000000..547b5685 --- /dev/null +++ b/pyconbalkan/faq/serializers.py @@ -0,0 +1,9 @@ +from rest_framework import serializers + +from pyconbalkan.faq.models import Faq + + +class FaqSerializer(serializers.ModelSerializer): + class Meta: + model = Faq + fields = '__all__' diff --git a/pyconbalkan/faq/templates/faq.html b/pyconbalkan/faq/templates/faq.html new file mode 100644 index 00000000..95cfdee6 --- /dev/null +++ b/pyconbalkan/faq/templates/faq.html @@ -0,0 +1,41 @@ +{% extends "base.html" %} + +{% load static %} + +{% block main_content %} + + {# Faq #} + + + {% if faq %} +
+

F.A.Q - Frequently Asked Questions

+
+ + {% for item in faq %} + +
+

{{ item.answer }}

+
+ {% endfor %} +
+
+ {% else %} +

+ Coming Soon +

+ {% endif %} + + + {% if response_guide %} + +

{{ response_guide.title|safe }}

+
+ {% endif %} + +{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/pyconbalkan/faq/tests.py b/pyconbalkan/faq/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/pyconbalkan/faq/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/pyconbalkan/faq/views.py b/pyconbalkan/faq/views.py new file mode 100644 index 00000000..fde80a4d --- /dev/null +++ b/pyconbalkan/faq/views.py @@ -0,0 +1,20 @@ +from django.shortcuts import render +from rest_framework import viewsets + +from pyconbalkan.faq.models import Faq +from pyconbalkan.faq.serializers import FaqSerializer +from pyconbalkan.coc.views import coc_view +from pyconbalkan.organizers.views import organizers_list + + +class FaqViewSet(viewsets.ModelViewSet): + queryset = Faq.objects.all() + serializer_class = FaqSerializer + + +def faq_view(request): + faq = Faq.objects.filter(active=True) + context = { + 'faq': faq, + } + return render(request, 'faq.html', context) diff --git a/pyconbalkan/settings.py b/pyconbalkan/settings.py index 7212425a..e9aeae16 100644 --- a/pyconbalkan/settings.py +++ b/pyconbalkan/settings.py @@ -54,6 +54,7 @@ 'pyconbalkan.news', 'pyconbalkan.coc', 'pyconbalkan.info', + 'pyconbalkan.faq', # others 'rest_framework', 'django_countries', diff --git a/pyconbalkan/urls.py b/pyconbalkan/urls.py index 256afd5a..7b7e9731 100644 --- a/pyconbalkan/urls.py +++ b/pyconbalkan/urls.py @@ -23,6 +23,8 @@ from pyconbalkan.coc.api_urls import router as coc from pyconbalkan.timetable.views import timetable_view from pyconbalkan.info.views import info_view +from pyconbalkan.faq.views import faq_view +from pyconbalkan.faq.api_urls import router as faq from markdownx import urls as markdownx @@ -37,6 +39,7 @@ router.extend(contact) router.extend(news) router.extend(coc) +router.extend(faq) urlpatterns = [ path('', views.home, name='index'), @@ -62,7 +65,8 @@ path('admin/', admin.site.urls), path('api/', include(router.urls)), # API path('markdownx/', include(markdownx)), - path('timetable/', timetable_view, name='timetable') + path('timetable/', timetable_view, name='timetable'), + path('faq', faq_view, name='faq') ] # Add Django site authentication urls (for login, logout, password management) From bf7ea61ccfa34ef749fc5b8622c9c02ca887e0c5 Mon Sep 17 00:00:00 2001 From: Midhat Date: Sat, 20 Oct 2018 00:35:06 +0300 Subject: [PATCH 2/3] Euro Python Society logo added --- .../core/static/img/euro-python-society.png | Bin 0 -> 32557 bytes .../templates/includes/event_sidebar.html | 64 ++++++++++-------- 2 files changed, 34 insertions(+), 30 deletions(-) create mode 100644 pyconbalkan/core/static/img/euro-python-society.png diff --git a/pyconbalkan/core/static/img/euro-python-society.png b/pyconbalkan/core/static/img/euro-python-society.png new file mode 100644 index 0000000000000000000000000000000000000000..e948c7b476458edf630daf37eb26e9fd0507af8d GIT binary patch literal 32557 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 - -
-

#{{ conference.number }}

-

- {{ conference.address }}, {{ conference.city }} -

-

- - {{ conference.from_date }} - {{ conference.to_date }} -

-

- - {{ conference.max_attendees }} attendees -

-

- - {{ conference.get_type_display }} -

+ +
+

#{{ conference.number }}

+

+ {{ conference.address }}, {{ conference.city }} +

+

+ + {{ conference.from_date }} - {{ conference.to_date }} +

+

+ + {{ conference.max_attendees }} attendees +

+

+ + {{ conference.get_type_display }} +

-
- {% if conference.tickets %} - Join Us! - {% endif %} -
- -

Supported by

- +
+ {% if conference.tickets %} + Join + Us! + {% endif %} +
+ +

Supported by

+ +
From 700c4bb80d824f45b784297a6c06d6484af65b34 Mon Sep 17 00:00:00 2001 From: midhatstam <30905630+midhatstam@users.noreply.github.com> Date: Fri, 26 Oct 2018 16:11:32 +0300 Subject: [PATCH 3/3] Update urls.py --- pyconbalkan/urls.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyconbalkan/urls.py b/pyconbalkan/urls.py index 9f1fe43d..23a1c448 100644 --- a/pyconbalkan/urls.py +++ b/pyconbalkan/urls.py @@ -24,6 +24,7 @@ from pyconbalkan.speaker.api_urls import router as speaker from pyconbalkan.speaker.views import * from pyconbalkan.sponsors.api_urls import router as sponsors +from pyconbalkan.sponsors.views import sponsor_view, sponsoring_view, sponsors_view from pyconbalkan.timetable.views import timetable_view from pyconbalkan.faq.views import faq_view from pyconbalkan.faq.api_urls import router as faq @@ -73,4 +74,4 @@ # Add Django site authentication urls (for login, logout, password management) urlpatterns += [ path('accounts/', include('django.contrib.auth.urls')), -] \ No newline at end of file +]