summaryrefslogtreecommitdiff
path: root/nop
diff options
context:
space:
mode:
Diffstat (limited to 'nop')
-rw-r--r--nop/templates/nop_form.html20
-rw-r--r--nop/views.py77
2 files changed, 73 insertions, 24 deletions
diff --git a/nop/templates/nop_form.html b/nop/templates/nop_form.html
index 1144692..b9be92f 100644
--- a/nop/templates/nop_form.html
+++ b/nop/templates/nop_form.html
@@ -36,11 +36,21 @@
<ul>
{% for track in nowplaying %}
<li>
- <small>{{track.datetime}}:</small>
- <strong>{{track.artist}}</strong> -
- {{track.title}} -
- {{track.album}}
- in der Sendung <em>{{track.showtitle}}</em>
+ {% if track.start or track.show %}
+ <small>
+ {% if track.start %}{{track.start}}{% endif %}
+ {% if track.start and track.show %},{% endif %}
+ {% if track.show %}Sendung {{track.show}}{% endif %}
+ {% if track.artist or track.title or track.album %}:{% endif %}
+ </small>
+ {% endif %}
+ {% if track.artist %}
+ <strong>{{track.artist}}</strong>
+ {% endif %}
+ {% if track.artist and track.title or track.artist and track.album %}|{% endif %}
+ {% if track.title %}{{track.title}}{% endif %}
+ {% if track.title and track.album %}|{% endif %}
+ {% if track.album %}{{track.album}}{% endif %}
</li>
{% endfor %}
</ul>
diff --git a/nop/views.py b/nop/views.py
index 411fb31..1fd78a5 100644
--- a/nop/views.py
+++ b/nop/views.py
@@ -3,11 +3,14 @@ from django.shortcuts import render_to_response
from django.http import HttpResponse
from django import forms
from models import Master, Standby, State
+from program.models import TimeSlot
+
import json
import time
from datetime import datetime
DB = 'nop'
+MUSIKPROG_ID = 1 # unmodieriertes musikprogramm
class NopForm(forms.Form):
date = forms.DateField(
@@ -25,6 +28,9 @@ class NopForm(forms.Form):
attrs={'id':'nop_time', 'class':'date'})
)
+def _dtstring(dt):
+ return time.strftime('%Y-%m-%d %H:%M', dt)
+
def _which(timestamp=None):
if timestamp:
res = State.objects.using(DB).filter(timestamp__lt=timestamp)[0]
@@ -35,33 +41,66 @@ def _which(timestamp=None):
else:
return Standby
+def _get_show(datetime = None):
+ try:
+ if datetime:
+ timeslot = TimeSlot.objects.get(start__lte=datetime, end__gt=datetime)
+ else:
+ timeslot = TimeSlot.objects.get_or_create_current()
+ return {'start': _dtstring(timeslot.start.timetuple()),
+ 'id': timeslot.show.id,
+ 'name': timeslot.show.name}
+ except: # e.g. DoesNotExist
+ return {'start': None, 'id': None, 'name': None}
+
def _current():
#current = int(time.time())*1000000
#time.gmtime(_which().objects.using(DB).all()[6000].timestamp//1000000)
# select all where timestamp < givenTS, get most recent one -> order DESC
- # reverse sorted. get the first object = last played
- result = _which().objects.using(DB).all()[0]
- return {'artist': result.artist, 'title': result.title}
+ artist = None
+ title = None
+ album = None
+ show = _get_show()
+ if show['id'] == MUSIKPROG_ID:
+ # reverse sorted. get the first object = last played
+ result = _which().objects.using(DB).all()[0]
+ artist = result.artist
+ title = result.title
+ album = result.album
+ return {'show': show['name'],
+ 'start': show['start'],
+ 'artist': artist,
+ 'title': title,
+ 'album': album}
def _bydate(year=None, month=None, day=None, hour=None, minute=None):
- try:
- # tm_year,tm_mon,tm_mday,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst
- ts = int(time.mktime((
- int(year),
- int(month),
- int(day),
- int(hour),
- int(minute),0,0,0,-1))) * 1000000
-
- result = _which(ts).objects.using(DB).filter(timestamp__lt=ts)[:5]
- return [{'artist': item.artist, 'title': item.title, 'album': item.album,
- 'datetime': time.strftime('%Y-%m-%d %H:%M',
- time.localtime(item.timestamp//1000000)),
- 'showtitle': item.showtitle} for item in result]
- except: # all errors
- return None
+ #try:
+ #import pdb;pdb.set_trace()
+ show = _get_show(datetime(year, month, day, hour, minute))
+ if show['id'] and show['id'] != MUSIKPROG_ID:
+ return [{'show': show['name'],
+ 'start': show['start'],
+ 'artist': None,
+ 'title': None,
+ 'album': None}]
+ else:
+ # tm_year,tm_mon,tm_mday,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst
+ ts = int(time.mktime((
+ int(year),
+ int(month),
+ int(day),
+ int(hour),
+ int(minute),0,0,0,-1))) * 1000000
+ result = _which(ts).objects.using(DB).filter(timestamp__lt=ts)[:5]
+ return [{'show': show['name'],
+ 'start': _dtstring(time.localtime(item.timestamp//1000000)),
+ 'artist': item.artist,
+ 'title': item.title,
+ 'album': item.album} for item in result]
+ #except: # all errors
+ # return None
def get_current(request):