Skip to content
Extraits de code Groupes Projets
Valider d418475b rédigé par Benjamin's avatar Benjamin
Parcourir les fichiers

modification connexion

parent 7a9a113d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -24,16 +24,10 @@ Un cron quotidien permet de lire les fichiers, et pour chaque ligne de créer ou
Usage
=====
Les données suivantes sont à renseigner dans le fichier de configuration d'Odoo :
* *tantiemo_ftp_login* : login de connexion au serveur FTP
* *tantiemo_ftp_password* : password de connexion au serveur FTP
Les données suivantes sont présentes dans la table **ir.config.parameter** :
* *tantiemo_filename* : nom du fichir à importer
* *tantiemo_url* : URL du serveur FTP
* *tantiemo_path* : path du dossier dans lequel se trouve le fichier CSV
* *filename* : tantiemo.latest.csv
* *path* : path du dossier dans lequel se trouve le fichier CSV sur le serveur **/import**
Credits
......
......@@ -10,8 +10,8 @@
"data": [
"security/ir.model.access.csv",
"views/res_partner.xml",
"views/tantiemo_config.xml",
"datas/cron_tantiemo.xml",
"datas/ir_config_parameter.xml",
],
'installable': True,
'auto_install': False,
......
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="0">
<record id="tantiemo_filename" model="ir.config_parameter">
<field name="key">tantiemo.filename</field>
<field name="value">tantiemo.csv</field>
</record>
<record id="tantiemo_url" model="ir.config_parameter">
<field name="key">tantiemo.url</field>
<field name="value">ftp.les-scop.coop</field>
</record>
<record id="tantiemo_path" model="ir.config_parameter">
<field name="key">tantiemo.path</field>
<field name="value">tantiemo</field>
</record>
</odoo>
......@@ -3,3 +3,4 @@
from . import res_partner
from . import scop_financial_tools
from . import tantiemo_config
......@@ -45,31 +45,19 @@ class ScopFinancialTools(models.Model):
# ------------------------------------------------------
def import_data(self):
param = self.env['ir.config_parameter'].sudo()
ftp_login = tools.config['tantiemo_ftp_login']
ftp_pass = tools.config['tantiemo_ftp_password']
# Connexion FTP
try:
# Connexion ftp
ftp = FTP(param.get_param('tantiemo.url'), ftp_login, ftp_pass)
# Changement de path
ftp.cwd(param.get_param('tantiemo.path'))
# Lecture du fichier
csv_file = io.BytesIO()
ftp.retrbinary(
"RETR " + param.get_param('tantiemo.filename'),
csv_file.write)
csv_file.seek(0)
except Exception as e:
ftp.quit()
raise exceptions.Warning(e)
# Get Tantiemo Filename
config = self.env['tantiemo.config'].sudo().search([
['active', '=', True]],
limit=1)
filename = (config.path +
config.name)
# Get File
csv_file = open(filename, 'rt', encoding="ISO-8859-1")
# Suppression des lignes
self.unlink()
try:
# Création du lecteur CSV.
reader = csv.DictReader(
io.TextIOWrapper(csv_file, encoding="ISO-8859-1", newline=None),
delimiter=';')
reader = csv.DictReader(csv_file, delimiter=';')
# Lecture de chaque ligne
for row in reader:
vals_financial_tools = row
......@@ -86,10 +74,20 @@ class ScopFinancialTools(models.Model):
self.create(vals_financial_tools)
except Exception as e:
_logger.error(e.__str__())
finally:
ftp.quit()
def _check_empty(self, dict_value):
""" Parcours les clés d'un dictionnaire pour vérifier si la valeur
est vide. Si elle est vide, la valeur est mise à False
:param dict_value : dictionnaire à traiter
@return dict_value : dictionnaire sans valeurs vide
"""
for key, value in dict_value.items():
if not value:
dict_value[key] = False
return dict_value
for key, value in dict_value.items():
if not value:
dict_value[key] = False
# © 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 CgscopTantiemoConfig(models.Model):
_name = 'tantiemo.config'
_description = 'Configuration tantiemo'
name = fields.Char(string='Nom Fichier')
path = fields.Char('Path fichier')
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['tantiemo.config'].search([]):
item.active = False
self.active = True
def import_datas(self):
self.env['scop.financial.tools'].sudo().import_data()
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_financial_tools_group_user,access_financial_tools_group_user,model_scop_financial_tools,base.group_user,1,0,0,0
admin_financial_tools_group_user,access_financial_tools_group_user,model_scop_financial_tools,cgscop_partner.group_cg_administrator,1,1,1,1
access_tantiemo_config,access_tantiemo_config,model_tantiemo_config,cgscop_partner.group_cg_administrator,1,1,1,1
<?xml version="1.0"?>
<!-- Copyright 2019 Le Filament
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<data>
<!-- RIGA Job Queue -->
<record id="view_tantiemo_config_tree" model="ir.ui.view">
<field name="name">tantiemo.config.tree</field>
<field name="model">tantiemo.config</field>
<field name="arch" type="xml">
<tree string="Synchronisation Tantiemo">
<field name="name"/>
<field name="path"/>
<field name="active"/>
</tree>
</field>
</record>
<record id="view_tantiemo_config_form" model="ir.ui.view">
<field name="name">tantiemo.config.form</field>
<field name="model">tantiemo.config</field>
<field name="arch" type="xml">
<form>
<header>
<button name="toogle_active_config" type="object" string="Activer" />
<button name="import_datas" type="object" string="Lancer la synchro" />
</header>
<sheet>
<group>
<group>
<field name="name" />
<field name="path"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_tantiemo_config_search" model="ir.ui.view">
<field name="name">tantiemo.config.search</field>
<field name="model">tantiemo.config</field>
<field name="arch" type="xml">
<search string="Synchronisation Odoo">
<!-- Champs de recherche -->
<field name="name"/>
<!-- Filtres -->
<filter name="active_filter" string="Actifs" domain="[('active','=',True)]"/>
<filter name="inctive_filter" string="Inactifs" domain="[('active','=',False)]" />
<filter name="all_filter" string="Tous" domain="['|', ('active','=',True), ('active','=',False)]" />
</search>
</field>
</record>
<record id="action_view_tantiemo_config" model="ir.actions.act_window">
<field name="name">Configuration Tantiemo</field>
<field name="res_model">tantiemo.config</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_tantiemo_config_search"/>
</record>
<menuitem id="menu_tantiemo_config"
parent="cgscop_partner.menu_cgscop_api_config"
name="Tantiemo"
sequence="100"/>
<menuitem id="menu_tantiemo_config_detail"
parent="menu_tantiemo_config"
action="action_view_tantiemo_config"
name="Configuration"
sequence="100"/>
</data>
</odoo>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter