Adds script to format postal Addresses.
[platal.git] / bin / lists.rpc.py
index 8441ed4..c456f35 100755 (executable)
@@ -148,6 +148,7 @@ class BasicAuthXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
             userdesc = UserDesc(forlife, name, None, 0)
             return (userdesc, perms, vhost)
         else:
+            print "no user found for uid: %s, passwd: %s" % (uid, md5)
             return None
 
 ################################################################################
@@ -241,10 +242,11 @@ def list_call_dispatcher(method, userdesc, perms, vhost, *arg):
         @root:  the handler requires site admin rights
     """
     try:
+        print "calling method: %s" % method
         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):
@@ -312,7 +314,7 @@ def get_list_info(userdesc, perms, mlist, front_page=0):
                 'nbsub': len(members)
                 }
         return (details, members)
-    return 0
+    return None
 
 def get_options(userdesc, perms, mlist, opts):
     """ Get the options of a list.
@@ -365,8 +367,9 @@ def get_lists(userdesc, perms, vhost, email=None):
         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
@@ -849,6 +852,27 @@ def get_all_user_lists(userdesc, perms, vhost, email):
             continue
     return result
 
+def change_user_email(userdesc, perms, vhost, from_email, to_email):
+    """ Change the email of a user
+            @root
+    """
+    from_email = from_email.lower()
+    to_email = to_email.lower()
+    for list in Utils.list_names():
+        try:
+            mlist = MailList.MailList(list, lock=0)
+        except:
+            continue
+        try:
+            mlist.Lock()
+            mlist.ApprovedChangeMemberAddress(from_email, to_email, 0)
+            mlist.Save()
+            mlist.Unlock()
+        except:
+            mlist.Unlock()
+    return 1
+
+
 def create_list(userdesc, perms, vhost, listname, desc, advertise, modlevel, inslevel, owners, members):
     """ Create a new list.
             @root
@@ -1041,6 +1065,7 @@ server.register_function(check_options)
 # create + del
 server.register_function(get_all_lists)
 server.register_function(get_all_user_lists)
+server.register_function(change_user_email)
 server.register_function(create_list)
 server.register_function(delete_list)
 # utilisateurs.php