#!/usr/bin/env python
#***************************************************************************
-#* Copyright (C) 2003-2011 Polytechnique.org *
+#* Copyright (C) 2003-2014 Polytechnique.org *
#* http://opensource.polytechnique.org/ *
#* *
#* This program is free software; you can redistribute it and/or modify *
import base64, MySQLdb, os, getopt, sys, sha, signal, re, shutil, ConfigParser
import MySQLdb.converters
import SocketServer
+import errno
+import traceback
sys.path.append('/usr/lib/mailman/bin')
MYSQL_USER = get_config('Core', 'dbuser')
MYSQL_PASS = get_config('Core', 'dbpwd')
+MYSQL_HOST = get_config('Core', 'dbhost')
MYSQL_DB = get_config('Core', 'dbdb')
PLATAL_DOMAIN = get_config('Mail', 'domain')
db=MYSQL_DB,
user=MYSQL_USER,
passwd=MYSQL_PASS,
- unix_socket='/var/run/mysqld/mysqld.sock')
+ host=MYSQL_HOST)
db.ping()
db.autocommit(True)
return db.cursor()
mbox = email
fqdn = PLATAL_DOMAIN
if ( fqdn == PLATAL_DOMAIN ) or ( fqdn == PLATAL_DOMAIN2 ):
- res = mysql_fetchone("""SELECT CONCAT(f.alias, '@%s'), a.full_name
+ res = mysql_fetchone("""SELECT CONCAT(s1.email, '@%s'), a.full_name
FROM accounts AS a
INNER JOIN email_source_account AS s1 ON (a.uid = s1.uid AND s1.type = 'forlife')
INNER JOIN email_source_account AS s2 ON (a.uid = s2.uid AND s2.email = '%s')
mlist.Unlock()
return ret
except Exception, e:
+ traceback.print_exc(file=sys.stderr)
sys.stderr.write('Exception in locked call %s: %s\n' % (method.__name__, str(e)))
mlist.Unlock()
return 0
@edit
@admin
"""
+ if isinstance(users, dict):
+ users = users.values()
if not isinstance(users, list):
raise Exception("userlist must be a list")
members = mlist.getRegularMemberKeys()
@edit
@admin
"""
+ # Force encoding to mailman's default for french, since this is what
+ # Mailman will use internally
+ # LC_DESCRIPTIONS is a dict of lang => (name, charset, direction) tuples.
+ encoding = mm_cfg.LC_DESCRIPTIONS['fr'][1]
+ comment = comment.encode(encoding, 'replace')
mlist.HandleRequest(int(id), int(value), comment)
return 1