From 4edb31db07b8f966a8f2ffe4c63e1036c1acca25 Mon Sep 17 00:00:00 2001
From: Ernesto Rico-Schmidt <e.rico.schmidt@gmail.com>
Date: Thu, 7 Apr 2011 19:33:39 +0200
Subject: cherry-picked commits from develop branch.


diff --git a/TODO b/TODO
index ae300ac..7ffd2ac 100644
--- a/TODO
+++ b/TODO
@@ -1,8 +1,4 @@
-* create style sheet and update templates
-* integrate django-haystack
 * integrate calendar into day schedule view
 * integrate tinyMCE into admin site
 * integrate open ID
 * integrate Disqus
-* i18n
-* user management with different rights and roles
diff --git a/helsinki/program/admin.py b/helsinki/program/admin.py
index 5a6ce7f..6c64dd3 100644
--- a/helsinki/program/admin.py
+++ b/helsinki/program/admin.py
@@ -1,5 +1,7 @@
 from django.contrib import admin
 
+from datetime import datetime
+
 from models import BroadcastFormat, MusicFocus, ShowInformation, ShowTopic, Host, Note, ProgramSlot, Show, TimeSlot
 
 class BroadcastFormatAdmin(admin.ModelAdmin):
@@ -20,10 +22,32 @@ class ShowTopicAdmin(admin.ModelAdmin):
 
 class NoteAdmin(admin.ModelAdmin):
     date_hierarchy = 'start'
-    list_display = ('title', 'show', 'status')
+    list_display = ('title', 'show', 'start', 'status')
     list_filter = ('status',)
     ordering = ('timeslot',)
 
+    def queryset(self, request):
+        qs = super(NoteAdmin, self).queryset(request)
+
+        if request.user.is_superuser:
+            return qs
+        else:
+            return qs.filter(owner=request.user)
+
+    def formfield_for_foreignkey(self, db_field, request, **kwargs):
+        if db_field.name == 'timeslot':
+            if request.user.is_superuser:
+                kwargs['queryset'] = TimeSlot.objects.filter(start__gt=datetime.now)
+            else:
+                shows = request.user.shows.all()
+                kwargs['queryset'] = TimeSlot.objects.filter(show__in=shows, start__gt=datetime.now)
+
+        return super(NoteAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
+
+    def save_model(self, request, obj, form, change):
+        obj.owner = request.user
+        obj.save()
+
 class TimeSlotInline(admin.TabularInline):
     model = TimeSlot
 
diff --git a/helsinki/program/models.py b/helsinki/program/models.py
index f6839e2..d792efb 100644
--- a/helsinki/program/models.py
+++ b/helsinki/program/models.py
@@ -271,7 +271,7 @@ class Note(models.Model):
         (1, _("Recommendation")),
         (2, _("Repetition")),
     )
-    timeslot = models.OneToOneField(TimeSlot, limit_choices_to={'start__gte': datetime.now}, verbose_name=_("Time slot"))
+    timeslot = models.OneToOneField(TimeSlot, verbose_name=_("Time slot"))
     owner = models.ForeignKey(User, related_name='notes', verbose_name=_("Owner"))
     title = models.CharField(_("Title"), max_length=128)
     content = models.TextField(_("Content"))
diff --git a/helsinki/program/templates/program/current_box.html b/helsinki/program/templates/program/current_box.html
index 8220ba4..21713be 100644
--- a/helsinki/program/templates/program/current_box.html
+++ b/helsinki/program/templates/program/current_box.html
@@ -17,7 +17,9 @@
         {% if current.note %}
             <div class="note-title">{{ current.note.title }}</div>
         {% else %}
-            <div class="short-description">{{ current.show.short_description }}</div>
+            {% if current.show.short_description != 'FIMXE' %}
+                <div class="short-description">{{ current.show.short_description }}</div>
+            {% endif %}
         {% endif %}
         </div>
     </dd>
diff --git a/helsinki/program/templates/program/day_schedule.html b/helsinki/program/templates/program/day_schedule.html
index 6230314..3e7d4bc 100644
--- a/helsinki/program/templates/program/day_schedule.html
+++ b/helsinki/program/templates/program/day_schedule.html
@@ -42,7 +42,9 @@
             {% if timeslot.note %}
             <div class="note-title">Heute: {{ timeslot.note.title }}</div>
             {% else %}
+                {% if timeslot.show.short_description != 'FIXME' %}
             <div class="short-description">{{ timeslot.show.short_description }}</div>
+                {% endif %}
             {% endif %}
         </div>
     </div>
