projects
/
platal.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ensure that UFC_SchoolId is exportable
[platal.git]
/
bin
/
lists.rpc.py
diff --git
a/bin/lists.rpc.py
b/bin/lists.rpc.py
index
5ce3c68
..
56067ba
100755
(executable)
--- a/
bin/lists.rpc.py
+++ b/
bin/lists.rpc.py
@@
-1,6
+1,6
@@
#!/usr/bin/env python
#***************************************************************************
#!/usr/bin/env python
#***************************************************************************
-#* Copyright (C) 2003-201
0
Polytechnique.org *
+#* Copyright (C) 2003-201
1
Polytechnique.org *
#* http://opensource.polytechnique.org/ *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* http://opensource.polytechnique.org/ *
#* *
#* This program is free software; you can redistribute it and/or modify *
@@
-72,6
+72,7
@@
MYSQL_DB = get_config('Core', 'dbdb')
PLATAL_DOMAIN = get_config('Mail', 'domain')
PLATAL_DOMAIN2 = get_config('Mail', 'domain2', '')
sys.stderr.write('PLATAL_DOMAIN = %s\n' % PLATAL_DOMAIN )
PLATAL_DOMAIN = get_config('Mail', 'domain')
PLATAL_DOMAIN2 = get_config('Mail', 'domain2', '')
sys.stderr.write('PLATAL_DOMAIN = %s\n' % PLATAL_DOMAIN )
+sys.stderr.write("MYSQL_DB = %s\n" % MYSQL_DB)
VHOST_SEP = get_config('Lists', 'vhost_sep', '_')
ON_CREATE_CMD = get_config('Lists', 'on_create', '')
VHOST_SEP = get_config('Lists', 'vhost_sep', '_')
ON_CREATE_CMD = get_config('Lists', 'on_create', '')
@@
-137,7
+138,7
@@
class BasicAuthXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
% (PLATAL_DOMAIN, uid, md5))
if res:
name, forlife, perms = res
% (PLATAL_DOMAIN, uid, md5))
if res:
name, forlife, perms = res
- if vhost != PLATAL_DOMAIN:
+ if vhost != PLATAL_DOMAIN
and perms != 'admin'
:
res = mysql_fetchone ("""SELECT m.uid, IF(m.perms = 'admin', 'admin', 'lists')
FROM group_members AS m
INNER JOIN groups AS g ON (m.asso_id = g.id)
res = mysql_fetchone ("""SELECT m.uid, IF(m.perms = 'admin', 'admin', 'lists')
FROM group_members AS m
INNER JOIN groups AS g ON (m.asso_id = g.id)
@@
-148,6
+149,7
@@
class BasicAuthXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
userdesc = UserDesc(forlife, name, None, 0)
return (userdesc, perms, vhost)
else:
userdesc = UserDesc(forlife, name, None, 0)
return (userdesc, perms, vhost)
else:
+ print >> sys.stderr, "no user found for uid: %s, passwd: %s" % (uid, md5)
return None
################################################################################
return None
################################################################################
@@
-165,6
+167,7
@@
def connectDB():
passwd=MYSQL_PASS,
unix_socket='/var/run/mysqld/mysqld.sock')
db.ping()
passwd=MYSQL_PASS,
unix_socket='/var/run/mysqld/mysqld.sock')
db.ping()
+ db.autocommit(True)
return db.cursor()
def mysql_fetchone(query):
return db.cursor()
def mysql_fetchone(query):
@@
-241,10
+244,11
@@
def list_call_dispatcher(method, userdesc, perms, vhost, *arg):
@root: the handler requires site admin rights
"""
try:
@root: the handler requires site admin rights
"""
try:
+ print >> sys.stderr, "calling method: %s" % method
if has_annotation(method, "root") and perms != "admin":
return 0
if has_annotation(method, "mlist"):
if has_annotation(method, "root") and perms != "admin":
return 0
if has_annotation(method, "mlist"):
- listname =
arg[0]
+ listname =
str(arg[0])
arg = arg[1:]
mlist = MailList.MailList(vhost + VHOST_SEP + listname.lower(), lock=0)
if has_annotation(method, "admin") and not is_admin_on(userdesc, perms, mlist):
arg = arg[1:]
mlist = MailList.MailList(vhost + VHOST_SEP + listname.lower(), lock=0)
if has_annotation(method, "admin") and not is_admin_on(userdesc, perms, mlist):
@@
-295,7
+299,7
@@
def get_list_info(userdesc, perms, mlist, front_page=0):
if not is_member and (mlist.subscribe_policy > 1):
is_pending = list_call_locked(is_subscription_pending, userdesc, perms, mlist, False)
if is_pending is 0:
if not is_member and (mlist.subscribe_policy > 1):
is_pending = list_call_locked(is_subscription_pending, userdesc, perms, mlist, False)
if is_pending is 0:
- return
0
+ return
None
host = mlist.internal_name().split(VHOST_SEP)[0].lower()
details = {
host = mlist.internal_name().split(VHOST_SEP)[0].lower()
details = {
@@
-312,7
+316,7
@@
def get_list_info(userdesc, perms, mlist, front_page=0):
'nbsub': len(members)
}
return (details, members)
'nbsub': len(members)
}
return (details, members)
- return
0
+ return
None
def get_options(userdesc, perms, mlist, opts):
""" Get the options of a list.
def get_options(userdesc, perms, mlist, opts):
""" Get the options of a list.
@@
-365,8
+369,9
@@
def get_lists(userdesc, perms, vhost, email=None):
except:
continue
try:
except:
continue
try:
- details = get_list_info(udesc, perms, mlist, (email is None and vhost == PLATAL_DOMAIN))[0]
- result.append(details)
+ details = get_list_info(udesc, perms, mlist, (email is None and vhost == PLATAL_DOMAIN))
+ if details is not None:
+ result.append(details[0])
except Exception, e:
sys.stderr.write('Can\'t get list %s: %s\n' % (name, str(e)))
continue
except Exception, e:
sys.stderr.write('Can\'t get list %s: %s\n' % (name, str(e)))
continue
@@
-410,7
+415,11
@@
def get_members(userdesc, perms, mlist):
""" List the members of a list.
@mlist
"""
""" List the members of a list.
@mlist
"""
- details, members = get_list_info(userdesc, perms, mlist)
+ infos = get_list_info(userdesc, perms, mlist)
+ if infos is None:
+ # Do not return None, this is not serializable
+ return 0
+ details, members = infos
members.sort()
members = map(lambda member: (get_name(member), member), members)
return (details, members, mlist.owner)
members.sort()
members = map(lambda member: (get_name(member), member), members)
return (details, members, mlist.owner)
@@
-876,14
+885,18
@@
def create_list(userdesc, perms, vhost, listname, desc, advertise, modlevel, ins
"""
name = vhost.lower() + VHOST_SEP + listname.lower();
if Utils.list_exists(name):
"""
name = vhost.lower() + VHOST_SEP + listname.lower();
if Utils.list_exists(name):
+ print >> sys.stderr, "List ", name, " already exists"
return 0
owner = []
for o in owners:
return 0
owner = []
for o in owners:
- email = to_forlife(o)[0]
+ email = to_forlife(o)
+ print >> sys.stderr, "owner in list", o, email
+ email = email[0]
if email is not None:
owner.append(email)
if len(owner) is 0:
if email is not None:
owner.append(email)
if len(owner) is 0:
+ print >> sys.stderr, "No owner found in ", owners
return 0
mlist = MailList.MailList()
return 0
mlist = MailList.MailList()