sync-tabellio: add a bunch of comments

This commit is contained in:
Frédéric Péters 2013-09-10 09:40:39 +02:00
parent 89a8a7e9d7
commit 03a7b1415f
1 changed files with 23 additions and 1 deletions

View File

@ -34,6 +34,7 @@ class Command(BaseCommand):
comppols = {}
# connect to tabellio database
conn = psycopg2.connect("host=%s dbname=%s user=%s password=%s" % (
settings.TABELLIO_DBHOST,
settings.TABELLIO_DBNAME,
@ -41,6 +42,8 @@ class Command(BaseCommand):
settings.TABELLIO_DBPASSWORD))
cur = conn.cursor()
# get list of persons that are neither deputy or ministre so they can
# be disabled if they exists in docbow
cur.execute('''SELECT t_pers.nom, t_pers.prenom
FROM t_pers
WHERE t_pers.st != 'S_PARL'
@ -58,17 +61,21 @@ class Command(BaseCommand):
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
# a user didn't exist for that person, fine.
continue
if not user.is_active:
# the user was already disabled, ok.
continue
if verbose:
print 'disabling', username
user.is_active = False
# disable the user
user.is_active = False
user.save()
# remove the user from lists
if user in parl_list.members.all():
parl_list.members.remove(user)
parl_list.save()
@ -76,6 +83,8 @@ class Command(BaseCommand):
ministres_list.members.remove(user)
ministres_list.save()
# get current deputies
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'
@ -105,6 +114,8 @@ class Command(BaseCommand):
user.is_active = True
if created:
# this is a new user, assign a password and print the info on
# stdout
pw = create_password()
user.set_password(pw)
if verbose:
@ -112,9 +123,11 @@ class Command(BaseCommand):
user.save()
# create/update matching docbow profile
profile, created = DocbowProfile.objects.get_or_create(user=user)
profile.personal_email = email
# update mailing lists
if not user in parl_list.members.all():
parl_list.members.add(user)
parl_list.save()
@ -122,20 +135,25 @@ class Command(BaseCommand):
ministres_list.members.remove(user)
ministres_list.save()
# keep track of its political group, to be used later
if not comppol in comppols:
comppols[comppol] = []
comppols[comppol].append(user)
# create mailing lists for political groups
for comppol, members in comppols.items():
maillist, created = MailingList.objects.get_or_create(
name=u'Appartenance politique - %s' % comppol)
# remove members of the list that should no longer be in there
for member in maillist.members.all():
if member not in members:
maillist.members.remove(member)
# add new members
for member in members:
if member not in maillist.members.all():
maillist.members.add(member)
# get current ministres
cur.execute('''SELECT t_pers.nom, t_pers.prenom, t_adresse.email
FROM t_pers, t_pershistoline, t_adresse
WHERE t_pers.st = 'S_MINISTRE'
@ -164,6 +182,8 @@ class Command(BaseCommand):
user.is_active = True
if created:
# this is a new user, assign a password and print the info on
# stdout
pw = create_password()
user.set_password(pw)
if verbose:
@ -171,9 +191,11 @@ class Command(BaseCommand):
user.save()
# create/update matching docbow profile
profile, created = DocbowProfile.objects.get_or_create(user=user)
profile.personal_email = email
# update mailing lists
if user in parl_list.members.all():
parl_list.members.remove(user)
parl_list.save()