diff --git a/helsinki/program/templates/program/host_detail.html b/helsinki/program/templates/program/host_detail.html
index b780838..eff52d6 100644
--- a/helsinki/program/templates/program/host_detail.html
+++ b/helsinki/program/templates/program/host_detail.html
@@ -1,18 +1,27 @@
 <html>
 <head>
     <title>Host detail: {{ host.name }}</title>
+    <link href="/site_media/styles/base.css" media="screen" rel="stylesheet" type="text/css" />
 </head>
 <body>
 
 <div id="host-detail">
     <div id="name">{{ host.name }}</div>
 
+    <div id="shows">
+        <div id="shows-title">Sendungen</div>
+
+    {% for show in host.shows.all %}
+        <div class="show {{ show.broadcastformat.slug }}"><a href="{% url show-detail show.slug %}">{{ show }}</a></div>
+    {% endfor %}
+    </div>
+
     {% if host.email %}
-    <div id="email">{{ host.email }}</div>
+    <div id="email">E-Mail Adresse: <a href="{{ host.email }}">{{ host.email }}</a></div>
     {% endif %}
 
     {% if host.website %}
-    <div id="website">{{ host.website }}</div>
+    <div id="website">Website: <a href="{{ host.website }}">{{ host.website }}</a></div>
     {% endif %}
 </div>
 
diff --git a/helsinki/program/templates/program/host_list.html b/helsinki/program/templates/program/host_list.html
index 365154a..6497d35 100644
--- a/helsinki/program/templates/program/host_list.html
+++ b/helsinki/program/templates/program/host_list.html
@@ -1,6 +1,7 @@
 <html>
 <head>
     <title>Host list</title>
+    <link href="/site_media/styles/base.css" media="screen" rel="stylesheet" type="text/css" />
 </head>
 <body>
 
diff --git a/helsinki/program/templates/program/recommendations.html b/helsinki/program/templates/program/recommendations.html
index aa5866a..a8f5fde 100644
--- a/helsinki/program/templates/program/recommendations.html
+++ b/helsinki/program/templates/program/recommendations.html
@@ -1,18 +1,20 @@
 <html>
 <head>
     <title>Recomendations</title>
+    <link href="/site_media/styles/base.css" media="screen" rel="stylesheet" type="text/css" />
 </head>
 <body>
 
 <div id="recommendations">
-{% for note in recommendations %}
-    <div class="show">
-        <div class="broadcastformat">{{ note.show.broadcastformat }}</div>
-        <div class="timeslot">{{ note.timeslot.start }}</div>
-        <div class="show-name"><a href="{%  url show-detail note.show.slug %}">{{ note.show.name }}</a></div>
-        <div class="show-short-description">{{ note.show.short_description }}</div>
-        <div class="note-title">{{ note.title }}</div>
-        <div class="note-content">{{ note.content }}</div>
+{% for recommendation in recommendations %}
+    <div class="recommendation">
+        <div class="timeslot-start-end">{{ recommendation.timeslot.start|date:"d.m.Y H:i" }} - {{ recommendation.timeslot.end|date:"H:i" }}</div>
+        <div class="show-name"><a href="{%  url show-detail recommendation.show.slug %}">{{ recommendation.show.name }}</a></div>
+        {% if recommendation.show.short_description != 'FIXME' %}
+        <div class="show-short-description">{{ recommendation.show.short_description }}</div>
+        {% endif %}
+        <div class="note-title"><a href="{%  url timeslot-detail recommendation.timeslot.id %}">{{ recommendation.title }}</a></div>
+        <div class="note-content">{{ recommendation.content|safe}}</div>
     </div>
 {% endfor %}
 </div>
diff --git a/helsinki/program/templates/program/show_detail.html b/helsinki/program/templates/program/show_detail.html
index 05e678c..9cd2d8e 100644
--- a/helsinki/program/templates/program/show_detail.html
+++ b/helsinki/program/templates/program/show_detail.html
@@ -39,9 +39,11 @@
     {% endfor %}
     </div>
 
+    {% if show.short_description != 'FIXME' %}
     <div id="short-description">{{ show.short_description }}</div>
+    {% endif %}
 
-    <div id="description">{{ show.description }}</div>
+    <div id="description">{{ show.description|safe }}</div>
 
     {% if show.email %}
     <div id="email"><a href="mailto:{{ show.email }}">{{ show.email }}</a></div>
