diff options
Diffstat (limited to 'nop')
-rw-r--r-- | nop/templates/nop_form.html | 20 | ||||
-rw-r--r-- | nop/views.py | 77 |
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): |