sync-tabellio: create and sync mailing lists for political groups (#3545)

This commit is contained in:
Frédéric Péters 2013-09-09 13:01:45 +02:00
parent ddadfa65a7
commit c6bd9f7735
1 changed files with 19 additions and 3 deletions

View File

@ -32,6 +32,8 @@ class Command(BaseCommand):
parl_list = MailingList.objects.get(id=settings.PARLEMENTAIRES_MAILING_ID)
ministres_list = MailingList.objects.get(id=settings.MINISTRES_MAILING_ID)
comppols = {}
conn = psycopg2.connect("host=%s dbname=%s user=%s password=%s" % (
settings.TABELLIO_DBHOST,
settings.TABELLIO_DBNAME,
@ -74,10 +76,11 @@ class Command(BaseCommand):
ministres_list.members.remove(user)
ministres_list.save()
cur.execute('''SELECT t_pers.nom, t_pers.prenom, t_adresse.email
FROM t_pers, t_pershistoline, t_adresse
cur.execute('''SELECT t_pers.nom, t_pers.prenom, t_adresse.email, t_comppol.abbr
FROM t_pers, t_pershistoline, t_adresse, t_comppol
WHERE t_pers.st = 'S_PARL'
AND t_pers.prenom is not NULL
AND t_pershistoline.description = t_comppol.id
AND t_pers.id = t_pershistoline.pers
AND t_pershistoline.type = 'P_CMPL'
AND t_pershistoline.fin IS NULL
@ -91,7 +94,7 @@ class Command(BaseCommand):
t = cur.fetchone()
if not t:
break
last_name, first_name, email = t
last_name, first_name, email, comppol = t
username = get_username(last_name, first_name)
@ -119,6 +122,19 @@ class Command(BaseCommand):
ministres_list.members.remove(user)
ministres_list.save()
if not comppol in comppols:
comppols[comppol] = []
comppols[comppol].append(user)
for comppol, members in comppols.items():
maillist, created = MailingList.objects.get_or_create(
name=u'Appartenance politique - %s' % comppol)
for member in maillist.members.all():
if member not in members:
maillist.members.remove(member)
for member in members:
if member not in maillist.members.all():
maillist.members.add(member)
cur.execute('''SELECT t_pers.nom, t_pers.prenom, t_adresse.email
FROM t_pers, t_pershistoline, t_adresse