def cust_home(): allproducts = Products.fetch_all() if 'email' in session: if request.method == 'POST': email = session['email'] product = request.form['productname'] company = request.form['name'] qun = request.form['quantity'] date = request.form['date'] # check for the product quantity # product_to_check = Products.query.filter_by(name=product).first() if qun > 0: flash('Quantity ordered is higher than stock remaining', 'danger') return redirect(url_for('cust_home')) else: ch = Orders(email=email, product=product, orderdate=date, customer_id=session['uid'], company=company) ch.create_record() flash('Order successfully made', 'success') return redirect(url_for('cust_home')) return render_template('customerorder.html', products=allproducts) else: flash('Please login', 'danger') return redirect(url_for('login'))
def confirm_select_order(self): inputs = self.getInput() try: product = Products.get(Products.id == int(inputs['product'])) user =Users.get(Users.name == self.isLogin()) price = inputs['price'] if inputs.has_key('add'): order = Orders.create( owner = user, price = price, description = product.category.name, ) else: if not inputs.has_key('selected'): return self.orders_list() order = Orders.get(Orders.id == int(inputs['selected'])) details = OrderDetails.create( name = product.category.name + " "+product.diameter, product = product, count = user, price = price, ratio = 0.0, order = order, ) return web.seeother(self.makeUrl('/wap/edit_price_sheet', {'id': order.id})) except Exception, e: print 'exc',e return self.error(msg='保存订单失败!')
def orderJson(): if session: data = request.get_json(force=True) stock_item = Products.query.filter_by(id=data['product_id']).first() if int(data['quantity']) > int(stock_item.quantity): flash('Quantity ordered is higher than stock remaining', 'danger') return 'We have an error', 400 else: # update the product's stock quantity when an order is made stock_item.quantity = int(stock_item.quantity) - int( data['quantity']) db.session.add(stock_item) db.session.commit() o = Orders(email=session['email'], quantity=data['quantity'], total=data['total'], product_id=data['product_id'], company=session['companyname'], customer_id=session['uid']) o.create_record() return 'Order successfully saved', 200
def orderJson(): data = request.get_json(force=True) o = Orders(email=session['email'], quantity=data['quantity'], total=data['total'], product_id=data['product_id'], company=data['company']) #,customer_id=session['uid'] o.create_record() return 'Order successfully saved'
def export_price_sheet(self): inputParams = self.getInput() try: order = Orders.get(Orders.id == int(inputParams['id'])) details = OrderDetails.select().where(OrderDetails.order == order).order_by(OrderDetails.id.desc()) self.privData['ORDER'] = order self.privData['DETAILS'] = details import pdfcrowd # create an API client instance client = pdfcrowd.Client("luo_brian", "8fee9a05739553c92673004a3ec80201") # convert an HTML string and save the result to a file import os import config import utils tmpFile = os.path.join(config.UPLOAD_DIR, 'temp', '%s.pdf' % utils.uuidgen()) ofile = open(tmpFile, 'wb') html = self.display('price-sheet-details-pdf') #html="<head></head><body>我的转换</body>" client.convertHtml(html, ofile) ofile.close() buf = open(tmpFile).read() os.unlink(tmpFile) web.header('Content-Type', 'application/pdf') return buf except Exception, e: print e return self.error(msg='获取订单详情失败!')
def select_order(self): inputs = self.getInput() if inputs.has_key('query'): return self.orders_list() try: price, product_id = inputs['product'].split(' ') product = Products.get(Products.id == int(product_id)) order = int(inputs['order']) if order > 0: details = OrderDetails.create( name = product.category.name +" "+product.diameter, product = product, count = 1, price = price, ratio = 0.0, order = order, ) return web.seeother(self.makeUrl('/wap/edit_price_sheet', {'id': order})) else: ordersList = Orders.select().order_by(Orders.id.desc()) self.privData['ORDERS_LIST'] = ordersList self.privData['PRICE'] = price self.privData['PRODUCT'] = product return self.display('select-order') except Exception, e: print e return self.error(msg='加入订单失败!')
def save_price_sheet(self): inputs = self.getInput() print inputs try: if inputs.has_key('add'): return web.seeother(self.makeUrl('/wap/categories', {'parent': 1, 'order': int(inputs['id'])})) order = Orders.get(Orders.id == int(inputs['id'])) attrs = {} for k, v in inputs.items(): try: attr, oid = k.split('_') except Exception, e: continue if not attrs.has_key(oid): attrs[oid] = {} attrs[oid][attr] = v if not inputs['customer'] or not inputs['description']: raise Exception("询价方或备注不能为空!") order.customer = inputs['customer'] order.description = inputs['description'] order.owner = Users.get(Users.name == self.isLogin()) order.save() for k, v in attrs.items(): #import pdb;pdb.set_trace() import traceback if not v['count'] or not v['ratio']: raise Exception("数量或利润率不能为空!") nameform = v['name'] diameterform = v['diameter'] oldinput= v['can'] name, diameter = oldinput.split(' ') details = OrderDetails.get(OrderDetails.id == int(k)) details.name = oldinput flag = v['bool'] if flag.find("True")>=0: details.flag=True elif details.name!=(details.product.category.name+' '+details.product.diameter): details.flag=True else: details.flag=False try: product = Products().get(Products.name==name,Products.diameter == diameter) except Exception,e: details.price = float(v['input']) details.count = v['count'] details.ratio = float(v['ratio'])/100.0 details.save() details.price = float(v['input']) details.count = v['count'] details.ratio = float(v['ratio'])/100.0 details.save()
def delete_price_sheet(self): inputs = self.getInput() try: order = Orders.get(Orders.id == int(inputs['id'])) order.delete_instance() return self.orders_list() except Exceptions, e: return self.error(msg='删除订单失败!')
def delete(self): inputParams = self.getInput() try: order = Orders.get(Orders.id == int(inputParams['id'])) order.delete_instance() except Exception, e: return self.error(msg = '删除失败: %s' % e, url=self.makeUrl('/admin/orders/list'))
def approve_order(id): apr = request.form['approve'] update = Orders.update_by_id(id=id, status=apr) if update: return redirect(url_for('all_orders'))
def all_orders(): orderszote = Orders.fetch_all() order_value = 0 for order in orderszote: order_value += order.total return render_template('allorders.html', orderszote=orderszote, order_value=f'{order_value:,.0f}')
def customers(): allproducts = Products.fetch_all() if request.method == 'POST': email = request.form['email'] products = request.form['productname'] date = request.form['date'] company = request.form['company'] o = Orders(email=email, product=products, orderdate=date, company=company) o.create_record() flash('Order successfull made', 'success') return redirect(url_for('customers')) return render_template('customers.html', products=allproducts)
def list(self): inputParams = self.getInput() page = int(inputParams['page']) if inputParams.has_key('page') else 1 count = config.COUNT_PER_PAGE ordersList = Orders.select().order_by(Orders.id.desc()) pageString = self.getPageStr(self.makeUrl('/admin/orders/list'), page, count, ordersList.count()) self.privData['ORDERS_LIST'] = ordersList.paginate(page, count) self.privData['PAGE_STRING'] = pageString return self.display('ordersList')
def orders_list(self): try: #import pdb; pdb.set_trace() user = Users.get(Users.name == self.isLogin()) ordersList = Orders.select().where(Orders.owner == user).order_by(Orders.id.desc()) self.privData['ORDERS_LIST'] = ordersList return self.display('orders-list') except Exception, e: print e return self.error(msg='获取报价单列表失败!')
def approve_order(id): apr = request.form['approve'] update = Orders.update_by_id(id=id, status=apr) if update: return redirect(url_for('all_orders')) #if __name__ == '__main__': # app.run(debug=True)
def search(self): inputParams = self.getInput() keywords = inputParams['keywords'].strip().lower() if inputParams.has_key('keywords') else '' page = int(inputParams['page']) if inputParams.has_key('page') else 1 count = config.COUNT_PER_PAGE ordersList = Orders.select().where(Orders.name.contains(keywords)).order_by(Orders.id.desc()) pageString = self.getPageStr(self.makeUrl('/admin/orders/list'), page, count, ordersList.count()) self.privData['NEWS_LIST'] = ordersList.paginate(page, count) self.privData['PAGE_STRING'] = pageString return self.display('ordersList')
def add_price_sheet(self): try: user =Users.get(Users.name == self.isLogin()) order = Orders.create( owner = user, price = 0.0, description = '新报价单', ) return web.seeother(self.makeUrl('/wap/edit_price_sheet', {'id': order.id})) #return self.orders_list() except Exception, e: return self.error(msg='保存订单失败!')
def price_sheet_details(self): inputParams = self.getInput() try: #import pdb;pdb.set_trace(); order = Orders.get(Orders.id == int(inputParams['id'])) details = OrderDetails.select().where(OrderDetails.order == order).order_by(OrderDetails.id.desc()) for od in details: print od.product.diameter self.privData['ORDER'] = order self.privData['DETAILS'] = details return self.display('price-sheet-details') except Exception, e: print e return self.error(msg='获取订单详情失败!')
def edit_price_sheet(self): inputs = self.getInput() try: #import pdb; pdb.set_trace() order = Orders.get(Orders.id == int(inputs['id'])) details = OrderDetails.select().where(OrderDetails.order == order).order_by(OrderDetails.id.desc()) for each_d in details: print each_d.name print each_d.flag self.privData['ORDER'] = order self.privData['DETAILS'] = details return self.display('edit-price-sheet') except Exception,e: print e return self.error(msg='获取报价单详情信息失败!')
def cust_home(): allproducts = Products.fetch_all() if 'email' in session: if request.method == 'POST': email = session['email'] product = request.form['productname'] company = request.form['name'] qun = request.form['quantity'] date = request.form['date'] ch = Orders(email=email, product=product, orderdate=date, customer_id=session['uid'], company=company) ch.create_record() flash('Order successfully made', 'success') return redirect(url_for('cust_home')) return render_template('customerorder.html', products=allproducts) else: flash('Please login', 'danger') return redirect(url_for('login'))
def all_orders(): orderszote = Orders.fetch_all() return render_template('allorders.html', orderszote=orderszote)
def orders(): if 'email' in session: orders = Orders.fetch_by_id(session['uid']) return render_template('eachorder.html', orders=orders)