Exemplo n.º 1
0
 def save(self, *args, **kwargs):
     # rearrange episodes
     if self.pk is not None:
         orig = ScheduleBoard.objects.get(pk=self.pk)
         if orig.start_date != self.start_date or orig.end_date != self.end_date:  # Field has changed
             super(ScheduleBoard, self).save(*args, **kwargs)
             Episode.rearrange_episodes(programme=None, after=datetime.datetime.now())
         else:
             super(ScheduleBoard, self).save(*args, **kwargs)
     else:
         super(ScheduleBoard, self).save(*args, **kwargs)
Exemplo n.º 2
0
def create_schedule(request):
    start = int(request.POST.get('start'))
    start = datetime.datetime.fromtimestamp(start / 1000.0)
    emission_type = request.POST.get('type')
    programme_id = int(request.POST.get('programmeId'))
    programme = get_object_or_404(Programme, id=programme_id)
    schedule_board_id = int(request.POST.get('scheduleBoardId'))
    scheduleBoard = get_object_or_404(ScheduleBoard, id=schedule_board_id)

    schedule = Schedule(programme=programme, schedule_board=scheduleBoard, day=start.weekday(), start_hour=start.time(), type=emission_type)
    schedule.clean()
    schedule.save()

    Episode.rearrange_episodes(programme, datetime.datetime.now())
    return {'scheduleId': schedule.id, 'backgroundColor':background_colours[schedule.type], 'textColor':text_colours[schedule.type], 'type':schedule.type}
Exemplo n.º 3
0
 def save_model(self, request, obj, form, change):
     if not obj.pk:
         programme = obj.programme
         last_episode = Episode.get_last_episode(programme)
         now = datetime.datetime.now()
         if last_episode:
             after = last_episode.issue_date + programme.runtime
             if after < now:
                 after = now
         else:
             after = now
         schedule, date = Schedule.get_next_date(programme=programme, after=after)
         Episode.create_episode(episode=obj, date=date, programme=programme, last_episode=last_episode)
     else:
         obj.save()
Exemplo n.º 4
0
def submit_recorder(request):
    programme_id = int(request.GET.get('programme_id'))
    programme = get_object_or_404(Programme, id=programme_id)
    date = datetime.datetime.strptime(request.GET.get('date'), '%Y-%m-%d %H-%M-%S')
    file_name = request.GET.get('file_name')
    mime_type = request.GET.get('mime_type')
    length = int(request.GET.get('length'))
    url = PodcastConfiguration.objects.get().url_source + file_name

    try:
        episode = Episode.objects.select_related('programme').get(issue_date=date, programme=programme)
    except Episode.DoesNotExist:
        episode = Episode.create_episode(date, programme)

    duration = episode.programme._runtime
    try:
        # can exist but it should have same values
        # overwrite if episode exists
        podcast = Podcast.objects.get(episode=episode)
        podcast.url = url
        podcast.mime_type = mime_type
        podcast.length = length
        podcast.duration = duration
        podcast.save()
    except Podcast.DoesNotExist:
        Podcast.objects.create(episode=episode, url=url, mime_type=mime_type, length=length, duration=duration)
    return HttpResponse()
Exemplo n.º 5
0
def submit_recorder(request):
    programme_id = int(request.GET.get('programme_id'))
    programme = get_object_or_404(Programme, id=programme_id)
    date = datetime.datetime.strptime(request.GET.get('date'), '%Y-%m-%d %H-%M-%S')
    file_name = request.GET.get('file_name')
    mime_type = request.GET.get('mime_type')
    length = int(request.GET.get('length'))
    url = PodcastConfiguration.objects.get().url_source + file_name

    try:
        episode = Episode.objects.select_related('programme').get(issue_date=date, programme=programme)
    except Episode.DoesNotExist:
        episode = Episode.create_episode(date, programme)

    duration = episode.programme._runtime
    try:
        # can exist but it should have same values
        # overwrite if episode exists
        podcast = Podcast.objects.get(episode=episode)
        podcast.url = url
        podcast.mime_type = mime_type
        podcast.length = length
        podcast.duration = duration
        podcast.save()
    except Podcast.DoesNotExist:
        Podcast.objects.create(episode=episode, url=url, mime_type=mime_type, length=length, duration=duration)
    return HttpResponse()
