def fw(req, name, params): location = 'admin:fw' # get current config config = vsutil.fw_get_config(name)['CURRENT'] body_tmpl = _tmpl_path('fw_body.html') mode = config['mode'] if mode == 'block': rules = config['open'] else: rules = config['close'] body_vars = {'mode': mode, 'rules': rules} vars = { 'global_menu': _global_menu(req, name, location), 'body': psp.PSP(req, body_tmpl, vars=body_vars), 'name': name } p = psp.PSP(req, _tmpl_path('main_frame.html'), vars=vars) p.run() return apache.OK
def status(req, name, params): location = 'admin:status' status = 'stopped' if vsutil.is_running(name): status = 'running' elif os.path.exists(os.path.join(cfg.ETC_VSERVERS, name, '.rebuild')): status = 'rebuilding' elif os.path.exists(os.path.join(cfg.VAR_DB_OPENVPS, 'suspend', name)): status = 'suspended' # avoid caching at all costs req.err_headers_out['Pragma'] = 'no-cache' req.err_headers_out['Cache-Control'] = 'no-cache' req.err_headers_out['Expires'] = 'Tue, 25 Jan 2000 10:30:00 GMT' body_tmpl = _tmpl_path('status_body.html') body_vars = {'status': status} vars = { 'global_menu': _global_menu(req, name, location), 'body': psp.PSP(req, body_tmpl, vars=body_vars), 'name': name } p = psp.PSP(req, _tmpl_path('main_frame.html'), vars=vars) p.run() return apache.OK
def linklint_handler(req, query, messages): path = req.filename req.filename = content_dir + "validator/linklint.pyl" """new version of py_handler() to work with PSP templates""" # get string from our customized handler() fakereq = DummyPage(req) f = open(req.filename, "r") filepath, filename = os.path.split(req.filename) oldpath = sys.path sys.path.append(filepath) #Allow files to import from their directory - bad? module = imp.load_source(os.path.splitext(filename)[0], req.filename, f) sys.path = oldpath module.handler(fakereq, query, path) user_content = fakereq.get_page() title = ("%s | Linklint Check - " % cfg.get('core', 'rg_abbrev').upper()) + path breadcrumbs = get_breadcrumbs(req) data = dict(cfg=cfg, psp=psp, breadcrumbs=breadcrumbs, title=title, user_content=user_content, nav_urls=nav_urls, messages=messages) template = psp.PSP(req, filename=cfg.get('core', 'template_file')) template.run(data) f.close() return apache.OK
def createUser(req, **args): _startPage(req) _printMenu(req) # req.write(str(args)) if not args.has_key('confirm'): template = psp.PSP(req, filename='templates/template_manage_user.html') template.run({ 'userAdd_URI': (req.parsed_uri[apache.URI_PATH], 'Create'), 'userInfo': [('Name:', 'text', 'name', '', '20', '20'), ('First Name:', 'text', 'first_name', '', '20', '20'), ('UserName:'******'text', 'username', '', '15', '15'), ('Affiliation:', 'textbox', 'affiliation', '', '100', '15', '6'), ('CERN tel. no.:', 'text', 'cern_tel', '', '12', '12'), ('CERN GSM no.:', 'text', 'cern_gsm', '', '12', '12'), ('Known languages:', 'text', 'known_langs', '', '50', '25')] }) else: if args['confirm'] == 'Create': msg = lib.doCreateUser(args) req.write(msg) elif args['confirm'] == 'Modify': if lib.doUpdateUser(args) == SUCCESS: util.redirect(req, SHIFTDB_SCRIPTNAME + '/manageUsers') else: req.write( '<center>Error when trying to modify %s [%s]...</center>' % (args['username'], args['user_id'])) else: req.write('<center>Bad function call...</center>') _endPage(req)
def history(req, uri): if wikidiff2 == None: return apache.HTTP_NOT_FOUND here = os.path.dirname(__file__) # XXX: naive datetime history = pull( ''' select "id", "uri", "from", "user", "host", "when"::timestamp, "approved" from "wikicyte"."approved"(now()) where "uri" = %(uri)s or %(uri)s is null order by "when" desc nulls last ''', locals()) head(req) psp.PSP(req, filename=(here + '/wikicyte-history.psp')).run( vars=dict({ 'uri': uri, 'history': history }, **base)) return apache.OK
def index(req): session = Session(req, lock=False) # output directory for uploaded files used in _upload_limit.py session.lock() session['outdir'] = outdir session.save() session.unlock() return psp.PSP(req, 'test.html', vars={})
def _printMenu(req): psp.PSP(req, filename= 'templates/template_top_menu.html').run({'arguments':[\ ('Create User',SHIFTDB_SCRIPTNAME + '/createUser'),\ ('Manage Users',SHIFTDB_SCRIPTNAME + '/manageUsers'),\ ('Create Shift',SHIFTDB_SCRIPTNAME + '/createShift'),\ ('Manage Shifts',SHIFTDB_SCRIPTNAME + '/manageShifts'),\ ('Create Piquet',SHIFTDB_SCRIPTNAME + '/createPiquet'),\ ('Manage Piquets',SHIFTDB_SCRIPTNAME + '/managePiquets')]})
def rebuild(req, name, params): location = 'admin:rebuild' body_tmpl = _tmpl_path('rebuild_body.html') body_vars = {} vars = { 'global_menu': _global_menu(req, name, location), 'body': psp.PSP(req, body_tmpl, vars=body_vars), 'name': name } p = psp.PSP(req, _tmpl_path('main_frame.html'), vars=vars) p.run() return apache.OK
def edit_handler(req, query, messages): req.content_type = "text/html" if not os.path.isfile(req.filename) and \ not (req.filename.endswith('_') and os.path.isfile(req.filename[:-1])): req.send_http_header() return apache.HTTP_NOT_FOUND if req.filename.endswith('_'): req.send_http_header() return psp.handler(req) user_content = '' if not os.path.isfile(req.filename) or os.path.islink(req.filename) or \ not (req.filename.endswith('.pml') or req.filename.endswith('.html')): sorry_text = """ <html><head><title>Can't edit this file | %s </title></head><body><h1>Can't edit this content</h1> <p>To edit underlay or python code, ssh to the site</p> </body></html> """ % cfg.get('core', 'rg_abbrev').upper() req.write(sorry_text) return apache.HTTP_FORBIDDEN f = open(req.filename, 'r') title_re = re.search(r"\<title\>(.*)\<\/title\>", f.read()) f.close() if title_re: title = "Edit %s | %s " % (title_re.groups()[0], cfg.get('core', 'rg_abbrev').upper()) else: title = "Edit %s | %s " % (req.filename, cfg.get('core', 'rg_abbrev').upper()) # See if page is requesting custom banner banner_img = None f = open(req.filename, 'r') banner_re = re.search(r"\<banner\>(.*)\<\/banner\>", f.read()) f.close() if banner_re: banner_img = banner_re.groups()[0] breadcrumbs = get_breadcrumbs(req) f = open(req.filename, "r") user_content = f.read() f.close() data = dict(psp=psp, breadcrumbs=breadcrumbs, title=title, banner_img=banner_img, user_head_content='', user_content=user_content, cfg=cfg, nav_urls=nav_urls, messages=messages) template_file = cfg.get('core', 'template_file_edit') template = psp.PSP(req, filename=template_file) template.run(data) return apache.OK
def bwlimit(req, name, params): location = 'admin:bwlimit' # enumerate bands from lowest to the CAP in 256kbit # increments, then moving to 512kbit increments bands = [('256Kbit', 1024 * 256), ('512Kbit', 1024 * 512)] for x in range(1, 10): bands.append(('%dMbit' % x, 1024 * 1024 * x)) for x in range(10, 100, 10): bands.append(('%dMbit' % x, 1024 * 1024 * x)) for x in range(100, 1100, 100): bands.append(('%dMbit' % x, 1024 * 1024 * x)) # now weed out everything above the cap bands = [x for x in bands if x[1] <= cfg.DFT_VS_RATE_CAP] # get current limit limit, cap = vsutil.get_bwlimit(name) if not limit: limit = cfg.DFT_VS_CEIL body_tmpl = _tmpl_path('bwlimit_body.html') body_vars = {'bands': bands, 'limit': limit} vars = { 'global_menu': _global_menu(req, name, location), 'body': psp.PSP(req, body_tmpl, vars=body_vars), 'name': name } p = psp.PSP(req, _tmpl_path('main_frame.html'), vars=vars) p.run() return apache.OK
def block(req, name, params): location = 'admin:block' # get current config ips = vsutil.fw_get_config(name)['BLOCK'] body_tmpl = _tmpl_path('block_body.html') body_vars = {'ips': ' '.join(ips)} vars = { 'global_menu': _global_menu(req, name, location), 'body': psp.PSP(req, body_tmpl, vars=body_vars), 'name': name } p = psp.PSP(req, _tmpl_path('main_frame.html'), vars=vars) p.run() return apache.OK
def edit(req, uri): req.get_basic_auth_pw() user = req.user if anon(user): return apache.HTTP_FORBIDDEN here = os.path.dirname(__file__) form = util.FieldStorage(req) if req.method == 'POST': save(req, form, uri) target = parm(form, 'target') if target == None: target = uri util.redirect(req, target) return apache.OK page = luri(uri) uri = exml(uri) target = parm(form, 'target') if target != None: target = exml(target) if page == None: rev = None data = '' else: rev = int(page['id']) data = exml(page['data']) head(req) data = clean(data) if data.startswith('\n'): data = '\n' + data data = data.encode('utf8') psp.PSP(req, filename=(here + '/wikicyte-edit.psp')).run( vars=dict({ 'uri': uri, 'rev': rev, 'data': data, 'target': target }, **base)) return apache.OK
def _global_menu(req, vps, location): if ':' in location: hlight, s_hlight = location.split(':') else: hlight, s_hlight = location, '' menu_items = _navigation_map(req, vps) m = psp.PSP(req, _tmpl_path('global_menu.html'), vars={ 'menu_items': menu_items, 'hlight': hlight, 's_hlight': s_hlight }) return m
def diff(req, lid, rid): if wikidiff2 == None: return apache.HTTP_NOT_FOUND here = os.path.dirname(__file__) lpage = pid(lid) rpage = pid(rid) head(req) ldata = lpage['data'].encode('utf8') rdata = rpage['data'].encode('utf8') diff = wikidiff2.wikidiff2_do_diff(ldata, rdata, 2) diff = diff.replace('"></td>', '"> </td>') psp.PSP(req, filename=(here + '/wikicyte-diff.psp')).run( vars=dict({'diff': diff}, **base)) return apache.OK
def search_handler(req, query, messages): path = os.path.dirname(req.filename) fakereq = DummyPage(req) f = open(req.filename, "r") filepath, filename = os.path.split(req.filename) oldpath = sys.path sys.path.append(filepath) #Allow files to import from their directory - bad? module = imp.load_source(os.path.splitext(filename)[0], req.filename, f) sys.path = oldpath module.handler(fakereq, query, path) user_content = fakereq.get_page() title = module.get_title(req, query, path) breadcrumbs = get_breadcrumbs(req) data = dict(cfg=cfg, psp=psp, breadcrumbs=breadcrumbs, title=title, user_content=user_content, nav_urls=nav_urls, messages=messages) template = psp.PSP(req, filename=cfg.get('core', 'template_file')) template.run(data) return apache.OK
def displayPage(req, contentblocks, pagetitle="Python Project 2007", sidebarblocks=generateSideBarContent(), show_code_css=False): curmicroseconds = datetime.datetime.now().microsecond req.content_type = 'text/html' t = psp.PSP(req, filename="templates/page.tmpl") t.run( vars={ "pagetitle": pagetitle, "sidebarblocks": sidebarblocks, "contentblocks": contentblocks, "show_code_css": show_code_css, "elapsedseconds": ( math.pow(10, -6) * (datetime.datetime.now().microsecond - curmicroseconds)) }) return
def createShift(req, **args): _startPage(req) _printMenu(req) #_endPage(req) #return dbo = lib.DB_Object() shift_types = dbo.execSQL('SELECT * FROM SHIFTTYPE').fetchall() #req.write(str(shift_types)) #users=lib.doGetUsers((*,)) #for i in range(len(shift_types)): #shift_types[0]=shift_types[0]+('is_selected',) template = psp.PSP(req, filename='templates/template_manage_shifts.html') template.run({ 'shift_ActionURI': (req.parsed_uri[apache.URI_PATH], 'Create'), 'shift_opts': shift_types, 'sh_resps': (), 'usr_assigned': (), 'usr_available': () }) #to complete here!!! _endPage(req)
def login(req, **args): if args.has_key('username') and args.has_key('password'): # try to authenticate the user # if yes redirect util.redirect('<target>') # else continue and print a message if authenticate(args['username'], args['password'], args['rights']): session = Session.Session(req) session['hits'] = 1 session['username'] = args['username'] session['user_ip'] = req.get_remote_host() #need rights too! session.save() util.redirect(req, SHIFTDB_SCRIPTNAME) _startPage(req) #req.write(str(args)) template = psp.PSP(req, filename='templates/template_online_login.html') template.run({ 'target': req.parsed_uri[apache.URI_PATH], 'username': '', 'password': '', }) _endPage(req)
def _startPage(req): req.content_type = "text/html" psp.PSP(req, filename='templates/template_online_start_page.html').run()
def login(req, vserver_name, message=''): if req.method == 'POST': # someone is trying to login fs = util.FieldStorage(req) userid = fs.getfirst('userid') passwd = fs.getfirst('passwd') uri = fs.getfirst('uri') vservers = vsutil.list_vservers() if ((vserver_name == userid and vservers.has_key(vserver_name) and vds.checkpw(vserver_name, userid, passwd)) or # root (userid == SUPER and vds.checkpw('/', userid, passwd)) or # superuser (userid == cfg.PANEL_SUPERUSER and crypto.check_passwd_md5(passwd, cfg.PANEL_SUPERUSER_PW))): # plant the cookie key = _read_priv_key() cookie = RSASignedCookie.RSASignedCookie( 'openvps-user', "%d:%s" % (time.time(), userid), key) cookie.path = '/' Cookie.add_cookie(req, cookie) if uri and not uri.endswith('login'): util.redirect(req, str(uri)) else: util.redirect(req, '/admin/%s/status' % vserver_name) else: message = 'invalid login or password' # if we got here, either it's not a POST or login failed # it's possible that some qargs were passed in qargs = {} if req.args: qargs = util.parse_qs(req.args) if qargs.has_key('m'): if not message: if qargs['m'][0] == '1': message = 'please log in' elif qargs['m'][0] == '2': message = 'session time-out, please log in again' if qargs.has_key('url'): url = qargs['url'][0] else: url = req.uri body_tmpl = _tmpl_path('login_body.html') body_vars = {'message': message, 'url': url} vars = { 'global_menu': '', 'body': psp.PSP(req, body_tmpl, vars=body_vars), 'name': '' } p = psp.PSP(req, _tmpl_path('main_frame.html'), vars=vars) p.run() return apache.OK
def footer(req): """ html navigation footer """ from mod_python import psp tmpl = psp.PSP(req, filename='footer.tmpl') tmpl.run(vars = { 'time': -req.mtime+req.request_time })
def navigation(req): """ main html navigation header """ from mod_python import psp req.content_type = "text/html" parse_args(req) datapath = req.datapath location = req.location # deal with session if req.sess.is_new(): msg = "<b>Welcome %s</b><br>" % req.sess['login'] else: msg = "<b>Welcome back %s</b><br>" % req.sess['login'] # start writing tmpl = psp.PSP(req, filename='header.tmpl') tmpl.run(vars = { 'title': "aubioweb / %s / %s" % (req.first,location), 'basehref': '/~piem/', 'message': msg, 'action': req.first}) req.write("<h2>Content of ") print_link(req,"","/") y = location.split('/') for i in range(len(y)-1): print_link(req,"/".join(y[:i+1]),y[i]) req.write(" / ") req.write("%s</h2>\n" % y[-1]) a = {'show_info' : 'info', 'show_sound': 'waveform', 'show_onset': 'onset', 'index' : 'index', 'show_pitch': 'pitch', 'play_m3u': 'stream (m3u/ogg)', 'play_ogg': 'save (ogg)', 'play_wav': 'save (wav)', } # print task lists (only remaining tasks) print_link(req,re.sub('%s.*'%req.last,'',location),"go up") akeys = a.keys(); akeys.sort(); curkey = req.first for akey in akeys: if akey != curkey: req.write(":: ") print_link(req,"/".join((akey,location)),a[akey]) else: req.write(":: ") req.write("<b>%s</b>" % a[akey]) req.write("<br>") # list the content of the directories listdir,listfiles = [],[] if os.path.isdir(datapath): listfiles = list_snd_files(datapath) listdir = list_dirs(datapath) listdir.pop(0) # kick the current dir elif os.path.isfile(datapath): listfiles = [datapath] listdir = [re.sub(req.last,'',location)] link_list(req,listdir,title="Subdirectories") link_list(req,listfiles,title="Files")
def showChapter(req, chapter): relativepath = "/python/files/Chapter Exercises/" + str(chapter) + "/" fullpath = "/var/www/html" filelocation = fullpath + relativepath exercisefiles = getfiles(filelocation) exercises = [] exercisefiles.sort() for file in exercisefiles: if file[:8] != "exercise": continue curfile = open("./" + file) contents = curfile.read() vals = {} for match in re.finditer(r"(?im)^#\s*(\w+):(.*)$", contents): vals[match.group(1).strip().lower()] = match.group(2).strip() if vals.has_key("exercise"): exercise = "<a href='view?chap=" + chapter.lower().strip( "chapter ") + "&exercise=" + file.strip( "exercise.py") + "'>" + vals["exercise"] + "</a>" else: exercise = "Unknown" if vals.has_key("start") & vals.has_key("end"): timestring = "%I:%M:%S %p %m/%d/%Y" dur = duration( time.mktime(time.strptime(vals["end"], timestring)) - time.mktime(time.strptime(vals["start"], timestring))) else: dur = "Unknown" if vals.has_key("rating"): if vals['rating'] == "1": ratingcolor = "#FF687C" elif vals['rating'] == "2": ratingcolor = "#FF8C33" elif vals['rating'] == "3": ratingcolor = "#FFF04D" elif vals['rating'] == "4": ratingcolor = "#B2FF3E" rating = vals['rating'] else: ratingcolor = "#FFFFFF" rating = "Unknown" if vals.has_key("note"): note = vals['note'] else: note = "Unknown" exercises.append({ "exercise": exercise, "duration": dur, "rating": rating, "ratingcolor": ratingcolor, "note": note }) t2 = psp.PSP(req, filename="templates/chaptergrid.tmpl", vars={"exercises": exercises}) return t2
def _endPage(req): psp.PSP(req, filename='templates/template_online_end_page.html').run()
def handler(req): req.content_type = 'text/plain' req.headers_out['X-My-header'] = 'hello world' cookies = Cookie.get_cookies(req) if 'counter' in cookies: c = cookies['counter'] c.value = int(c.value) + 1 Cookie.add_cookie(req, c) else: Cookie.add_cookie(req, 'counter', '1') # get query string / POST data # see: https://stackoverflow.com/a/27448720 fields = util.FieldStorage(req) # NOTE: use req.write() after set HTTP headers if 'note' in fields: # NG req.write('set after body\n') Cookie.add_cookie(req, 'after_write', 'yes') req.headers_out['X-After-Write'] = 'oh' return apache.OK # OK # Cookie.add_cookie(req, 'after_write', 'yes') # req.headers_out['X-After-Write'] = 'oh' # req.write('set after body\n') # return apache.OK # Usage PSP template if fields.get('psp', None): req.content_type = 'text/html' template = psp.PSP(req, filename='template.html') template.run({'query_string': fields.get('psp', None)}) return apache.OK if '404' in fields: return apache.HTTP_NOT_FOUND if 'error' in fields: return apache.SERVER_RETURN if 'redirect' in fields: util.redirect(req, 'https://www.google.co.jp') # OK - get CGI environment value if 'env1' in fields: req.add_common_vars() env = req.subprocess_env # get CGI value: HTTP_HOST host = env.get('HTTP_HOST') req.write('subprocess_env(HTTP_HOST): {}\n'.format(host)) # NG - get CGI environment value if 'env2' in fields: env = req.subprocess_env host = env.get('HTTP_HOST') req.write('subprocess_env(HTTP_HOST): {}\n'.format(host)) return apache.OK # NG - get CGI environment value # NEED mod_python 3.4.1 over if 'env3' in fields: req.add_cgi_vars() env = req.subprocess_env req.write(env.get('HTTP_HOST', 'foo')) return apache.OK # Write Request object req.write('request.args: {}\n'.format(req.args)) # => None / foo=bar req.write('request.method: {}\n'.format(req.method)) # => GET # Why: return apache.OK / req.status req.write('request.status: {}\n'.format(req.status)) # => 200 req.write('request.filename: {}\n'.format(req.filename)) # => /var/www/mpytest/mp/generic_handler.py req.write('request.get_remote_host(): {}\n'.format( req.get_remote_host(apache.REMOTE_NOLOOKUP))) # => 192.168.69.1 # request HTTP header # headers_in is dict like object (mod_python.apache.table) for k, v in req.headers_in.items(): req.write('headers_in: key -> {} / value -> {}\n'.format(k, v)) for k, v in fields.items(): req.write('FieldStorage: key -> {} / value -> {}\n'.format(k, v)) req.write('Hello world') # output HTTP Status Code return apache.OK
def psp_handler(req, query, messages): req.content_type = "text/html; charset=utf-8" if not os.path.isfile(req.filename) and \ not (req.filename.endswith('_') and os.path.isfile(req.filename[:-1])): req.send_http_header() return apache.HTTP_NOT_FOUND # Debugging output. Needs PythonDebug in the apache conf. if req.filename.endswith('_'): req.send_http_header() return psp.handler(req) user_content = '' # trick PSP to give us a string for the user page # and pass it to the template fakereq = DummyPage(req) user_page = psp.PSP(fakereq, filename=req.filename) data = dict(cfg=cfg) try: user_page.run(data) except apache.SERVER_RETURN: req.page = fakereq.page req.status = fakereq.status return apache.OK user_content = fakereq.get_page() # some variables needed in our templates breadcrumbs = get_breadcrumbs(req) f = open(req.filename, "r") title_re = re.search(r"\<title\>(.*)\<\/title\>", f.read()) f.close() # If the user content was a tuple, it means we specified extra data for the <head> user_head_content = "" if type(user_content) is tuple: user_head_content = user_content[1] user_content = user_content[0] if cfg.has_option('core', 'titletemplate'): title = cfg.get('core', 'titletemplate') else: title = "%s | CSIRO's Data61" % cfg.get('core', 'rg_abbrev').upper() if title_re: title_end = title_re.end() title = "%s | %s" % (title_re.groups()[0], title) else: # Default to the ugly URL cur_url = req.filename[len(cfg.get('core', 'content_dir')):].strip('/') live_url = '%s' % cfg.get('hosts', 'url')+'/'+cur_url live_url = cur_url # Set the title title = "%s | %s" % (title, live_url) # See if page is requesting custom banner banner_img = None f = open(req.filename, "r") banner_re = re.search(r"\<banner\>(.*)\<\/banner\>", f.read()) f.close() if banner_re: banner_img = banner_re.groups()[0] data = dict(psp=psp, breadcrumbs=breadcrumbs, title=title, banner_img=banner_img, user_head_content=user_head_content, user_content=user_content, cfg=cfg, nav_urls=nav_urls, messages=messages) template_file = cfg.get('core', 'template_file') if 'media' in query: if query['media'][0] == 'print': template_file = cfg.get('core', 'template_file_print') try: template = psp.PSP(req, filename=template_file) except Exception as e: req.send_http_header() req.write("Template prep failed, $s\n", str(e)) traceback.print_exc() return apache.OK req.send_http_header() try: template.run(data) except Exception as e: req.write("template run failed, %s\n" % str(e)) traceback.print_exc() return apache.OK
def disk(req, name, params): if params.startswith('graph'): if not req.args: return error(req, 'Not sure what you mean') qargs = util.parse_qs(req.args) if not qargs.has_key('s'): return error(req, 'Where do I start?') start = '-' + qargs['s'][0] width = 484 height = 70 nolegend = '' if qargs.has_key('l'): nolegend = '-g' # no legend # how many days back? secs = abs(int(start)) if secs < 60 * 60 * 24: # we're talking hours title = 'last %d hours' % (secs / (60 * 60)) else: title = 'last %d days' % (secs / (60 * 60 * 24)) rrd = os.path.join(cfg.VAR_DB_OPENVPS, 'vsmon/%s.rrd' % name) tfile, tpath = tempfile.mkstemp('.gif', 'oh') os.close(tfile) args = [ tpath, '--start', start, '--title', title, '-w', str(width), '-h', str(height), '-c', 'SHADEB#FFFFFF', '-c', 'SHADEA#FFFFFF', '-l', '0', 'DEF:d=%s:vs_disk_b_used:AVERAGE' % rrd, 'CDEF:db=d,1024,*', 'AREA:db#4eee94:bytes used' ] if qargs.has_key('l'): args.append('-g') # no legend RRD.graph(*args) req.content_type = 'image/gif' req.sendfile(tpath) os.unlink(tpath) return apache.OK else: location = 'stats:disk' body_tmpl = _tmpl_path('disk_body.html') rrd = os.path.join(cfg.VAR_DB_OPENVPS, 'vsmon/%s.rrd' % name) data = _load_rrd_data(rrd, ['vs_disk_b_used']) body_vars = {'data': data} vars = { 'global_menu': _global_menu(req, name, location), 'body': psp.PSP(req, body_tmpl, vars=body_vars), 'name': name } p = psp.PSP(req, _tmpl_path('main_frame.html'), vars=vars) p.run() return apache.OK
def manageUsers(req, **args): _startPage(req) _printMenu(req) if args.has_key('do_action'): #here we do extended view, modify or delete if args['do_action'] == 'Delete': if lib.doDeleteUser(args['id']): req.write('User %s successfully deleted!' % (args['username'])) else: req.write('Error when trying to delete user %s ...' % (args['username'])) _endPage(req) return elif args['do_action'] in ['View', 'Modify']: #if not args.has_key['id']: # _endPage(req) # return usr_list = lib.doGetUsers(('*', ), ('ID=%s' % (args['id']), )) template = psp.PSP(req, filename='templates/template_manage_user.html') if args['do_action'] == 'View': action_target = (req.parsed_uri[apache.URI_PATH], 'OK') elif args['do_action'] == 'Modify': i = req.parsed_uri[apache.URI_PATH].rfind('/') action_target = (req.parsed_uri[apache.URI_PATH][0:i] + '/createUser', 'Modify') else: _endPage(req) return template_args = { 'userAdd_URI': action_target, 'userInfo': [('', 'hidden', 'user_id', usr_list[0][0]), ('Name:', 'text', 'name', usr_list[0][1], '20', '20'), ('First Name:', 'text', 'first_name', usr_list[0][2], '20', '20'), ('UserName:'******'text', 'username', usr_list[0][3], '15', '15'), ('Affiliation:', 'textbox', 'affiliation', usr_list[0][4], '100', '15', '6'), ('CERN tel. no.:', 'text', 'cern_tel', usr_list[0][5], '12', '12'), ('CERN GSM no.:', 'text', 'cern_gsm', usr_list[0][6], '12', '12'), ('Known languages:', 'text', 'known_langs', usr_list[0][7], '50', '25')] } else: req.write('Bad action!') return else: #show truncated users list base_cols = ('ID', 'NAME', 'FIRST_NAME', 'USERNAME') usr_list = lib.doGetUsers(base_cols) template = psp.PSP(req, filename='templates/template_list_visualizer.html') tbl_header = [('ID', 'hidden'), ('Name', 'text'), ('First Name', 'text'), ('Username', 'text')] col_items = [] for j in range(len(usr_list)): for k in range(len(base_cols)): col_items.append((base_cols[k].lower(), usr_list[j][k])) template_args = { 'theader': tbl_header, 'actions': (req.parsed_uri[apache.URI_PATH], 'View', 'Modify', 'Delete'), 'titems': col_items } template.run(template_args) _endPage(req)
def index(req): req.content_type = "text/html" tmpl = psp.PSP(req, filename="templates/index.html") tmpl.run()
def pyl_handler(req, query, messages): """new version of py_handler() to work with PSP templates""" # get string from our customized handler() fakereq = DummyPage(req) fakereq.user = req.user try: f = open(req.filename, "r") filepath, filename = os.path.split(req.filename) oldpath = sys.path sys.path.append(filepath) #Allow files to import from their directory - bad? module = imp.load_source(os.path.splitext(filename)[0], req.filename, f) except: req.status = apache.HTTP_NOT_FOUND return apache.OK sys.path = oldpath status = module.handler(fakereq, query) user_content = fakereq.get_page() # if this is a file download, then don't spit out template if "Content-Disposition" in req.headers_out: return apache.OK if cfg.has_option('core', 'titletemplate'): title = cfg.get('core', 'titletemplate') else: title = "%s | seL4" % cfg.get('core', 'rg_abbrev').upper() if "get_title" in dir(module): title = module.get_title(req) + " | " + title usr_head_content = "" if "get_head" in dir(module): usr_head_content = module.get_head(req) breadcrumbs = get_breadcrumbs(req) data = dict(cfg=cfg, psp=psp, breadcrumbs=breadcrumbs, title=title, user_content=user_content, user_head_content=usr_head_content, nav_urls=nav_urls, messages=messages) template_file = cfg.get('core', 'template_file') if 'media' in query: if query['media'][0] == 'print': template_file = cfg.get('core', 'template_file_print') if status != 0: req.status = status try: template = psp.PSP(req, filename=template_file) except Exception as e: req.write("psp failed: %s" % str(e)) return apache.OK req.content_type = "text/html; charset=utf-8" try: template.run(data) except apache.SERVER_RETURN: req.page = fakereq.page req.status = fakereq.status return apache.OK except Exception as e: req.write("template run failed: %s" % str(e)) return apache.OK