Example #1
0
def works():
    categories = EnumValues.type_filter(const.PHOTO_CATEGORY_KEY).all()
    styles = EnumValues.type_filter(const.PHOTO_STYLE_KEY).all()
    category, style, include_none_date, include_none_price, min_price, max_price, min_date, max_date = \
        [None, None, None, None, None, None, None, None]
    if request.method == 'POST':
        category_id, include_none_date, include_none_price, max_date, max_price, min_date, min_price, style_id = \
            extra_fields_from_form()
        result_list, category, style = query_for_photo_collection(category_id, include_none_date, include_none_price,
                                                                  max_date, max_price, min_date, min_price, style_id)
        min_date = request.form.get('min_date')
        max_date = request.form.get('max_date')
    else:
        result_list = PhotoCollection.query.filter(PhotoCollection.photos.any()).all()
    return rt("works.html", result_list=result_list, categories=categories,
              styles=styles, category=category, style=style, route='/works',
              min_price=min_price, max_price=max_price, include_none_price=include_none_price,
              min_date=min_date, max_date=max_date, include_none_date=include_none_date)
Example #2
0
def photograph():
    categories = EnumValues.type_filter(const.PHOTO_CATEGORY_KEY).all()
    styles = EnumValues.type_filter(const.PHOTO_STYLE_KEY).all()
    category, style, include_none_date, include_none_price, min_price, max_price, min_date, max_date = \
        [None, None, None, None, None, None, None, None]
    if request.method == 'POST':
        category_id, include_none_date, include_none_price, max_date, max_price, min_date, min_price, style_id = extra_fields_from_form()
        collections, category, style = query_for_photo_collection(category_id, True, True, None, None, None, None, style_id)

        query = AppInfo.get_db().session.query(User).join(PhotoCollection, User.id == PhotoCollection.photographer_id)
        category, style = None, None
        if category_id is not None:
            query = query.filter(PhotoCollection.category_id == category_id)
            category = EnumValues.query.get(category_id)
        if style_id is not None:
            query = query.filter(PhotoCollection.style_id == style_id)
            style = EnumValues.query.get(style_id)
        if min_price is not None:
            if include_none_price:
                query = query.filter(or_(PhotoCollection.price >= min_price, PhotoCollection.price.is_(None)))
            else:
                query = query.filter(PhotoCollection.price >= min_price)
        if max_price is not None:
            if include_none_price:
                query = query.filter(or_(PhotoCollection.price <= max_price, PhotoCollection.price.is_(None)))
            else:
                query = query.filter(PhotoCollection.price <= max_price)
        if min_date is not None:
            if include_none_date:
                query = query.filter(or_(PhotoCollection.date >= min_date, PhotoCollection.date.is_(None)))
            else:
                query = query.filter(PhotoCollection.date >= min_date)
        if max_date is not None:
            if include_none_date:
                query = query.filter(or_(PhotoCollection.date <= max_date, PhotoCollection.date.is_(None)))
            else:
                query = query.filter(PhotoCollection.date <= max_date)
        collections = query.filter(PhotoCollection.photos.any()).all()

        result_list = []
        for c in collections:
            if c.photographer not in result_list:
                result_list.append(c.photographer)
    else:
        pg_type = EnumValues.find_one_by_code(const.PHOTOGRAPHER_USER_TYPE)
        result_list = User.query.filter_by(type_id=pg_type.id).all()
    return rt("photograph.html", result_list=result_list, categories=categories,
              styles=styles, category=category, style=style, route='/photograph',
              min_price=min_price, max_price=max_price, include_none_price=include_none_price,
              min_date=min_date, max_date=max_date, include_none_date=include_none_date)