def post(self, category_id=None): if category_id: abort(400) else: args = category_post_parser.parse_args(strict=True) user = User.verify_auth_token(args['token']) if not user: abort(401) new_post = Category(args['title']) new_post.user = user new_post.date = datetime.datetime.now() new_post.text = args['text'] if args['items']: for item in args['items']: tag = Item.query.filter_by(title=item).first() # Add the tag if it exists. If not, make a new tag if tag: new_post.tags.append(tag) else: new_tag = Item(item) new_post.tags.append(new_tag) db.session.add(new_post) db.session.commit() return new_post.id, 201
def save_category(data, parent, nsmap, status): collection_id = get_identifier(data, nsmap) if not collection_id: return category = get_category(data, parent, nsmap) if not category: category = Category() category.uid = collection_id category.parent = parent category.status = status collection_title = data.xpath('./ns:did/ns:unittitle', namespaces=nsmap) collection_descr = data.xpath('./ns:scopecontent/ns:p', namespaces=nsmap) collection_order_id = data.xpath('./ns:did/ns:unitid', namespaces=nsmap) if len(collection_title) and collection_title[0].text: category.title = collection_title[0].text if len(collection_order_id) and collection_order_id[0].text: category.order_id = collection_order_id[0].text if len(collection_descr) and collection_descr[0].text: category.description = collection_descr[0].text.replace('<lb/>', ' ').strip() category.save() logger.info('dataimport.eadddb.category', 'category %s saved' % category.id) return category
def SaveProduct(self, item): # 保存地区信息 zone = Zone() zone.name = item["zone"][0] zone.save() # 保存分类信息 category = Category() category.category = item["category"][0] category.save() # 保存产品信息 product = Product() product.name = item["product"][0] product.zone = zone product.category = category product.save() # 保存产品详细信息 product_detail = ProductDetail() product_detail.product = product product_detail.price = float(item["price"][0]) # 这里有问题,需要优化 try: product_detail.price = float(item["price"][0]) product_detail.star = item["star"][0] except Exception, e: product_detail.price = float(item["price"]) product_detail.star = 0
def SaveProduct(self, item): # 保存地区信息 zone = Zone() zone.name = item["zone"][0] zone.save() # 保存分类信息 category = Category() category.category = item["category"][0] category.save() # 保存产品信息 product = Product() product.name = item["product"][0] product.zone = zone product.category = category product.save() # 保存产品详细信息 product_detail = ProductDetail() product_detail.product = product product_detail.price = float(item["price"][0]) # 这里有问题,需要优化 try: product_detail.price = float(item["price"][0]) product_detail.star = item["star"][0] except Exception, e : product_detail.price = float(item["price"]) product_detail.star = 0
def form_valid(self, form): text = form.cleaned_data['category_name'] if Category.objects.filter(category_name=text.capitalize()): messages.error(self.request, 'Категория с таким названием уже существует!') return render(self.request, 'add.html', {}) else: category = Category(category_name=text.capitalize()) category.save() return self.get_success_url()
def update_category(category_id) -> redirect: category = Category().fetch_category_by_id(category_id) if not category: return abort(404) if not Category().update(category_id, request.form): flash(['Something went wrong. Please try again']) return redirect( url_for('dashboard.edit_category', category_id=category_id)) flash(['Category Successfully updated']) return redirect(url_for('dashboard.categories'))
def new_post(): form = CategoryForm() if form.validate_on_submit(): new_post_model = Category(form.title.data) new_post_model.text = form.text.data new_post_model.publish_date = datetime.datetime.now() new_post_model.user = User.query.filter_by( username=current_user.username).one() db.session.add(new_post_model) db.session.commit() return render_template('new.html', form=form)
def edit_product(product_id): product = Product().fetch_product(product_id, current_user.get_id()) form = ProductForm() for item in Category().fetch_user_categories(): form.categories.choices.append( [item.category_name, item.category_name]) for item in Attachment().fetch_user_attachments(): form.attachment_file.choices.append( [item.attachment_filename, item.original_attachment_filename]) if not product: flash(['Something went wrong. Please try again later']) return redirect(url_for('dashboard.products')) form.product_name.data = product.name if product.product_type == 'item': linked_product_items = ProductItem().fetch_active_product_items( product.product_items) form.items.data = ''.join(linked_product_items) else: form.attachment_file.data = product.product_attachment.attachment_filename form.stock.data = product.stock form.price.data = float(product.price) return render_template('/dashboard/edit-product.html', product=product, form=form, flashed_message=get_flashed_messages(), attachments=Attachment().fetch_user_attachments())
def get_or_create_category(name): try: category = s.query(Category).get(name=name) except: category = Category(name=name) s.add(category) s.commit() return category
def remove_category(category_id) -> redirect: remove = Category().remove_category(category_id) if not remove: flash(['Something went wrong. Please try again']) return redirect(url_for('dashboard.categories')) ProductCategory().remove_all_categories(remove) flash(['Category Successfully Deleted']) return redirect(url_for('dashboard.categories'))
def save_category(parent, title): category = get_category(parent, title) if not category: category = Category() category.uid = title category.parent = parent category.title = title category.save() logger.info('dataimport.eadddb.category', 'category %s saved' % category.id) return category
def create_product() -> render_template: form = ProductForm() attachments = Attachment().fetch_user_attachments() for item in Category().fetch_user_categories(): form.categories.choices.append( [item.category_name, item.category_name]) for item in attachments: form.attachment_file.choices.append( [item.attachment_filename, item.original_attachment_filename]) return render_template('/dashboard/create-product.html', form=form, flashed_message=get_flashed_messages(), attachments=attachments)
def add_category() -> redirect: form = CategoryForm() for item in Product().fetch_user_products(): form.linked_products.choices.append([item.id, item.name]) if not form.validate_on_submit(): flash(list(form.errors.values())[0]) return redirect(url_for('dashboard.categories')) new_category = Category().add(request.form) if not new_category: flash(['Category already exists']) return redirect(url_for('dashboard.categories')) flash(['Category Successfully Added']) return redirect(url_for('dashboard.categories'))
def insert_cat(name): (ret, ), = db.session.query(exists().where(Category.name.ilike(name))) if ret: flash(name + " category already existed.", 'error') return False else: try: new_cat = Category(name=name, ) db.session.add(new_cat) db.session.commit() return True except Exception as e: db.session.rollback() print(e) finally: db.session.close()
def submit_new_product() -> redirect: form = ProductForm() attachments = Attachment().fetch_user_attachments() for item in Category().fetch_user_categories(): form.categories.choices.append( [item.category_name, item.category_name]) for item in attachments: form.attachment_file.choices.append( [item.attachment_filename, item.original_attachment_filename]) if not form.validate_on_submit(): flash(list(form.errors.values())[0]) return redirect(url_for('dashboard.create_product')) Product().add(request) flash(['Product Successfully Created']) return redirect(url_for('dashboard.products'))
def edit_category(category_id) -> render_template: form = CategoryForm() category = Category().fetch_category_by_id(category_id) if not cat: return abort(404) form.linked_products.data = [] for item in Product().fetch_user_products: form.linked_products.choices.append([item.id, item.name]) for product_cat in ProductCategory().fetch_linked_product_categories( item.id): if product_cat.category_name == category.category_name: form.linked_products.data.append(item.id) form.name.data = cat.category_name return render_template('/dashboard/edit-category.html', form=form, category=category)
def update_product(product_id): form = ProductForm() attachments = Attachment().fetch_user_attachments() for item in Category().fetch_user_categories(): form.categories.choices.append( [item.category_name, item.category_name]) for item in attachments: form.attachment_file.choices.append( [item.attachment_filename, item.original_attachment_filename]) if not form.validate_on_submit(): flash(list(form.errors.values())[0]) return redirect( url_for('dashboard.edit_product', product_id=product_id)) if not Product().update(request, product_id): flash(['Something went wrong. Please try again later']) return redirect(url_for('dashboard.products')) flash(['Product Successfully Updated']) return redirect(url_for('dashboard.edit_product', product_id=product_id))
def init_db(): import random import datetime db.create_all() default = User('default') default.set_password("password") db.session.add(default) db.session.commit() for i in xrange(5): new_account = Account() new_account.name = "Account {}".format(i + 1) new_account.amount = random.random() * (i + 1) new_account.description = "random account {}".format(i + 1) new_account.user_id = default.id new_account.date = datetime.datetime.now() db.session.add(new_account) db.session.commit() for c in candidate_categories: db.session.add(Category(c)) db.session.commit()
def addcategory(): form = AddCategory() if request.method == "POST": if form.validate_on_submit(): cat_name = form.name.data new_cat = Category(cat_name = cat_name) db.session.add(new_cat) db.session.commit() flash('Category {} added'.format(cat_name)) else: flash("Adding new Category unsuccessful") return redirect(url_for('menu')) else: if 'username' in session: return render_template('addcategory.html', form = form, username = session['username']) else: flash("Please Login First", 'danger') return redirect(url_for('login'))
def category(category_id): form = ItemForm() if form.validate_on_submit(): new_category = Category(form.name.title) new_category.name = form.name.data new_category.text = form.text.data new_category.post_id = category_id new_category.date = datetime.datetime.now() db.session.add(new_category) db.session.commit() category = Category.query.get_or_404(category_id) items = Item.query.filter_by(category_id=category.id).all() recent, top_items = sidebar_data() return render_template('category.html', category=category, recent=recent, top_items=top_items, form=form)
def get_category(data, parent, nsmap): return Category.objects(parent=parent, uid=get_identifier(data, nsmap)).first()
def save(self): records = csv.reader(self.cleaned_data["file"], delimiter=';') for line in records: if line[1] == "BLC_NAME": continue balance = Balance.objects.filter(name=line[1]) if not balance.exists(): balance = Balance() balance.name = line[1] balance.save() else: balance = balance.get() group = Group.objects.filter(name=line[3]) if not group.exists(): group = Group() group.name = line[3] group.save() else: group = group.get() budget_user_group = BudgetUserGroup.objects.filter(name=line[5], group=group.pk) if not budget_user_group.exists(): budget_user_group = BudgetUserGroup() budget_user_group.group = group budget_user_group.name = line[5] budget_user_group.save() else: budget_user_group = budget_user_group.get() budget_user = BudgetUser.objects.filter(name=line[7], group=budget_user_group.pk) if not budget_user.exists(): budget_user = BudgetUser() budget_user.group = budget_user_group budget_user.name = line[7] budget_user.save() else: budget_user = budget_user.get() political_branch = PoliticalBranch.objects.filter(name=line[9]) if not political_branch.exists(): political_branch = PoliticalBranch() political_branch.name = line[9] political_branch.save() else: political_branch = political_branch.get() programme = Programme.objects.filter(name=line[11]) if not programme.exists(): programme = Programme() programme.name = line[11] programme.save() else: programme = programme.get() category = Category.objects.filter(name=line[13], balance=balance.pk, budget_user=budget_user.pk, political_branch=political_branch.pk, programme=programme.pk) if not category.exists(): category = Category() category.balance = balance category.budget_user = budget_user category.political_branch = political_branch category.programme = programme category.name = line[13] category.save() else: category = category.get() item = Item.objects.filter(category=category.pk, budget_year=self.cleaned_data["year"]) if not item.exists(): item = Item() item.category = category item.budget_year = self.cleaned_data["year"] item.value = float(line[14].replace(",", ".")) item.save() else: item = item.get()
def product_inserter(): """Makes category and product insertion in database""" # setting the logger logger = logging.getLogger(__name__) # emptying the database Category.objects.all().delete() Product.objects.all().delete() Nutriments.objects.all().delete() i = 0 # for each category in category list for elem in dt.CAT_LIST: # Replace some characters with others, so we can use it in API elem = elem.replace(" ", "-") # create a category in database category = Category(category_name=unidecode(elem)) # save if ok try: with transaction.atomic(): category.save() # report error if not ok except DatabaseError as cat_error: logger.error(cat_error) pass # get id list using Requester class id_list = Requester(elem).product_id_list # for each product id in id list for product_id in id_list: # gather product data with Requester class product_data = Product_data( Requester.product_data_requester(product_id)) # create a product in database product = Product( product_name=product_data.name, product_url=product_data.url, product_img=product_data.img, product_nutriscore=product_data.nutriscore, product_category_id=category, ) # create nutriments data affiliated to product nutriments = Nutriments( nutriments_product_id=product, nutriments_kj=product_data.energy_kj, nutriments_kcal=product_data.energy_kcal, nutriments_lipids=product_data.lipids, nutriments_fat=product_data.fat, nutriments_carbohydrates=product_data.carbohydrates, nutriments_sugar=product_data.sugar, nutriments_protein=product_data.protein, nutriments_salt=product_data.salt, nutriments_sodium=product_data.sodium, ) # save if ok try: with transaction.atomic(): product.save() nutriments.save() i += 1 print(str(i) + " produit(s) ajouté(s)") # report error if not ok except DatabaseError as prod_error: logger.error(prod_error) pass
def categories() -> render_template: return render_template('/dashboard/categories.html', flashed_message=get_flashed_messages(), cats=Category().fetch_user_categories_pagination())
def get_category(parent, uid): return Category.objects(parent=parent, uid=uid).first()