1
0
Fork 0

- initial work on a mod_python based web frontend

- add logs to svn:ignore
- use psycopg2 in backend


git-svn-id: file:///home/www/usr01/svn/gnuviechadmin/gnuviech.info/gnuviechadmin/trunk@198 a67ec6bc-e5d5-0310-a910-815c51eb3124
This commit is contained in:
Jan Dittberner 2006-11-04 20:24:36 +00:00
parent 572b42a706
commit bf7992a600
6 changed files with 56 additions and 5 deletions

View file

@ -6,7 +6,7 @@
from SessionManager import * from SessionManager import *
from DomainManager import * from DomainManager import *
import Settings import Settings
import psycopg import psycopg2
class ServiceFacade: class ServiceFacade:
""" """
@ -16,7 +16,7 @@ class ServiceFacade:
def __init__(self): def __init__(self):
connstr = 'host=%(dbhost)s user=%(dbuser)s ' + \ connstr = 'host=%(dbhost)s user=%(dbuser)s ' + \
'password=%(dbpassword)s dbname=%(dbname)s' 'password=%(dbpassword)s dbname=%(dbname)s'
dbconn = psycopg.connect(connstr % Settings.DBSETTINGS) dbconn = psycopg2.connect(connstr % Settings.DBSETTINGS)
self.sessionManager = SessionManager(dbconn) self.sessionManager = SessionManager(dbconn)
self.domainManager = DomainManager(dbconn) self.domainManager = DomainManager(dbconn)

View file

@ -4,7 +4,7 @@ Session manager class for gnuviech-admin tool backend
$Id$ $Id$
""" """
import Settings import Settings
import os, sha, time, logging, psycopg import os, sha, time, logging, psycopg2
from threading import Timer from threading import Timer
SESSIONTIMEOUT=120 # 2 minutes SESSIONTIMEOUT=120 # 2 minutes
@ -50,8 +50,8 @@ class SessionManager:
def newSession(self, login, password): def newSession(self, login, password):
cr = self._dbconn.cursor() cr = self._dbconn.cursor()
cr.execute('SELECT * FROM sysuser WHERE name=%(login)s AND md5pass=md5(%(password)s)' % cr.execute('SELECT * FROM sysuser WHERE name=%(login)s AND md5pass=md5(%(password)s)' %
{'login': psycopg.QuotedString(login), {'login': psycopg2.QuotedString(login),
'password' : psycopg.QuotedString(password)}) 'password' : psycopg2.QuotedString(password)})
self._dbconn.commit() self._dbconn.commit()
result = cr.fetchall() result = cr.fetchall()
if cr.rowcount == 1: if cr.rowcount == 1:

View file

View file

@ -0,0 +1,42 @@
from mod_python import apache, Session
from genshi.template import TemplateLoader, TemplateNotFound
from genshi import ParseError
def findtemplate(uri):
templates = {"/" : "index.xml"}
if uri in templates:
return templates[uri]
return None
def handler(req):
session = Session.Session(req)
try:
session['hits'] += 1
except:
session['hits'] = 1
session.save()
template = findtemplate(req.uri)
if template:
loader = TemplateLoader([req.document_root()])
try:
req.content_type = "text/html; charset=UTF-8"
tmpl = loader.load(template)
stream = tmpl.generate(title='Hello World: Reloaded',
hits=session['hits'])
pagebuffer = stream.render('xhtml')
except TemplateNotFound, tnf:
req.content_type = "text/plain; charset=UTF-8"
pagebuffer = str(tnf)
except ParseError, pe:
req.content_type = "text/plain; charset=UTF-8"
pagebuffer = str(pe)
#pagebuffer = "Hits: %d\n" % session['hits']
#pagebuffer += "Yippieh: I found %s -> %s!" % (req.uri, template)
req.write(pagebuffer)
return (apache.OK)
return (apache.HTTP_NOT_FOUND)

9
frontend/web/index.xml Normal file
View file

@ -0,0 +1,9 @@
<html>
<head>
<title>$title</title>
</head>
<body>
<h1>$title</h1>
<p>Hits: $hits</p>
</body>
</html>