diff --git a/README.rst b/README.rst index d17c3e7f765b4bbcc20a3c645818aa1f8dd46222..3b74b123196d894e618552e9d696d3069ddb8af6 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 ad23b2b4d8cb7213a95693550cc135bdbf7723f4..a41092d9bbd0a2be74b21a373d31c13b4fdf9c33 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 0000000000000000000000000000000000000000..9bb800715c6497954cfb96fd4962c8702ab39e1d --- /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 569c09a75912723493ab62f3b54a8dde9e423089..4a7916403204c22215c59b0592387ff4332d4b4d 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 790a52c19b6d676e062935cfa82aad416db6366e..a8cb1af2034df1a74de8485915fa0fc055d4ddfe 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 861e368d05b71b31b88829acd3bdb97d001f351d..42eda4f12b0b73c7afdeece8c69e8a0f3faddfde 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, + })