Macro pagesperso : .info->pgsql, via intranet
This commit is contained in:
parent
21e9851203
commit
0410d42147
1 changed files with 34 additions and 18 deletions
|
@ -1,6 +1,12 @@
|
||||||
# -*- encoding: utf-8 -*-
|
# -*- encoding: utf-8 -*-
|
||||||
|
# Macro d'affichage des pages perso
|
||||||
|
# Update par Chirac : cette macro n'utilise plus le .info dans les home
|
||||||
|
# A la place, une table dans la base pg gérée par django coté intranet
|
||||||
|
# Désormais, seules les pages perso référencées dans la base sont affichées
|
||||||
|
# Le référencement constitue un choix volontaire, de l'utilisateur via l'intranet
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import psycopg2
|
||||||
|
|
||||||
class AccountList:
|
class AccountList:
|
||||||
home = "/home"
|
home = "/home"
|
||||||
|
@ -12,10 +18,15 @@ class AccountList:
|
||||||
|
|
||||||
def comptes(self):
|
def comptes(self):
|
||||||
"""Retourne la liste des comptes"""
|
"""Retourne la liste des comptes"""
|
||||||
return filter(lambda x: os.path.isdir(u"/home/%s/www" % x) and not os.path.islink(u"/home/%s/www" % x),
|
# return filter(lambda x: os.path.isdir(u"/home/%s/www" % x) and not os.path.islink(u"/home/%s/www" % x),
|
||||||
#return filter(lambda x: os.path.isdir(os.path.expanduser(u"~%s/www" % x)) and not os.path.islink(os.path.expanduser(u"~%s/www" % x)),
|
# os.listdir(u"/home/mail"))
|
||||||
os.listdir(u"/home/mail"))
|
### ^^^^^^ le code m'a tuer, trace de mooo
|
||||||
### ^^^^^^ le code m'a tuer
|
|
||||||
|
#Désormais, seuls les pages perso qui sont dans la base sont référencées.
|
||||||
|
con = psycopg2.connect(database="django", user="crans", host="pgsql.adm.crans.org")
|
||||||
|
cur = con.cursor()
|
||||||
|
cur.execute("SELECT login FROM pageperso_pageperso")
|
||||||
|
return cur.fetchall()
|
||||||
|
|
||||||
|
|
||||||
def makeAnchor(self,letter):
|
def makeAnchor(self,letter):
|
||||||
|
@ -35,6 +46,7 @@ class AccountList:
|
||||||
premiere_lettre = ''
|
premiere_lettre = ''
|
||||||
letter_list = []
|
letter_list = []
|
||||||
for d in dirs:
|
for d in dirs:
|
||||||
|
d=d[0]
|
||||||
if premiere_lettre != d[0]:
|
if premiere_lettre != d[0]:
|
||||||
premiere_lettre = d[0]
|
premiere_lettre = d[0]
|
||||||
letter_list.append(premiere_lettre)
|
letter_list.append(premiere_lettre)
|
||||||
|
@ -49,11 +61,12 @@ class AccountList:
|
||||||
class Account:
|
class Account:
|
||||||
"""Classe représentant la page perso d'une personne"""
|
"""Classe représentant la page perso d'une personne"""
|
||||||
|
|
||||||
|
_connexion = None
|
||||||
|
|
||||||
def __init__(self, home, login, www, url):
|
def __init__(self, home, login, www, url):
|
||||||
"""Instanciation avec le `login' de la personne"""
|
"""Instanciation avec le `login' de la personne"""
|
||||||
self.login = login
|
self.login = login
|
||||||
self.home = "%s/%s" % (home, login)
|
self.home = "%s/%s" % (home, login)
|
||||||
#self.home = #os.path.expanduser("~%s" % login)
|
|
||||||
self.www = www
|
self.www = www
|
||||||
self.url = url
|
self.url = url
|
||||||
|
|
||||||
|
@ -61,18 +74,21 @@ class Account:
|
||||||
def info(self, champ):
|
def info(self, champ):
|
||||||
"""Retourne le contenu du champ `champ' dans le fichier info"""
|
"""Retourne le contenu du champ `champ' dans le fichier info"""
|
||||||
if self._info == None:
|
if self._info == None:
|
||||||
try:
|
|
||||||
lignes = file("%s/.info" % self.home)
|
|
||||||
except IOError:
|
|
||||||
lignes = []
|
|
||||||
|
|
||||||
# self._info est un dictionnaire qui reprend le contenu du .info
|
self._info = dict()
|
||||||
self._info = dict(map(lambda z: (unicode(z[0].lower(),"iso-8859-15"),
|
if not Account._connexion:
|
||||||
unicode(z[1],"iso-8859-15")),
|
# con = psycopg2.connect(database="intranet-dev", user="dev", password="verysecure", host="vo.v4.adm.crans.org",port="5432")
|
||||||
filter(lambda w: len(w) == 2 and len(w[1]),
|
con = psycopg2.connect(database="django", user="crans", host="pgsql.adm.crans.org")
|
||||||
map(lambda x: map(lambda y: y.strip(),
|
Account._connexion = con
|
||||||
x.split(":")),
|
else:
|
||||||
lignes))))
|
con = Account._connexion
|
||||||
|
cur = con.cursor()
|
||||||
|
cur.execute("SELECT * FROM pageperso_pageperso WHERE login='%s' " % self.login )
|
||||||
|
data = cur.fetchall()
|
||||||
|
if data:
|
||||||
|
for indice,item in enumerate(data[0]):
|
||||||
|
self._info[cur.description[indice][0]]=item.decode('utf-8')
|
||||||
|
|
||||||
|
|
||||||
if self._info.has_key(champ.lower()):
|
if self._info.has_key(champ.lower()):
|
||||||
return self._info[champ.lower()]
|
return self._info[champ.lower()]
|
||||||
|
@ -101,8 +117,8 @@ class Account:
|
||||||
u'<a href="%s">' % (self.url % self.login),
|
u'<a href="%s">' % (self.url % self.login),
|
||||||
u'<img src="%s" alt="%s">' % (self.logo(), self.login),
|
u'<img src="%s" alt="%s">' % (self.logo(), self.login),
|
||||||
u'</a><br>',
|
u'</a><br>',
|
||||||
self.info("nom") and u'<b>%s</b><br>' % self.info("nom") or u'%s<br>' % self.login,
|
self.info("nom_site") and u'<b>%s</b><br>' % self.info("nom_site") or u'%s<br>' % self.login,
|
||||||
self.info("devise") and u'<i>%s</i>' % self.info("devise") or u'',
|
self.info("slogan") and u'<i>%s</i>' % self.info("slogan") or u'',
|
||||||
u'</div>' ]
|
u'</div>' ]
|
||||||
return u'\n'.join(html)
|
return u'\n'.join(html)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue