add synchronisation of bureau & extended bureau from themis (#11095)

This commit is contained in:
Frédéric Péters 2016-06-23 14:50:54 +02:00
parent 13208b4789
commit cecf170359
1 changed files with 65 additions and 1 deletions

View File

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
import re
import datetime
import json
import time
@ -57,7 +58,7 @@ class SyncFromThemis(UtilityView):
objects = self.request.form.get('objects', '').split(',')
log.info('sync: start [%r] [%r]' % (timestamp, objects))
for object in ('deputies', 'ministries', 'commissions', 'documents',
'blocked_documents', 'deleted_documents'):
'blocked_documents', 'deleted_documents', 'bureau'):
if not 'all' in objects:
if not object in objects:
continue
@ -474,6 +475,69 @@ class SyncFromThemis(UtilityView):
log.info('blocked documents done')
def sync_bureau(self, *args):
remote_bureau = json.load(self.urlopen('%s/bureau-bureau-elargi/bureau_elargi/@@json' % self.src_url))
def get_info(deputy_id):
return getattr(self.deputies_folder, deputy_id.split(':')[1])
bureau = []
pers = get_info(remote_bureau['president'])
bureau.append(([get_info(remote_bureau['president'])],
u"Président" if pers.sex == 'M' else u"Présidente"))
bureau.append(([get_info(remote_bureau['premier_vice_president'])],
u"Premier vice-président" if pers.sex == 'M' else u"Première vice-présidente"))
bureau.append(([get_info(remote_bureau['deuxieme_vice_president'])],
u"Deuxième vice-président" if pers.sex == 'M' else u"Deuxième vice-présidente"))
bureau.append(([get_info(remote_bureau['troisieme_vice_president'])],
u"Troisième vice-président" if pers.sex == 'M' else u"Troisième vice-présidente"))
bureau.append(([get_info(x) for x in remote_bureau['secretaires']],
u"Secrétaires"))
def format_pers(pers):
return '<a href="/%s/%s">%s</a> (%s)' % (
self.settings.deputiesPath,
pers.id,
pers.title,
pers.polgroup.to_object.title)
bureau_text = u"<p>%s</p>" % "<br>\n".join(
[u"%s : %s" % (x[1], " et ".join([format_pers(y) for y in x[0]])) for x in bureau])
polgroup_order = [x for x in self.polgroups_folder]
bureau_elargi = [get_info(x) for x in remote_bureau['chefs_de_groupe']]
bureau_elargi.sort(key=lambda x: polgroup_order.index(x.polgroup.to_object.id))
bureau_elargi_text = u"<p>"
for pers in bureau_elargi:
label = u"Président de groupe" if pers.sex == "M" else u"Présidente de groupe"
bureau_elargi_text += u'%s %s : <a href="/%s/%s">%s</a><br>' % (
label,
pers.polgroup.to_object.title,
self.settings.deputiesPath, pers.id,
pers.title)
bureau_elargi_text += u"</p>"
article = getattr(self.deputies_folder, 'bureau')
article.setText(u'<h5 class="compo">Composition politique du Bureau</h5>\n\n' + bureau_text)
article = getattr(self.deputies_folder, 'bureau-elargi')
article.setText(u'<h5 class="compo">Composition politique du Bureau élargi</h5>\n\n' + bureau_text + bureau_elargi_text)
le_parlement = self.get_folder_at_path('le-parlement/le-bureau-le-bureau-elargi-et-le-greffier')
bureau_article = getattr(le_parlement, 'introduction-bureau-bureau-elargi-et-greffier')
orig_text = bureau_article.getText()
if type(orig_text) is not unicode:
orig_text = unicode(orig_text, 'utf-8')
both = u'<h5 class="compo">Composition politique du Bureau</h5>\n\n' + bureau_text
both += '\n'
both += u'<h5 class="compo">Composition politique du Bureau élargi</h5>\n\n' + bureau_text + bureau_elargi_text
regex = re.compile(r'<hr.*<hr />', re.DOTALL)
bureau_article.setText(regex.sub(u'<hr />%s<hr />' % both, orig_text))
log.info('bureau done')
def sync_deleted_documents(self, *args):
remote_documents = json.load(self.urlopen('%s/@@listDocuments' % self.src_url))