diff --git a/helsinki/program/templates/program/show_list.html b/helsinki/program/templates/program/show_list.html
index 7643087..1f061d0 100644
--- a/helsinki/program/templates/program/show_list.html
+++ b/helsinki/program/templates/program/show_list.html
@@ -1,72 +1,87 @@
 <html>
 <head>
     <title>Show list</title>
+    <link href="/site_media/styles/base.css" media="screen" rel="stylesheet" type="text/css" />
 </head>
 <body>
 
-<div id="showtopic-list">
-{% for topic in showtopics %}
-    <div class="showtopic">
-        <span class="abbrev">{{ topic.abbrev }}</span>
-        <span class="topic">{{ topic }}</span>
+<div id="filter">
+    <div id="filter-title">Filter</div>
+
+    <div id="showtopics">
+        <div id="showtopics-title">Thema/Schwerpunkt</div>
+        {% for topic in showtopics %}
+        <div class="showtopic">
+            <span class="abbrev">{{ topic.abbrev }}</span>
+            <span class="topic"><a href="?showtopic={{ topic.slug }}">{{ topic }}</a></span>
+        </div>
+        {% endfor %}
     </div>
-{% endfor %}
-</div>
 
-<div id="showinformation-list">
-{% for information in showinformations %}
-    <div class="showinformation">
-        <span class="abbrev">{{ information.abbrev }}</span>
-        <span class="information">{{ information }}</span>
+    <div id="showinformations">
+        <div id="showinformations-title"></div>
+        {% for information in showinformations %}
+        <div class="showinformation">
+            <span class="abbrev">{{ information.abbrev }}</span>
+            <span class="information"><a href="?showinformation={{ information.slug }}">{{ information }}</a></span>
+        </div>
+        {% endfor %}
     </div>
-{% endfor %}
-</div>
 
-<div id="musicfocus-list">
-{% for focus in musicfoci %}
-    <div class="musicfocus">
-        <span class="abbrev">{{ focus.abbrev }}</span>
-        <span class="focus">{{ focus }}</span>
+    <div id="musicfoci">
+        <div id="musicfoci-title">Musiktendenz</div>
+        {% for focus in musicfoci %}
+        <div class="musicfocus">
+            <span class="abbrev">{{ focus.abbrev }}</span>
+            <span class="focus"><a href="?musicfocus={{ focus.slug }}">{{ focus }}</a></span>
+        </div>
+    {% endfor %}
     </div>
-{% endfor %}
 </div>
 
-<div id="show-list">
+<div id="shows">
 {% for show in shows %}
     <div class="show">
-        <div class="abbrevs">
-        {% for topic in show.showtopic.all %}
+        <div class="abbrevs">&nbsp;
+            {% for topic in show.showtopic.all %}
             <span class="topic-abbrev">{{ topic.abbrev }}</span>
-        {% endfor %}
+            {% endfor %}
 
-        {% for information in show.showinformation.all %}
+            {% for information in show.showinformation.all %}
             <span class="information-abbrev">{{ information.abbrev }}</span>
-        {% endfor %}
+            {% endfor %}
 
-        {% for focus in show.musicfocus.all %}
+            {% for focus in show.musicfocus.all %}
             <span class="focus-abbrev">{{ focus.abbrev }}</span>
-        {% endfor %}
+            {% endfor %}
 
             <span class="broadcastformat-abbrev">{{ show.broadcastformat.abbrev }}</span>
         </div>
 
-        <div class="name"><a href="{% url show-detail show.slug %} ">{{ show.name }}</a></div>
+        <div class="details">
+            <div class="name"><a href="{% url show-detail show.slug %}">{{ show.name }}</a></div>
 
-        <div class="programslots">
-        {% for slot in show.programslots.all %}
-            <div class="programslot">{{ slot }}</div>
-        {% endfor %}
-        </div>
+            <div class="programslots">
+            {% for slot in show.programslots.all %}
+                <div class="programslot">{{ slot }}</div>
+            {% endfor %}
+            </div>
 
-        <div class="short-description">{{ show.short_description }}</div>
+            {% if show.short_description != 'FIXME' %}
+            <div class="short-description">{{ show.short_description }}</div>
+            {% endif %}
+        </div>
     </div>
 {% endfor %}
 </div>
 
-<div id="broadcastformat-list">
-{% for format in broadcastformats %}
-    <div class="broadcastformat">{{ format }}</div>
-{% endfor %}
+<div id="broadcastformats">
+    <div id="broadcastformats-title">Legende</div>
+    {% for broadcastformat in broadcastformats %}
+    <div class="{{ broadcastformat.slug }}">
+        <a href="?broadcastformat={{ broadcastformat.slug }}">{{ broadcastformat.format }}</a>
+    </div>
+    {% endfor %}
 </div>
 
 </body>
