From 011b62fb5d92a6a8718a283a12a9c0b189f899c8 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Fri, 20 Nov 2020 15:09:30 -0400 Subject: [PATCH] Reformat & clean-up `frapp` application --- frapp/urls.py | 5 +-- frapp/views.py | 107 ++++++++++++++++++++++--------------------------- 2 files changed, 51 insertions(+), 61 deletions(-) diff --git a/frapp/urls.py b/frapp/urls.py index f6b7814e..d4bc1e00 100644 --- a/frapp/urls.py +++ b/frapp/urls.py @@ -1,8 +1,7 @@ -# -*- coding: utf-8 -*- - from django.conf.urls import url + from .views import json_frapp urlpatterns = [ url(r'^frapp/$', json_frapp), -] \ No newline at end of file +] diff --git a/frapp/views.py b/frapp/views.py index ceda81a6..353d6f45 100644 --- a/frapp/views.py +++ b/frapp/views.py @@ -1,14 +1,13 @@ -# -*- coding: utf-8 -*- - import json from datetime import date, datetime, time -from django.db.models import Q +from django.contrib.sites.shortcuts import get_current_site from django.core.exceptions import ObjectDoesNotExist +from django.db.models import Q from django.http import HttpResponse -from django.contrib.sites.shortcuts import get_current_site +from django.utils.translation import ugettext_lazy as _ -from program.models import Note, Show, Category, TimeSlot, Host, Schedule +from program.models import Note, Category, TimeSlot, Schedule def generate_frapp_broadcastinfos(schedule): @@ -23,32 +22,33 @@ def generate_frapp_broadcastinfos(schedule): broadcasttime = schedule.tstart.strftime('%H:%M') + ' - ' + schedule.tend.strftime('%H:%M') + ' Uhr;' broadcastinfos = '' - if schedule.rrule_id == 1: # Once - broadcastinfos = 'Am ' + weekdays[schedule.byweekday] + ', ' + schedule.dstart.strftime('%d.%m.%Y') + ', ' + broadcasttime - if schedule.rrule_id == 2: # Daily + if schedule.rrule_id == 1: # Once + broadcastinfos = 'Am ' + weekdays[schedule.byweekday] + ', ' + schedule.dstart.strftime( + '%d.%m.%Y') + ', ' + broadcasttime + if schedule.rrule_id == 2: # Daily broadcastinfos = 'täglich, ' + broadcasttime - if schedule.rrule_id == 3: # Business days + if schedule.rrule_id == 3: # Business days broadcastinfos = 'werktags, ' + broadcasttime - if schedule.rrule_id == 4: # Weekly + if schedule.rrule_id == 4: # Weekly broadcastinfos = 'Jeden ' + weekdays[schedule.byweekday] + ', ' + broadcasttime - if schedule.rrule_id == 5: # Bi-weekly + if schedule.rrule_id == 5: # Bi-weekly print("Not supported by FRAPP yet") - if schedule.rrule_id == 6: # Every four weeks + if schedule.rrule_id == 6: # Every four weeks print("Not supported by FRAPP yet") - if schedule.rrule_id == 7: # Even calendar weeks - broadcastinfos = 'Jeden geraden ' + weekdays[schedule.byweekday] + ', ' + broadcasttime - if schedule.rrule_id == 8: # Odd calendar weeks - broadcastinfos = 'Jeden ungeraden ' + weekdays[schedule.byweekday] + ', ' + broadcasttime - if schedule.rrule_id == 9: # Every 1st week - broadcastinfos = 'Jeden 1. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime - if schedule.rrule_id == 10: # Every 2nd week - broadcastinfos = 'Jeden 2. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime - if schedule.rrule_id == 11: # Every 3rd week - broadcastinfos = 'Jeden 3. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime - if schedule.rrule_id == 12: # Every 4th week - broadcastinfos = 'Jeden 4. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime - if schedule.rrule_id == 13: # Every 5th week - broadcastinfos = 'Jeden 5. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime + if schedule.rrule_id == 7: # Even calendar weeks + broadcastinfos = 'Jeden geraden ' + weekdays[schedule.byweekday] + ', ' + broadcasttime + if schedule.rrule_id == 8: # Odd calendar weeks + broadcastinfos = 'Jeden ungeraden ' + weekdays[schedule.byweekday] + ', ' + broadcasttime + if schedule.rrule_id == 9: # Every 1st week + broadcastinfos = 'Jeden 1. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime + if schedule.rrule_id == 10: # Every 2nd week + broadcastinfos = 'Jeden 2. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime + if schedule.rrule_id == 11: # Every 3rd week + broadcastinfos = 'Jeden 3. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime + if schedule.rrule_id == 12: # Every 4th week + broadcastinfos = 'Jeden 4. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime + if schedule.rrule_id == 13: # Every 5th week + broadcastinfos = 'Jeden 5. ' + weekdays[schedule.byweekday] + ', ' + broadcasttime return broadcastinfos @@ -64,17 +64,16 @@ def json_frapp(request): """ from pv.settings import MEDIA_URL - if request.GET.get('date') == None: + if request.GET.get('date') is None: start = datetime.combine(date.today(), time(0, 0)) else: - start = datetime.combine( datetime.strptime(request.GET.get('date'), '%Y-%m-%d').date(), time(0, 0)) + start = datetime.combine(datetime.strptime(request.GET.get('date'), '%Y-%m-%d').date(), time(0, 0)) end = datetime.combine(start, time(23, 59)) - timeslots = TimeSlot.objects.filter(start__gte=start,start__lte=end).select_related('show').order_by('start') - + timeslots = TimeSlot.objects.filter(start__gte=start, start__lte=end).select_related('show').order_by('start') - '''Generate categories object for output''' + # Generate categories object for output categories = Category.objects.all() categories_output = [] @@ -94,34 +93,30 @@ def json_frapp(request): for ts in timeslots: series.add(ts.show) - - '''Generate series object for output''' + # Generate series object for output series_output = [] for s in series: - metainfos = [] - metainfos.append({ 'key': 'ProduzentIn', 'value': ', '.join(ts.show.hosts.values_list('name', flat=True)) }) - metainfos.append({ 'key': 'E-Mail', 'value': ', '.join(ts.show.hosts.values_list('email', flat=True)) }) + metainfos = [{'key': 'ProduzentIn', 'value': ', '.join(ts.show.hosts.values_list('name', flat=True))}, + {'key': 'E-Mail', 'value': ', '.join(ts.show.hosts.values_list('email', flat=True))}] - image = '' if s.image.name == None or s.image.name == '' else str(get_current_site(request)) + MEDIA_URL + s.image.name - url = '' if s.website == None or s.website == '' else s.website + image = '' if s.image.name is None or s.image.name == '' else str(get_current_site(request)) + MEDIA_URL + s.image.name + url = '' if s.website is None or s.website == '' else s.website # Get active schedules for the given date # But include upcoming single timeslots (with rrule_id=1) - schedules = Schedule.objects.filter( Q(show=s.id,is_repetition=False) & - ( - Q(rrule_id__gt=1,dstart__lte=start,until__gte=start) | - Q(rrule_id=1,dstart__gte=start) - ) - ) - - schedules_repetition = Schedule.objects.filter( Q(show=s.id,is_repetition=True) & - ( - Q(rrule_id__gt=1,dstart__lte=start,until__gte=start) | - Q(rrule_id=1,dstart__gte=start) - ) - ) + schedules = Schedule.objects.filter(Q(show=s.id, is_repetition=False) & + ( + Q(rrule_id__gt=1, dstart__lte=start, until__gte=start) | + Q(rrule_id=1, dstart__gte=start) + )) + + schedules_repetition = Schedule.objects.filter(Q(show=s.id, is_repetition=True) & + ( + Q(rrule_id__gt=1, dstart__lte=start, until__gte=start) | + Q(rrule_id=1, dstart__gte=start) + )) broadcastinfos = '' @@ -150,8 +145,7 @@ def json_frapp(request): series_output.append(s_entry) - - '''Generate shows object for output''' + # Generate shows object for output shows_output = [] @@ -186,10 +180,7 @@ def json_frapp(request): shows_output.append(ts_entry) - output = {} - output['categories'] = categories_output - output['series'] = series_output - output['shows'] = shows_output + output = {'categories': categories_output, 'series': series_output, 'shows': shows_output} return HttpResponse(json.dumps(output, ensure_ascii=False).encode('utf8'), - content_type="application/json; charset=utf-8") \ No newline at end of file + content_type="application/json; charset=utf-8") -- GitLab