def episodes(request, client_slug=None, show_slug=None, location_slug=None, start_day=None, state=None): # def episodes(request, client_slug=None, show_slug=None): # the selected client, show and episodes # episode entry form client=get_object_or_404(Client,slug=client_slug) show=get_object_or_404(Show,client=client,slug=show_slug) # location_slug = request.REQUEST.get('location') # start_day = request.REQUEST.get('start_day') # state = request.REQUEST.get('state') # raise Exception((client_slug, show_slug, state, start_day, location_slug)) locations=show.locations.filter(active=True).order_by('sequence') episodes=Episode.objects.filter(show=show).order_by('start') # kwargs = {'location': location_slug, # 'start__day':start_day, 'state':state} # raise Exception(episodes.filter(**kwargs)) admin_params="show__id__exact=%s" % show.id if location_slug: # location here is for default location for new episodes location=get_object_or_404(Location,slug=location_slug) episodes=episodes.filter(show=show,location=location) admin_params += "&location__id__exact=%s" % location.id if start_day: episodes = episodes.filter(start__day=start_day) admin_params +="&start__day=%s" % start_day # start__month=2&start__day=2&start__year=2014 if state: episodes = episodes.filter(state=state) admin_params += "&state__exact=%s" % state # if state=='0': # episodes = episodes.filter(state__isnull=True) if request.user.is_authenticated(): if request.method == 'POST': form=Episode_Form_Preshow(request.POST) if form.is_valid(): episode = form.save() # setup next form # use saved Episode as a base for defaults if episode.sequence is None: sequence=2 else: print episode.sequence sequence=episode.sequence+1 inits={ 'show':show.id, 'location':episode.location.id, 'sequence':sequence, 'start':episode.end, 'duration':episode.duration, 'state':1, } # roll the new episode into the query set else: # print form inits=None # (prevents form from being created below) else: if episodes: # use last Episode as a base for defaults episode = episodes[len(episodes)-1] print episode location = episode.location.id if episode.sequence is None: sequence = 2 else: sequence = episode.sequence+1 start = episode.end else: # first Episode of the show print "locations", locations location = locations[0].id sequence = 1 # today at 6pm start = datetime.datetime.combine( datetime.date.today(),datetime.time(18)) inits = { 'show':show.id, 'location':location, 'sequence':sequence, 'start': start, 'duration':'00:45:00', 'state':1, } if inits: form=Episode_Form_Preshow(initial=inits, locations=locations) else: # set this so 'episode_form':form doesn't blow up # there are other ways of doing this, they suck too. form = None return render_to_response('show.html', {'client':client,'show':show, 'locations':locations, 'location_slug':location_slug, 'episodes':episodes, 'episode_form':form, 'admin_params':admin_params, }, context_instance=RequestContext(request) )
def episodes(request, client_slug=None, show_slug=None, location_slug=None, start_day=None, state=None): # def episodes(request, client_slug=None, show_slug=None): # the selected client, show and episodes # episode entry form client=get_object_or_404(Client,slug=client_slug) show=get_object_or_404(Show,client=client,slug=show_slug) # location_slug = request.REQUEST.get('location') # start_day = request.REQUEST.get('start_day') # state = request.REQUEST.get('state') # raise Exception((client_slug, show_slug, state, start_day, location_slug)) locations=show.locations.filter(active=True).order_by('sequence') episodes=Episode.objects.filter(show=show).order_by('sequence') kwargs = {'location': location_slug, 'start__day':start_day, 'state':state} # raise Exception(episodes.filter(**kwargs)) if location_slug: # location here is for default location for new episodes location=get_object_or_404(Location,slug=location_slug) episodes=episodes.filter(show=show,location=location) if start_day: episodes = episodes.filter(start__day=start_day) if state: episodes = episodes.filter(state=state) # if state=='0': # episodes = episodes.filter(state__isnull=True) # calc total time and dv size total_minutes=0 for e in episodes: seconds = reduce(lambda x, i: x*60 + i, map(float, e.duration.split(':'))) # add 5 min to each talk to accomdate talks going over # and recording break time minutes = seconds/60 total_minutes += minutes total_episodes = episodes.count() total_hours = total_minutes / 60 total_gig = total_hours * 13 fudge_hours = (total_minutes + 5 * total_episodes) / 60 fudge_gig = fudge_hours *13 if request.user.is_authenticated(): if request.method == 'POST': form=Episode_Form_Preshow(request.POST) if form.is_valid(): episode = form.save() # setup next form # use saved Episode as a base for defaults inits={ 'show':show.id, 'location':episode.location.id, 'sequence':episode.sequence+1, 'start':episode.end, 'duration':episode.duration, 'state':1, } # roll the new episode into the query set episodes=Episode.objects.filter(show=show).order_by('sequence') else: # print form inits=None # (prevents form from being created below) else: if episodes: # use last Episode as a base for defaults episode = episodes[len(episodes)-1] print episode location = episode.location.id sequence = episode.sequence+1 start = episode.end else: # firt Episode of the show location = locations[0].id sequence = 1 # today at 6pm start = datetime.datetime.combine( datetime.date.today(),datetime.time(18)) inits = { 'show':show.id, 'location':location, 'sequence':sequence, 'start': start, 'duration':'00:45:00', 'state':1, } if inits: form=Episode_Form_Preshow(initial=inits, locations=locations) else: # set this so 'episode_form':form doesn't blow up # there are other ways of doing this, they suck too. form = None return render_to_response('show.html', {'client':client,'show':show, 'locations':locations, 'location_slug':location_slug, 'episodes':episodes, 'total_episodes':total_episodes, 'episode_form':form, 'total_hours': total_hours, 'total_gig': total_gig, 'fudge_hours': fudge_hours, 'fudge_gig': fudge_gig, }, context_instance=RequestContext(request) )