diff --git a/helsinki/program/templates/program/timeslot_detail.html b/helsinki/program/templates/program/timeslot_detail.html
index f445f5d..f8dee29 100644
--- a/helsinki/program/templates/program/timeslot_detail.html
+++ b/helsinki/program/templates/program/timeslot_detail.html
@@ -1,13 +1,12 @@
 <html>
 <head>
     <title>Timeslot detail: {{ timeslot }}</title>
+    <link href="/site_media/styles/base.css" media="screen" rel="stylesheet" type="text/css" />
 </head>
 <body>
 
-<div id="calendar"></div>
-
 <div id="timeslot-detail">
-    <div id="name">{{ timeslot.show.name }}</div>
+    <div id="show-name">{{ timeslot.show.name }}</div>
 
     <div id="abbrevs">
     {% for topic in timeslot.show.showtopic.all %}
@@ -35,19 +34,21 @@
 
     <div id="hosts">
     {% for host in timeslot.show.hosts.all %}
-        <div class="host">{{ host }}</div>
+        <div class="host"><a href="{% url host-detail host.id %}">{{ host }}</a></div>
     {% endfor %}
     </div>
 
+    {% if timeslot.show.short_description != 'FIXME' %}
     <div id="short-description">{{ timeslot.show.short_description }}</div>
+    {% endif %}
 
-    <div id="description">{{ timeslot.show.description }}</div>
+    <div id="description">{{ timeslot.show.description|safe }}</div>
 
     <div id="note">
     {% if timeslot.note %}
         <div class="note">
             <div class="title">{{ timeslot.note.title }}</div>
-            <div class="content">{{ timeslot.note.content }}</div>
+            <div class="content">{{ timeslot.note.content|safe }}</div>
         </div>
     {% endif %}
     </div>
diff --git a/helsinki/program/templates/program/week_schedule.html b/helsinki/program/templates/program/week_schedule.html
index 2969d28..f6e8f57 100644
--- a/helsinki/program/templates/program/week_schedule.html
+++ b/helsinki/program/templates/program/week_schedule.html
@@ -1,38 +1,12 @@
 <html>
 <head>
     <title>Week schedule</title>
+    <link href="/site_media/styles/base.css" media="screen" rel="stylesheet" type="text/css" />
 </head>
 
 <body>
 
 <div id="week-schedule">
-    <div id="time">
-        <div class="1hour">06:00</div>
-        <div class="1hour">07:00</div>
-        <div class="1hour">08:00</div>
-        <div class="1hour">09:00</div>
-        <div class="1hour">10:00</div>
-        <div class="1hour">11:00</div>
-        <div class="1hour">12:00</div>
-        <div class="1hour">13:00</div>
-        <div class="1hour">14:00</div>
-        <div class="1hour">15:00</div>
-        <div class="1hour">16:00</div>
-        <div class="1hour">17:00</div>
-        <div class="1hour">18:00</div>
-        <div class="1hour">19:00</div>
-        <div class="1hour">20:00</div>
-        <div class="1hour">21:00</div>
-        <div class="1hour">22:00</div>
-        <div class="1hour">23:00</div>
-        <div class="1hour">00:00</div>
-        <div class="1hour">01:00</div>
-        <div class="1hour">02:00</div>
-        <div class="1hour">03:00</div>
-        <div class="1hour">04:00</div>
-        <div class="1hour">05:00</div>
-    </div>
-
     <div id="monday">
         <div class="weekday">{{ monday|date:"l d.m.Y" }}</div>
         {% for timeslot in monday_timeslots %}
diff --git a/helsinki/program/urls.py b/helsinki/program/urls.py
index b956ef6..06018e2 100644
--- a/helsinki/program/urls.py
+++ b/helsinki/program/urls.py
@@ -1,9 +1,19 @@
+from django.conf import settings
 from django.conf.urls.defaults import *
 from django.contrib import admin
 
+import os
+
 admin.autodiscover()
 
 urlpatterns = patterns('',
     (r'^admin/', include(admin.site.urls)),
     (r'^program', include('helsinki.program.urls_program')),
 )
+if settings.DEBUG:
+    urlpatterns += patterns('',
+        (r'^site_media/(?P<path>.*)$',
+         'django.views.static.serve',
+         {'document_root': os.path.join(os.path.dirname(__file__), 'site_media')}
+        ),
+    )
-- 
cgit v0.10.2