Ejemplo n.º 1
0
def edit_collection(collection_id):
    categories = EnumValues.type_filter(const.PHOTO_CATEGORY_KEY).all()
    styles = EnumValues.type_filter(const.PHOTO_STYLE_KEY).all()
    photo_collection = PhotoCollection.query.get(collection_id)
    if photo_collection.photographer != current_user:
        flash("您没有权限编辑本作品集,将返回网站主页")
        return redirect(url_for("index"))
    form = PhotoCollectionForm(categories, styles)
    if request.method == "POST":
        if (
            request.form.get("photo-collection-to-delete") is not None
            and len(request.form.get("photo-collection-to-delete")) != 0
        ):
            id_to_delete = int(request.form.get("photo-collection-to-delete"))
            delete_by_id(PhotoCollection, id_to_delete)
            flash("作品集删除成功")
            return redirect(url_for("my_photos"))
        elif request.form.get("photo-works-to-delete") is not None:
            works_to_delete = request.form.get("photo-works-to-delete").split(",")
            delete_photo_works(works_to_delete)
            files = request.files.getlist("photos[]")
            if not (len(files) == 1 and files[0].filename == u""):
                add_photo_works(files, photo_collection)
        else:
            save_photo_collection(form, photo_collection)
        AppInfo.get_db().session.commit()
    return rt(
        "edit_collection.html", photo_collection=photo_collection, categories=categories, form=form, styles=styles
    )
Ejemplo n.º 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)
Ejemplo n.º 3
0
 def __init__(self):
     super(PhotographerProfileForm, self).__init__()
     locations = EnumValues.type_filter(const.LOCATION_TYPE_KEY).all()
     loc = []
     for s in locations:
         loc.append((str(s.id), s.display))
     self.location.choices = loc
Ejemplo n.º 4
0
def settings():
    user = User.query.filter_by(id=current_user.id).first()
    all_locations = EnumValues.type_filter(const.LOCATION_TYPE_KEY).all()
    if current_user.type.code == const.PHOTOGRAPHER_USER_TYPE:
        form = PhotographerProfileForm()
    else:
        form = NormalUserProfileForm()
    if request.method == 'POST':
        if request.form.get('gender') is None \
                or request.form.get('gender') == '':
            form.gender.data = u'保密'
        if form.validate_on_submit():
            user.login = form.login.data
            user.display = form.display.data
            user.gender = form.gender.data
            user.birthday = form.birthday.data
            user.mobile_phone = form.mobile_phone.data
            user.email = form.email.data
            user.weibo_account = form.weibo_account.data
            user.wechat_account = form.wechat_account.data
            user.qq_number = form.qq_number.data
            user.introduce = form.introduce.data
            user.daily_price = form.daily_price.data
            user.accept_travel = form.accept_travel.data
            user.location_id = int(form.location.data)
            if ('photo' in request.files) and \
                    (len(request.files.get('photo').filename) > 0):
                view_util.save_user_gallery(user, request.files['photo'])
            save_obj_commit(user)
            flash('更新个人信息成功!')
        else:
            flash('请确保所有必填字段已填写(日拍摄报价为必填字段)')
    return rt('settings.html', user_profile_form=form, user=user, all_locations=all_locations)
Ejemplo n.º 5
0
def create_collection():
    categories = EnumValues.type_filter(const.PHOTO_CATEGORY_KEY).all()
    styles = EnumValues.type_filter(const.PHOTO_STYLE_KEY).all()
    photo_collection = PhotoCollection()
    form = PhotoCollectionForm(categories, styles)
    if request.method == "POST":
        if form.validate_on_submit():
            photo_collection.photographer_id = current_user.id
            photo_collection.uploader_id = current_user.id
            save_photo_collection(form, photo_collection)
            save_obj_commit(photo_collection)
            flash("作品集创建成功,您可以在本界面上传作品集中的作品")
            return redirect(url_for("edit_collection", collection_id=photo_collection.id))
        else:
            flash("请填写所有信息并再次尝试创建(作品集的拍摄价格为必填字段)")
    return rt(
        "create_collection.html", photo_collection=photo_collection, categories=categories, form=form, styles=styles
    )
Ejemplo n.º 6
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)
Ejemplo n.º 7
0
 def status_filter():
     return EnumValues.type_filter(ORDER_STATUS_KEY)
Ejemplo n.º 8
0
def index():
    all_styles = EnumValues.type_filter(const.PHOTO_STYLE_KEY).all()
    all_categories = EnumValues.type_filter(const.PHOTO_CATEGORY_KEY).all()
    start_date = datetime.datetime.now() + datetime.timedelta(1)
    photo_omnibuses = PhotoOmnibus.query.all()
    return rt('index.html', all_styles=all_styles, all_categories=all_categories, start_date=start_date, photo_omnibuses=photo_omnibuses)
Ejemplo n.º 9
0
 def status_filter():
     return EnumValues.type_filter(REQUEST_STATUS_KEY)
Ejemplo n.º 10
0
 def style_filter():
     return EnumValues.type_filter(PHOTO_STYLE_KEY)
Ejemplo n.º 11
0
 def category_filter():
     return EnumValues.type_filter(PHOTO_CATEGORY_KEY)