Browse Source

sendinblue

dev-rcn
root 3 years ago
parent
commit
8f44491363
8 changed files with 149 additions and 5 deletions
  1. +1
    -0
      __manifest__.py
  2. +1
    -0
      models/__init__.py
  3. +15
    -2
      models/event.py
  4. +105
    -0
      models/mailing_list.py
  5. +3
    -0
      static/sendinblue.json
  6. +3
    -3
      views/booking_website_registration.xml
  7. +1
    -0
      views/event.xml
  8. +20
    -0
      views/mailing_list.xml

+ 1
- 0
__manifest__.py View File

@ -54,6 +54,7 @@
'views/booking_location.xml',
'views/booking_room.xml',
'views/booking_questionnaire.xml',
'views/mailing_list.xml',
],


+ 1
- 0
models/__init__.py View File

@ -18,3 +18,4 @@ from . import booking_event_registration
from . import booking_donation
from . import booking_sale_order
from . import event_media_link
from . import mailing_list

+ 15
- 2
models/event.py View File

@ -1,3 +1,4 @@
from __future__ import print_function
from odoo import models, fields, api,_
from odoo.exceptions import UserError, ValidationError,Warning
from psycopg2 import sql, DatabaseError
@ -12,9 +13,18 @@ from googleapiclient.discovery import build
from datetime import datetime, timedelta
import json
import time
import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
from pprint import pprint
# IF YOU MODIFY THE SCOPE DELETE THE TOKEN.TXT FILE
SCOPES = ['https://www.googleapis.com/auth/calendar']
SERVICE_ACCOUNT_FILE = '/usr/lib/python3/dist-packages/odoo/kalachakra_module/kalachakra/models/creds.json' # You should make it an environment variable
GOOGLE_ACCOUNT_FILE = '/usr/lib/python3/dist-packages/odoo/kalachakra_module/kalachakra/models/creds.json' # You should make it an environment variable
SUBJECT = 'kalachakra-srv@kalachakra-351613.iam.gserviceaccount.com'
@ -54,6 +64,9 @@ class KalachakraEvent(models.Model):
#for event generated from a parent event
parent_event_id=fields.Many2one('event.event',string='parent event', readonly=True)
def _compute_generated_events(self):
for rec in self:
rec.generated_events=False
@ -215,7 +228,7 @@ class KalachakraEvent(models.Model):
def add_event_to_google_agenda(self):
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
credentials = service_account.Credentials.from_service_account_file(GOOGLE_ACCOUNT_FILE, scopes=SCOPES)
delegated_credentials = credentials.with_subject(SUBJECT)
service = build('calendar', 'v3', credentials=delegated_credentials)


+ 105
- 0
models/mailing_list.py View File

@ -0,0 +1,105 @@
from __future__ import print_function
from odoo import models, fields, api,_
from odoo.exceptions import UserError, ValidationError,Warning
from psycopg2 import sql, DatabaseError
from pytz import timezone
from werkzeug import utils
import os.path
from datetime import datetime, timedelta
import json
import time
import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
from pprint import pprint
SENDINBLUE_ACCOUNT_FILE = '/usr/lib/python3/dist-packages/odoo/kalachakra_module/kalachakra/static/sendinblue.json'
class MailingList(models.Model):
_inherit = "mailing.list"
_description = 'mailing list'
id_sendinblue_list=fields.Integer('sendinblue list')
def create_sendinblue_list(self):
configuration = sib_api_v3_sdk.Configuration()
f = open(SENDINBLUE_ACCOUNT_FILE)
data = json.load(f)
configuration.api_key['api-key'] = data['api_key']
limit = 10
offset = 0
api_instance = sib_api_v3_sdk.ContactsApi(sib_api_v3_sdk.ApiClient(configuration))
create_list = sib_api_v3_sdk.CreateList(name=self.name, folder_id=25)
try:
#api_response = api_instance.get_folders(limit, offset)
#raise Warning(api_response)
api_response = api_instance.create_list(create_list)
#raise Warning(api_response)
pprint(api_response)
self.id_sendinblue_list=int(api_response.id)
except ApiException as e:
raise Warning("Exception when calling ContactsApi->create_list: %s\n" % e)
class MailingContact(models.Model):
_inherit = "mailing.contact"
_description = 'mailing contact'
@api.model
def create(self, values):
res = super(MailingContact, self).create(values)
#ajout du contact à la liste de diffusion
res.create_sendinblue_contact(
)
return res
def get_info_sendinblue_contact(self):
#https://developers.sendinblue.com/reference/getfolders-1
f = open(SENDINBLUE_ACCOUNT_FILE)
data = json.load(f)
configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = data['api_key']
api_instance = sib_api_v3_sdk.ContactsApi(sib_api_v3_sdk.ApiClient(configuration))
email = self.email
try:
api_response = api_instance.get_contact_info(email)
return (api_response)
except ApiException as e:
#print("Exception when calling ContactsApi->get_contact_info: %s\n" % e)
return False
def create_sendinblue_contact(self):
if self.email and self.list_ids:
configuration = sib_api_v3_sdk.Configuration()
#https://developers.sendinblue.com/reference/getfolders-1
f = open(SENDINBLUE_ACCOUNT_FILE)
data = json.load(f)
configuration.api_key['api-key'] = data['api_key']
limit = 10
offset = 0
api_instance = sib_api_v3_sdk.ContactsApi(sib_api_v3_sdk.ApiClient(configuration))
list_ids=[]
res=self.get_info_sendinblue_contact()
if res:
for id in self.list_ids:
if not id.id_sendinblue_list in res.list_ids:
list_ids.append(int(id.id_sendinblue_list))
else:
for id in self.list_ids:
list_ids.append(int(id.id_sendinblue_list))
if list_ids!=[]:
create_contact = sib_api_v3_sdk.CreateContact(email=self.email, list_ids=list_ids)
try:
api_response = api_instance.create_contact(create_contact)
#raise Warning(api_response)
pprint(api_response)
except ApiException as e:
raise Warning("Exception when calling ContactsApi->create_list: %s\n" % e)

