⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 devicemanagement.py

📁 Network Administration Visualized 网络管理可视化源码
💻 PY
📖 第 1 页 / 共 5 页
字号:
            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 + -