Пример #1
0
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) )
Пример #2
0
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) )