Exemplo n.º 6
0
    def test_save_episode(self):
        date_published = datetime.datetime(2014, 1, 31, 0, 0, 0, 0)
        programme = Programme.objects.create(name="Test programme", synopsis="This is a description", _runtime=60, start_date=datetime.date(2014, 1, 31), current_season=1)
        episode = Episode.create_episode(date=date_published, programme=programme)

        self.assertEqual(episode, Episode.objects.get(id=episode.id))
        self.assertEqual(programme, Programme.objects.get(id=programme.id))
        self.assertEqual(episode.programme, Programme.objects.get(id=episode.programme.id))
Exemplo n.º 7
0
 def save_model(self, request, obj, form, change):
     if not obj.pk:
         programme = obj.programme
         last_episode = Episode.get_last_episode(programme)
         now = datetime.datetime.now()
         if last_episode:
             after = last_episode.issue_date + programme.runtime
             if after < now:
                 after = now
         else:
             after = now
         schedule, date = Schedule.get_next_date(programme=programme,
                                                 after=after)
         Episode.create_episode(episode=obj,
                                date=date,
                                programme=programme,
                                last_episode=last_episode)
     else:
         obj.save()
Exemplo n.º 8
0
def change_event(request):
    start = int(request.POST.get('start'))
    start = datetime.datetime.fromtimestamp(start / 1000.0)
    schedule_id = int(request.POST.get('id'))
    schedule = get_object_or_404(Schedule.objects.select_related('programme'), id=schedule_id)

    '''
    # next episodes from now or when the schedule board starts
    now = datetime.datetime.now()
    dt = datetime.datetime.combine(schedule.schedule_board.start_date, datetime.time(0, 0))
    if now > dt:
        dt = now
    next_episodes = Episode.next_episodes(programme=schedule.programme, hour=schedule.start_hour, after=dt)
    '''
    # change schedule
    schedule.start_hour = start.time()
    schedule.day = start.weekday()
    schedule.clean()
    schedule.save()
    Episode.rearrange_episodes(schedule.programme, datetime.datetime.now())
    '''
Exemplo n.º 9
0
def change_event(request):
    start = int(request.POST.get('start'))
    start = datetime.datetime.fromtimestamp(start / 1000.0)
    schedule_id = int(request.POST.get('id'))
    schedule = get_object_or_404(Schedule.objects.select_related('programme'),
                                 id=schedule_id)
    '''
    # next episodes from now or when the schedule board starts
    now = datetime.datetime.now()
    dt = datetime.datetime.combine(schedule.schedule_board.start_date, datetime.time(0, 0))
    if now > dt:
        dt = now
    next_episodes = Episode.next_episodes(programme=schedule.programme, hour=schedule.start_hour, after=dt)
    '''
    # change schedule
    schedule.start_hour = start.time()
    schedule.day = start.weekday()
    schedule.clean()
    schedule.save()
    Episode.rearrange_episodes(schedule.programme, datetime.datetime.now())
    '''
Exemplo n.º 10
0
    def test_save_episode(self):
        date_published = datetime.datetime(2014, 1, 31, 0, 0, 0, 0)
        programme = Programme.objects.create(name="Test programme",
                                             synopsis="This is a description",
                                             _runtime=60,
                                             start_date=datetime.date(
                                                 2014, 1, 31),
                                             current_season=1)
        episode = Episode.create_episode(date=date_published,
                                         programme=programme)

        self.assertEqual(episode, Episode.objects.get(id=episode.id))
        self.assertEqual(programme, Programme.objects.get(id=programme.id))
        self.assertEqual(episode.programme,
                         Programme.objects.get(id=episode.programme.id))
Exemplo n.º 11
0
def create_schedule(request):
    start = int(request.POST.get('start'))
    start = datetime.datetime.fromtimestamp(start / 1000.0)
    emission_type = request.POST.get('type')
    programme_id = int(request.POST.get('programmeId'))
    programme = get_object_or_404(Programme, id=programme_id)
    schedule_board_id = int(request.POST.get('scheduleBoardId'))
    scheduleBoard = get_object_or_404(ScheduleBoard, id=schedule_board_id)

    schedule = Schedule(programme=programme,
                        schedule_board=scheduleBoard,
                        day=start.weekday(),
                        start_hour=start.time(),
                        type=emission_type)
    schedule.clean()
    schedule.save()

    Episode.rearrange_episodes(programme, datetime.datetime.now())
    return {
        'scheduleId': schedule.id,
        'backgroundColor': background_colours[schedule.type],
        'textColor': text_colours[schedule.type],
        'type': schedule.type
    }
