📄 handler.py
字号:
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 + -