📄 devicemanagement.py
字号:
else: page.errors.append('You must select an organisation') subpath = orderAction else: page.errors.append('You must select a product') subpath = orderAction elif form.has_key(CN_DELETE_CONFIRM): # Confirm delete pressed deviceorderid = form['deviceorderid'] page = deleteOrder(deviceorderid,page) if subpath == 'add' or subpath == 'edit': page.action = BASEPATH + 'order/' if subpath == 'add': page.description = 'Add new order. Product, amount and ' +\ 'organisation is required to add an order.' page.subname = 'add' if showConfirmButton: page.widgets['submit'] = Widget(CN_ADD_CONFIRM, 'submit','Cofirm') else: page.widgets['submit'] = Widget(CN_ADD_SUBMIT, 'submit','Add order') elif subpath == 'edit': if len(path) > 2: deviceorderid = path[2] page.hiddenInputs.append(('deviceorderid',deviceorderid)) getDbOrder = True else: # No orderid from path, get from form deviceorderid = form['deviceorderid'] page.hiddenInputs.append(('deviceorderid',deviceorderid)) getDbOrder = False page.description = 'Edit an existing order. The amount is ' +\ 'number of devices not yet ' +\ 'registered as arrived. Decreasing the ' +\ 'amount will not remove any devices that are ' +\ 'already registered. Setting amount to zero ' +\ 'will close the order.' page.subname = 'edit' if showConfirmButton: page.widgets['submit'] = Widget(CN_UPDATE_CONFIRM, 'submit','Cofirm') else: page.widgets['submit'] = Widget(CN_UPDATE_SUBMIT, 'submit','Update order') if getDbOrder: # Lookup order amountsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid"+\ " AND device.active=true" sql = "SELECT ordered,ordernumber,comment,retailer," +\ "productid,orgid,(%s),(%s) " % (amountsql,arrivedsql)+\ "FROM deviceorder " +\ "WHERE deviceorderid='%s'" % (deviceorderid,) result = executeSQL(sql,fetch=True) if result: result = result[0] formData[CN_YEAR] = str(result[0].year) formData[CN_MONTH] = str(result[0].month) formData[CN_DAY] = str(result[0].day) formData[CN_AMOUNT] = str(result[6] - result[7]) formData[CN_ORDERNUMBER] = result[1] formData[CN_COMMENT] = result[2] formData[CN_RETAILER] = result[3] formData[CN_PRODUCT] = str(result[4]) formData[CN_ORG] = result[5] else: page.errors.append('Order does not exist') # Create widgets page.widgets['orderdate'] = Widget([CN_DAY,CN_MONTH,CN_YEAR],'date', 'Order date', [formData[CN_YEAR], formData[CN_MONTH], formData[CN_DAY]]) page.widgets['retailer'] = Widget(CN_RETAILER,'text','Retailer', formData[CN_RETAILER]) page.widgets['amount'] = Widget(CN_AMOUNT,'text','Amount', formData[CN_AMOUNT], options={'size': '5'},required=True) page.widgets['comment'] = Widget(CN_COMMENT,'text','Comment', formData[CN_COMMENT], options={'style': 'width: 100%;'}) page.widgets['ordernumber'] = Widget(CN_ORDERNUMBER,'text', 'Ordernumber', formData[CN_ORDERNUMBER]) # Make orglist memberOrgs = req.session['user'].getOrgIds() where = '' first = True for org in memberOrgs: if not first: where += "OR " where += "orgid='" + org + "' " first = False orgOptions = [(None,'Select an organisation',True)] if not len(memberOrgs): page.errors.append('You must be member of an organisation ' +\ 'to add an order') else: orgs = nav.db.manage.Org.getAllIterator(where=where) for org in orgs: orgOptions.append((org.orgid,org.descr + ' (' + org.orgid + ')', False)) page.widgets['org'] = Widget(CN_ORG,'select','Organisation', formData[CN_ORG], options={'options': orgOptions, 'style': 'width: 100%;'}, required=True) # Make productlist products = nav.db.manage.Product.getAllIterator() options = [(None,'Select a product',True)] for product in products: options.append((str(product.productid), product.productno + ' (' + product.descr + ')', False)) page.widgets['product'] = Widget(CN_PRODUCT,'select','Product', formData[CN_PRODUCT], options={'options': options}, required=True) page.widgets['cancel'] = Widget(CN_CANCEL,'submit','Cancel') elif subpath == 'arrival' and not form.has_key(CN_CANCEL): page.subname = 'arrival' deviceorderid = path[2] if form.has_key(CN_ARRIVE_CONFIRM): registerDevices(form,deviceorderid,req.session['user'].login, page) page.orderFound = False if deviceorderid: # Lookup order amountsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid " +\ "AND device.active=true" sql = "SELECT productno,descr,ordernumber,(%s),(%s) " %\ (amountsql,arrivedsql) +\ "FROM deviceorder,product WHERE " +\ "deviceorder.productid=product.productid AND " +\ "deviceorderid='%s'" % deviceorderid result = executeSQL(sql,fetch=True) if result: result = result[0] productno,descr,ordernumber,amount,arrived = result if (amount-arrived) > 0: page.orderFound = True page.productName = productno + ' (' + descr + ')' if ordernumber: page.tableTitle = "Ordernumber '" + ordernumber +\ "', " + str(arrived) + " of " +\ str(amount) + " registered" else: page.tableTitle = str(arrived) + " of " +\ str(amount) + " registered" page.description = 'Register serials for devices upon' +\ ' arrival.' pending = amount-arrived page.numberOfInputs = min(NUMBER_OF_ARRIVED_SERIALS,pending) else: # No more device to register, close order arrivedstamp = mx.DateTime.now().strftime(TIMESTAMP) fields = {'arrived': arrivedstamp} updateFields(fields,'deviceorder','deviceorderid', deviceorderid) page.messages.append('Order closed') subpath = 'main' else: page.description = 'Order not found' options = [(CN_PENDING,'Pending',True), (CN_ARRIVED,'Arrived',False), (CN_CANCELLED,'Cancelled',False)] page.widgets['arrivaldate'] = Widget([CN_DAY,CN_MONTH,CN_YEAR],'date', 'Arrival date', [formData[CN_YEAR], formData[CN_MONTH], formData[CN_DAY]]) page.widgets['action'] = Widget(CN_STATE,'select','State', options={'options': options}) page.widgets['serial'] = Widget(CN_SERIAL,'text','Serial') page.widgets['submit'] = Widget(CN_ARRIVE_CONFIRM,'submit','Register') page.widgets['cancel'] = Widget(CN_CANCEL,'submit','Cancel') elif subpath=='delete' or subpath=='details': deviceorderid = path[2] page.hiddenInputs.append(('deviceorderid',deviceorderid)) page.action = BASEPATH + 'order/' if subpath == 'delete': page.subname = 'delete' page.description = 'Are you sure you want to delete this order? ' +\ 'If any of the devices from this order are ' +\ 'already registered as arrived'+\ ', they will not be deleted and the order '+\ 'will be closed.' else: page.subname = 'details' page.description = '' page.widgets['confirm'] = Widget(CN_DELETE_CONFIRM,'submit','Confirm') page.widgets['cancel'] = Widget(CN_CANCEL,'submit','Cancel') # Get orderdata amountsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid " +\ "AND device.active=true" sql = "SELECT productno,descr,ordernumber,(%s),(%s)," %\ (amountsql,arrivedsql) +\ "ordered,comment,retailer,registered,username," +\ "orgid,updatedby,lastupdated,arrived " +\ "FROM deviceorder,product WHERE " +\ "deviceorder.productid=product.productid AND " +\ "deviceorderid='%s'" % deviceorderid result = executeSQL(sql,fetch=True) if result: result = result[0] lastupdated = '' if result[12]: lastupdated = result[12].strftime(DATEFORMAT) closed = None if result[13] != INFINITY: closed = result[13].strftime(DATEFORMAT) orderData = {'product': ('Product',result[0]+' ('+result[1]+')'), 'ordernumber': ('Ordernumber',result[2]), 'amount': ('Amount ordered',result[3]), 'arrived': ('Amount arrived',result[4]), 'ordered': ('Order date', result[5].strftime(DATEFORMAT)), 'comment': ('Comment',result[6]), 'retailer': ('Retailer',result[7]), 'registered': ('Date registered', result[8].strftime(DATEFORMAT)), 'username': ('Ordered by',result[9]), 'org': ('Organisation',result[10]), 'updatedby': ('Last updated by',result[11]), 'lastupdated': ('Last updated',lastupdated)} if closed: orderData['closed'] = ('Closed',closed) page.orderData = orderData page.orderDataHead = 'Order details' else: page.errors.append('Order not found') subpath = 'main' elif subpath == 'history': deviceorderid = None if len(path) > 2: deviceorderid = path[2] alternativeOutput = history(req,deviceorderid) page.description = 'Closed orders. Select details for more ' +\ 'information on a specific order. Select ' +\ 'device history to view event history for ' +\ 'all devices in an order.' page.subname = 'main' amountsql = "SELECT count(*) FROM device WHERE device.deviceorderid="+\ "deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE device.deviceorderid="+\ "deviceorder.deviceorderid AND device.active=true" sql = "SELECT registered,ordered,ordernumber,retailer,comment," +\ "username,product.productno,product.descr,deviceorderid," +\ "(%s),(%s),orgid,arrived " % (amountsql,arrivedsql) +\ "FROM deviceorder,product WHERE " +\ "deviceorder.productid=product.productid AND " +\ "arrived!='infinity' ORDER BY arrived DESC" colformat = [['$1$'], ['$12$'], ['$2$'], ['$6$ ($7$)'], ['$9$'], ['$5$'], ['$11$'], [['url','Details',BASEPATH+'order/details/$8$/']], [['url','Device history',BASEPATH+'order/history/$8$/']]] headings = [('Ordered',None), ('Closed',None), ('Ordernumber',None), ('Product',None), ('Amount',None), ('Ordered by',None), ('Organisation',None), ('',None), ('',None)] page.orderList = FormattedList('orders','Order history',headings, colformat,sql) if subpath=='main': # Main page page.description = 'Currently active orders. Register arrival of ' +\ 'devices in an order by selecting arrival. ' page.subname = 'main' amountsql = "SELECT count(*) FROM device WHERE device.deviceorderid="+\ "deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE device.deviceorderid="+\ "deviceorder.deviceorderid AND device.active=true" sql = "SELECT registered,ordered,ordernumber,retailer,comment," +\ "username,product.productno,product.descr,deviceorderid," +\ "(%s),(%s),orgid " % (amountsql,arrivedsql) +\ "FROM deviceorder,product WHERE " +\ "deviceorder.productid=product.productid AND " +\ "arrived='infinity' ORDER BY ordered" colformat = [['$1$'], ['$2$'], ['$6$ ($7$)'], ['$9$'], ['$10$'], ['$5$'], ['$11$'], [['url','Details',BASEPATH+'order/details/$8$/']], [['url','Arrival',BASEPATH+'order/arrival/$8$/']], [['url','Edit',BASEPATH+'order/edit/$8$/']], [['url','Delete',BASEPATH+'order/delete/$8$/']]] headings = [('Ordered',None), ('Ordernumber',None),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -