diff --git a/__manifest__.py b/__manifest__.py index 4e98e86..bf386d4 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -34,6 +34,8 @@ 'report/report_donationtax.xml', 'report/report.xml', 'views/website_makedonation.xml' + #'report/report_donationtax.xml', + #'report/report.xml' ], # only loaded in demonstration mode diff --git a/controllers/__init__.py b/controllers/__init__.py index 3c97f2e..75e6f07 100644 --- a/controllers/__init__.py +++ b/controllers/__init__.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -from . import website_event \ No newline at end of file +from . import kalachakra \ No newline at end of file diff --git a/controllers/website_event.py b/controllers/kalachakra.py similarity index 97% rename from controllers/website_event.py rename to controllers/kalachakra.py index ac49748..e5f7b54 100644 --- a/controllers/website_event.py +++ b/controllers/kalachakra.py @@ -7,7 +7,7 @@ from odoo.exceptions import UserError from odoo.addons.website_event.controllers.main import WebsiteEventController from odoo.osv import expression -class kalachakra_event(WebsiteEventController): +class kalachakra(WebsiteEventController): def _extract_searched_event_tags(self, searches): tags = request.env['event.tag'] @@ -17,7 +17,7 @@ class kalachakra_event(WebsiteEventController): tags = request.env['event.tag'].search([('name', '=', searches['tags'])]) return tags - @http.route(['/event/calendar'], type='http', auth='public', website=True, sitemap=False,csrf=False) + @http.route(['/kalachakra/calendar'], type='http', auth='public', website=True, sitemap=False,csrf=False) def eventCalendar(self,**post): url='https://calendar.google.com/calendar/embed?height=600&wkst=2&bgcolor=%23ffffff&ctz=Europe%2FParis&mode=WEEK&src=aXRrYWxhY2hha3JhQGdtYWlsLmNvbQ&src=bjYxODA1OXQ2dmRwNmp0Y3Foa3FjMTMwdWtAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&src=MnJzc2VvY3MzcGNiaDliaGFvNXZ1a3JpM3NAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&src=cGJ0YjBtbTBja2NsMDZmdTNvb2ViMDJpOXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&src=ZnIuZnJlbmNoI2hvbGlkYXlAZ3JvdXAudi5jYWxlbmRhci5nb29nbGUuY29t&color=%23039BE5&color=%238E24AA&color=%23E4C441&color=%237CB342&color=%230B8043" style="border:solid 1px #777" width="800" height="600" frameborder="0" scrolling="no"' #url='https://calendar.google.com/calendar/embed?height=600&wkst=1&bgcolor=%23ffffff&ctz=Europe%2FParis&src=cmF5bmFsZC5jYW5kZWxpZXJAZ21haWwuY29t&src=Z3I4aGdpbm5hYjNwZ2ExY3M4MTAxczVlcjhAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&src=ZnIuZnJlbmNoI2hvbGlkYXlAZ3JvdXAudi5jYWxlbmRhci5nb29nbGUuY29t&color=%23039BE5&color=%23D50000&color=%237986CB' @@ -34,7 +34,7 @@ class kalachakra_event(WebsiteEventController): return http.request.render('kalachakra.contactus') @http.route(['/kalachakra/programme'], type='http', auth='public', website=True, sitemap=False,csrf=False) - def kalachakracontactus(self,**post): + def kalachakraprogramme(self,**post): return http.request.redirect('https://www.dropbox.com/s/ijsd6n82oyp0gw8/programme_Paris.pdf?dl=0') diff --git a/models/partner.py b/models/partner.py index f9b2a35..f07b1b4 100644 --- a/models/partner.py +++ b/models/partner.py @@ -7,56 +7,56 @@ from werkzeug import utils class partner(models.Model): _inherit = 'res.partner' - - statut=fields.Selection([('adherent', 'Adhérent'), ('bienfaiteur', 'Bienfaiteur'),('contact', 'Contact'), ('soutien','Soutien') ],'Statut', required=True, index=True) - date_contact_joomla=fields.Date(string='Date joomla de création du contact', readonly=True) + external_id=fields.Char('id') + statut_contact=fields.Selection([('adherent', 'Adhérent'), ('bienfaiteur', 'Bienfaiteur'),('contact', 'Contact'), ('soutien','Soutien') ],'Statut', index=True) + date_creation_contact=fields.Char(string='Date de création du contact', readonly=True) origine=fields.Selection([ - ('Boutique','Boutique'), - ('Visiteur','Visiteur'), - ('Vincennes','Vincennes'), - ('Bercy','Bercy'), - ('Salon Zen','Salon Zen'), - ('Autre','Autre'), - ('Internet Boutique','Internet Boutique'), - ('Conf M Ricard','Conf M Ricard'), - ('Visite lzr 09','Visite lzr 09'), - ('Retraite','Retraite'), - ('Amis','Amis'), - ('Centre FPMT','Centre FPMT'), - ('Site réservations','Site réservations'), - ('Réservations','Réservations'), - ('Voyage inde','Voyage inde'), - ('Internet','Internet'), - ('Librairie','Librairie'), - ('Site internet boutique','Site internet boutique'), - ('Portes ouvertes st cosme','Portes ouvertes st cosme'), - ('T','T'), + ('boutique','Boutique'), + ('visiteur','Visiteur'), + ('vincennes','Vincennes'), + ('bercy','Bercy'), + ('salon zen','Salon Zen'), + ('autre','Autre'), + ('internet boutique','Internet Boutique'), + ('conf M ricard','Conf M Ricard'), + ('visite lzr 09','Visite lzr 09'), + ('retraite','Retraite'), + ('amis','Amis'), + ('centre FPMT','Centre FPMT'), + ('site réservations','Site réservations'), + ('réservations','Réservations'), + ('voyage inde','Voyage inde'), + ('internet','Internet'), + ('librairie','Librairie'), + ('site internet boutique','Site internet boutique'), + ('portes ouvertes st cosme','Portes ouvertes st cosme'), + ('t','T'), ('maitreya','maitreya'), - ('Zen','Zen'), + ('zen','Zen'), ('Lille','Lille'), - ('Alan wallace','Alan wallace'), - ('Salon Rouen','Salon Rouen'), - ('Stage','Stage'), - ('B.Actualit','B.Actualit'), - ('B. Actualit','B. Actualit'), - ('R','R'), - ('Institut vy','Institut vy'), - ('Initiation kalachakr','Initiation kalachakr'), - ('Yoga','Yoga'), - ('Samsara','Samsara'), + ('alan wallace','Alan wallace'), + ('salon Rouen','Salon Rouen'), + ('stage','Stage'), + ('b.Actualit','B.Actualit'), + ('b. Actualit','B. Actualit'), + ('r','R'), + ('institut vy','Institut vy'), + ('initiation kalachakr','Initiation kalachakr'), + ('yoga','Yoga'), + ('samsara','Samsara'), ('missun@gmail.com','missun@gmail.com'), - ('Reliques','Reliques'), - ('Journal m','Journal m'), - ('Nantes','Nantes'), + ('reliques','Reliques'), + ('journal m','Journal m'), + ('nantes','Nantes'), ('retraite vipassana','retraite vipassana'), - ('Presse bouddhiste','Presse bouddhiste'), - ('Réservtions','Réservtions'), - ('Réservation','Réservation'), - ('Site','Site'), - ('Question mail','Question mail'), + ('presse bouddhiste','Presse bouddhiste'), + ('réservtions','Réservtions'), + ('réservation','Réservation'), + ('site','Site'), + ('question mail','Question mail'), ('interreligieux','interreligieux'), - ('Refuge','Refuge'), + ('refuge','Refuge'), ('zoom','zoom'), - ],'Origine', required=True, index=True) + ],'Origine', index=True) - date_adhesion=fields.Date(string='Date adhesion', readonly=True) \ No newline at end of file + date_adhesion=fields.Char(string='Date adhesion', readonly=True) \ No newline at end of file diff --git a/models/partnerimport.py b/models/partnerimport.py index 464eac8..0121388 100644 --- a/models/partnerimport.py +++ b/models/partnerimport.py @@ -1,105 +1,137 @@ from odoo import models, fields, api -from odoo.exceptions import UserError, ValidationError +from odoo.exceptions import UserError, ValidationError, Warning from psycopg2 import sql, DatabaseError from odoo.tools.safe_eval import safe_eval, datetime -from werkzeug import utils +from werkzeug import utils +import csv +import base64 +import io +import json -class kalachakra_partnerdraft(models.Model): - _name = 'kalachakra.partnerdraft' - _description = 'import draft partner' +class kalachakra_partnerdraftfile(models.Model): + _name = 'kalachakra.partnerdraftfile' + _description = 'draft partner file' - external_id=fields.Char(string='external id') - source=fields.Char(String='source file',required=True) - name=fields.Char(string='name') - firstname=fields.Char(string='firstname') - title=fields.Char(string='civilité') - phone = fields.Char(string='phone') - mobile = fields.Char(string='mobile') - email = fields.Char(string='email') - complement_ident = fields.Char(string='N° appartment,floor') - complement_geo = fields.Char(string='entry,tower,bat') - street = fields.Char(string='street') - street2 = fields.Char(string='street2') - city = fields.Char(string='city') - zip = fields.Char(string='zip code') - country = fields.Char(string='country') + #file= fields.Binary("Téléverser le fichier des contacts") + file = fields.Binary("Attachment") + file_name = fields.Char("Nom du fichier") + active = fields.Boolean("actif") + source_name=fields.Char("Source") - statut=fields.Selection([('adherent', 'Adhérent'), ('bienfaiteur', 'Bienfaiteur'),('contact', 'Contact'), ('soutien','Soutien') ],'Statut') - date_contact_joomla=fields.Date(string='Date joomla de création du contact') - origine=fields.Selection([ - ('Boutique','Boutique'), - ('Visiteur','Visiteur'), - ('Vincennes','Vincennes'), - ('Bercy','Bercy'), - ('Salon Zen','Salon Zen'), - ('Autre','Autre'), - ('Internet Boutique','Internet Boutique'), - ('Conf M Ricard','Conf M Ricard'), - ('Visite lzr 09','Visite lzr 09'), - ('Retraite','Retraite'), - ('Amis','Amis'), - ('Centre FPMT','Centre FPMT'), - ('Site réservations','Site réservations'), - ('Réservations','Réservations'), - ('Voyage inde','Voyage inde'), - ('Internet','Internet'), - ('Librairie','Librairie'), - ('Site internet boutique','Site internet boutique'), - ('Portes ouvertes st cosme','Portes ouvertes st cosme'), - ('T','T'), - ('maitreya','maitreya'), - ('Zen','Zen'), - ('Lille','Lille'), - ('Alan wallace','Alan wallace'), - ('Salon Rouen','Salon Rouen'), - ('Stage','Stage'), - ('B.Actualit','B.Actualit'), - ('B. Actualit','B. Actualit'), - ('R','R'), - ('Institut vy','Institut vy'), - ('Initiation kalachakr','Initiation kalachakr'), - ('Yoga','Yoga'), - ('Samsara','Samsara'), - ('missun@gmail.com','missun@gmail.com'), - ('Reliques','Reliques'), - ('Journal m','Journal m'), - ('Nantes','Nantes'), - ('retraite vipassana','retraite vipassana'), - ('Presse bouddhiste','Presse bouddhiste'), - ('Réservtions','Réservtions'), - ('Réservation','Réservation'), - ('Site','Site'), - ('Question mail','Question mail'), - ('interreligieux','interreligieux'), - ('Refuge','Refuge'), - ('zoom','zoom')],'Origine', index=True) + def import_csv_files(self): + self.env["kalachakra.partnerdraft"].search([]).unlink() + files= self.env["kalachakra.partnerdraftfile"].search([('active','=',True)]) + #raise Warning('fff') + for f in files: + decrypted = base64.b64decode(f.file).decode('utf-8-sig') + source_name=f.source_name + with io.StringIO(decrypted) as fp: + reader = csv.DictReader(fp, delimiter=";", quotechar='"') + for row in reader: + vals={} + vals['source_name']=source_name + for key, value in row.items(): + + field_map=self.env['kalachakra.partnerdraftfile_mapping'].search([('external_field','=',key)]) + if field_map: + odoo_field=field_map.odoo_field + vals[odoo_field]=str(value) + + else: raise Warning('champ '+key+' non trouvé') + self.env['kalachakra.partnerdraft'].create(vals) - date_adhesion=fields.Date(string='Date adhesion') - doublon=fields.Boolean(string='Doublon') + #raise Warning(json.dumps(row)) + action = self.env.ref("kalachakra.kalachakra_partnerdraft_action").sudo().read([])[0] + + return action - def find_duplicated_partner(self): + def transfert_draftpartner(self): + #transfert des contacts importés, dans la base des contact odoo + partners=self.env['kalachakra.partnerdraft'].search([]) - - - - - - #affichage des doublons - action = self.env.ref("kalachakra.kalachakra_partnerdraft_action").sudo().read([])[0] - action.update( - { - "domain": [("doublon", "=", True)], + if partners: + for p in partners: + vals={} + vals['name']=p.name + vals['company_type']='person' + vals['firstname']=p.firstname + + vals['source']=p.source_name + vals['street']=p.street + vals['street2']=p.street2 + vals['city']=p.city + vals['zip']=p.zip + vals['phone']=p.phone + vals['email']=p.email + vals['statut_contact']=p.statut_contact.lower() + vals['date_creation_contact']=p.date_creation_contact + vals['origine']=p.origine.lower() + vals['date_adhesion']=p.date_member + - } - ) - return action -class kalachakra_doublonfield(models.Model): - _name = 'kalachakra.doublonfield' - _description = 'doublons fields' + if p.country!='': + country=self.env['res.country'].search([('name','=',p.name)]) + if country:vals['country_id']=country.id + else:vals['country_id']=False + else: + vals['country_id']=False - name=fields.Char('Doublon field name') \ No newline at end of file + if p.title!='': + title=self.env['res.partner.title'].search([('name','=',p.title)]) + if title:vals['title']=title.id + else:vals['title']=False + else: + vals['title']=False + + + self.env['res.partner'].create(vals) + partners=self.env['kalachakra.partnerdraft'].search([]).unlink() + + + + + +class kalachakra_partnerdraftfile_mapping(models.Model): + _name = 'kalachakra.partnerdraftfile_mapping' + _description = 'file mapping' + + + external_field=fields.Char('external field') + odoo_field=fields.Selection('odoo_field_selection', string='odoo field') + + @api.model + def odoo_field_selection(self): + field_list=self.env['kalachakra.partnerdraft'].fields_get() + + result=[] + for key in field_list: + result.append((key,key)) + result.sort() + return result +class kalachakra_partnerdraft(models.Model): + _name = 'kalachakra.partnerdraft' + _description = 'import draft partner' + _order = "id asc" + + external_id=fields.Char(string='external id') + name=fields.Char(string='nom') + firstname=fields.Char(string='prenom') + title=fields.Char(string='civilité') + street = fields.Char(string='adresse') + street2 = fields.Char(string='adresse2') + city = fields.Char(string='ville') + country = fields.Char(string='pays') + zip = fields.Char(string='code postal') + phone = fields.Char(string='tel') + email = fields.Char(string='Email') + statut_contact=fields.Char('Statut') + date_creation_contact=fields.Char(string='Date contact') + origine=fields.Char(string='Origine') + date_member=fields.Char(string='Date adhesion') + doublon=fields.Boolean(string='Doublon') + source_name=fields.Char(string='Source') diff --git a/report/report_donationtax.xml b/report/report_donationtax.xml index 252c3f9..e0b31c9 100644 --- a/report/report_donationtax.xml +++ b/report/report_donationtax.xml @@ -10,9 +10,9 @@ - + - +
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index e8d821d..9f354eb 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_kalachakra_partnerdraft,kalachakra_partnerdraft,model_kalachakra_partnerdraft,donation.group_donation_manager,1,1,1,1 -access_kalachakra_doublonsfields,kalachakra_doublonsfields,model_kalachakra_doublonfield,donation.group_donation_manager,1,1,1,1 \ No newline at end of file +access_kalachakra_partnerdraftfile,kalachakra_partnerdraftfile,model_kalachakra_partnerdraftfile,donation.group_donation_manager,1,1,1,1 +access_kalachakra_partnerdraft_file_mapping,kalachakra_partnerdraft_file_mapping,model_kalachakra_partnerdraftfile_mapping,donation.group_donation_manager,1,1,1,1 \ No newline at end of file diff --git a/views/contactus.xml b/views/contactus.xml index f6f2429..5285d93 100644 --- a/views/contactus.xml +++ b/views/contactus.xml @@ -5,12 +5,14 @@
- +

