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

📄 handler.py

📁 Network Administration Visualized 网络管理可视化源码
💻 PY
📖 第 1 页 / 共 2 页
字号:
        if req.form.has_key('component-0'):            # Use submitted data instead of defaults or the components from the            # task we are editing            components = []            for field in req.form.list:                if field.name[:len('component')] == 'component':                    key, value = field.value.split(',')                    components.append({'key': key, 'value': value,                        'info': nav.maintenance.getComponentInfo(key, value)})        else:            # Nothing submitted, using values from default or the task we are            # editing            components = page.components        # Handle added components        for field in req.form.list:            if (req.form.has_key('cn_add_services')             and field.name == 'cn_service'):                key = 'service'                value = field.value                component = {                    'key': key, 'value': value,                    'info': nav.maintenance.getComponentInfo(key, value)}                if components.count(component) == 0:                    components.append(component)            elif ((req.form.has_key('cn_add_netboxes')             and field.name == 'cn_netbox')             or field.name == 'netbox'):             # 'cn_netbox' passed through POST (e.g. from Maintenance)             # 'netbox' passed through GET (e.g. from IP Device Center)                key = 'netbox'                value = field.value                component = {                    'key': key, 'value': value,                    'info': nav.maintenance.getComponentInfo(key, value)}                if components.count(component) == 0:                    components.append(component)            elif (req.form.has_key('cn_add_rooms')             and field.name == 'cn_room'):                key = 'room'                value = field.value                component = {                    'key': key, 'value': value,                    'info': nav.maintenance.getComponentInfo(key, value)}                if components.count(component) == 0:                    components.append(component)            elif (req.form.has_key('cn_add_locations')             and field.name == 'cn_location'):                key = 'location'                value = field.value                component = {                    'key': key, 'value': value,                    'info': nav.maintenance.getComponentInfo(key, value)}                if components.count(component) == 0:                    components.append(component)        # Handle removed components        if req.form.has_key('submit_comp_remove'):            for field in req.form.list:                if field.name[:len('remove')] == 'remove':                    key, value = field.value.split(',')                    components.remove({'key': key, 'value': value,                        'info': nav.maintenance.getComponentInfo(key, value)})        # Fill page with components        components = nav.maintenance.sortComponents(components)        page.components = components        # For any non-final submit button pressed, keep entered dates and        # descriptions (> 1 because of edit?id=X)        page.submit = (len(req.form.list) > 1            and not req.form.has_key('submit_final'))        if page.submit:            # Maintenance times            page.start_year = int(req.form['start_year'])            page.start_month = int(req.form['start_month'])            page.start_day = int(req.form['start_day'])            page.start_hour = int(req.form['start_hour'])            page.start_min = int(req.form['start_min'])            page.end_year = int(req.form['end_year'])            page.end_month = int(req.form['end_month'])            page.end_day = int(req.form['end_day'])            page.end_hour = int(req.form['end_hour'])            page.end_min = int(req.form['end_min'])            # Description            page.description = req.form['description']        # Form submitted: prepare rest of the needed data        page.submit = req.form.has_key('submit_final')        if page.submit:            # Maintenance components            if (req.form.has_key('component-0') and req.form['component-0']):                pass # components already contains everything we want            else:                page.errors.append('No maintenance components selected.')                        # Maintenance times            if (req.form.has_key('start_year') and req.form['start_year']                and req.form.has_key('start_month') and req.form['start_month']                and req.form.has_key('start_day') and req.form['start_day']                and req.form.has_key('start_hour') and req.form['start_hour']                and req.form.has_key('start_min') and req.form['start_min']):                maint_start = '%4d-%02d-%02d %02d:%02d' % (                    int(req.form['start_year']), int(req.form['start_month']),                    int(req.form['start_day']), int(req.form['start_hour']),                    int(req.form['start_min']))                maint_start = time.strptime(maint_start, '%Y-%m-%d %H:%M')                page.start_year = int(req.form['start_year'])                page.start_month = int(req.form['start_month'])                page.start_day = int(req.form['start_day'])                page.start_hour = int(req.form['start_hour'])                page.start_min = int(req.form['start_min'])            else:                maint_start = time.localtime()            if (req.form.has_key('end_year') and req.form['end_year']                and req.form.has_key('end_month') and req.form['end_month']                and req.form.has_key('end_day') and req.form['end_day']                and req.form.has_key('end_hour') and req.form['end_hour']                and req.form.has_key('end_min') and req.form['end_min']):                maint_end = '%4d-%02d-%02d %02d:%02d' % (                    int(req.form['end_year']), int(req.form['end_month']),                    int(req.form['end_day']), int(req.form['end_hour']),                    int(req.form['end_min']))                maint_end = time.strptime(maint_end, '%Y-%m-%d %H:%M')                page.end_year = int(req.form['end_year'])                page.end_month = int(req.form['end_month'])                page.end_day = int(req.form['end_day'])                page.end_hour = int(req.form['end_hour'])                page.end_min = int(req.form['end_min'])            else:                maint_end = time.localtime(int(time.time()) + 7*24*60*60)            if maint_start >= maint_end:                page.errors.append('Maintenance end is before or same as ' \                    + 'start, task will never be scheduled.')            # Description            if req.form.has_key('description') and req.form['description']:                description = req.form['description']                page.description = description            else:                page.errors.append('You did not supply a description.')            # Edit task             if (req.form.has_key('edit_taskid')                and req.form['edit_taskid'].isdigit()):                # Get ID of edited message                taskid = int(req.form['edit_taskid'])                edit_task = nav.maintenance.getTask(taskid)[0]                # Find new state                now = time.localtime()                if maint_start >= now:                    state = 'scheduled'                elif maint_start < now:                    if maint_end > now:                        state = 'scheduled'                    elif maint_end <= now:                        state = 'passed'            # New task            else:                taskid = False                state = 'scheduled'            # Get session data            author = req.session['user'].login            # If any data not okay, form is showed with list of errors on top.            # There is no need to do anything further here.            if len(page.errors):                pass            # No errors, update database            else:                # Update/insert maintenance task                taskid = nav.maintenance.setTask(taskid, maint_start,                    maint_end, description, author, state)                # Update/insert maintenance components                compstatus = nav.maintenance.setComponents(taskid, components)                if not compstatus:                    page.error.append('Failed adding components.')                # Redirect to view?id=$newid and exit                req.headers_out['location'] = 'view?id=' + str(taskid)                req.status = apache.HTTP_MOVED_TEMPORARILY                req.send_http_header()                return apache.OK    # Default section: Show task calendar    else:        page = MaintenanceCalTemplate()        page.title = 'Maintenance Schedule'        # Get input arguments        if args.get('y'):            page.year = int(args.get('y'))        else:            page.year = int(time.strftime('%Y'))        if args.get('m'):            page.month = int(args.get('m'))        else:            page.month = int(time.strftime('%m'))        # Get tasks        tasks = nav.maintenance.getTasks("maint_start > '%04d-%02d-01'" \            % (page.year, page.month), 'maint_start') or []                # Group tasks by start date        page.tasks = {}        for task in tasks:            date = task['maint_start'].strftime('%Y-%m-%d')            if not page.tasks.has_key(date):                page.tasks[date] = []            page.tasks[date].append(task)            # Check if user is logged in    if req.session['user'].id != 0:        page.authorized = True    else:        page.authorized = False    # Push menu to page    page.menu = menu    if page.authorized:        page.menu.append({'link': 'new', 'text': 'Create new', 'admin': True})    if not page.hasVar('current'):        page.current = section    if not page.hasVar('submittext'):        page.submittext = page.title       # Done, output the page    req.content_type = 'text/html'    req.send_http_header()    req.write(page.respond())    return apache.OK

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -