]> git.0d.be Git - panikdb.git/commitdiff
emissions: add a days view
authorFrédéric Péters <fpeters@0d.be>
Fri, 12 Apr 2013 15:37:07 +0000 (17:37 +0200)
committerFrédéric Péters <fpeters@0d.be>
Fri, 12 Apr 2013 15:37:07 +0000 (17:37 +0200)
panikdb/emissions/models.py
panikdb/emissions/templates/emissions/category_list.html
panikdb/emissions/templates/emissions/days.html [new file with mode: 0644]
panikdb/emissions/templates/emissions/emission_detail.html
panikdb/emissions/templates/emissions/emission_list.html
panikdb/emissions/templates/emissions/episode_detail.html
panikdb/emissions/urls.py
panikdb/emissions/views.py
panikdb/static/css/style.css

index c92a8517562ee65832a282061ee0c55045d77eaa..40a795fb5994b54899b803bda16b552fb06bad9c 100644 (file)
@@ -1,4 +1,4 @@
-from datetime import datetime
+import datetime
 from django.forms import fields
 from django.core.urlresolvers import reverse
 
@@ -38,6 +38,15 @@ class Schedule(models.Model):
     datetime = models.DateTimeField()
     rerun = models.BooleanField(default=False)
 
+    def is_on_weekday(self, day): # day is [1..7]
+        if self.datetime >= datetime.datetime(2007, 1, day, 5, 0) and \
+                            self.datetime < datetime.datetime(2007, 1, day+1, 5, 0):
+            return True
+        if day == 7 and self.datetime < datetime.datetime(2007, 1, 1, 5, 0):
+            # special case for Sunday nights
+            return True
+        return False
+
 
 class Episode(models.Model):
     emission = models.ForeignKey('Emission', verbose_name=u'Emission')
index b50a6bb8e53d54064d8aed80c12e88843c863fdf..186fcdc3f5e0bec14971269fcb30582b1c860e97 100644 (file)
@@ -1,5 +1,10 @@
 {% extends "panikdb/base.html" %}
 
+{% block appbar %}
+<h2>Émissions</h2>
+<span><a href=".">Par ordre alphabétique</a> - <a href="days">Par jour</a> - <a href="categories">Par genre</a></span>
+{% endblock %}
+
 {% block content %}
 
 {% for category in object_list %}
diff --git a/panikdb/emissions/templates/emissions/days.html b/panikdb/emissions/templates/emissions/days.html
new file mode 100644 (file)
index 0000000..6ea1ddf
--- /dev/null
@@ -0,0 +1,21 @@
+{% extends "panikdb/base.html" %}
+
+{% block appbar %}
+<h2>Émissions</h2>
+<span><a href=".">Par ordre alphabétique</a> - <a href="days">Par jour</a> - <a href="categories">Par genre</a></span>
+{% endblock %}
+
+{% block content %}
+
+{% for day in days %}
+<h3>{{ day.datetime|date:"D" }}</h3>
+
+<ul class="emission-list">
+{% for schedule in day.schedules %}
+<li>{{ schedule.datetime|date:"G:i" }} <a href="{{ schedule.emission.slug }}/">{{ schedule.emission.title }}</a></li>
+{% endfor %}
+</ul>
+
+{% endfor %}
+
+{% endblock %}
index 2e16c4a40cd87e66161670009a7f395ba904ee6c..ad4f8d8dcef144ff06c72111aac07ff645910af9 100644 (file)
@@ -7,7 +7,7 @@
 <small><i>{{ category.title }} </i></small>
 {% endfor %}
 </h2>
-<a href="../">Retourner à la liste des émissions</a>
+<span><a href="../">Retourner à la liste des émissions</a></span>
 {% endblock %}
 
 {% block content %}
index 6399c20d86c12d30450f43c755ff274f2343d818..241e112a437d1e413aec77a8ee589c54d4903d01 100644 (file)
@@ -1,8 +1,11 @@
 {% extends "panikdb/base.html" %}
 
-{% block content %}
+{% block appbar %}
+<h2>Émissions</h2>
+<span><a href=".">Par ordre alphabétique</a> - <a href="days">Par jour</a> - <a href="categories">Par genre</a></span>
+{% endblock %}
 
-<h3>Émissions actuelles</h3>
+{% block content %}
 
 <ul class="emission-list">
 {% for emission in object_list %}
index 06a205f245bb5ae320277f0f567f24032ddf85ee..87227eb79ba9bc6f9164a15a0e0ee678cf583797 100644 (file)
@@ -2,7 +2,7 @@
 
 {% block appbar %}
 <h2>{{ episode.emission.title }} — {{ episode.title }}</h2>
-<a href="../">Retourner à l'émission</a>
+<span><a href="../">Retourner à l'émission</a></span>
 {% endblock %}
 
 {% block content %}
index c83e9e7ba310effac33d6025b8f4835019528785..9c7044149ac2b89d91286167bc43b442050220ea 100644 (file)
@@ -5,6 +5,7 @@ from .views import *
 urlpatterns = patterns('',
     url(r'^$', EmissionListView.as_view(), name='emission-list'),
     url(r'^categories$', CategoryListView.as_view(), name='category-list'),
+    url(r'^days$', DaysView.as_view(), name='days'),
     url(r'^add$', EmissionCreateView.as_view(), name='emission-add'),
     url(r'^(?P<slug>[\w,-]+)/$', EmissionDetailView.as_view(), name='emission-view'),
     url(r'^(?P<slug>[\w,-]+)/edit/$', EmissionUpdateView.as_view(), name='emission-update'),
index cca3592b8d69e594cfe500e6ac4f22736c646544..6af44c890a5194bee8c51c86a30fab4b8ecf50e3 100644 (file)
@@ -1,3 +1,5 @@
+import datetime
+
 from django.core.urlresolvers import reverse, reverse_lazy
 
 from django.views.generic.base import TemplateView, RedirectView
@@ -13,7 +15,7 @@ __all__ = ['EmissionListView', 'EmissionDetailView', 'EmissionCreateView',
            'EmissionUpdateView', 'EmissionDeleteView',
            'EpisodeCreateView', 'EpisodeDetailView', 'EpisodeUpdateView',
            'EpisodeDeleteView', 'EmissionAddScheduleView',
-           'ScheduleDeleteView', 'CategoryListView']
+           'ScheduleDeleteView', 'CategoryListView', 'DaysView']
 
 
 class EmissionListView(ListView):
@@ -113,3 +115,17 @@ class ScheduleDeleteView(RedirectView):
     def get_redirect_url(self, emission_slug, pk):
         Schedule.objects.filter(id=pk).delete()
         return reverse('emission-view', kwargs={'slug': str(emission_slug)})
+
+
+class DaysView(TemplateView):
+    template_name = 'emissions/days.html'
+
+    def get_context_data(self, **kwargs):
+        context = super(DaysView, self).get_context_data(**kwargs)
+        schedules = Schedule.objects.all().order_by('datetime')
+        days = []
+        for day in range(7):
+            days.append({'schedules': [x for x in schedules if x.is_on_weekday(day+1)],
+                         'datetime': datetime.datetime(2007, 1, day+1)})
+        context['days'] = days
+        return context
index 0d5bc56c57a788206f5d55e6df3f55c37712040f..48c83298b75e194f1975b773d1f5299ba576b8e4 100644 (file)
@@ -127,7 +127,7 @@ div#content {
 }
 
 div#appbar button,
-div#appbar a {
+div#appbar span {
        position: absolute;
        padding-left: 15px;
        padding-right: 15px;