coucou

+
+
-
+
diff --git a/views/partner.xml b/views/partner.xml index 085da3e..15baae1 100644 --- a/views/partner.xml +++ b/views/partner.xml @@ -9,10 +9,11 @@ - - - - + + + + + @@ -33,36 +34,49 @@ - - Doublons fields - kalachakra.doublonfield + + Partners draft file + kalachakra.partnerdraftfile tree,form - - - find_duplicated_partner - - code - action=model.find_duplicated_partner() + + + file mapping + kalachakra.partnerdraftfile_mapping + tree,form + + - - + + + + + + + + diff --git a/views/partnerimport.xml b/views/partnerimport.xml index df4fcb6..1d04a07 100644 --- a/views/partnerimport.xml +++ b/views/partnerimport.xml @@ -1,70 +1,88 @@ - + _partner_draft list kalachakra.partnerdraft - - + - - - - - + - + + + + + + + + - - - doublons fields list - kalachakra.doublonfield + + + _partner_draft file list + kalachakra.partnerdraftfile - + + + + + + - - kalachakra_partnerdraft_form - kalachakra.partnerdraft + + _partner_draft file form + kalachakra.partnerdraftfile -
-
- -
- - - - - - - - - - - - - - - - - - - -
+
+ + + + + + +
-
+
+ + + + import file draft partner + + code + action=model.import_csv_files() + + + + transfert draft partners + + code + action=model.transfert_draftpartner() + + + + _partner_draft file ampping list + kalachakra.partnerdraftfile_mapping + + + + + + + +
\ No newline at end of file