diff --git a/controllers/kalachakra.py b/controllers/kalachakra.py
index 0e68c10..69df912 100644
--- a/controllers/kalachakra.py
+++ b/controllers/kalachakra.py
@@ -212,16 +212,50 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
if data['status']=='member':data['participation_amount']=int(event.participation_member_price)
if data['status']=='super member':data['participation_amount']=int(event.participation_super_member_price)
- #enregistrement de l'inscription
- vals={}
- vals['event_id']=request.session['event_id']
- vals['partner_id']=request.session['partner_id']
- vals['online']=post.get('online')
- vals['state']='open'
-
- res=request.env['event.registration'].sudo().create(vals)
+ #enregistrement de l'inscription si pas déjà inscrit :
+ res=request.env['event.registration'].sudo().search([('event_id','=',int(request.session['event_id'])),('partner_id','=',int(request.session['partner_id']))],limit=1)
+ data['already_registered']=True
+ data['payment_status']=res.payment_status
+
+ if not res:
+ data['already_registered']=False
+ vals={}
+ vals['event_id']=request.session['event_id']
+ vals['partner_id']=request.session['partner_id']
+ vals['online']=post.get('online')
+ vals['state']='open'
+
+ res=request.env['event.registration'].sudo().create(vals)
+ #création de la facture à régler
+ invoice_id=request.env['event.registration'].sudo().action_generate_participation_invoice(int(res.id),'CB')
+
request.session['res_id']=res.id
+ #inscription à la newsletter attachée à l'événement
+ partner=request.env['res.partner'].sudo().search([('id','=',int(request.session['partner_id']))])
+ mailing_contact=request.env['mailing.contact'].sudo().search([('email','=',partner.email)])
+ if not mailing_contact:
+ vals={}
+ vals['email']=partner.email
+ vals['name']=partner.name+' '+str(partner.firstname)
+ vals['title_id']=partner.title
+ vals['country_id']=int(partner.country_id)
+ vals['list_ids']=[(4,int(event.recurring_event_newsletter_id))]
+ mailing_contact=request.env['mailing.contact'].sudo().create(vals)
+
+ if event.recurring_event_newsletter_id:
+ if not event.recurring_event_newsletter_id in mailing_contact.list_ids:
+ mailing_contact.sudo().write({'list_ids':[(4,int(event.recurring_event_newsletter_id))]})
+
+ #inscription à la newsletter générale
+ mailing_list=request.env['mailing.list'].sudo().search([('name','=','Newsletter '+request.env.company.name)])
+ if mailing_list:
+ if not mailing_list in mailing_contact.list_ids:
+ mailing_contact.sudo().write({'list_ids':[(4,int(mailing_list.id))]})
+
+
+
+
return http.request.render('kalachakra.registration_step2',data)
@http.route(['/kalachakra/onthespotpayment'], type='http', auth='public', website=True, sitemap=False,csrf=False)
@@ -232,22 +266,18 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
return http.request.render('kalachakra.onthespotpayment')
- @http.route(['/kalachakra/participation'], type='http', auth='public', website=True, sitemap=False,csrf=False)
+ @http.route(['/kalachakra/participation'], type='http', auth='user', website=True, sitemap=False,csrf=False)
def participation(self,type=None,**post):
data={}
request.session['kalachakra_transaction']=''
if type=='participation':
- event=request.env['event.event'].search([('id','=',request.session['event_id'])])
+ #event=request.env['event.event'].search([('id','=',request.session['event_id'])])
res=request.env['event.registration'].sudo().search([('id','=',request.session['res_id'])])
- #création de la facture à régler
- invoice_id=request.env['event.registration'].sudo().action_generate_participation_invoice(request.session['res_id'],'CB')
-
-
#redirection sur la page de paiement de la facture :
- url="/my/invoices/"+str(invoice_id)#+"?access_token="+str(invoice.access_token)
+ url="/my/invoices/"+str(int(res.invoice_id))#+"?access_token="+str(invoice.access_token)
return request.redirect(url)
@@ -259,12 +289,14 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
data['title']='make donation'
data['amount']=10
#donation product
- data['products']=request.env['product.product'].search([('donation','=',True)])
+ data['products']=request.env['product.product'].sudo().search([('donation','=',True)])
+
+
if type=='membership':
request.session['kalachakra_transaction']='membership'
data['kalachakra_transaction']='membership'
data['title']='Become a member'
- p=request.env['product.product'].search([('membership_product','=',True)])
+ p=request.env['product.product'].sudo().search([('membership_product','=',True)],limit=1)
if not p: raise UserError(_('No membership product, please add one'))
data['amount']=p.list_price
@@ -282,7 +314,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
if userid:
- user=request.env['res.users'].search([('id','=',int(userid))])
+ user=request.env['res.users'].sudo().search([('id','=',int(userid))])
partner=request.env['res.partner'].sudo().search([('id','=',int(user.partner_id))])
request.session['partner_id']=int(partner.id)
data['partner']=partner
@@ -321,12 +353,14 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
#gestion du retour page précédente depuis page de paiement : on supprime les éléments générés ( don , adhésion)
if not post.get('product_id'):
if request.session['kalachakra_transaction']=='donation':
- request.env['donation.donation'].search([('id','=',int(request.session['donation_id']))]).unlink()
+ request.env['donation.donation'].sudo().search([('id','=',int(request.session['donation_id']))]).unlink()
if request.session['kalachakra_transaction']=='membership':
- request.env['kalachakra.membership'].search([('id','=',int(request.session['membership_id']))]).unlink()
+ request.env['kalachakra.membership'].sudo().search([('id','=',int(request.session['membership_id']))]).unlink()
return request.redirect('/kalachakra/participation?type='+request.session['kalachakra_transaction'])
+
+
userid=request.env.context.get('uid')
if userid:
@@ -335,7 +369,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
request.session['partner_id']=int(partner.id)
else:
- #si pas connecté on chercher le contact indiqué par l'email
+ #si pas connecté on cherche le contact indiqué par l'email
partner=request.env['res.partner'].sudo().search([('email','=',post.get('email'))],limit=1)
#si pas de contact on le créé dans la base
if not partner:
@@ -350,6 +384,14 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
vals['country_id']=int(post.get('country_id'))
vals['phone']=post.get('phone')
partner=request.env['res.partner'].sudo().create(vals)
+ #si le contact existe, on vérifie qu'il n'est pas déjà adhérent
+ else:
+ if partner.member_status in ('member','super member'):
+ data={}
+ data['email']==post.get('email')
+ return http.request.render('kalachakra.already_member',data)
+
+
data={}
@@ -362,14 +404,14 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
data['error_url']='/kalachakra/payment/error'
if request.session['kalachakra_transaction'] in ['donation','membership']:
- data['acquirers'] = list(request.env['payment.acquirer'].search([
+ data['acquirers'] = list(request.env['payment.acquirer'].sudo().search([
('state', 'in', ['enabled', 'test']),
('company_id', '=', request.env.company.id),
('provider', '!=', 'transfer')
]))
else:
- data['acquirers'] = list(request.env['payment.acquirer'].search([
+ data['acquirers'] = list(request.env['payment.acquirer'].sudo().search([
('state', 'in', ['enabled', 'test']),
('company_id', '=', request.env.company.id)
]))
@@ -388,9 +430,9 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
vals['donation_date']=datetime.now()
vals['tax_receipt_option']='annual'
#mode de paiement CB
- electronic_method=request.env['account.payment.method'].search([('code','=','electronic')],limit=1)
+ electronic_method=request.env['account.payment.method'].sudo().search([('code','=','electronic')],limit=1)
if electronic_method:
- cb_mode=request.env['account.payment.mode'].search([('payment_method_id','=',int(electronic_method.id))],limit=1)
+ cb_mode=request.env['account.payment.mode'].sudo().search([('payment_method_id','=',int(electronic_method.id))],limit=1)
if cb_mode:
vals['payment_mode_id']=cb_mode.id
else:
@@ -401,7 +443,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
vals={}
#create line donation
vals['donation_id']=donation_draft.id
- product=request.env['product.template'].search([('id','=',int(post.get('product_id')))])
+ product=request.env['product.template'].sudo().search([('id','=',int(post.get('product_id')))])
vals['product_id']=int(post.get('product_id'))
vals['display_name']=product.name
vals['quantity']=1
@@ -452,19 +494,19 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
acquirer_id = int(acquirer_id)
except:
return False
-
+
if request.session['kalachakra_transaction'] in ['donation']:
# Retrieve the donation
donation_id=order_id
- donation=request.env['donation.donation'].search([('id','=',int(donation_id))], limit=1)
-
+ donation=request.env['donation.donation'].sudo().search([('id','=',int(donation_id))], limit=1)
+
# Ensure there is something to proceed
if not donation or (donation and not donation.line_ids):
return False
assert donation.partner_id.id != request.website.partner_id.id
-
+
# Create transaction
vals = {'acquirer_id': acquirer_id,
'return_url': '/kalachakra/payment/validate'}
@@ -474,8 +516,8 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
if token:
vals['payment_token_id'] = int(token)
- transaction = donation._create_payment_transaction(vals)
-
+ transaction = donation.sudo()._create_payment_transaction(vals)
+
# store the new transaction into the transaction list and if there's an old one, we remove it
# until the day the ecommerce supports multiple orders at the same time
last_tx_id = request.session.get('__website_sale_last_tx_id')
@@ -490,7 +532,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
# Retrieve the membeship
membership_id=order_id
- membership=request.env['kalachakra.membership'].search([('id','=',int(membership_id))], limit=1)
+ membership=request.env['kalachakra.membership'].sudo().search([('id','=',int(membership_id))], limit=1)
# Ensure there is something to proceed
@@ -508,7 +550,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
if token:
vals['payment_token_id'] = int(token)
- transaction = membership._create_payment_transaction(vals)
+ transaction = membership.sudo()._create_payment_transaction(vals)
# store the new transaction into the transaction list and if there's an old one, we remove it
# until the day the ecommerce supports multiple orders at the same time
@@ -518,7 +560,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
PaymentProcessing.remove_payment_transaction(last_tx)
PaymentProcessing.add_payment_transaction(transaction)
request.session['__website_sale_last_tx_id'] = transaction.id
- return transaction.render_membership_button(membership)
+ return transaction.sudo().render_membership_button(membership)
http.route('/kalachakra/payment/token', type='http', auth='public', website=True, sitemap=False)
def kalachakra_payment_token(self, pm_id=None, **kwargs):
@@ -540,10 +582,10 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
vals = {'payment_token_id': pm_id, 'return_url': '/kalachakra/payment/validate'}
if request.session['kalachakra_transaction'] in ['donation']:
- tx = donation._create_payment_transaction(vals)
+ tx = donation.sudo()._create_payment_transaction(vals)
if request.session['kalachakra_transaction'] in ['membership']:
- tx = membership._create_payment_transaction(vals)
+ tx = membership.sudo()._create_payment_transaction(vals)
request.session['transaction_id']=tx.id
PaymentProcessing.add_payment_transaction(tx)
@@ -572,14 +614,14 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
donation_id=int(request.session['donation_id'])
#validation du don car la tranasction est ok
- donation=request.env['donation.donation'].search([('id','=',donation_id)])
+ donation=request.env['donation.donation'].sudo().search([('id','=',donation_id)])
donation.state='done'
request.session['donation_id']=None
if request.session['kalachakra_transaction'] in ['membership']:
membership_id=int(request.session['membership_id'])
#validation du don car la tranasction est ok
- membership=request.env['kalachakra.membership'].search([('id','=',membership_id)])
+ membership=request.env['kalachakra.membership'].sudo().search([('id','=',membership_id)])
membership.state='done'
request.session['membership_id']=None
diff --git a/models/__init__.py b/models/__init__.py
index 74a32cf..708920d 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -16,4 +16,5 @@ from . import booking_room
from . import booking_questionnaire
from . import booking_event_registration
from . import booking_donation
-from . import booking_sale_order
\ No newline at end of file
+from . import booking_sale_order
+from . import event_media_link
\ No newline at end of file
diff --git a/models/booking_event_registration.py b/models/booking_event_registration.py
index 2184390..d1a047b 100644
--- a/models/booking_event_registration.py
+++ b/models/booking_event_registration.py
@@ -75,11 +75,11 @@ class EventRegistration(models.Model):
mobile=fields.Char('Mobile')
kanban_color=fields.Char('kanban color',compute='_compute_kanban_color')
- invoice_state=fields.Selection(related='invoice_id.state')
+ invoice_state=fields.Selection(related='invoice_id.payment_state')
- down_payment_invoice_state=fields.Selection(related='down_payment_invoice_id.state')
+ down_payment_invoice_state=fields.Selection(related='down_payment_invoice_id.payment_state')
- balance_invoice_state=fields.Selection(related='balance_invoice_id.state')
+ balance_invoice_state=fields.Selection(related='balance_invoice_id.payment_state')
invoice_id=fields.Many2one('account.move', readonly=True)
#invoice_state=fields.Selection(related='invoice_id.state')
@@ -94,7 +94,7 @@ class EventRegistration(models.Model):
def _compute_payment_status(self):
for rec in self:
- rec.payment_status='undefined'
+ rec.payment_status='not paid'
if rec.invoice_id:
if rec.invoice_state not in ('paid'):rec.payment_status='not paid'
if rec.invoice_state=='paid':rec.payment_status='paid'
diff --git a/models/donation.py b/models/donation.py
index 313452a..2acce33 100644
--- a/models/donation.py
+++ b/models/donation.py
@@ -94,9 +94,11 @@ class DonationDonation(models.Model):
'donation_ids': [(6, 0, self.ids)],
'type': self[0]._get_payment_type(vals.get('type')=='form_save'),
})
-
+
+
transaction = self.env['payment.transaction'].create(vals)
-
+
+
# Process directly if payment_token
if transaction.payment_token_id:
transaction.s2s_do_transaction()
diff --git a/models/event.py b/models/event.py
index 2e0f161..c6a31dc 100644
--- a/models/event.py
+++ b/models/event.py
@@ -108,6 +108,7 @@ class KalachakraEvent(models.Model):
vals['date_end']=end_date_event
vals['description']=rec.description
vals['tag_ids']=rec.tag_ids
+ vals['event_logo']=rec.event_logo
vals['is_published']=True
vals['free_participation']=rec.free_participation
vals['participation_product_id']=rec.participation_product_id
@@ -125,8 +126,14 @@ class KalachakraEvent(models.Model):
vals['online_id']=rec.online_id
vals['online_password']=rec.online_password
vals['parent_event_id']=rec.id
+ vals['cover_properties']=rec.cover_properties
+
+
+ ev=self.env['event.event'].create(vals)
+
+
- return self.env['event.event'].create(vals)
+ return ev
def _compute_duration(self):
for rec in self:
@@ -196,6 +203,12 @@ class KalachakraEvent(models.Model):
ondelete='restrict',
default=_default_currency
)
+ media_link_ids=fields.One2many(
+ 'event.media.link',
+ 'event_id',
+ string='Media links'
+
+ )
def add_event_to_google_agenda(self):
diff --git a/models/event_media_link.py b/models/event_media_link.py
new file mode 100644
index 0000000..ba10eb9
--- /dev/null
+++ b/models/event_media_link.py
@@ -0,0 +1,12 @@
+from odoo import models, fields, api
+from odoo.exceptions import UserError, ValidationError,Warning
+
+
+class event_media_link(models.Model):
+ _name = 'event.media.link'
+ _description = 'event media link'
+
+ media_link = fields.Char('Media link')
+ event_id=fields.Many2one('event.event')
+
+
\ No newline at end of file
diff --git a/models/partner.py b/models/partner.py
index 0579382..c9f2f56 100644
--- a/models/partner.py
+++ b/models/partner.py
@@ -5,7 +5,7 @@ from datetime import datetime
from werkzeug import utils
-class partner(models.Model):
+class ResPartner(models.Model):
_inherit = 'res.partner'
external_id=fields.Char('id')
statut_contact=fields.Selection([('adherent', 'Adhérent'), ('bienfaiteur', 'Bienfaiteur'),('contact', 'Contact'), ('soutien','Soutien') ],'Statut', index=True)
@@ -79,4 +79,9 @@ class partner(models.Model):
self._compute_member_status()
-
\ No newline at end of file
+ @api.model
+ def create(self, values):
+ res = super(ResPartner, self).create(values)
+ country_france=self.env['res.country'].sudo().search([('name','=','France')])
+ if not res.country_id:res.country_id=country_france.id
+ return res
\ No newline at end of file
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index e608963..85f0d0b 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -17,3 +17,7 @@ access_event_registration_questionnaire,event.registration_questionnaire,model_e
access_event_registration_option,event.registration_option,model_event_registration_option,base.group_user,1,1,1,1
access_event_partner_category,event.partner_category,model_event_partner_category,base.group_user,1,1,1,1
access_event_membership_product,event.membership_product,model_event_membership_product,base.group_user,1,1,1,1
+
+access_event_media_link,event_media_link,model_event_media_link,base.group_user,1,1,1,1
+access_event_media_link_public,event_media_link_public,model_event_media_link,base.group_public,1,0,0,0
+access_event_media_link_portal,event_media_link_portal,model_event_media_link,base.group_portal,1,0,0,0
diff --git a/views/event.xml b/views/event.xml
index 590968c..93bd6c8 100644
--- a/views/event.xml
+++ b/views/event.xml
@@ -86,6 +86,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/views/event_templates_list.xml b/views/event_templates_list.xml
index 689cc95..381c443 100644
--- a/views/event_templates_list.xml
+++ b/views/event_templates_list.xml
@@ -37,7 +37,7 @@
-
+
diff --git a/views/event_templates_page_registration.xml b/views/event_templates_page_registration.xml
index efa4edc..52989f3 100644
--- a/views/event_templates_page_registration.xml
+++ b/views/event_templates_page_registration.xml
@@ -31,4 +31,17 @@
+
+
+
+
+
+
Media links :
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/views/website_event_registration.xml b/views/website_event_registration.xml
index 7b7f17b..707cb2b 100644
--- a/views/website_event_registration.xml
+++ b/views/website_event_registration.xml
@@ -101,9 +101,18 @@
+ your registration is taken into account ! You will soon receive a confirmation email.
+
+
+ You are already registered
+
+
+ You have already paid
+
+
@@ -144,41 +153,43 @@
-
-
- The amount of the contribution is : €
-
-
-
-
-
-
-
-
+
+
+
+ The amount of the contribution is : €
+
+
+
+
+
+
+
+
+
+
+ If you want to be a member, click here :
+
+
+
+
+ If you want to be a super member, click here :
+
+
+
+
+
-
- If you want to be a member, click here :
-
-
-
-
- If you want to be a super member, click here :
-
-
-
-
+
+