diff --git a/README.rst b/README.rst index 2832ad3ac9d5aaeedd3a8a81c8a1c03017cfc777..8e0980251888beb35c188421fcc694ea06e70ccc 100644 --- a/README.rst +++ b/README.rst @@ -24,15 +24,13 @@ Il utilise l'API Alfresco développée spécifiquement pour le projet de la CG S Usage ===== -Les données suivantes sont à renseigner dans le fichier de configuration d'Odoo : +Pour configurer ce module, les données suivantes sont à renseigner dans le menu **Configuration > Alfresco > CG Scop > Cofiguration connexion** : * *alfresco_login* : login de connexion à l'API * *alfresco_password* : password de connexion à l'API - -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 (False par défaut) +* *active* : si il s'agit de la connexion active Credits diff --git a/__manifest__.py b/__manifest__.py index a41092d9bbd0a2be74b21a373d31c13b4fdf9c33..e123f9cc171abedf6f11862d4fc8b7ac2c5b62e2 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -12,11 +12,12 @@ 'cgscop_partner' ], "data": [ + "security/ir.model.access.csv", "views/assets.xml", + "views/alfresco_connection.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': [ diff --git a/datas/ir_config_parameter.xml b/datas/ir_config_parameter.xml deleted file mode 100644 index 4a7916403204c22215c59b0592387ff4332d4b4d..0000000000000000000000000000000000000000 --- a/datas/ir_config_parameter.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<odoo noupdate="1"> - - <record id="alfresco_url" model="ir.config_parameter"> - <field name="key">alfresco.url</field> - <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/__init__.py b/models/__init__.py index ceb46c486344944e35411adc7ffbf19d0a8ccb21..8320fce99f390d4608025ab4742779998ff38ff3 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -2,5 +2,6 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import api_alfresco +from . import alfresco_connection from . import alfresco_partner_files from . import res_partner diff --git a/models/alfresco_connection.py b/models/alfresco_connection.py new file mode 100644 index 0000000000000000000000000000000000000000..a991cf50a03c6b82792d2dee2515cdb50d343cfd --- /dev/null +++ b/models/alfresco_connection.py @@ -0,0 +1,24 @@ +# © 2019 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models, fields + + +class CgscopAlfrescoConnection(models.Model): + _name = 'alfresco.connection' + _description = 'Infos FTP de connexion pour fichiers RIGA' + + name = fields.Char(string='Nom') + login = fields.Char('Login') + password = fields.Char('Password') + url = fields.Char('URL') + ssl = fields.Boolean('Connexion SSL', default=False) + active = fields.Boolean('Actif', default=False) + + def toogle_active_config(self): + """ Active la connexion sélectionnée et désactive + toutes les autres connexions + """ + for item in self.env['alfresco.connection'].search([]): + item.active = False + self.active = True diff --git a/models/api_alfresco.py b/models/api_alfresco.py index a8cb1af2034df1a74de8485915fa0fc055d4ddfe..18ca6b7f32df193dbe96ce69f57ccf977dc515bd 100644 --- a/models/api_alfresco.py +++ b/models/api_alfresco.py @@ -27,12 +27,17 @@ class CgscopAlfresco(models.AbstractModel): @return response au format JSON """ _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 + param = self.env['alfresco.connection'].sudo().search([ + ['active', '=', True]]) + if not param: + raise exceptions.Warning( + "La connexion avec Alfresco n'est pas configurée !") + return False + alfresco_url = param.url + alfresco_ssl = param.ssl basicAuthCredentials = ( - tools.config['alfresco_login'], - tools.config['alfresco_password']) + param.login, + param.password) try: if call_type == 'get': response = requests.get( @@ -57,10 +62,12 @@ class CgscopAlfresco(models.AbstractModel): err.__str__(), ) 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]: + # if not response: + # raise exceptions.Warning( + # "Oops... il y a un problème de connexion avec l'espace documentaire") + # Gestion erreur API + print(response.text) + if response.status_code not in [200, 201]: raise exceptions.Warning( "L'appel url '%s' a échoué\n" "- Code erreur : %d\n" @@ -68,6 +75,13 @@ class CgscopAlfresco(models.AbstractModel): response.url, response.status_code, response.json().get('message'))) + # Si dossier déjà créé + elif response.text.find("NUMADHERENT d") > 0: + beg = response.text.find("workspace://SpacesStore/") + nodeRef = response.text[beg:beg+60] + return {"nodeRef": nodeRef} + # return response.json().get('dossiersExistants')[0] + return response.json() # Get Methods diff --git a/models/res_partner.py b/models/res_partner.py index 42eda4f12b0b73c7afdeece8c69e8a0f3faddfde..534dc7016870577b0fc2489a35d4b7efea4036f0 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -78,6 +78,8 @@ class AlfrescoPartner(models.Model): files = self.alfresco_list_docs(self.id_alfresco).get('docs', '') else: self.id_alfresco = self.alfresco_create_organism(self) + print(self.name) + print(self.id_alfresco) files = self.alfresco_list_docs(self.id_alfresco).get('docs', '') uid = self.env.user.id alfresco_obj = self.env["alfresco.partner.files"] diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 97dd8b917b8a258799a3ebf0095f13ff73d7cf68..c3e7f01ed6761412a38008a3462d0b17b02c66a8 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -1 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_alfresco_connection,access_alfresco_connection,model_alfresco_connection,cgscop_partner.group_cg_administrator,1,1,1,1 \ No newline at end of file diff --git a/views/alfresco_connection.xml b/views/alfresco_connection.xml new file mode 100644 index 0000000000000000000000000000000000000000..d3eebfb89099f8b47a2fc2e3c8fdb217bccb5aef --- /dev/null +++ b/views/alfresco_connection.xml @@ -0,0 +1,64 @@ +<?xml version="1.0"?> +<!-- Copyright 2019 Le Filament + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> + +<odoo> + <data> + + <record id="view_alfresco_connection_tree" model="ir.ui.view"> + <field name="name">alfresco.connection.tree</field> + <field name="model">alfresco.connection</field> + <field name="arch" type="xml"> + <tree string="Synchronisation Odoo"> + <field name="name"/> + <field name="login"/> + <field name="url"/> + <field name="active"/> + </tree> + </field> + </record> + + <record id="view_alfresco_connection_form" model="ir.ui.view"> + <field name="name">alfresco.connection.form</field> + <field name="model">alfresco.connection</field> + <field name="arch" type="xml"> + <form> + <header> + <button name="toogle_active_config" type="object" string="Activer" /> + </header> + <sheet> + <group> + <group> + <field name="name" /> + <field name="url"/> + <field name="ssl"/> + </group> + <group> + <field name="active" readonly="1" /> + <field name="login"/> + <field name="password" password="True" /> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record id="action_view_alfresco_connection" model="ir.actions.act_window"> + <field name="name">Configuration Connexion Alfresco</field> + <field name="res_model">alfresco.connection</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem id="menu_cgscop_alfresco" + parent="base.menu_custom" + sequence="120" + name="Alfresco"/> + + <menuitem id="menu_cgscop_alfresco_connection" + parent="menu_cgscop_alfresco" + action="action_view_alfresco_connection" + name="Cofiguration connexion" + sequence="90"/> + </data> +</odoo> diff --git a/wizard/add_file_wizard.py b/wizard/add_file_wizard.py index 6b5c9bc447a15447c1ca9dd2cff7d59f50b0382f..0fc1921aba4b0a000397bc2ab39f0368d8f9038d 100644 --- a/wizard/add_file_wizard.py +++ b/wizard/add_file_wizard.py @@ -21,12 +21,15 @@ class AddFileWizard(models.TransientModel): # Default functions def _get_selection(self, value): - file_type = self.alfresco_list_type()[value] - select_type = [] - for type in file_type: - select_type.append( - (type, type)) - return select_type + try: + file_type = self.alfresco_list_type()[value] + select_type = [] + for type in file_type: + select_type.append( + (type, type)) + return select_type + except: + return False @api.model def _get_type(self):