From 5e9068ca511e36e92683379fb6a33b8542955c35 Mon Sep 17 00:00:00 2001 From: Benjamin <35699580+benj-filament@users.noreply.github.com> Date: Wed, 16 Oct 2019 18:09:51 +0200 Subject: [PATCH] =?UTF-8?q?ajout=20CRON=20pour=20initialisation=20dossiers?= =?UTF-8?q?=20+=20param=C3=A8tre=20alfresco=5Fssl=20pour=20g=C3=A9rer=20la?= =?UTF-8?q?=20v=C3=A9rification=20SSL=20lors=20de=20l'appel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.rst | 1 + __manifest__.py | 3 ++- datas/cron_init_alfresco.xml | 18 ++++++++++++++++++ datas/ir_config_parameter.xml | 5 +++++ models/api_alfresco.py | 17 ++++++++++++----- models/res_partner.py | 16 ++++++++++++++++ 6 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 datas/cron_init_alfresco.xml diff --git a/README.rst b/README.rst index d17c3e7..3b74b12 100644 --- a/README.rst +++ b/README.rst @@ -32,6 +32,7 @@ Les données suivantes sont à renseigner dans le fichier de configuration d'Odo Les données suivantes sont présentes dans la table **ir.config.parameter** : * *alfresco_url* : url de l'API +* *alfresco_ssl* : **True** si on active la vérification SSL, **False** sinon (True par défaut) Credits diff --git a/__manifest__.py b/__manifest__.py index ad23b2b..a41092d 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -12,11 +12,12 @@ 'cgscop_partner' ], "data": [ - "datas/ir_config_parameter.xml", "views/assets.xml", "views/alfresco_partner_files.xml", "views/res_partner.xml", "wizard/add_file_wizard.xml", + "datas/ir_config_parameter.xml", + "datas/cron_init_alfresco.xml", ], 'qweb': [ 'static/src/xml/*.xml', diff --git a/datas/cron_init_alfresco.xml b/datas/cron_init_alfresco.xml new file mode 100644 index 0000000..9bb8007 --- /dev/null +++ b/datas/cron_init_alfresco.xml @@ -0,0 +1,18 @@ +<odoo> + <data noupdate="0"> + <record id="ir_cron_init_alfresco" model="ir.cron"> + <field name="name">CG Scop - Alfresco - Initialisation dossiers</field> + <field name="active" eval="False" /> + <field name="user_id" ref="base.user_root" /> + <!-- <field name="interval_number">1</field> --> + <!-- <field name="interval_type">days</field> --> + <!-- <field name="numbercall">-1</field> --> + <!-- <field name="doall">1</field> --> + <!-- <field name="nextcall" >2019-12-01 01:00:00</field> --> + <field name="model_id" ref="model_res_partner" /> + <field name="code">model._init_alfresco_folder()</field> + <field name="state">code</field> + <field name="priority" eval="5" /> + </record> + </data> +</odoo> \ No newline at end of file diff --git a/datas/ir_config_parameter.xml b/datas/ir_config_parameter.xml index 569c09a..4a79164 100644 --- a/datas/ir_config_parameter.xml +++ b/datas/ir_config_parameter.xml @@ -7,4 +7,9 @@ <field name="value">https://documents.scop.coop</field> </record> + <record id="alfresco_ssl" model="ir.config_parameter"> + <field name="key">alfresco.ssl</field> + <field name="value">False</field> + </record> + </odoo> \ No newline at end of file diff --git a/models/api_alfresco.py b/models/api_alfresco.py index 790a52c..a8cb1af 100644 --- a/models/api_alfresco.py +++ b/models/api_alfresco.py @@ -29,31 +29,38 @@ class CgscopAlfresco(models.AbstractModel): _logger.info("Calling %s" % url) param = self.env['ir.config_parameter'].sudo() alfresco_url = param.get_param('alfresco.url') + alfresco_ssl = True if param.get_param('alfresco.ssl') == 'True' else False basicAuthCredentials = ( tools.config['alfresco_login'], tools.config['alfresco_password']) - try: if call_type == 'get': response = requests.get( alfresco_url + url, - auth=basicAuthCredentials,) + auth=basicAuthCredentials, + verify=alfresco_ssl) elif call_type == 'post': response = requests.post( alfresco_url + url, auth=basicAuthCredentials, - json=json) + json=json, + verify=alfresco_ssl) elif call_type == 'delete': response = requests.delete( alfresco_url + url, auth=basicAuthCredentials, - json=json) + json=json, + verify=alfresco_ssl) except Exception as err: _logger.warning( "Erreur de connexion. URL: %s", err.__str__(), ) - if response.status_code not in [200, 201]: + response = False + if not response: + raise exceptions.Warning( + "Oops... il y a un problème de connexion avec l'espace documentaire") + elif response.status_code not in [200, 201]: raise exceptions.Warning( "L'appel url '%s' a échoué\n" "- Code erreur : %d\n" diff --git a/models/res_partner.py b/models/res_partner.py index 861e368..42eda4f 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -103,3 +103,19 @@ class AlfrescoPartner(models.Model): "cgscop_alfresco.alfresco_partner_files_search").id, 'context': {'search_default_group_periode': True} } + + # ------------------------------------------------------ + # CRON + # ------------------------------------------------------ + def _init_alfresco_folder(self): + """ Fonction pour le cron permettant de créer un dossier + dans Alfresco pour l'ensemble des organismes qui n'ont pas + de nodeRef + """ + partners = self.env['res.partner'].search([ + ['is_cooperative', '=', True], ['id_alfresco', '=', False]]) + for partner in partners: + id_alfresco = partner.alfresco_create_organism(partner) + partner.write({ + 'id_alfresco': id_alfresco, + }) -- GitLab