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

📄 navigation.py

📁 Network Administration Visualized 网络管理可视化源码
💻 PY
字号:
# -*- coding: ISO8859-1 -*-## $Id: navigation.py 3389 2006-03-14 13:45:57Z mortenv $## Copyright 2003, 2004 Norwegian University of Science and Technology## This file is part of Network Administration Visualized (NAV)## NAV is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## NAV is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with NAV; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA### Authors: Magnar Sveen <magnars@idi.ntnu.no>#from mod_python import apacheimport navfrom nav.web.preferences import Preferences, Linkfrom nav.db.navprofiles import Account, Accountnavbar, Navbarlinkdef _force_reload_of_user_preferences(req):  if hasattr(req.session['user'], "preferences"):    del req.session['user'].preferences    req.session.save()def _find_pref_user():  from nav.web.templates.MainTemplate import MainTemplate  user = MainTemplate.user  if user.id == 1:    # admin changes default user preferences    user = Account(0)  return userdef _find_user_preferences(user, req):  if not hasattr(user, "preferences"):    # if user preferences is not loaded, it's time to do so    user.preferences = Preferences()    conn = nav.db.getConnection('navprofile', 'navprofile')    prefs = user.getChildren(Accountnavbar)    if not prefs:      # if user has no preferences set, use default preferences      default = Account(0)      prefs = default.getChildren(Accountnavbar)    for pref in prefs:      link = Navbarlink(pref.navbarlink)      if pref.positions.count('navbar'): # does 'positions'-string contain 'navbar'        user.preferences.navbar.append(Link(link.name, link.uri))      if pref.positions.count('qlink1'): # does 'positions'-string contain 'qlink1'        user.preferences.qlink1.append(Link(link.name, link.uri))      if pref.positions.count('qlink2'): # does 'positions'-string contain 'qlink2'        user.preferences.qlink2.append(Link(link.name, link.uri))    req.session.save() # remember this to next timedef index(req):  from nav.web.templates.NavbarPreferencesTemplate import NavbarPreferencesTemplate  template = NavbarPreferencesTemplate()  template.path = [("Home", "/"), ("Preferences", "/preferences/"), ("Navigation preferences", False)]  template.title = "Navigation preferences"  req.content_type = "text/html"  req.send_http_header()  user = _find_pref_user()  if not hasattr(user, "preferences"):    _find_user_preferences(user, req)  default = Account(0)  template.user = user  template.homemadelinks = user.getChildren(Navbarlink)  if not user.id == default.id:    template.defaultlinks = default.getChildren(Navbarlink)  else:    template.defaultlinks = False  accountnavbars = user.getChildren(Accountnavbar)  if not accountnavbars:    # if user has no preferences set, make them according to default user    conn = nav.db.getConnection('navprofile', 'navprofile')    for pref in default.getChildren(Accountnavbar):      newpref = Accountnavbar()      newpref.account = user.id      newpref.navbarlink = pref.navbarlink      newpref.positions = pref.positions      newpref.save()    conn.commit()    accountnavbars = user.getChildren(Accountnavbar)  checked = {}  for an in accountnavbars:    checked['KEY' + str(an._getID()[1])] = an.positions    if (not checked.has_key('qlink1')) and an.positions.count('qlink1'):      checked['qlink1'] = True    if (not checked.has_key('qlink2')) and an.positions.count('qlink2'):      checked['qlink2'] = True  template.checked = checked  req.write(template.respond())  return " "def newlink(req):  from nav.web.templates.ChangeLinkTemplate import ChangeLinkTemplate  template = ChangeLinkTemplate()  req.content_type = "text/html"  req.send_http_header()  template.link = False  user = _find_pref_user()  if user.id == 0:    template.type = "default"  req.write(template.respond())  return " "def editlink(req, id):  from nav.web.templates.ChangeLinkTemplate import ChangeLinkTemplate  template = ChangeLinkTemplate()  req.content_type = "text/html"  req.send_http_header()  conn = nav.db.getConnection('navprofile', 'navprofile')  template.link = Navbarlink(id)  user = _find_pref_user()  if user.id == 0:    template.type = "default"  req.write(template.respond())  return " "def deletelink(req, id):  conn = nav.db.getConnection('navprofile', 'navprofile')  user = _find_pref_user()  link = Navbarlink(id)  if link.account == user.id or link.account.id == user.id:    link.delete()    _force_reload_of_user_preferences(req)    conn.commit()  return nav.web.redirect(req, "/preferences/navigation/navigation", seeOther=True)def saveprefs(req):  conn = nav.db.getConnection('navprofile', 'navprofile')  user = _find_pref_user()  # first delete all preferences  for oldpref in user.getChildren(Accountnavbar):    oldpref.delete()  # then set the new ones  for key in req.form.keys():    newpref = Accountnavbar()    newpref.account = user.id    newpref.navbarlink = key    newpref.positions = str(req.form[key])    newpref.save()  _force_reload_of_user_preferences(req)  conn.commit()  return nav.web.redirect(req, "/", seeOther=True)def savenewlink(req, name, url, usein):  conn = nav.db.getConnection('navprofile', 'navprofile')  user = _find_pref_user()  newlink = Navbarlink()  newlink.account = user.id  newlink.name = name  newlink.uri = url  newlink.save()  if 'navbar qlink1 qlink2'.count(usein):    newuse = Accountnavbar()    newuse.account = user.id    newuse.navbarlink = newlink.id    newuse.positions = usein    newuse.save()  _force_reload_of_user_preferences(req)  conn.commit()  return nav.web.redirect(req, "/preferences/navigation/navigation", seeOther=True)def updatelink(req, id, name, url):  conn = nav.db.getConnection('navprofile', 'navprofile')  user = _find_pref_user()  changedlink = Navbarlink(id)  if changedlink.account == user.id or changedlink.account.id == user.id:    changedlink.name = name    changedlink.uri = url    changedlink.save()    _force_reload_of_user_preferences(req)    conn.commit()  return nav.web.redirect(req, "/preferences/navigation/navigation", seeOther=True)

⌨️ 快捷键说明

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