diff --git a/themis/importexport/sync.py b/themis/importexport/sync.py index 7d85098..b08b3f3 100644 --- a/themis/importexport/sync.py +++ b/themis/importexport/sync.py @@ -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 '%s (%s)' % ( + self.settings.deputiesPath, + pers.id, + pers.title, + pers.polgroup.to_object.title) + + bureau_text = u"

%s

" % "
\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"

" + 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 : %s
' % ( + label, + pers.polgroup.to_object.title, + self.settings.deputiesPath, pers.id, + pers.title) + bureau_elargi_text += u"

" + + article = getattr(self.deputies_folder, 'bureau') + article.setText(u'
Composition politique du Bureau
\n\n' + bureau_text) + + article = getattr(self.deputies_folder, 'bureau-elargi') + article.setText(u'
Composition politique du Bureau élargi
\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'
Composition politique du Bureau
\n\n' + bureau_text + both += '\n' + both += u'
Composition politique du Bureau élargi
\n\n' + bureau_text + bureau_elargi_text + regex = re.compile(r'', re.DOTALL) + bureau_article.setText(regex.sub(u'
%s
' % both, orig_text)) + + log.info('bureau done') + def sync_deleted_documents(self, *args): remote_documents = json.load(self.urlopen('%s/@@listDocuments' % self.src_url))