+ 3
- 0
static/sendinblue.json View File

@ -0,0 +1,3 @@
{
"api_key": "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"
}

+ 3
- 3
views/booking_website_registration.xml View File

@ -17,10 +17,10 @@
<h4 style="display: inline">Registering to : </h4><h4 style="display: inline" t-esc="event.name"></h4>
<h6>From <span t-field="event.date_begin" t-options='{"format": "dd/mm/yyyy hh:mm"}'/> to <span t-field="event.date_end" t-options='{"format": "dd/MM/yyyy hh:mm"}'/> </h6>
<h6> Your status : <span id="your_status" t-esc='status'></span></h6>
<h6>Price of the stay : <span id="price_of_the_stay" t-esc="str(int(price))+ ' €'"></span>
(standard price : <span t-esc="str(int(int(event.booking_price)))+ ' €'"></span>
<h6>Price of the stay : <span id="price_of_the_stay" t-esc="str(int(price))+ ' €'"></span></h6>
<h7>(standard price : <span t-esc="str(int(int(event.booking_price)))+ ' €'"></span>
, member price : <span t-esc="str(int(int(event.booking_member_price)))+ ' €'"></span>
, super member price : <span t-esc="str(int(int(event.booking_super_member_price)))+ ' €'"></span>)</h6>
, super member price : <span t-esc="str(int(int(event.booking_super_member_price)))+ ' €'"></span>)</h7>
<h6>Please select your booking options :</h6>
<form action="questionnaire" method="post" class="form js_website_submit_form">
<input type="hidden" id="booking_price_product" name="price_product" t-att-value="int(price)"/>


+ 1
- 0
views/event.xml View File

@ -21,6 +21,7 @@
<field name="inherit_id" ref="event.view_event_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='stage_id']" position="before">
<button name="add_event_to_google_agenda" type="object" attrs="{'invisible':[('calendar_event_id','!=',False)]}" string="Add event to google agenda" class="btn btn-warning"/>
<button name="remove_event_from_google_agenda" attrs="{'invisible':[('calendar_event_id','=',False)]}" type="object" string="Remove event from google agenda" class="btn btn-danger"/>
<button name="generate_events" attrs="{'invisible':['|',('generated_events','=',True),'|','|',('frequency','=',False),('end_generation_date','=',False),('parent_event_id','!=',False)]}" type="object" string="generate the events" class="btn btn-primary"/>


+ 20
- 0
views/mailing_list.xml View File

@ -0,0 +1,20 @@
<odoo>
<record id="kalachakra_mailing_list_view_form" model="ir.ui.view">
<field name="name">mailing_list.view.form.inherit.kalachakra</field>
<field name="model">mailing.list</field>
<field name="inherit_id" ref="mass_mailing.mailing_list_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[@class='oe_button_box']" position="inside">
<button name="create_sendinblue_list" string="Create sendinblue list"
attrs="{'invisible': [('id_sendinblue_list', '!=', False)]}" type="object" icon="fa-user" class="oe_stat_button">
</button>
</xpath>
<xpath expr="//field[@name='is_public']" position="before">
<field name="id_sendinblue_list"/>
</xpath>
</field>
</record>
</odoo>

Loading…
Cancel
Save