def categories(): categories = Category.query().order(Category.name) form = CategoryForm() if form.validate_on_submit(): new_cat = Category() form.populate_obj(new_cat) new_cat.put() return redirect(url_for('admin.product.categories')) return render_template('product/admin/category/all.html', categories=categories, form=form)
def categories(): categories = Category.query().order(Category.name) form = CategoryForm() if form.validate_on_submit(): new_cat = Category() form.populate_obj(new_cat) new_cat.put() return redirect(url_for('admin.product.categories')) return render_template( 'product/admin/category/all.html', categories=categories, form=form )
def search_in_category(name, id_1c, parent=None, ): try: cat = Category.objects.get(title=name, id_1c=id_1c, parent=parent) return cat except Category.DoesNotExist: cat = Category() cat.title = name if parent: cat.parent = parent cat.id_1c = id_1c # cat.save() return None except Category.MultipleObjectsReturned: cats = Category.objects.filter(title=name, id_1c=id_1c, parent=parent) if len(cats) > 1: raise 'MultiCat' elif len(cats) == 1: return cats[0] elif len(cats) == 0: try: cat = Category.objects.get(title=name, parent=parent) except Category.DoesNotExist: cat = Category() cat.title = name if parent: cat.parent = parent cat.id_1c = id_1c # cat.save() return None
def category(key_id, page): view_type = util.param('product_view_type', int) session_view_type = flask.session.get('product_view_type', None) if session_view_type is None or session_view_type not in PRODUCT_VIEW_TYPES.itervalues( ): if view_type in PRODUCT_VIEW_TYPES.itervalues(): flask.session['product_view_type'] = view_type else: flask.session['product_view_type'] = PRODUCT_VIEW_TYPES['tile'] else: if view_type in PRODUCT_VIEW_TYPES.itervalues(): flask.session['product_view_type'] = view_type category_obj = Category.retrieve_by_id(key_id) if not category_obj: return flask.redirect(flask.url_for('pages.index')) products = Product\ .query(Product.category == category_obj.name)\ .order(-Product.leftovers_on_way)\ .order(-Product.leftovers) products = get_paginator(products, page) return flask.render_template('pages/category.html', title=u'{} "{}"'.format( u'Категория', category_obj.name), category=category_obj, products=products, key_id=key_id)
def category(key_id, page): view_type = util.param('product_view_type', int) session_view_type = flask.session.get('product_view_type', None) if session_view_type is None or session_view_type not in PRODUCT_VIEW_TYPES.itervalues(): if view_type in PRODUCT_VIEW_TYPES.itervalues(): flask.session['product_view_type'] = view_type else: flask.session['product_view_type'] = PRODUCT_VIEW_TYPES['tile'] else: if view_type in PRODUCT_VIEW_TYPES.itervalues(): flask.session['product_view_type'] = view_type category_obj = Category.retrieve_by_id(key_id) if not category_obj: return flask.redirect(flask.url_for( 'pages.index' )) products = Product\ .query(Product.category == category_obj.name)\ .order(-Product.leftovers_on_way)\ .order(-Product.leftovers) products = get_paginator(products, page) return flask.render_template( 'pages/category.html', title=u'{} "{}"'.format(u'Категория', category_obj.name), category=category_obj, products=products, key_id=key_id )
def edit(key_id): product = Product.retrieve_by_id(key_id) if not product: return redirect(url_for('admin.config_update')) if request.method == 'POST' and 'delete_product' in request.form: category = None if product.category: category = Category.exist(product.category) product.key.delete() if category: return redirect(url_for('pages.category', key_id=category.key.id())) else: return redirect('pages.catalogue') form = ProductForm(obj=product) if form.validate_on_submit(): form.populate_obj(product) product.put() if 'edit_images' in request.form: return redirect(url_for('admin.product.edit_images', key_id=key_id)) return redirect(url_for('product.get_product', key_id=key_id)) return render_template('product/admin/edit.html', product=product, form=form)
def edit(key_id): product = Product.retrieve_by_id(key_id) if not product: return redirect(url_for('admin.config_update')) if request.method == 'POST' and 'delete_product' in request.form: category = None if product.category: category = Category.exist(product.category) product.key.delete() if category: return redirect(url_for('pages.category', key_id=category.key.id())) else: return redirect('pages.catalogue') form = ProductForm(obj=product) if form.validate_on_submit(): form.populate_obj(product) product.put() if 'edit_images' in request.form: return redirect(url_for('admin.product.edit_images', key_id=key_id)) return redirect(url_for('product.get_product', key_id=key_id)) return render_template( 'product/admin/edit.html', product=product, form=form )
def handle(self, *args, **options): self.clean() categories = loadFromJSON('categories') for category in categories: new_category = Category(**category) new_category.save() products = loadFromJSON('products') for product in products: product['category'] = Category.objects.get( name=product["category"]) new_product = Product(**product) new_product.save()
def index(): available_product = Product.query(Product.is_available == True, Product.id_1c != '').get() available_category = Category.query().get() return render_template('api/v2/index.html', available_product=available_product, available_category=available_category)
def search_categories(query): categories_q = Category.query().fetch(projection=[Category.name]) categories_keys = [ c.key for c in categories_q if query in c.name.lower() ] if categories_keys: return ndb.get_multi(categories_keys) return []
def validate(self, is_edit=False): rv = wtf.Form.validate(self) if not rv: return False name = self.name.data.lower() check_cat = Category.query(Category.name_lowercase == name).count() if check_cat and not is_edit: self.name.errors.append( u'Название категории должно быть уникальным') return False return True
def get_aside(active='category', key_id=None): sections = [] if active == 'category': sections = Category.query(Category.is_public == True).order( Category.name) sections = [s for s in sections if s.products_count] if key_id: key_id = int(key_id) return render_template('aside.html', active=active, sections=sections, key_id=key_id)
def categories_stat(): categories_obj = list(Category.query().order(Category.name)) categories = [] for c in categories_obj: if c.products_count: categories.append(c) categories_count = len(categories) if categories_count: categories_count = pytils.numeral.get_plural( categories_count, (u'категории', u'категорий', u'категорий')) return categories, categories_count
def category_json(): key_id = param('id') if not key_id: raise ApiException('Invalid request: category "id" not found.') category = Category.retrieve_by_id(key_id) if not category: raise ApiException( 'Invalid request: Category with "id" == %s not found' % key_id) id_1c = param('id_1c') if id_1c is not None: category._PROPERTIES = category._PROPERTIES.union( ['products_by_id_1c']) return jsonify_model_db(category) return jsonify_model_db(category)
def categories_stat(): categories_obj = list(Category.query().order(Category.name)) categories = [] for c in categories_obj: if c.products_count: categories.append(c) categories_count = len(categories) if categories_count: categories_count = pytils.numeral.get_plural( categories_count, (u'категории', u'категорий', u'категорий') ) return categories, categories_count
def sitemap_xml(): products = memcache.get('sitemap_xml') if not products: products = Product.query().fetch(keys_only=True) memcache.add('sitemap_xml', products, SITEMAP_XML_TIMEOUT) categories = memcache.get('sitemap_xml_categories') if not categories: categories = Category.query().fetch(keys_only=True) memcache.add('sitemap_xml_categories', categories, SITEMAP_XML_TIMEOUT) response = flask.make_response( flask.render_template('pages/sitemap.xml', products=products, categories=categories)) response.headers['Content-Type'] = 'text/xml; charset=utf-8' return response
def category_edit(key_id): category = Category.retrieve_by_id(key_id) if not category: return redirect(url_for('admin.product.categories')) form = CategoryForm(obj=category) if request.method == 'POST' and 'delete_category' in request.form: category.key.delete() return redirect(url_for('admin.product.categories')) if form.is_submitted() and form.validate(is_edit=True): form.populate_obj(category) category.put() return redirect(url_for('admin.product.categories')) return render_template('product/admin/category/edit.html', category=category, form=form)
def get_aside(active='category', key_id=None): sections=[] if active == 'category': sections = Category.query( Category.is_public == True ).order(Category.name) sections = [s for s in sections if s.products_count] if key_id: key_id = int(key_id) return render_template( 'aside.html', active=active, sections=sections, key_id=key_id )
def category_edit(key_id): category = Category.retrieve_by_id(key_id) if not category: return redirect(url_for('admin.product.categories')) form = CategoryForm(obj=category) if request.method == 'POST' and 'delete_category' in request.form: category.key.delete() return redirect(url_for('admin.product.categories')) if form.is_submitted() and form.validate(is_edit=True): form.populate_obj(category) category.put() return redirect(url_for('admin.product.categories')) return render_template( 'product/admin/category/edit.html', category=category, form=form )
def sitemap_xml(): products = memcache.get('sitemap_xml') if not products: products = Product.query().fetch(keys_only=True) memcache.add('sitemap_xml', products, SITEMAP_XML_TIMEOUT) categories = memcache.get('sitemap_xml_categories') if not categories: categories = Category.query().fetch(keys_only=True) memcache.add('sitemap_xml_categories', categories, SITEMAP_XML_TIMEOUT) response = flask.make_response( flask.render_template( 'pages/sitemap.xml', products=products, categories=categories) ) response.headers['Content-Type'] = 'text/xml; charset=utf-8' return response
def search_categories(query): categories_q = Category.query().fetch(projection=[Category.name]) categories_keys = [c.key for c in categories_q if query in c.name.lower()] if categories_keys: return ndb.get_multi(categories_keys) return []
def categories_count_json(): return jsonify_success(Category.query().count())
def categories_json(): categories = [key.id() for key in Category.query().fetch(keys_only=True)] return jsonify_success(categories)