Пример #1
0
def pictures_by_year():
    """
    view photos by year
    """
    pictures = Picture.objects().order_by('-shot_time')
    year = 0
    years = []
    pictures_by_year = defaultdict(list)
    for picture in pictures:
        year = picture.shot_time.year
        if year not in years:
            years.append(year)
        pictures_by_year[year].append(picture)
    return render_template('main/pictures_by_year.html',
                           pictures_by_year=pictures_by_year,
                           years=years)
Пример #2
0
def pictures_by_tag(tag):
    """
    view photos by tag
    """
    pictures = Picture.objects(tags=tag).order_by('-shot_time')
    tag_dict = {
        'mountain': '高山',
        'water': '流水',
        'things': '万物',
        'people': '人间',
        'me': '我',
    }
    return render_template('main/pictures_by_tag.html',
                           pictures=pictures,
                           tag=tag,
                           tag_dict=tag_dict)
Пример #3
0
def index():
    """
    main page of the blog:
    it shows 5pages carousel
    10 photos ordered by shot time per page
    """
    pictures = Picture.objects().order_by('-shot_time')
    l = len(pictures)
    if l > 5:
        carousel_pictures = random.sample(list(pictures), 5)
    else:
        carousel_pictures = random.sample(list(pictures), l)
    page = request.args.get('page', 1, type=int)
    paginated_pictures = pictures.paginate(
        page=page, per_page=current_app.config['PIC_PER_PAGE'])
    current_page = paginated_pictures.page
    total_page = paginated_pictures.pages

    page_start = 1
    page_end = 5
    if total_page < 5:
        page_end = total_page
    else:
        page_start = current_page - 2
        page_end = current_page + 2
        if page_start < 1:
            page_start = 1
            page_end = 5
        if page_end > total_page:
            page_start = total_page - 4
            page_end = total_page

    url_list = []
    for p in range(1, total_page + 1):  # so page number start from 1
        url = url_for('main.index', page=p)
        url_list.append(url)
    return render_template('main/index.html',
                           pictures=paginated_pictures.items,
                           carousel_pictures=carousel_pictures,
                           current_page=current_page,
                           total_page=total_page,
                           page_start=page_start,
                           page_end=page_end,
                           url_list=url_list)