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 )
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)
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
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)
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 )
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)
def status_filter(): return EnumValues.type_filter(ORDER_STATUS_KEY)
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)
def status_filter(): return EnumValues.type_filter(REQUEST_STATUS_KEY)
def style_filter(): return EnumValues.type_filter(PHOTO_STYLE_KEY)
def category_filter(): return EnumValues.type_filter(PHOTO_CATEGORY_KEY)