Adding event detail page
This commit is contained in:
parent
06fda68795
commit
502ce785d4
|
@ -122,3 +122,9 @@ footer {
|
|||
padding: 5px;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.event:hover {
|
||||
background-color: black !important;
|
||||
color: white !important;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
|
26
program/migrations/0005_auto_20160807_1312.py
Normal file
26
program/migrations/0005_auto_20160807_1312.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.6 on 2016-08-07 13:12
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('program', '0004_auto_20160804_1712'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='slug',
|
||||
field=models.SlugField(default='', blank=True),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='speaker',
|
||||
name='events',
|
||||
field=models.ManyToManyField(blank=True, related_name='speakers', related_query_name='speaker', to='program.Event'),
|
||||
),
|
||||
]
|
20
program/migrations/0006_auto_20160807_1320.py
Normal file
20
program/migrations/0006_auto_20160807_1320.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.6 on 2016-08-07 13:20
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('program', '0005_auto_20160807_1312'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
name='slug',
|
||||
field=models.SlugField(blank=True, max_length=255),
|
||||
),
|
||||
]
|
20
program/migrations/0007_auto_20160807_1333.py
Normal file
20
program/migrations/0007_auto_20160807_1333.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.6 on 2016-08-07 13:33
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('program', '0006_auto_20160807_1320'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='event',
|
||||
old_name='description',
|
||||
new_name='abstract',
|
||||
),
|
||||
]
|
|
@ -1,6 +1,8 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models
|
||||
from django.utils.text import slugify
|
||||
|
||||
from utils.models import CreatedUpdatedModel
|
||||
|
||||
|
||||
|
@ -18,7 +20,8 @@ class EventType(CreatedUpdatedModel):
|
|||
class Event(CreatedUpdatedModel):
|
||||
""" Something that is on the program. """
|
||||
title = models.CharField(max_length=255)
|
||||
description = models.TextField()
|
||||
slug = models.SlugField(blank=True, max_length=255)
|
||||
abstract = models.TextField()
|
||||
event_type = models.ForeignKey(EventType)
|
||||
days = models.ManyToManyField('camps.Day')
|
||||
start = models.TimeField()
|
||||
|
@ -27,6 +30,11 @@ class Event(CreatedUpdatedModel):
|
|||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
def save(self, **kwargs):
|
||||
if not self.slug:
|
||||
self.slug = slugify(self.title)
|
||||
super(Event, self).save(**kwargs)
|
||||
|
||||
|
||||
class Speaker(CreatedUpdatedModel):
|
||||
""" Person anchoring an event. """
|
||||
|
|
|
@ -9,12 +9,13 @@
|
|||
<div style="display: flex; flex-wrap: wrap;">
|
||||
{% endifchanged %}
|
||||
|
||||
<div class="event"
|
||||
<a class="event"
|
||||
href="{% url 'program:event' slug=event.slug %}"
|
||||
style="background-color: {{ event.event_type.color }}; border: 0; color: {% if event.event_type.light_text %}white{% else %}black{% endif %};">
|
||||
<small>{{ event.start|date:"H:i" }} - {{ event.end|date:"H:i" }}</small>
|
||||
<br />
|
||||
{{ event }}
|
||||
</div>
|
||||
</a>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
|
|
10
program/templates/program_event_detail.html
Normal file
10
program/templates/program_event_detail.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -17,12 +17,13 @@
|
|||
{{ day.date|date:"D d/m" }} <br />
|
||||
<div style="display: flex; flex-wrap: wrap;">
|
||||
{% for event in events %}
|
||||
<div class="event"
|
||||
style="background-color: {{ event.event_type.color }}; border: 0; color: {% if event.event_type.light_text %}white{% else %}black{% endif %};">
|
||||
<a class="event"
|
||||
href="{% url 'program:event' slug=event.slug %}"
|
||||
style="background-color: {{ event.event_type.color }}; border: 0; color: {% if event.event_type.light_text %}white{% else %}black{% endif %};">
|
||||
<small>{{ event.start|date:"H:i" }} - {{ event.end|date:"H:i" }}</small>
|
||||
<br />
|
||||
{{ event }}
|
||||
</div>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
from django.conf.urls import url
|
||||
from views import *
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})$', ProgramDayView.as_view(), name='day'),
|
||||
url(r'^$', ProgramOverviewView.as_view(), name='index'),
|
||||
url(r'^(?P<slug>[-_\w+]+)/$', views.EventDetailView.as_view(), name='event'),
|
||||
url(r'^(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})$', views.ProgramDayView.as_view(), name='day'),
|
||||
url(r'^$', views.ProgramOverviewView.as_view(), name='index'),
|
||||
]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from collections import OrderedDict
|
||||
|
||||
import datetime
|
||||
from django.views.generic import ListView, TemplateView
|
||||
from django.views.generic import ListView, TemplateView, DetailView
|
||||
|
||||
from camps.models import Day
|
||||
from . import models
|
||||
|
@ -57,3 +57,13 @@ class ProgramDayView(TemplateView):
|
|||
context['days'] = Day.objects.filter(date__year=year)
|
||||
return context
|
||||
|
||||
|
||||
class EventDetailView(DetailView):
|
||||
model = models.Event
|
||||
template_name = 'program_event_detail.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(EventDetailView, self).get_context_data(**kwargs)
|
||||
# TODO: date__year is hardcoded here - need fix for 2017 :P
|
||||
context['days'] = Day.objects.filter(date__year=2016)
|
||||
return context
|
||||
|
|
Loading…
Reference in a new issue