Esempio n. 1
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()
Esempio n. 2
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()
Esempio n. 3
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()
Esempio n. 4
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))
Esempio n. 5
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()
Esempio 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))
Esempio n. 7
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')