def validate_python(self, value, state): p = Product.find_by_id(int(value)) for product in Product.find_by_category(p.category.id): if product.id == int(value): check_product_availability(product, value, state) return # All good! raise Invalid("Product " + value + " is not allowed in category " + self.category.name, value, state)
def _new(self): results = self.form_result['invoice'] del (results['item_count']) items = results['items'] results['items'] = [] c.invoice = Invoice(**results) for i in items: item = InvoiceItem() if i['description'] != "": item.description = i['description'] else: product = Product.find_by_id(i['product'].id) category = product.category item.product = i['product'] item.description = product.category.name + ' - ' + product.description item.cost = i['cost'] item.qty = i['qty'] c.invoice.items.append(item) c.invoice.manual = True c.invoice.void = None meta.Session.add(c.invoice) meta.Session.commit() h.flash("Manual invoice created") return redirect_to(action='view', id=c.invoice.id)
def _new(self): results = self.form_result['invoice'] del(results['item_count']) items = results['items'] results['items'] = [] c.invoice = Invoice(**results) for i in items: item = InvoiceItem() if i['description'] != "": item.description = i['description'] else: product = Product.find_by_id(i['product'].id) category = product.category item.product = i['product'] item.description = product.category.name + ' - ' + product.description item.cost = i['cost'] item.qty = i['qty'] c.invoice.items.append(item) c.invoice.manual = True c.invoice.void = None meta.Session.add(c.invoice) meta.Session.commit() h.flash("Manual invoice created") return redirect_to(action='view', id=c.invoice.id)
def _new(self): results = self.form_result['voucher'] count = results['count'] # Number of voucher codes to generate del(results['count']) for i in xrange(count): if 'products' in results: del(results['products']) c.voucher = Voucher(**results) if c.voucher.code !='': c.voucher.code += '-' #add a dash between prefix and random c.voucher.code += generate_code() meta.Session.add(c.voucher) # save voucher to DB results['products'] = self.form_result['products'] for category in c.product_categories: if category.name in allowed_categories: # depending on "display" type of product, handle the input appropriately if category.display == 'radio': if 'category_' + str(category.id) in results['products']: product = Product.find_by_id(results['products']['category_' + str(category.id)]) vproduct = VoucherProduct() vproduct.voucher = c.voucher vproduct.product = product vproduct.qty = 1 vproduct.percentage = results['products']['category_' + str(category.id) + '_percentage'] meta.Session.add(vproduct) # Save product to DB c.voucher.products.append(vproduct) # Assign individual product discount to voucher elif category.display == 'checkbox': for product in category.products: if 'product_' + str(product.id) in results['products']: vproduct = VoucherProduct() vproduct.voucher = c.voucher vproduct.product = product vproduct.qty = 1 vproduct.percentage = results['products']['product_' + str(product.id) + '_percentage'] meta.Session.add(vproduct) c.voucher.products.append(vproduct) else: for product in category.products: if 'product_' + str(product.id) + '_qty' in results['products']: if results['products']['product_' + str(product.id) + '_qty'] not in (0, None): vproduct = VoucherProduct() vproduct.voucher = c.voucher vproduct.product = product vproduct.qty = results['products']['product_' + str(product.id) + '_qty'] vproduct.percentage = results['products']['product_' + str(product.id) + '_percentage'] meta.Session.add(vproduct) c.voucher.products.append(vproduct) meta.Session.commit() #save all updates h.flash("Voucher created") return redirect_to(controller='voucher', action='index')
def _to_python(self, value, state): return Product.find_by_id(value)