Exemplo n.º 12
0
 def clean_programme(self):
     programme = self.cleaned_data['programme']
     now = datetime.datetime.now()
     if not self.instance.pk:
         last_episode = Episode.get_last_episode(programme)
         if last_episode:
             if last_episode.issue_date:
                 after = last_episode.issue_date + programme.runtime
                 if after < now:
                     after = now
             else:
                 raise forms.ValidationError(_('There are no available schedules.'))
         else:
             after = now
         schedule, date = Schedule.get_next_date(programme=programme, after=after)
         if not date:
             raise forms.ValidationError(_('There are no available schedules.'))
     return programme
Exemplo n.º 13
0
def recording_schedules(request):
    start = datetime.datetime.strptime(request.GET.get('start'), '%Y-%m-%d %H:%M:%S')
    next_hours = request.GET.get("next_hours", None)
    if not next_hours:
        next_hours = PodcastConfiguration.objects.get().next_events
    else:
        next_hours = int(next_hours)
    json_list = []

    next_schedules, next_dates = Schedule.between(start, start + relativedelta(hours=next_hours), live=True)
    schedules = []
    dates = []
    for x in range(len(next_schedules)):
        for y in range(len(next_dates[x])):
            schedules.append(next_schedules[x])
            dates.append(next_dates[x][y])

    # sort
    if schedules:
        dates, schedules = (list(t) for t in zip(*sorted(zip(dates, schedules))))

    for x in range(len(schedules)):
        schedule = schedules[x]
        date = dates[x]

        # Create the episode to retrieve season and episode number
        try:
            episode = Episode.objects.select_related('programme').get(issue_date=date, programme=schedule.programme)
        except Episode.DoesNotExist:
            episode = Episode.create_episode(date, schedule.programme)

        start_date = date + datetime.timedelta(seconds=PodcastConfiguration.objects.get().start_delay)
        duration = schedule.runtime().seconds - PodcastConfiguration.objects.get().start_delay - PodcastConfiguration.objects.get().end_delay
        # start = date.strftime("%Y-%m-%dT%H:%M:%S"+utc_str)
        json_entry = {
            'id': schedule.programme.id, 'issue_date': date.strftime('%Y-%m-%d %H-%M-%S'),
            'start': start_date.strftime('%Y-%m-%d %H-%M-%S'), 'duration': str(duration),
            'genre': schedule.programme.get_category_display(), 'programme_name': schedule.programme.slug,
            'title': episode.title, 'author': schedule.programme.name, 'album': _('Season') + ' ' + str(episode.season),
            'track': episode.number_in_season
        }
        json_list.append(json_entry)

    return HttpResponse(json.dumps(json_list), content_type='application/json')
Exemplo n.º 14
0
 def clean_programme(self):
     programme = self.cleaned_data['programme']
     now = datetime.datetime.now()
     if not self.instance.pk:
         last_episode = Episode.get_last_episode(programme)
         if last_episode:
             if last_episode.issue_date:
                 after = last_episode.issue_date + programme.runtime
                 if after < now:
                     after = now
             else:
                 raise forms.ValidationError(
                     _('There are no available schedules.'))
         else:
             after = now
         schedule, date = Schedule.get_next_date(programme=programme,
                                                 after=after)
         if not date:
             raise forms.ValidationError(
                 _('There are no available schedules.'))
     return programme
Exemplo n.º 15
0
def delete_schedule(request):
    schedule_id = int(request.POST.get('scheduleId'))
    schedule = get_object_or_404(Schedule.objects.select_related('programme'),
                                 id=schedule_id)
    schedule.delete()
    Episode.rearrange_episodes(schedule.programme, datetime.datetime.now())
Exemplo n.º 16
0
def delete_schedule(request):
    schedule_id = int(request.POST.get('scheduleId'))
    schedule = get_object_or_404(Schedule.objects.select_related('programme'), id=schedule_id)
    schedule.delete()
    Episode.rearrange_episodes(schedule.programme, datetime.datetime.now())
Exemplo n.º 17
0
def delete_ScheduleBoard_handler(sender, **kwargs):
    Episode.rearrange_episodes(programme=None, after=datetime.datetime.now())