def category_list(): meta = { 'title': '分类管理', 'css_nav_sub_category': 'active', 'css_nav_system': 'active' } query = {} page = int(request.args.get('page', 1)) per_page = int(request.args.get('per_page', 100)) status = int(request.args.get('status', 0)) kind = int(request.args.get('kind', 0)) deleted = int(request.args.get('deleted', 0)) if kind: query['kind'] = kind if kind == 1: meta['css_doc'] = 'active' elif kind == 2: meta['css_other'] = 'active' else: meta['css_all'] = 'active' else: meta['css_all'] = 'active' if status == -1: query['status'] = 0 elif status == 1: query['status'] = 1 else: pass query['deleted'] = deleted page_url = url_for('admin.category_list', page="#p#", status=status, kind=kind, per_page=per_page) data = Category.objects(**query).order_by('-created_at').paginate( page=page, per_page=per_page) total_count = Category.objects(**query).count() # 过滤数据 for i, d in enumerate(data.items): kind_label = '--' if d.kind == 1: kind_label = '文档' if d.kind == 2: kind_label = '备用' data.items[i].kind_label = kind_label meta['data'] = data.items pager = Pager(page, per_page, total_count, page_url) meta['pager'] = pager.render_view() return render_template('admin/category/list.html', meta=meta)
def category_delete(): meta = { 'title': '分类管理', 'css_nav_sub_category': 'active', 'css_nav_system': 'active' } ids = request.values.get('ids', '') type = request.values.get('type', 1) if not ids: return jsonify(success=False, message='缺少请求参数!') try: arr = ids.split(',') for d in arr: category = Category.objects(_id=d).first() category.mark_delete() if category else None except (Exception) as e: return jsonify(success=False, message=str(e)) return jsonify(success=True, message='操作成功!', data={ 'ids': ids, 'type': type }, redirect_to=url_for('admin.category_list'))
def post(self): form = NormalForm() categories = Category.objects() if form.validate_on_submit(): product = Product(seller_id=current_user.id, name=form.name.data, price=form.price.data, detail=form.detail.data, image="product." + form.image.data.filename.split(".")[1].lower(), categories=request.form.getlist("categories"), bidding=False, status=0) product.save() image_path = os.path.join(os.getcwd(), 'app/static/image', str(product.id)) os.makedirs(image_path) form.image.data.save(os.path.join(image_path, product.image)) return redirect(url_for('user.profile')) return render_template('user/selling/normal.html', form=form, categories=categories)
def get(self): form = BiddingForm() categories = Category.objects() return render_template('user/selling/bidding.html', form=form, categories=categories)
def get(self): form = NormalForm() categories = Category.objects() return render_template('user/selling/normal.html', form=form, categories=categories)
def get(self, type_of): categories = Category.objects(category__contains=type_of) #for c in categories: # print(c.category) products = Product.objects(categories__in=categories, status=0) way = "normal" return render_template('search.html', products=products, way=way, now=datetime.datetime.utcnow() + datetime.timedelta(hours=8))
def post(self, product_id): form = EditForm() categories = Category.objects() product = Product.objects(id=product_id).first() if form.validate_on_submit(): product.name = form.name.data product.price = form.price.data product.detail = form.detail.data print(form.image.data.filename) if (form.image.data.filename != ''): image_path = os.path.join(os.getcwd(), 'app/static/image', str(product.id)) print(product.image) try: os.remove(os.path.join(image_path, product.image)) #刪掉原本的檔案 print("File is deleted successfully") except: print(e) product.image = "product." + form.image.data.filename.split( '.')[-1].lower() #上傳成功設定圖片名稱 form.image.data.save(os.path.join(image_path, product.image)) #儲存上傳的檔案 #response.headers['Cache-Control'] = 'public, max-age=0' categories = Category.objects( id__in=request.form.getlist("categories")) product.categories = categories product.save() return redirect(url_for('user.selling_list')) return render_template('user/selling/edit.html', form=form, categories=categories, product=product)
def image_submit(): meta = metaInit.copy() id = request.args.get('id', None) meta['data'] = None if id: item = Image.objects(_id=ObjectId(id)).first() item._id = str(item._id) item.thumb = item.get_thumb_path() item.tags_s = ','.join(item.tags) item.color_tags_s = ','.join(item.color_tags) item.brand_tags_s = ','.join(item.brand_tags) item.material_tags_s = ','.join(item.material_tags) item.style_tags_s = ','.join(item.style_tags) item.technique_tags_s = ','.join(item.technique_tags) item.other_tags_s = ','.join(item.other_tags) item.color_ids_s = ','.join(item.color_ids) meta['data'] = item form = SaveForm() meta['default_tags'] = re.split('[,,]', get_block_content('default_tags')) meta['default_color_tags'] = re.split( '[,,]', get_block_content('default_color_tags')) meta['default_brand_tags'] = re.split( '[,,]', get_block_content('default_brand_tags')) meta['default_material_tags'] = re.split( '[,,]', get_block_content('default_material_tags')) meta['default_style_tags'] = re.split( '[,,]', get_block_content('default_style_tags')) meta['default_technique_tags'] = re.split( '[,,]', get_block_content('default_technique_tags')) meta['default_other_tags'] = re.split( '[,,]', get_block_content('default_other_tags')) meta['prize_options'] = prize_options() categories = Category.objects(kind=2, status=1, deleted=0)[:20] meta['categories'] = categories # 获取品牌列表 brands = Brand.objects(status=1, deleted=0)[:1000] meta['brands'] = brands meta['referer_url'] = request.environ.get( 'HTTP_REFERER') if request.environ.get('HTTP_REFERER') else url_for( 'admin.image_list') return render_template('admin/image/submit.html', meta=meta, form=form)
def get(self, product_id): form = BiddingForm() product = Product.objects(id=product_id, bidding=True).first() categories = Category.objects(categorycontains=product.categories) orders = Order.objects(product_id__in=Product.objects( seller_id=product.seller_id)) similar_product = Product.objects( id__ne=product_id, bid__due_time__gt=datetime.datetime.utcnow() + datetime.timedelta(hours=8), bidding=True, status=0, categories__in=product.categories).order_by('-create_time')[:12] like = "far fa-heart" remove = "下架此商品" if product == None: abort(404) if current_user.is_active: #update history information = Information.objects(user_id=current_user.id).first() history_product = [h['product'] for h in information.history] try: index = history_product.index(product) information.history[ index].create_time = datetime.datetime.utcnow() except ValueError: information.history.append(History(product=product)) information.save() if product in information.like: like = "fas fa-heart" product.view += 1 product.save() return render_template('product/bidding.html', form=form, orders=orders, product=product, similar_product=similar_product, PRODUCT_STATUS=PRODUCT_STATUS, remove=remove, like=like, now=datetime.datetime.utcnow() + datetime.timedelta(hours=8))
def get(self, product_id): form = EditForm() product = Product.objects(id=product_id, seller_id=current_user.id, status=PRODUCT_STATUS["SELLING"]).first() if product == None: abort(404) form.price.data = product.price form.name.data = product.name form.detail.data = product.detail categories = Category.objects() return render_template('user/selling/edit.html', form=form, categories=categories, product=product)
def get_category(id): """ Fetch shopping_list """ query = Category.objects(user_id=int(id)) if query.count > 0: data = {'results': []} i = 0 for instance in query: data['results'].append({'id': instance.id, 'name': instance.name, 'slug': instance.slug, 'description': instance.description, 'created_at': instance.created_at}) i += 1 if i == query.count(): return make_response(jsonify({'success': True, 'results': data['results']}), 200) else: return make_response(jsonify({'success': True, 'results': []}), 204)
def delete_route(route_id): assert isinstance(route_id, ObjectId) route = RouteHelper.get(route_id) assert route for attach_id in route.attached: AttachmentHelper.delete(attach_id) f_cate = Category.objects(id=route.father).first() f_cate.routes.remove(route.id) f_cate.save() enters = EnteredRoute.objects(route=route.id) for entered_route in enters: user = UserHelper.get(entered_route.user) user.entered_routes.remove(route.id) user.save() enters.delete() RateInfo.objects(route=route.id).delete() route.delete()
def category_submit(): meta = { 'title': '分类管理', 'css_nav_sub_category': 'active', 'css_nav_system': 'active' } meta['referer_url'] = request.environ.get( 'HTTP_REFERER') if request.environ.get('HTTP_REFERER') else '' id = int(request.args.get('id', 0)) meta['data'] = None if id != 0: category = Category.objects(_id=id).first() meta['data'] = category form = SaveForm() meta['category_kind_options'] = Category.category_kind_options() meta['parent_options'] = Category.fetch_parent_options() current_app.logger.debug('aaa') current_app.logger.debug(type(Category.fetch_parent_options())) return render_template('admin/category/submit.html', meta=meta, form=form)
def get_hot_categorys(): return Category.objects()[:6]
#!/usr/bin/python # -*- coding: utf-8 -*- from urllib import * from app.app import app from app.models.category import Category from app.helpers.category import CategoryHelper Category.objects().delete() program_icon = urlopen('http://www.pronovadesigns.com/wp-content/uploads/2014/03/web-programming1.jpg') c_icon = urlopen('https://upload.wikimedia.org/wikipedia/commons/6/6f/Cimage.jpg') cpp_icon = urlopen('http://avatar.csdn.net/blogpic/20140408151827593.jpg') mfc_icon = urlopen('http://gaitaobao2.alicdn.com/tfscom/i4/T1BrgMXc0XXXXXXXXX_!!0-item_pic.jpg_310x310.jpg') cocos2dx_icon = urlopen('http://avatar.csdn.net/blogpic/20120103185816438.jpg') java_icon = urlopen('http://www.theinquirer.net/IMG/935/317935/java-logo-oracle-20-years-programming.jpg') python_icon = urlopen('http://www.anxia.com/uploads/image/201501/291422523242436140.jpg') art_icon = urlopen('https://cbsmiami.files.wordpress.com/2012/10/art-paint-jpg.png?w=300') music_icon = urlopen('http://www.christchurchkennebunk.org/musicstaff.jpg') sing_icon = urlopen('http://static.wixstatic.com/media/af2255_96fb29987ba64150b6c679f282b65cd0.jpg_256') instrument_icon = urlopen('http://www.thecoolhunter.net/images/stories/2007pics/storiesnew2007pics/marchpics/1music.jpg') painting_icon = urlopen('http://www.iconshock.com/img_jpg/PERSPECTIVE/general/jpg/256/paint_icon.jpg') root_program = CategoryHelper.add(u'编程语言', u'编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动', None, program_icon) c = CategoryHelper.add(u'C语言', u'C是一种通用的编程语言,广泛用于系统软件与应用软件的开发。于1969年至1973年间,为了移植与开发UNIX操作系统,由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计、开发出来。', root_program.id, c_icon) cpp = CategoryHelper.add(u'C++', u'C++是一种广泛使用的计算机程序设计语言。它是一种通用程序设计语言,静态数据类型检查,支持多重编程范式,例如过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等。', root_program.id, cpp_icon) mfc = CategoryHelper.add(u'MFC', u'微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。', cpp.id, mfc_icon) cocos2dx = CategoryHelper.add(u'Cocos2d-x', u'Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。', cpp.id, cocos2dx_icon) java = CategoryHelper.add(u'Java', u'Java是一种计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。', root_program.id, java_icon)
def produce_list(): meta = metaInit.copy() query = {} page = force_int(request.args.get('page', 1)) per_page = force_int(request.args.get('per_page', 20)) status = force_int(request.args.get('status', 1)) deleted = force_int(request.args.get('deleted', 0)) kind = force_int(request.args.get('kind', 1)) prize_id = force_int(request.args.get('prize_id', 0)) category_id = force_int(request.args.get('category_id', 0)) tag = request.args.get('tag', '') t = force_int(request.args.get('t', 1), 1) q = request.args.get('q', '') if q: if t == 1: query['title'] = {"$regex": q.strip()} if t == 2: query['channel'] = q.strip() if t == 3: query['evt'] = force_int(q.strip()) if prize_id: query['prize'] = {'$elemMatch': {'id': int(prize_id)}} if category_id: query['category_id'] = category_id if tag: query['total_tags'] = tag if kind: if kind == 1: meta['css_industry'] = 'active' elif kind == 2: meta['css_plane'] = 'active' meta['css_all'] = '' query['kind'] = kind if status == -1: meta['css_disable'] = 'active' query['status'] = 0 if status == 1: query['status'] = 1 meta['css_enable'] = 'active' else: pass if deleted == 1: query['deleted'] = 1 meta['css_deleted'] = 'active' else: query['deleted'] = 0 if not status and not deleted: meta['css_all'] = 'active' else: meta['css_all'] = '' page_url = url_for('main.produce_list', page="#p#", q=q, t=t, tag=tag, prize_id=prize_id, category_id=category_id, kind=kind, status=status, deleted=deleted) data = Produce.objects(**query).order_by('-edit_on', '-editor_level').paginate(page=page, per_page=per_page) total_count = Produce.objects(**query).count() # 过滤数据 rows = t_produce_list(data) meta['data'] = rows meta['total_count'] = total_count meta['prize_options'] = prize_options() categories = Category.objects(kind=2, status=1, deleted=0)[:30] meta['categories'] = categories pager = Pager(page, per_page, total_count, page_url) meta['pager'] = pager.render_view() return render_template('produce/list.html', meta=meta)
def get(category_id): return Category.objects(id=category_id).first()
def get_by_title(title): return Category.objects(title__startswith=title).first()
def fetch_category(category_id): category = None if category_id: category = Category.objects(_id=int(category_id)).first() return category
def get_roots(): return Category.objects(father__exists=False)