コード例 #1
0
ファイル: views.py プロジェクト: TrueFurby/flask-checkepisode
def listing(show=None):
    create_token()
    if show is None:
        show = request.cookies.get('show', 'all')

    if show == 'watched':
        episodes = Episode.query.filter(
                Episode.serie_id.in_(
                    x.id for x in current_user.favorite_series
                ),
                Episode.id.in_(
                    x.id for x in current_user.watched_episodes
                ),
                Episode.air_time != None
            ).order_by(Episode.air_time)
    elif show == 'unwatched':
        episodes = Episode.query.filter(
                Episode.serie_id.in_(
                    x.id for x in current_user.favorite_series
                ),
                ~Episode.id.in_(
                    x.id for x in current_user.watched_episodes
                ),
                Episode.air_time != None
            ).order_by(Episode.air_time)
    else:
        episodes = Episode.query.filter(
                Episode.serie_id.in_(
                    x.id for x in current_user.favorite_series
                ),
                Episode.air_time != None
            ).order_by(Episode.air_time)

    if episodes.count() <= 0:
        flash('You have no shows in your watchlist! \
            Add some of the popular ones or use search!', 'warning')
        return redirect(url_for('shows'))

    aired_eps = []
    upcoming_eps = []
    for e in episodes:
        if e.runtime < datetime.now():
            aired_eps.append(e)
        else:
            upcoming_eps.append(e)
    resp = make_response(render_template(
        'listing.html',
        aired_eps=aired_eps,
        upcoming_eps=upcoming_eps,
        today=datetime.now(),
        show=show))
    resp.set_cookie('show', show)
    return resp
コード例 #2
0
ファイル: views.py プロジェクト: TrueFurby/flask-checkepisode
def showSeries(id):
    create_token()
    series = Serie.query.get_or_404(id)
    try:
        seasonCount = int(db.session.query(func.max(Episode.seas_num)).\
            filter(Episode.serie == series).scalar())
    except:
        seasonCount = 0
    season = int(request.args.get('season', seasonCount))
    season_list = Episode.query.filter_by(serie=series, seas_num=season).all()
    if not series.last_update:
        flash('This show does not contain all informations. \
            It will be updated soon.', 'warning')
    return render_template('series/detail.html', series=series, \
        seasonCount=seasonCount, season=season, season_list=season_list, \
        today=today.strftime('%Y%m%d'))
コード例 #3
0
ファイル: views.py プロジェクト: TrueFurby/flask-checkepisode
def search():
    create_token()
    q = request.args.get('q', None)
    series = ()
    found_series = ()
    if q is None:
        flash('Please add more constraints to your search!', 'warning')
    elif len(q) < 3:
        flash('Please enter at least 3 characters!', 'warning')
    else:
        series = Serie.query.filter(Serie.name.like(\
            ('%s%s%s' % ('%', q, '%')))).all()
        if current_user.is_authenticated():
            found_series = searchFor(q)[:10]
    return render_template('search.html', q=q, series=series, \
        found_series=found_series)
コード例 #4
0
ファイル: views.py プロジェクト: TrueFurby/flask-checkepisode
def watchlist():
    create_token()
    episodes = Episode.query.subquery()
    userseries = UserSerie.query.subquery()
    # Get the min air time for each of the favorite series.
    min_air_times = db.session.query(
            Serie.id.label('serie_id'),
            db.func.min(episodes.c.id).label('id')
        ).filter(
            Serie.id.in_(x.id for x in current_user.favorite_series)
        ).outerjoin(
            userseries,
            Serie.id == userseries.c.serie_id
        ).outerjoin(
            episodes,
            Serie.id == episodes.c.serie_id
        ).filter(
            ~episodes.c.id.in_(x.id for x in current_user.watched_episodes)
        ).filter(
            episodes.c.seas_num != 0
        ).order_by(
            desc(userseries.c.last_watched)
        ).group_by(
            Serie.id
        ).subquery()
    # Select the serie and episode.
    shows = db.session.query(
            Serie,
            Episode
        ).join(
            Episode,
            Episode.serie_id == Serie.id
        ).join(
            min_air_times,
            db.and_(
                min_air_times.c.serie_id == Serie.id,
                min_air_times.c.id == Episode.id
            )
        ).all()
    return render_template('watchlist.html', shows=shows, today=datetime.now())
コード例 #5
0
ファイル: views.py プロジェクト: TrueFurby/flask-checkepisode
def shows(sort=None):
    create_token()
    if sort is None:
        sort = request.cookies.get('sort', 'fans')

    if sort == 'name':
        sub = db.session.query(UserSerie.serie_id, func.count(
                    UserSerie.user_id).label('count')).group_by(
                UserSerie.serie_id
            ).subquery()
        shows = db.session.query(Serie, sub.c.count).outerjoin(
            sub, Serie.id == sub.c.serie_id
            ).order_by(
            Serie.name)
    elif sort == 'first':
        sub = db.session.query(UserSerie.serie_id, func.count(
                    UserSerie.user_id).label('count')).group_by(
                UserSerie.serie_id
            ).subquery()
        shows = db.session.query(Serie, sub.c.count).outerjoin(
            sub, Serie.id == sub.c.serie_id
            ).order_by(
            db.desc(Serie.first_aired))
    else:
        sub = db.session.query(UserSerie.serie_id, func.count(
                    UserSerie.user_id).label('count')).group_by(
                UserSerie.serie_id
            ).subquery()
        shows = db.session.query(Serie, sub.c.count).outerjoin(
                sub, Serie.id == sub.c.serie_id
            ).order_by(db.desc('count'))

    resp = make_response(render_template(
        'shows.html',
        shows=shows,
        today=datetime.now(),
        sort=sort))
    resp.set_cookie('sort', sort)
    return resp
コード例 #6
0
ファイル: views.py プロジェクト: TrueFurby/flask-checkepisode
def showEpisode(id):
    create_token()
    episode = Episode.query.get_or_404(id)
    return render_template('episode/detail.html', episode=episode)