def add_chapter(request, episode): e_state = episode.get_user_state(request.user) podcast = Podcast.get(episode.podcast) try: start = parse_time(request.POST.get('start', '0')) if request.POST.get('end', '0'): end = parse_time(request.POST.get('end', '0')) else: end = start adv = 'advertisement' in request.POST label = request.POST.get('label') except Exception as e: # FIXME: when using Django's messaging system, set error message return HttpResponseRedirect(get_episode_link_target(episode, podcast)) chapter = Chapter() chapter.start = start chapter.end = end chapter.advertisement = adv chapter.label = label e_state.update_chapters(add=[chapter]) return HttpResponseRedirect(get_episode_link_target(episode, podcast))
def _wrap_chapter(res): from mygpo.users.models import Chapter user = res['key'][1] chapter = Chapter.wrap(res['value']) udb = get_userdata_database() chapter.set_db(udb) return (user, chapter)
def parse_new_chapters(user, chapters): for c in chapters: if not 'start' in c: raise ParameterMissing('start parameter missing') start = parse_time(c['start']) if not 'end' in c: raise ParameterMissing('end parameter missing') end = parse_time(c['end']) label = c.get('label', '') adv = c.get('advertisement', False) device_uid = c.get('device', None) if device_uid: device_id = get_device(user, device_uid, request.META.get('HTTP_USER_AGENT', ''), undelete=True).id else: device_id = None chapter = Chapter() chapter.device = device_id chapter.created = timestamp chapter.start = start chapter.end = end chapter.label = label chapter.advertisement = adv yield chapter
def episode(request, episode): podcast = Podcast.get(episode.podcast) if not podcast: raise Http404 if request.user.is_authenticated(): episode_state = episode.get_user_state(request.user) is_fav = episode_state.is_favorite() # pre-populate data for fetch_data podcasts_dict = {podcast.get_id(): podcast} episodes_dict = {episode._id: episode} history = list(episode_state.get_history_entries()) HistoryEntry.fetch_data(request.user, history, podcasts=podcasts_dict, episodes=episodes_dict) played_parts = EpisodeHeatmap(podcast.get_id(), episode._id, request.user._id, duration=episode.duration) devices = dict( (d.id, d.name) for d in request.user.devices ) else: history = [] is_fav = False played_parts = None devices = {} chapters = [] for user, chapter in Chapter.for_episode(episode._id): chapter.is_own = request.user.is_authenticated() and \ user == request.user._id chapters.append(chapter) prev = podcast.get_episode_before(episode) next = podcast.get_episode_after(episode) return render(request, 'episode.html', { 'episode': episode, 'podcast': podcast, 'prev': prev, 'next': next, 'history': history, 'chapters': chapters, 'is_favorite': is_fav, 'played_parts': played_parts, 'actions': EPISODE_ACTION_TYPES, 'devices': devices, })