[IMP] event, event_sale, website_event, website_event_sale : clear registration badge handeling

Now,
- event contains the HTML badge fields and the report (and report templates) to print badges
- event_sale add the ticket type on badges
- website_event allow the edition of badge throught website editor.
When the editor will be available in backend, event will be allow to edit badge report, so the action should be moved from website_Event to event module.
This commit is contained in:
Paramjit Singh Sahota
2015-05-20 17:56:37 +02:00
committed by Jérome Maes
parent 3daebb6cca
commit 68dbacac1e
17 changed files with 250 additions and 144 deletions
+3 -3
View File
@@ -25,13 +25,13 @@ Key Features
'wizard/event_confirm_view.xml',
'event_view.xml',
'report/report_event_registration_view.xml',
'report/event_event_templates.xml',
'report/event_event_reports.xml',
'event_data.xml',
'event_tip_data.xml',
'res_config_view.xml',
'email_template.xml',
'views/event.xml',
'event_report.xml',
'views/report_registrationbadge.xml',
'email_template.xml',
],
'demo': [
'event_demo.xml',
+16
View File
@@ -2,6 +2,22 @@
<openerp>
<data>
<record id="event_registration_mail_template_badge" model="mail.template">
<field name="name">Event: Registration Badge</field>
<field name="model_id" ref="event.model_event_registration"/>
<field name="email_from">${(object.event_id.organizer_id.email or object.event_id.user_id.email or '')|safe}</field>
<field name="email_to" >${object.email|safe}</field>
<field name="subject">Your badge for ${object.event_id.name}</field>
<field name="auto_delete" eval="True"/>
<field name="report_template" ref="report_event_registration_badge"/>
<field name="report_name">badge_of_${(object.event_id.name or '').replace('/','_')}</field>
<field name="body_html"><![CDATA[<p>Hello ${object.name},</p>
<p>We confirm that your subscription to the event ${object.event_id.name} has been recorded.
Please, Find your <b>Event Badge</b> attached with this mail.</p>
<p>Thank you for your participation!</p>
<p>Best regards</p>]]></field>
</record>
<record id="event_subscription" model="mail.template">
<field name="name">Event subscription</field>
<field name="model_id" ref="event.model_event_registration"/>
+33
View File
@@ -168,6 +168,12 @@ class event_event(models.Model):
description = fields.Html(
string='Description', oldname='note', translate=True,
readonly=False, states={'done': [('readonly', True)]})
# badge fields
badge_front = fields.Html(string='Badge Front')
badge_back = fields.Html(string='Badge Back')
badge_innerleft = fields.Html(string='Badge Innner Left')
badge_innerright = fields.Html(string='Badge Inner Right')
event_logo = fields.Html(string='Event Logo')
@api.multi
@api.depends('name', 'date_begin', 'date_end')
@@ -363,3 +369,30 @@ class event_registration(models.Model):
if attendee.partner_id:
attendee._message_add_suggested_recipient(recipients, partner=attendee.partner_id, reason=_('Customer'))
return recipients
@api.multi
def action_send_badge_email(self):
""" Open a window to compose an email, with the template - 'event_badge'
message loaded by default
"""
self.ensure_one()
template = self.env.ref('event.event_registration_mail_template_badge')
compose_form = self.env.ref('mail.email_compose_message_wizard_form')
ctx = dict(
default_model='event.registration',
default_res_id=self.id,
default_use_template=bool(template),
default_template_id=template.id,
default_composition_mode='comment',
)
return {
'name': _('Compose Email'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(compose_form.id, 'form')],
'view_id': compose_form.id,
'target': 'new',
'context': ctx,
}
-28
View File
@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="paperformat_euro_lowmargin" model="report.paperformat">
<field name="name">European A4 low margin</field>
<field name="default" eval="True" />
<field name="format">A4</field>
<field name="page_height">0</field>
<field name="page_width">0</field>
<field name="orientation">Portrait</field>
<field name="margin_top">5</field>
<field name="margin_bottom">5</field>
<field name="margin_left">5</field>
<field name="margin_right">5</field>
<field name="header_line" eval="False" />
<field name="header_spacing">0</field>
<field name="dpi">80</field>
</record>
<report id="action_report_registration_badge" model="event.registration"
string="Badge" report_type="qweb-html"
name="event.report_registration_badge"
file="event.report_registration_badge"
paperformat="event.paperformat_euro_lowmargin"/>
</data>
</openerp>
+1 -1
View File
@@ -7,7 +7,7 @@
<field name="model">event.event</field>
<field name="mode">form</field>
<field name="trigger_selector">.oe_form_buttons_view:visible,div.oe_right.oe_button_box > button</field>
<field name="highlight_selector">div.oe_right.oe_button_box:visible > button:nth-child(1)</field>
<field name="highlight_selector">div.oe_right.oe_button_box:visible > button.oe_event_attendee_button</field>
<field name="placement">bottom</field>
</record>
</odoo>
+7 -6
View File
@@ -37,7 +37,7 @@
<field name="res_model">event.type</field>
<field name="view_type">form</field>
</record>
<menuitem id="menu_event_configuration" name="Event" parent="base.menu_config"
sequence="14"/>
<menuitem name="Events Types" id="menu_event_type" action="action_event_type" parent="menu_event_configuration" groups="base.group_no_one"/>
@@ -70,10 +70,10 @@
<h1><field name="name"/></h1>
</div>
<div class="oe_right oe_button_box" groups="base.group_user">
<button name="%(event.act_event_registration_from_event)d"
type="action"
class="oe_stat_button oe_inline"
icon="fa-github"
<button name="%(event.act_event_registration_from_event)d"
type="action"
class="oe_stat_button oe_inline oe_event_attendee_button"
icon="fa-github"
help="Register with this event">
<field name="seats_reserved" widget="statinfo" string="Attendees"/>
</button>
@@ -302,6 +302,7 @@
<field name="arch" type="xml">
<form string="Event Registration">
<header>
<button name="action_send_badge_email" string="Send by Email" type="object" states="open,done" class="oe_highlight"/>
<button name="confirm_registration" string="Confirm" states="draft" type="object" class="oe_highlight"/>
<button name="button_reg_close" string="Attended" states="open" type="object" class="oe_highlight"/>
<button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" />
@@ -451,7 +452,7 @@
<field name="res_model">event.mail</field>
<field name="view_type">form</field>
</record>
<menuitem name="Events Mail Schedulers" id="menu_event_type" action="action_event_mail" parent="menu_event_configuration" groups="base.group_no_one"/>
</data>
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="paperformat_euro_lowmargin" model="report.paperformat">
<field name="name">European A4 low margin</field>
<field name="default" eval="True"/>
<field name="format">A4</field>
<field name="page_height">0</field>
<field name="page_width">0</field>
<field name="orientation">Portrait</field>
<field name="margin_top">5</field>
<field name="margin_bottom">5</field>
<field name="margin_left">5</field>
<field name="margin_right">5</field>
<field name="header_line" eval="False"/>
<field name="header_spacing">0</field>
<field name="dpi">80</field>
</record>
<report
id="report_event_registration_badge"
model="event.registration"
string="Registration Badge"
report_type="qweb-pdf"
name="event.event_registration_report_template_badge"
file="event.event_registration_report_template_badge"
paperformat="event.paperformat_euro_lowmargin"/>
<report
id="report_event_event_badge"
model="event.event"
string="Event Badge"
report_type="qweb-html"
name="event.event_event_report_template_badge"
file="event.event_event_report_template_badge"
menu="False"
paperformat="event.paperformat_euro_lowmargin"/>
</odoo>
@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- template use to render a Registration Badge -->
<template id="event_registration_report_template_badge">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<div class="page">
<div class="row">
<!-- Front -->
<div class="col-xs-6 text-center" style="padding-left:7mm; border-left:1px dashed black; height: 149mm; -webkit-transform:rotate(180deg); padding-top: 7mm">
<div class="row">
<div class="col-xs-12">
<t t-if="o.event_id.event_logo">
<div t-field="o.event_id.event_logo"/>
</t>
<span t-if="not o.event_id.event_logo and o.event_id.organizer_id.company_id.logo_web and o.event_id.organizer_id.is_company">
<img t-att-src="'data:image/png;base64,%s' % o.event_id.organizer_id.company_id.logo_web" style="max-height:1cm; max-width:4cm;"/>
</span>
<h5 t-field="o.event_id.name"/>
<h5>( <i class="fa fa-clock-o"></i> <span itemprop="startDate" t-field="o.event_id.date_begin" t-field-options='{"hide_seconds":"True"}'> </span> <i>to</i> <span itemprop="endDate" t-field="o.event_id.date_end" t-field-options='{"hide_seconds":"True"}'> </span> )</h5>
</div>
<div class="row">
<div class="col-xs-12 text-center" id="o_event_name">
<small>
<h3 t-field="o.name"/>
</small>
</div>
</div>
<div class="row">
<div t-field="o.event_id.badge_front"></div>
</div>
</div>
</div>
<!-- Back -->
<div class="col-xs-6" style="padding-right:7mm; height: 149mm; -webkit-transform:rotate(180deg); padding-top: 2mm;">
<span t-field="o.event_id.badge_back"/>
</div>
</div>
<div class="row">
<!-- Inner left -->
<div class="col-xs-6 text-center" style="padding-right:7mm; border-top:1px dashed black; height: 148mm;">
<span t-field="o.event_id.badge_innerleft"/>
</div>
<!-- Inner right -->
<div class="col-xs-6 text-center" style="border-left:1px dashed black; border-top:1px dashed black; height: 148mm; text-center">
<span t-field="o.event_id.badge_innerright"/>
</div>
</div>
</div>
</t>
</t>
</template>
<!-- template use to edit Event Badget (allow to set the HTML badge fields) -->
<template id="event_event_report_template_badge">
<t t-call="report.html_container">
<div class="page">
<t t-foreach="docs" t-as="event">
<div class="row">
<!-- Front -->
<div class="col-xs-6 text-center" style="padding-left:7mm; border-right:1px dashed black; height: 149mm; padding-top: 7mm">
<div class="row" t-ignore="true">
<div class="col-xs-12">
<span t-if="event.organizer_id.is_company and event.organizer_id.company_id.logo_web">
<div t-field="event.event_logo">
<img t-att-src="'data:image/png;base64,%s' % event.organizer_id.company_id.logo_web" style="max-height:1cm; max-width:4cm;"/>
</div>
</span>
<h4 t-field="event.name"/>
<h5>( <i class="fa fa-clock-o"></i> <span itemprop="startDate" t-field="event.date_begin" t-field-options='{"hide_seconds":"True"}'> </span> <i>to</i> <span itemprop="endDate" t-field="event.date_end" t-field-options='{"hide_seconds":"True"}'> </span> )</h5>
</div>
</div>
<div class="row" t-ignore="true">
<div class="col-xs-12 text-center" id="o_event_attendee_name">
<small><h3>Attendee Name</h3></small>
</div>
</div>
<div class="row">
<div t-field="event.badge_front"></div>
</div>
</div>
<!-- Back -->
<div class="col-xs-6" style="padding-right:7mm; height: 149mm; padding-top: 2mm;">
<div t-field="event.badge_back"/>
</div>
</div>
<div class="row">
<!-- Inner left -->
<div class="col-xs-6 text-center" style="padding-right:7mm; border-top:1px dashed black; height: 148mm;">
<div t-field="event.badge_innerleft"/>
</div>
<!-- Inner right -->
<div class="col-xs-6 text-center" style="border-left:1px dashed black; border-top:1px dashed black; height: 148mm; text-center">
<div t-field="event.badge_innerright"/>
</div>
</div>
</t>
</div>
</t>
</template>
</odoo>
@@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="report_registration_badge">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<div class="page">
<div class="row" style="border-bottom:1px dashed black;">
<div class="col-xs-6 text-center" style="padding-right:7mm; border-right:1px dashed black; height: 147mm; padding-top: 7mm">
<div class="row">
<div class="col-xs-12">
<span t-if="o.event_id.organizer_id.company_id.logo_web and o.event_id.organizer_id.is_company">
<img t-att-src="'data:image/png;base64,%s' % o.event_id.organizer_id.company_id.logo_web" style="max-height:1cm; max-width:4cm;"/>
</span>
<h4 t-field="o.event_id.name"/>
<h5>( <i class="fa fa-clock-o"></i> <span itemprop="startDate" t-field="o.event_id.date_begin" t-field-options='{"hide_seconds":"True"}'> </span> <i>to</i> <span itemprop="endDate" t-field="o.event_id.date_end" t-field-options='{"hide_seconds":"True"}'> </span> )</h5>
</div>
</div>
<div class="row">
<div class="col-xs-12 text-center">
<small><h3 t-if="o.partner_id.is_company == True" t-field="o.partner_id.name"/><h5 t-field="o.name"/></small>
</div>
</div>
<div class="row">
<div class="col-xs-12 mt32 text-center" style="background: lightgrey;">
<h3>FREE TICKET</h3>
</div>
</div>
</div>
<!-- Inner right -->
<div class="col-xs-6 text-center" style="padding-left:7mm; height: 149mm; padding-top: 2mm;">
</div>
</div>
</div>
</t>
</t>
</template>
</data>
</openerp>
+1 -1
View File
@@ -25,7 +25,7 @@ this event.
'views/product.xml',
'views/sale_order.xml',
'event_sale_data.xml',
'views/report_registrationbadge.xml',
'report/event_event_templates.xml',
'security/ir.model.access.csv',
'wizard/event_edit_registration.xml',
],
-4
View File
@@ -13,10 +13,6 @@ class event_event(models.Model):
'event.event.ticket', 'event_id', string='Event Ticket',
default=lambda rec: rec._default_tickets(), copy=True)
badge_back = fields.Html('Badge Back', translate=True, states={'done': [('readonly', True)]})
badge_innerleft = fields.Html('Badge Innner Left', translate=True, states={'done': [('readonly', True)]})
badge_innerright = fields.Html('Badge Inner Right', translate=True, states={'done': [('readonly', True)]})
@api.model
def _default_tickets(self):
try:
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="event_registration_report_template_badge" inherit_id="event.event_registration_report_template_badge">
<xpath expr="//div[@id='o_event_name']" position="after">
<div t-if="o.event_ticket_id" class="col-xs-12 mt32 text-center" style="background: lightgrey; height: 65px">
<h3><span t-field="o.event_ticket_id"/></h3>
</div>
</xpath>
</template>
<template id="event_event_report_template_badge" inherit_id="event.event_event_report_template_badge">
<xpath expr="//div[@id='o_event_attendee_name']" position="after">
<div t-if="bool(len(event.event_ticket_ids))" class="col-xs-12 mt16 text-center" style="background: lightgrey; height: 65px;" t-ignore="true">
<h3>Ticket Type</h3>
</div>
</xpath>
</template>
</odoo>
@@ -1,62 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="event.report_registration_badge">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<div class="page">
<div class="row">
<!-- Inner right -->
<div class="col-xs-6 text-center" style="padding-left:7mm; border-left:1px dashed black; height: 149mm; -webkit-transform:rotate(180deg); padding-top: 7mm">
<div class="row">
<div class="col-xs-12">
<span t-if="o.event_id.organizer_id.company_id.logo_web and o.event_id.organizer_id.is_company">
<img t-att-src="'data:image/png;base64,%s' % o.event_id.organizer_id.company_id.logo_web" style="max-height:1cm; max-width:4cm;"/>
</span>
<h5 t-field="o.event_id.name"/>
<h5>( <i class="fa fa-clock-o"></i> <span itemprop="startDate" t-field="o.event_id.date_begin" t-field-options='{"hide_seconds":"True"}'> </span> <i>to</i> <span itemprop="endDate" t-field="o.event_id.date_end" t-field-options='{"hide_seconds":"True"}'> </span> )</h5>
</div>
<div class="col-xs-12 text-center">
<t t-if="o.event_ticket_id">
<div>
<strong><span t-field="o.event_ticket_id"/></strong>
</div>
</t>
<div>
<t t-if="o.partner_id.is_company == True">
<small>
<h3 t-field="o.partner_id.name"/>
<h5 t-field="o.name"/>
</small>
</t>
</div>
</div>
<div class="col-xs-12 mt32 text-center" style="background: lightgrey;">
<h3>Status</h3>
</div>
</div>
</div>
<!-- Inner left -->
<div class="col-xs-6" style="padding-right:7mm; height: 149mm; -webkit-transform:rotate(180deg); padding-top: 2mm;">
<span t-field="o.event_id.badge_back"/>
</div>
</div>
<div class="row">
<!-- Back -->
<div class="col-xs-6 text-center" style="padding-right:7mm; border-top:1px dashed black; height: 148mm;">
<span t-field="o.event_id.badge_innerleft"/>
</div>
<!-- Front -->
<div class="col-xs-6 text-center" style="border-left:1px dashed black; border-top:1px dashed black; height: 148mm; text-center">
<span t-field="o.event_id.badge_innerright"/>
</div>
</div>
</div>
</t>
</t>
</template>
</data>
</openerp>
@@ -994,5 +994,8 @@ div.carousel .item.text_only .container > .carousel-image {
#oe_main_menu_navbar .navbar-nav.navbar-right:last-child {
margin-right: 0 !important;
}
.container nav#oe_main_menu_navbar {
position: inherit;
}
/*# sourceMappingURL=website.css.map */
@@ -791,3 +791,7 @@ div.carousel
font-size: 13px
.navbar-nav.navbar-right:last-child
margin-right: 0 !important
.container
nav#oe_main_menu_navbar
position: inherit
+10
View File
@@ -93,3 +93,13 @@ class event(models.Model):
elif 'website_published' in init_values and not self.website_published:
return 'website_event.mt_event_unpublished'
return super(event, self)._track_subtype(init_values)
@api.multi
def action_open_badge_editor(self):
""" open the event badge editor : redirect to the report page of event badge report """
self.ensure_one()
return {
'type': 'ir.actions.act_url',
'target': 'new',
'url': '/report/html/%s/%s' % ('event.event_event_report_template_badge', self.id),
}
@@ -18,6 +18,15 @@
<xpath expr="//field[@name='organizer_id']" position="after">
<field name="twitter_hashtag"/>
</xpath>
<xpath expr="//div[@class='oe_right oe_button_box']/button" position="before">
<button name="action_open_badge_editor"
type="object"
class="oe_stat_button oe_inline"
icon="fa-newspaper-o"
string="Badge"
help="Edit Event Badge">
</button>
</xpath>
</field>
</record>