From ae6c293b5a849b3b321b50905568432f3efe066d Mon Sep 17 00:00:00 2001
From: x2000habouzit
Date: Wed, 21 Jun 2006 09:28:52 +0000
Subject: [PATCH] remove ugly hack for lists. not fully tested, but *should*
work
git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@330 839d8a87-29fc-0310-9880-83ba4fa771e5
---
ChangeLog | 10 +-
bin/lists.rpc.py | 235 ++++++++++++++++++++--------------------
templates/listes/index.tpl | 18 +--
templates/listes/listes.inc.tpl | 2 +-
4 files changed, 124 insertions(+), 141 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 0d993e1..fc7bf8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,8 @@ New :
- Dynamic maps using geodesix plugin. -Car
- Link to local maps for all addresses. -Car
+ * Lists:
+ - Remove ugly hack for admin lists (staff left to a X.net group) -MC
* Notifications :
- iCal calendar for birthdays. -Car
@@ -32,13 +34,13 @@ Bug/Wish :
- #408: Admin can change sex of users without root intervention. -Car
* Carnet :
- - #414: Link to users' fiche go to private fiche and not public. -Car
-
+ - #414: Link to users' fiche go to private fiche and not public. -Car
+
* Events :
- #268: Hide read events. -Car
- #391: Go back to top link at end of each event. -Car
- #411: Count chars in events proposals to make them smaller. -Car
-
+
* Profile :
- #400: Several phones for each address. -Car
- #406: Direct link in owner's fiche to edit it. -Car
@@ -62,7 +64,7 @@ Bug/Wish :
- #377: Possibility to edit or del an ext user if email used twice. -Car
- #378: Display group directory order by promo. -Car
- #379, #383: Paiements table relook. -Car
- - #399: Event can accept guests or not. -Car
+ - #399: Event can accept guests or not. -Car
- #413: When creating a new event, datas don't disappear anymore. -Car
From 0.9.8 Branch :
diff --git a/bin/lists.rpc.py b/bin/lists.rpc.py
index 083651a..ade8a0e 100755
--- a/bin/lists.rpc.py
+++ b/bin/lists.rpc.py
@@ -54,7 +54,7 @@ class AuthFailed(Exception): pass
config = ConfigParser.ConfigParser()
config.read(os.path.dirname(__file__)+'/../configs/platal.conf')
-def get_config(sec,val,default=None):
+def get_config(sec, val, default=None):
try:
return config.get(sec, val)[1:-1]
except ConfigParser.NoOptionError, e:
@@ -71,7 +71,6 @@ MYSQL_PASS = get_config('Core', 'dbpwd')
PLATAL_DOMAIN = get_config('Mail', 'domain')
PLATAL_DOMAIN2 = get_config('Mail', 'domain2', '')
-ML_OWNER = get_config('Lists', 'admin_owner')
VHOST_SEP = get_config('Lists', 'vhost_sep', '_')
ON_CREATE_CMD = get_config('Lists', 'on_create', '')
@@ -94,20 +93,20 @@ class BasicAuthXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
argument a UserDesc taken from the database, containing name, email and perms
"""
- def _dispatch(self,method,params):
+ def _dispatch(self, method, params):
# TODO: subclass in SimpleXMLRPCDispatcher and not here.
new_params = list(params)
- new_params.insert(0,self.data[2])
- new_params.insert(0,self.data[1])
- new_params.insert(0,self.data[0])
- return self.server._dispatch(method,new_params)
+ new_params.insert(0, self.data[2])
+ new_params.insert(0, self.data[1])
+ new_params.insert(0, self.data[0])
+ return self.server._dispatch(method, new_params)
def do_POST(self):
try:
_, auth = self.headers["authorization"].split()
uid, md5 = base64.decodestring(auth).strip().split(':')
vhost = self.path.split('/')[1].lower()
- self.data = self.getUser(uid,md5,vhost)
+ self.data = self.getUser(uid, md5, vhost)
if self.data is None:
raise AuthFailed
# Call super.do_POST() to do the actual work
@@ -117,13 +116,13 @@ class BasicAuthXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
self.end_headers()
def getUser(self, uid, md5, vhost):
- res = mysql_fetchone ("""SELECT CONCAT(u.prenom, ' ',u.nom),a.alias,u.perms
+ res = mysql_fetchone ("""SELECT CONCAT(u.prenom, ' ', u.nom), a.alias, u.perms
FROM auth_user_md5 AS u
INNER JOIN aliases AS a ON ( a.id=u.user_id AND a.type='a_vie' )
- WHERE u.user_id = '%s' AND u.password = '%s' AND u.perms IN ('admin','user')
+ WHERE u.user_id = '%s' AND u.password = '%s' AND u.perms IN ('admin', 'user')
LIMIT 1""" %( uid, md5 ) )
if res:
- name,forlife,perms = res
+ name, forlife, perms = res
if vhost != PLATAL_DOMAIN:
res = mysql_fetchone ("""SELECT uid
FROM groupex.membres AS m
@@ -131,10 +130,10 @@ class BasicAuthXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
WHERE perms='admin' AND uid='%s' AND mail_domain='%s'""" %( uid , vhost ) )
if res: perms= 'admin'
userdesc = UserDesc(forlife+'@'+PLATAL_DOMAIN, name, None, 0)
- return (userdesc,perms,vhost)
+ return (userdesc, perms, vhost)
else:
return None
-
+
################################################################################
#
# XML RPC STUFF
@@ -163,39 +162,36 @@ def mysql_fetchone(query):
lock.release()
return ret
-def is_owner(userdesc,perms,mlist):
- return ( perms == 'admin' and ML_OWNER in mlist.owner ) or ( userdesc.address in mlist.owner )
-
-def is_admin_on(userdesc,perms,mlist):
+def is_admin_on(userdesc, perms, mlist):
return ( perms == 'admin' ) or ( userdesc.address in mlist.owner )
-def quote(s,is_header=False):
+def quote(s, is_header=False):
if is_header:
- h = Utils.oneline(s,'iso-8859-1')
+ h = Utils.oneline(s, 'iso-8859-1')
else:
h = s
h = str('').join(re.split('[\x00-\x1f]+', s))
- return Utils.uquote(h.replace('&','&').replace('>','>').replace('<','<'))
+ return Utils.uquote(h.replace('&', '&').replace('>', '>').replace('<', '<'))
def to_forlife(email):
try:
- mbox,fqdn = email.split('@')
+ mbox, fqdn = email.split('@')
except:
mbox = email
fqdn = PLATAL_DOMAIN
if ( fqdn == PLATAL_DOMAIN ) or ( fqdn == PLATAL_DOMAIN2 ):
- res = mysql_fetchone("""SELECT CONCAT(f.alias,'@%s'), CONCAT(u.prenom,' ',u.nom)
+ res = mysql_fetchone("""SELECT CONCAT(f.alias, '@%s'), CONCAT(u.prenom, ' ', u.nom)
FROM auth_user_md5 AS u
INNER JOIN aliases AS f ON (f.id=u.user_id AND f.type='a_vie')
INNER JOIN aliases AS a ON (a.id=u.user_id AND a.alias='%s' AND a.type!='homonyme')
- WHERE u.perms IN ('admin','user')
+ WHERE u.perms IN ('admin', 'user')
LIMIT 1""" %( PLATAL_DOMAIN, mbox ) )
if res:
return res
else:
- return (None,None)
- return (email,mbox)
+ return (None, None)
+ return (email, mbox)
##
# see /usr/lib/mailman/bin/rmlist
@@ -205,16 +201,15 @@ def remove_it(listname, filename):
os.unlink(filename)
elif os.path.isdir(filename):
shutil.rmtree(filename)
-
+
#-------------------------------------------------------------------------------
# helpers on lists
#
-def get_list_info(userdesc,perms,mlist,front_page=0):
+def get_list_info(userdesc, perms, mlist, front_page=0):
members = mlist.getRegularMemberKeys()
is_member = userdesc.address in members
- is_admin = ML_OWNER in mlist.owner
- is_owner = ( perms == 'admin' and is_admin ) or ( userdesc.address in mlist.owner )
+ is_owner = userdesc.address in mlist.owner
if mlist.advertised or is_member or is_owner or (not front_page and perms == 'admin'):
is_pending = False
if not is_member and (mlist.subscribe_policy > 1):
@@ -238,43 +233,43 @@ def get_list_info(userdesc,perms,mlist,front_page=0):
'info' : quote(mlist.info),
'diff' : (mlist.default_member_moderation>0) + (mlist.generic_nonmember_action>0),
'ins' : mlist.subscribe_policy > 1,
- 'priv' : (1-mlist.advertised)+2*is_admin,
+ 'priv' : 1-mlist.advertised,
'sub' : 2*is_member + is_pending,
'own' : is_owner,
'nbsub': len(members)
}
- return (details,members)
+ return (details, members)
return 0
-def get_options(userdesc,perms,vhost,listname,opts):
+def get_options(userdesc, perms, vhost, listname, opts):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
return 0
options = { }
- for (k,v) in mlist.__dict__.iteritems():
+ for (k, v) in mlist.__dict__.iteritems():
if k in opts:
if type(v) is str:
options[k] = quote(v)
else: options[k] = v
- details = get_list_info(userdesc,perms,mlist)[0]
- return (details,options)
+ details = get_list_info(userdesc, perms, mlist)[0]
+ return (details, options)
except:
return 0
-def set_options(userdesc,perms,vhost,listname,opts,vals):
+def set_options(userdesc, perms, vhost, listname, opts, vals):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
return 0
mlist.Lock()
- for (k,v) in vals.iteritems():
+ for (k, v) in vals.iteritems():
if k not in opts:
continue
if k == 'default_member_moderation':
@@ -283,7 +278,7 @@ def set_options(userdesc,perms,vhost,listname,opts,vals):
t = type(mlist.__dict__[k])
if t is bool: mlist.__dict__[k] = bool(v)
elif t is int: mlist.__dict__[k] = int(v)
- elif t is str: mlist.__dict__[k] = Utils.uncanonstr(v,'fr')
+ elif t is str: mlist.__dict__[k] = Utils.uncanonstr(v, 'fr')
else: mlist.__dict__[k] = v
mlist.Save()
mlist.Unlock()
@@ -296,7 +291,7 @@ def set_options(userdesc,perms,vhost,listname,opts,vals):
# users procedures for [ index.php ]
#
-def get_lists(userdesc,perms,vhost,email=None):
+def get_lists(userdesc, perms, vhost, email=None):
if email is None:
udesc = userdesc
else:
@@ -309,24 +304,24 @@ def get_lists(userdesc,perms,vhost,email=None):
if not name.startswith(prefix):
continue
try:
- mlist = MailList.MailList(name,lock=0)
+ mlist = MailList.MailList(name, lock=0)
except:
continue
try:
- details = get_list_info(udesc,perms,mlist,(email is None and vhost == PLATAL_DOMAIN))[0]
+ details = get_list_info(udesc, perms, mlist, (email is None and vhost == PLATAL_DOMAIN))[0]
result.append(details)
except:
continue
return result
-def subscribe(userdesc,perms,vhost,listname):
+def subscribe(userdesc, perms, vhost, listname):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
mlist.Lock()
- if ( mlist.subscribe_policy in (0,1) ) or is_owner(userdesc,perms,mlist):
+ if ( mlist.subscribe_policy in (0, 1) ) or userdesc.address in mlist.owner:
mlist.ApprovedAddMember(userdesc)
result = 2
else:
@@ -341,9 +336,9 @@ def subscribe(userdesc,perms,vhost,listname):
mlist.Unlock()
return result
-def unsubscribe(userdesc,perms,vhost,listname):
+def unsubscribe(userdesc, perms, vhost, listname):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -360,16 +355,16 @@ def unsubscribe(userdesc,perms,vhost,listname):
# users procedures for [ index.php ]
#
-def get_members(userdesc,perms,vhost,listname):
+def get_members(userdesc, perms, vhost, listname):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
- details,members = get_list_info(userdesc,perms,mlist)
+ details, members = get_list_info(userdesc, perms, mlist)
members.sort()
members = map(lambda member: (quote(mlist.getMemberName(member)) or '', member), members)
- return (details,members,mlist.owner)
+ return (details, members, mlist.owner)
except:
return 0
@@ -377,34 +372,34 @@ def get_members(userdesc,perms,vhost,listname):
# users procedures for [ trombi.php ]
#
-def get_members_limit(userdesc,perms,vhost,listname,page,nb_per_page):
+def get_members_limit(userdesc, perms, vhost, listname, page, nb_per_page):
try:
- members = get_members(userdesc,perms,vhost,listname.lower())[1]
+ members = get_members(userdesc, perms, vhost, listname.lower())[1]
except:
return 0
i = int(page) * int(nb_per_page)
return (len(members), members[i:i+int(nb_per_page)])
-def get_owners(userdesc,perms,vhost,listname):
+def get_owners(userdesc, perms, vhost, listname):
try:
- details,members,owners = get_members(userdesc,perms,vhost,listname.lower())
+ details, members, owners = get_members(userdesc, perms, vhost, listname.lower())
except:
return 0
- return (details,owners)
+ return (details, owners)
#-------------------------------------------------------------------------------
# owners procedures [ admin.php ]
#
-def mass_subscribe(userdesc,perms,vhost,listname,users):
+def mass_subscribe(userdesc, perms, vhost, listname, users):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
return 0
-
+
members = mlist.getRegularMemberKeys()
added = []
mlist.Lock()
@@ -421,15 +416,15 @@ def mass_subscribe(userdesc,perms,vhost,listname,users):
mlist.Unlock()
return added
-def mass_unsubscribe(userdesc,perms,vhost,listname,users):
+def mass_unsubscribe(userdesc, perms, vhost, listname, users):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
return 0
-
+
mlist.Lock()
map(lambda user: mlist.ApprovedDeleteMember(user), users)
mlist.Save()
@@ -438,9 +433,9 @@ def mass_unsubscribe(userdesc,perms,vhost,listname,users):
mlist.Unlock()
return users
-def add_owner(userdesc,perms,vhost,listname,user):
+def add_owner(userdesc, perms, vhost, listname, user):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -458,9 +453,9 @@ def add_owner(userdesc,perms,vhost,listname,user):
mlist.Unlock()
return True
-def del_owner(userdesc,perms,vhost,listname,user):
+def del_owner(userdesc, perms, vhost, listname, user):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -480,17 +475,17 @@ def del_owner(userdesc,perms,vhost,listname,user):
# owners procedures [ admin.php ]
#
-def get_pending_ops(userdesc,perms,vhost,listname):
+def get_pending_ops(userdesc, perms, vhost, listname):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
return 0
-
+
mlist.Lock()
-
+
subs = []
seen = []
dosave = False
@@ -527,19 +522,19 @@ def get_pending_ops(userdesc,perms,vhost,listname):
except:
mlist.Unlock()
return 0
- return (subs,helds)
+ return (subs, helds)
-def handle_request(userdesc,perms,vhost,listname,id,value,comment):
+def handle_request(userdesc, perms, vhost, listname, id, value, comment):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
return 0
mlist.Lock()
- mlist.HandleRequest(int(id),int(value),comment)
+ mlist.HandleRequest(int(id), int(value), comment)
mlist.Save()
mlist.Unlock()
return 1
@@ -548,9 +543,9 @@ def handle_request(userdesc,perms,vhost,listname,id,value,comment):
return 0
-def get_pending_mail(userdesc,perms,vhost,listname,id,raw=0):
+def get_pending_mail(userdesc, perms, vhost, listname, id, raw=0):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -562,11 +557,11 @@ def get_pending_mail(userdesc,perms,vhost,listname,id,raw=0):
size = os.path.getsize(fpath)
msg = readMessage(fpath)
mlist.Unlock()
-
+
if raw:
return str(msg)
results = []
- for part in typed_subpart_iterator(msg,'text','plain'):
+ for part in typed_subpart_iterator(msg, 'text', 'plain'):
c = part.get_payload()
if c is not None: results.append (c)
results = map(lambda x: quote(x), results)
@@ -589,15 +584,15 @@ owner_opts = ['accept_these_nonmembers', 'admin_notify_mchanges', 'description',
'subject_prefix', 'goodbye_msg', 'send_goodbye_msg', 'subscribe_policy', \
'welcome_msg']
-def get_owner_options(userdesc,perms,vhost,listname):
- return get_options(userdesc,perms,vhost,listname.lower(),owner_opts)
+def get_owner_options(userdesc, perms, vhost, listname):
+ return get_options(userdesc, perms, vhost, listname.lower(), owner_opts)
-def set_owner_options(userdesc,perms,vhost,listname,values):
- return set_options(userdesc,perms,vhost,listname.lower(),owner_opts,values)
+def set_owner_options(userdesc, perms, vhost, listname, values):
+ return set_options(userdesc, perms, vhost, listname.lower(), owner_opts, values)
-def add_to_wl(userdesc,perms,vhost,listname,addr):
+def add_to_wl(userdesc, perms, vhost, listname, addr):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -612,9 +607,9 @@ def add_to_wl(userdesc,perms,vhost,listname,addr):
mlist.Unlock()
return 0
-def del_from_wl(userdesc,perms,vhost,listname,addr):
+def del_from_wl(userdesc, perms, vhost, listname, addr):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -629,9 +624,9 @@ def del_from_wl(userdesc,perms,vhost,listname,addr):
mlist.Unlock()
return 0
-def get_bogo_level(userdesc,perms,vhost,listname):
+def get_bogo_level(userdesc, perms, vhost, listname):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -647,9 +642,9 @@ def get_bogo_level(userdesc,perms,vhost,listname):
except:
return 0
-def set_bogo_level(userdesc,perms,vhost,listname,level):
+def set_bogo_level(userdesc, perms, vhost, listname, level):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -677,15 +672,15 @@ def set_bogo_level(userdesc,perms,vhost,listname,level):
admin_opts = [ 'advertised', 'archive', \
'max_message_size', 'msg_footer', 'msg_header']
-def get_admin_options(userdesc,perms,vhost,listname):
+def get_admin_options(userdesc, perms, vhost, listname):
if perms != 'admin':
return 0
- return get_options(userdesc,perms,vhost,listname.lower(),admin_opts)
+ return get_options(userdesc, perms, vhost, listname.lower(), admin_opts)
-def set_admin_options(userdesc,perms,vhost,listname,values):
+def set_admin_options(userdesc, perms, vhost, listname, values):
if perms != 'admin':
return 0
- return set_options(userdesc,perms,vhost,listname.lower(),admin_opts,values)
+ return set_options(userdesc, perms, vhost, listname.lower(), admin_opts, values)
#-------------------------------------------------------------------------------
# admin procedures [ check.php ]
@@ -732,9 +727,9 @@ check_opts = {
'unsubscribe_policy' : 0,
}
-def check_options(userdesc,perms,vhost,listname,correct=False):
+def check_options(userdesc, perms, vhost, listname, correct=False):
try:
- mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(),lock=0)
+ mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0)
except:
return 0
try:
@@ -742,9 +737,9 @@ def check_options(userdesc,perms,vhost,listname,correct=False):
if correct:
mlist.Lock()
options = { }
- for (k,v) in check_opts.iteritems():
+ for (k, v) in check_opts.iteritems():
if mlist.__dict__[k] != v:
- options[k] = v,mlist.__dict__[k]
+ options[k] = v, mlist.__dict__[k]
if correct: mlist.__dict__[k] = v
if mlist.real_name.lower() != listname:
options['real_name'] = listname, mlist.real_name
@@ -752,8 +747,8 @@ def check_options(userdesc,perms,vhost,listname,correct=False):
if correct:
mlist.Save()
mlist.Unlock()
- details = get_list_info(userdesc,perms,mlist)[0]
- return (details,options)
+ details = get_list_info(userdesc, perms, mlist)[0]
+ return (details, options)
except:
if correct: mlist.Unlock()
return 0
@@ -762,7 +757,7 @@ def check_options(userdesc,perms,vhost,listname,correct=False):
# super-admin procedures
#
-def get_all_lists(userdesc,perms,vhost):
+def get_all_lists(userdesc, perms, vhost):
prefix = vhost.lower()+VHOST_SEP
names = Utils.list_names()
names.sort()
@@ -770,16 +765,16 @@ def get_all_lists(userdesc,perms,vhost):
for name in names:
if not name.startswith(prefix):
continue
- result.append(name.replace(prefix,''))
+ result.append(name.replace(prefix, ''))
return result
-def create_list(userdesc,perms,vhost,listname,desc,advertise,modlevel,inslevel,owners,members):
+def create_list(userdesc, perms, vhost, listname, desc, advertise, modlevel, inslevel, owners, members):
if perms != 'admin':
return 0
name = vhost.lower()+VHOST_SEP+listname.lower();
if Utils.list_exists(name):
return 0
-
+
owner = []
for o in owners:
email = to_forlife(o)[0]
@@ -792,7 +787,7 @@ def create_list(userdesc,perms,vhost,listname,desc,advertise,modlevel,inslevel,o
try:
oldmask = os.umask(002)
pw = sha.new('foobar').hexdigest()
-
+
try:
mlist.Create(name, owner[0], pw)
finally:
@@ -807,15 +802,15 @@ def create_list(userdesc,perms,vhost,listname,desc,advertise,modlevel,inslevel,o
mlist.generic_nonmember_action = int(modlevel) > 0
mlist.subscribe_policy = 2 * (int(inslevel) is 1)
mlist.admin_notify_mchanges = (mlist.subscribe_policy or mlist.generic_nonmember_action or mlist.default_member_moderation or not mlist.advertised)
-
+
mlist.owner = owner
-
+
mlist.subject_prefix = '['+listname+'] '
mlist.max_message_size = 0
mlist.msg_footer = "_______________________________________________\n" \
+ "Liste de diffusion %(real_name)s\n"
-
+
mlist.header_filter_rules = []
mlist.header_filter_rules.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False))
@@ -823,8 +818,8 @@ def create_list(userdesc,perms,vhost,listname,desc,advertise,modlevel,inslevel,o
mlist.Unlock()
- check_options(userdesc,perms,vhost,listname.lower(),True)
- mass_subscribe(userdesc,perms,vhost,listname.lower(),members)
+ check_options(userdesc, perms, vhost, listname.lower(), True)
+ mass_subscribe(userdesc, perms, vhost, listname.lower(), members)
# avoid the "-1 mail to moderate" bug
mlist = MailList.MailList(name)
@@ -842,10 +837,10 @@ def create_list(userdesc,perms,vhost,listname,desc,advertise,modlevel,inslevel,o
return 0
return 1
-def delete_list(userdesc,perms,vhost,listname,del_archives=0):
+def delete_list(userdesc, perms, vhost, listname, del_archives=0):
lname = vhost+VHOST_SEP+listname.lower()
try:
- mlist = MailList.MailList(lname,lock=0)
+ mlist = MailList.MailList(lname, lock=0)
except:
return 0
try:
@@ -871,19 +866,19 @@ def delete_list(userdesc,perms,vhost,listname,del_archives=0):
except:
return 0
-def kill(userdesc,perms,vhost,alias,del_from_promo):
+def kill(userdesc, perms, vhost, alias, del_from_promo):
exclude = []
if not del_from_promo:
exclude.append(PLATAL_DOMAIN+VHOST_SEP+'promo'+alias[-4:])
for list in Utils.list_names():
if list in exclude: continue
try:
- mlist = MailList.MailList(list,lock=0)
+ mlist = MailList.MailList(list, lock=0)
except:
continue
try:
mlist.Lock()
- mlist.ApprovedDeleteMember(alias+'@'+PLATAL_DOMAIN,None,0,0)
+ mlist.ApprovedDeleteMember(alias+'@'+PLATAL_DOMAIN, None, 0, 0)
mlist.Save()
mlist.Unlock()
except:
@@ -895,11 +890,11 @@ def kill(userdesc,perms,vhost,alias,del_from_promo):
# server
#
class FastXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer):
- allow_reuse_address = True
+ allow_reuse_address = True
################################################################################
#
-# INIT
+# INIT
#
#-------------------------------------------------------------------------------
# use Mailman user and group (not root)
@@ -910,8 +905,8 @@ uid = getpwnam(mm_cfg.MAILMAN_USER)[2]
gid = getgrnam(mm_cfg.MAILMAN_GROUP)[2]
if not os.getuid():
- os.setregid(gid,gid)
- os.setreuid(uid,uid)
+ os.setregid(gid, gid)
+ os.setreuid(uid, uid)
signal.signal(signal.SIGHUP, signal.SIG_IGN)
diff --git a/templates/listes/index.tpl b/templates/listes/index.tpl
index 2f8e9ec..dfdcb2e 100644
--- a/templates/listes/index.tpl
+++ b/templates/listes/index.tpl
@@ -81,7 +81,7 @@ Tu peux demander la cr
Les listes de diffusion publiques sont visibles par tous les X inscrits à Polytechnique.org.
-{include file='listes/listes.inc.tpl' min=0}
+{include file='listes/listes.inc.tpl' priv=0}
Listes de diffusion privées (et de promo)
@@ -91,11 +91,7 @@ Les listes de diffusion publiques sont visibles par tous les X inscrits
Si tu te désinscris de ces listes, tu ne seras plus capable de t'y réinscrire par toi-même !
-{if $smarty.session.perms eq admin}
-{include file='listes/listes.inc.tpl' min=1}
-{else}
-{include file='listes/listes.inc.tpl' min=1 max=4}
-{/if}
+{include file='listes/listes.inc.tpl' priv=1}
@@ -115,14 +111,4 @@ Si tu te d
-{perms level=admin}
-
- Listes d'administration
-
-
-{include file='listes/listes.inc.tpl' min=2 max=4}
-
-{/perms}
-
-
{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/listes/listes.inc.tpl b/templates/listes/listes.inc.tpl
index 7eb9257..01f2baa 100644
--- a/templates/listes/listes.inc.tpl
+++ b/templates/listes/listes.inc.tpl
@@ -30,7 +30,7 @@
|
{foreach from=$listes item=liste}
- {if $liste.priv >= $min && $liste.priv <= $max|default:$min}
+ {if $liste.priv eq $priv}
{$liste.list}{if $liste.own} *{/if}
--
2.1.4
|