Initial commit: Core packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:45 +02:00
commit 12c29a983b
9512 changed files with 8379910 additions and 0 deletions

View file

@ -0,0 +1,58 @@
# Events Organization
Organization and management of Events.
======================================
The event module allows you to efficiently organize events and all related tasks: planning, registration tracking,
attendances, etc.
Key Features
------------
* Manage your Events and Registrations
* Use emails to automatically confirm and send acknowledgments for any event registration
## Installation
```bash
pip install odoo-bringout-oca-ocb-event
```
## Dependencies
This addon depends on:
- base_setup
- mail
- portal
- utm
## Manifest Information
- **Name**: Events Organization
- **Version**: 1.7
- **Category**: Marketing/Events
- **License**: LGPL-3
- **Installable**: True
## Source
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `event`.
## License
This package maintains the original LGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Event Module - event
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for event. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,17 @@
# Controllers
HTTP routes provided by this module.
```mermaid
sequenceDiagram
participant U as User/Client
participant C as Module Controllers
participant O as ORM/Views
U->>C: HTTP GET/POST (routes)
C->>O: ORM operations, render templates
O-->>U: HTML/JSON/PDF
```
Notes
- See files in controllers/ for route definitions.

View file

@ -0,0 +1,8 @@
# Dependencies
This addon depends on:
- [base_setup](../../odoo-bringout-oca-ocb-base_setup)
- [mail](../../odoo-bringout-oca-ocb-mail)
- [portal](../../odoo-bringout-oca-ocb-portal)
- [utm](../../odoo-bringout-oca-ocb-utm)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon event or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-ocb-event"
# or
uv pip install odoo-bringout-oca-ocb-event"
```

View file

@ -0,0 +1,26 @@
# Models
Detected core models and extensions in event.
```mermaid
classDiagram
class event_event
class event_event_ticket
class event_mail
class event_mail_registration
class event_registration
class event_stage
class event_tag
class event_tag_category
class event_type
class event_type_mail
class event_type_ticket
class event_type_ticket
class mail_template
class res_config_settings
class res_partner
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: event. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon event
- License: LGPL-3

View file

@ -0,0 +1,28 @@
# Reports
Report definitions and templates in event.
```mermaid
classDiagram
```
## Available Reports
### PDF/Document Reports
- **Full Page Ticket** (PDF/Print)
- **Full Page Ticket Example** (PDF/Print)
- **Foldable Badge** (PDF/Print)
- **Foldable Badge Example** (PDF/Print)
## Report Files
- **event_event_reports.xml** (XML template/definition)
- **event_event_templates.xml** (XML template/definition)
- **__init__.py** (Python logic)
## Notes
- Named reports above are accessible through Odoo's reporting menu
- Python files define report logic and data processing
- XML files contain report templates, definitions, and formatting
- Reports are integrated with Odoo's printing and email systems

View file

@ -0,0 +1,42 @@
# Security
Access control and security definitions in event.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../event/security/ir.model.access.csv)**
- 27 model access rules
## Record Rules
Row-level security rules defined in:
## Security Groups & Configuration
Security groups and permissions defined in:
- **[event_security.xml](../event/security/event_security.xml)**
- 3 security groups defined
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[event_security.xml](../event/security/event_security.xml)**
- Security groups, categories, and XML-based rules
- **[ir.model.access.csv](../event/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/odoo_web_server.py --db-name mydb --addon event
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import controllers
from . import models
from . import report

View file

@ -0,0 +1,70 @@
# -*- coding: utf-8 -*-
{
'name': 'Events Organization',
'version': '1.7',
'website': 'https://www.odoo.com/app/events',
'category': 'Marketing/Events',
'summary': 'Trainings, Conferences, Meetings, Exhibitions, Registrations',
'description': """
Organization and management of Events.
======================================
The event module allows you to efficiently organize events and all related tasks: planning, registration tracking,
attendances, etc.
Key Features
------------
* Manage your Events and Registrations
* Use emails to automatically confirm and send acknowledgments for any event registration
""",
'depends': ['base_setup', 'mail', 'portal', 'utm'],
'data': [
'security/event_security.xml',
'security/ir.model.access.csv',
'views/event_menu_views.xml',
'views/event_ticket_views.xml',
'views/event_mail_views.xml',
'views/event_registration_views.xml',
'views/event_type_views.xml',
'views/event_event_views.xml',
'views/event_stage_views.xml',
'report/event_event_templates.xml',
'report/event_event_reports.xml',
'data/ir_cron_data.xml',
'data/mail_template_data.xml',
'data/event_data.xml',
'views/res_config_settings_views.xml',
'views/event_templates.xml',
'views/res_partner_views.xml',
'views/event_tag_views.xml'
],
'demo': [
'data/res_users_demo.xml',
'data/res_partner_demo.xml',
'data/event_demo_misc.xml',
'data/event_demo.xml',
'data/event_registration_demo.xml',
],
'installable': True,
'assets': {
'web.assets_backend': [
'event/static/src/scss/event.scss',
'event/static/src/icon_selection_field/icon_selection_field.js',
'event/static/src/icon_selection_field/icon_selection_field.xml',
],
'web.assets_common': [
'event/static/src/js/tours/**/*',
],
'web.assets_frontend': [
'event/static/src/js/tours/**/*',
],
'web.report_assets_common': [
'/event/static/src/scss/event_foldable_badge_report.scss',
'/event/static/src/scss/event_full_page_ticket_report.scss',
],
'web.report_assets_pdf': [
'/event/static/src/scss/event_full_page_ticket_report_pdf.scss',
],
},
'license': 'LGPL-3',
}

View file

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import main

View file

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from werkzeug.exceptions import NotFound
from odoo.http import Controller, request, route, content_disposition
class EventController(Controller):
@route(['''/event/<model("event.event"):event>/ics'''], type='http', auth="public")
def event_ics_file(self, event, **kwargs):
lang = request.context.get('lang', request.env.user.lang)
if request.env.user._is_public():
lang = request.httprequest.cookies.get('frontend_lang')
event = event.with_context(lang=lang)
files = event._get_ics_file()
if not event.id in files:
return NotFound()
content = files[event.id]
return request.make_response(content, [
('Content-Type', 'application/octet-stream'),
('Content-Length', len(content)),
('Content-Disposition', content_disposition('%s.ics' % event.name))
])

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Event Categories -->
<record id="event_type_data_ticket" model="event.type">
<field name="name">Ticketing</field>
<field name="auto_confirm" eval="False"/>
</record>
<record id="event_type_data_conference" model="event.type">
<field name="name">Conference</field>
<field name="auto_confirm" eval="True"/>
</record>
<!-- Event stages -->
<record id="event_stage_new" model="event.stage">
<field name="name">New</field>
<field name="description">Freshly created</field>
<field name="sequence">1</field>
</record>
<record id="event_stage_booked" model="event.stage">
<field name="name">Booked</field>
<field name="description">The place has been reserved</field>
<field name="sequence">2</field>
</record>
<record id="event_stage_announced" model="event.stage">
<field name="name">Announced</field>
<field name="description">The event has been publicly announced</field>
<field name="sequence">3</field>
</record>
<record id="event_stage_done" model="event.stage">
<field name="name">Ended</field>
<field name="description">Fully ended</field>
<field name="sequence">5</field>
<field name="pipe_end" eval="True"/>
<field name="fold" eval="True"/>
</record>
<record id="event_stage_cancelled" model="event.stage">
<field name="name">Cancelled</field>
<field name="description">The event has been cancelled</field>
<field name="sequence">6</field>
<field name="pipe_end" eval="True"/>
<field name="fold" eval="True"/>
</record>
</data>
</odoo>

View file

@ -0,0 +1,265 @@
<?xml version="1.0"?>
<odoo><data>
<!-- Event -->
<record id="event.event_0" model="event.event">
<field name="name">Design Fair Los Angeles</field>
<field name="user_id" ref="base.user_demo"/>
<field name="date_begin" eval="(DateTime.now() + timedelta(days=10)).strftime('%Y-%m-%d 08:00:00')"/>
<field name="date_end" eval="(DateTime.now() + timedelta(days=14)).strftime('%Y-%m-%d 18:00:00')"/>
<field name="seats_limited">True</field>
<field name="seats_max">50</field>
<field name="address_id" ref="event.res_partner_location_2"/>
<field name="date_tz">America/Los_Angeles</field>
<field name="event_type_id" ref="event_type_0"/>
<field name="stage_id" ref="event_stage_booked"/>
<field name="tag_ids" eval="[(4, ref('event.event_tag_category_1_tag_1')), (4, ref('event.event_tag_category_2_tag_1'))]"/>
<field name="ticket_instructions" type="html">
<div class="text-center fw-bold py-3">Important ticket information</div>
<ul>
<li>Please come <b>at least</b> 30 minutes before the beginning of the event.</li>
<li>Tickets can be printed or scanned directly from your phone.</li>
<li>If you don't have this ticket, you will <b>not</b> be allowed entry!</li>
</ul>
</field>
</record>
<record id="event_0_ticket_0" model="event.event.ticket">
<field name="name">Free</field>
<field name="description">Free entrance, no food !</field>
<field name="event_id" ref="event.event_0"/>
<field name="start_sale_datetime" eval="(DateTime.today() + timedelta(days=5)).strftime('%Y-%m-%d 00:00:00')"/>
<field name="end_sale_datetime" eval="(DateTime.today() + timedelta(days=10)).strftime('%Y-%m-%d 23:00:00')"/>
<field name="seats_max">0</field>
</record>
<record id="event_0_ticket_1" model="event.event.ticket">
<field name="name">Standard</field>
<field name="description">For only 10, you gain access to catering. Yum yum.</field>
<field name="event_id" ref="event.event_0"/>
<field name="start_sale_datetime" eval="(DateTime.today() + timedelta(days=5)).strftime('%Y-%m-%d 00:00:00')"/>
<field name="end_sale_datetime" eval="(DateTime.today() + timedelta(days=10)).strftime('%Y-%m-%d 23:00:00')"/>
<field name="seats_max">50</field>
</record>
<record id="event_0_ticket_2" model="event.event.ticket">
<field name="name">VIP</field>
<field name="description">You are truly among the best.</field>
<field name="event_id" ref="event.event_0"/>
<field name="start_sale_datetime" eval="(DateTime.today() + timedelta(days=5)).strftime('%Y-%m-%d 00:00:00')"/>
<field name="end_sale_datetime" eval="(DateTime.today() + timedelta(days=10)).strftime('%Y-%m-%d 23:00:00')"/>
<field name="seats_max">10</field>
</record>
<record id="event.event_1" model="event.event">
<field name="name">Great Reno Ballon Race</field>
<field name="user_id" ref="base.user_admin"/>
<field eval="(DateTime.today()+ timedelta(days=100)).strftime('%Y-%m-%d 20:15:00')" name="date_begin"/>
<field eval="(DateTime.today()+ timedelta(days=101)).strftime('%Y-%m-%d 00:30:00')" name="date_end"/>
<field name="event_type_id" ref="event_type_2"/>
<field name="address_id" ref="event.res_partner_location_0"/>
<field name="stage_id" ref="event_stage_booked"/>
<field name="kanban_state">blocked</field>
<field name="tag_ids" eval="[(4, ref('event.event_tag_category_1_tag_4')), (4, ref('event.event_tag_category_2_tag_3'))]"/>
</record>
<record id="message_event_1_0" model="mail.message">
<field name="model">event.event</field>
<field name="res_id" ref="event.event_1"/>
<field name="body" type="html"><p>Hello Marc Demo,<br/>
Our flight authorizations have been revoked due to insurance issues.<br/>
Could you take care of it as soon as possible ?</p>
</field>
<field name="message_type">comment</field>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="author_id" ref="base.partner_admin"/>
</record>
<record id="message_event_1_1" model="mail.message">
<field name="model">event.event</field>
<field name="res_id" ref="event.event_1"/>
<field name="parent_id" ref="message_event_1_0"/>
<field name="body" type="html"><p>Hi Mitchell Admin,<br/>I will take care of it today !</p></field>
<field name="message_type">comment</field>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="author_id" ref="base.partner_demo"/>
</record>
<record id="message_event_1_2" model="mail.message">
<field name="model">event.event</field>
<field name="res_id" ref="event.event_1"/>
<field name="parent_id" ref="message_event_1_1"/>
<field name="body" type="html"><p>Great ! This event will stay "blocked" until it is fixed.<br/>
Feel free to green it once everything is in order.</p>
</field>
<field name="message_type">comment</field>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="author_id" ref="base.partner_admin"/>
</record>
<record id="activity_event_1_0" model="mail.activity">
<field name="res_id" ref="event.event_1" />
<field name="res_model_id" ref="event.model_event_event"/>
<field name="activity_type_id" ref="mail.mail_activity_data_call"/>
<field name="summary">Call the local state house.</field>
<field name="date_deadline" eval="DateTime.today()"/>
<field name="create_uid" ref="base.user_demo"/>
<field name="user_id" ref="base.user_demo"/>
</record>
<record id="event_2" model="event.event">
<field name="name">Conference for Architects</field>
<field name="user_id" ref="base.user_admin"/>
<field eval="(DateTime.today()+ timedelta(days=5)).strftime('%Y-%m-%d 07:00:00')" name="date_begin"/>
<field eval="(DateTime.today()+ timedelta(days=5)).strftime('%Y-%m-%d 16:30:00')" name="date_end"/>
<field name="event_type_id" ref="event_type_data_conference"/>
<field name="address_id" ref="event.res_partner_location_2"/>
<field name="seats_limited">True</field>
<field name="seats_max">200</field>
<field name="stage_id" ref="event_stage_booked"/>
<field name="tag_ids" eval="[(4, ref('event.event_tag_category_1_tag_4')), (4, ref('event.event_tag_category_2_tag_1'))]"/>
</record>
<record id="event_2_ticket_1" model="event.event.ticket">
<field name="name">Standard</field>
<field name="event_id" ref="event.event_2"/>
<field name="end_sale_datetime" eval="(DateTime.today() + timedelta(90)).strftime('%Y-%m-%d 23:00:00')"/>
<field name="seats_max">50</field>
</record>
<record id="event_2_ticket_2" model="event.event.ticket">
<field name="name">VIP</field>
<field name="event_id" ref="event.event_2"/>
<field name="end_sale_datetime" eval="(DateTime.today() + timedelta(60)).strftime('%Y-%m-%d 23:00:00')"/>
<field name="seats_max">5</field>
</record>
<record id="activity_event_2_0" model="mail.activity">
<field name="res_id" ref="event.event_2" />
<field name="res_model_id" ref="event.model_event_event"/>
<field name="activity_type_id" ref="mail.mail_activity_data_call"/>
<field name="summary">Call the caterer.</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(days=3)).strftime('%Y-%m-%d %H:%M')"/>
<field name="create_uid" ref="base.user_admin"/>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="event_2_mail_0" model="event.mail">
<field name="event_id" ref="event.event_2"/>
<field name="template_ref" eval="'mail.template,%i' % ref('event.event_subscription')"/>
</record>
<record id="event.event_3" model="event.event">
<field name="name">Live Music Festival</field>
<field name="user_id" ref="base.user_demo"/>
<field name="date_begin" eval="(DateTime.today()+ timedelta(days=130)).strftime('%Y-%m-%d 20:15:00')"/>
<field name="date_end" eval="(DateTime.today()+ timedelta(days=133)).strftime('%Y-%m-%d 00:30:00')"/>
<field name="date_tz">Europe/London</field>
<field name="event_type_id" ref="event_type_0"/>
<field name="address_id" ref="event.res_partner_location_1"/>
<field name="stage_id" ref="event_stage_announced"/>
<field name="tag_ids" eval="[(4, ref('event.event_tag_category_1_tag_3')), (4, ref('event.event_tag_category_2_tag_2'))]"/>
</record>
<record id="event_3_ticket_0" model="event.event.ticket">
<field name="name">Standard</field>
<field name="event_id" ref="event.event_3"/>
<field name="end_sale_datetime" eval="(DateTime.today() + timedelta(days=20)).strftime('%Y-%m-%d 23:00:00')"/>
<field name="seats_max">1200</field>
</record>
<record id="event_3_ticket_1" model="event.event.ticket">
<field name="name">VIP</field>
<field name="event_id" ref="event.event_3"/>
<field name="end_sale_datetime" eval="(DateTime.today() + timedelta(days=20)).strftime('%Y-%m-%d 23:00:00')"/>
<field name="seats_max">50</field>
</record>
<record id="activity_event_3_0" model="mail.activity">
<field name="res_id" ref="event.event_3" />
<field name="res_model_id" ref="event.model_event_event"/>
<field name="activity_type_id" ref="mail.mail_activity_data_call"/>
<field name="summary">Prepare interview with local media.</field>
<field name="date_deadline" eval="DateTime.today().strftime('%Y-%m-%d %H:%M')"/>
<field name="create_uid" ref="base.user_admin"/>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="event_3_mail_0" model="event.mail">
<field name="event_id" ref="event.event_3"/>
<field name="template_ref" eval="'mail.template,%i' % ref('event.event_subscription')"/>
</record>
<!-- EVENT_4: very limited, intended to test seats reservation -->
<record id="event.event_4" model="event.event">
<field name="name">Business workshops</field>
<field name="user_id" ref="base.user_admin"/>
<field name="date_begin" eval="(DateTime.today() - timedelta(days=5)).strftime('%Y-%m-%d 18:00:00')"/>
<field name="date_end" eval="(DateTime.today() - timedelta(days=5)).strftime('%Y-%m-%d 22:30:00')"/>
<field name="seats_limited">True</field>
<field name="seats_max">4</field>
<field name="address_id" ref="event.res_partner_location_2"/>
<field name="date_tz">America/Los_Angeles</field>
<field name="event_type_id" ref="event_type_1"/>
<field name="stage_id" ref="event_stage_done"/>
<field name="kanban_state">done</field>
<field name="tag_ids" eval="[(4, ref('event.event_tag_category_1_tag_4')), (4, ref('event.event_tag_category_2_tag_1'))]"/>
</record>
<record id="event_4_ticket_0" model="event.event.ticket">
<field name="name">General Admission</field>
<field name="event_id" ref="event.event_4"/>
<field name="end_sale_datetime" eval="(DateTime.today() - timedelta(30)).strftime('%Y-%m-%d 23:00:00')"/>
<field name="seats_max">4</field>
</record>
<record id="activity_event_4_0" model="mail.activity">
<field name="res_id" ref="event.event_4" />
<field name="res_model_id" ref="event.model_event_event"/>
<field name="activity_type_id" ref="mail.mail_activity_data_call"/>
<field name="summary">Prepare after movie.</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(days=3)).strftime('%Y-%m-%d %H:%M')"/>
<field name="create_uid" ref="base.user_admin"/>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="event.event_5" model="event.event">
<field name="name">Hockey Tournament</field>
<field name="user_id" ref="base.user_demo"/>
<field eval="(DateTime.today()+ timedelta(days=370)).strftime('%Y-%m-%d 09:00:00')" name="date_begin"/>
<field eval="(DateTime.today()+ timedelta(days=371)).strftime('%Y-%m-%d 17:00:00')" name="date_end"/>
<field name="event_type_id" ref="event_type_2"/>
<field name="address_id" ref="event.res_partner_location_1"/>
<field name="tag_ids" eval="[(6, 0, [ref('event.event_tag_category_1_tag_2'), ref('event.event_tag_category_2_tag_3')])]"/>
</record>
<record id="event.event_6" model="event.event">
<field name="name">An unpublished event</field>
<field name="user_id" ref="base.user_admin"/>
<field eval="(DateTime.today()+ timedelta(days=30)).strftime('%Y-%m-%d 09:30:00')" name="date_begin"/>
<field eval="(DateTime.today()+ timedelta(days=30)).strftime('%Y-%m-%d 17:30:00')" name="date_end"/>
<field name="event_type_id" ref="event_type_0"/>
<field name="address_id" ref="event.res_partner_location_1"/>
</record>
<record id="event.event_7" model="event.event">
<field name="name">OpenWood Collection Online Reveal</field>
<field name="date_tz">Europe/Brussels</field>
<field name="event_type_id" ref="event_type_0"/>
<field name="stage_id" ref="event.event_stage_booked"/>
<field name="user_id" ref="base.user_demo"/>
<field name="auto_confirm" eval="True"/>
<field name="date_begin" eval="(DateTime.now() - timedelta(days=1)).strftime('%Y-%m-%d 05:00:00')"/>
<field name="date_end" eval="(DateTime.now() + timedelta(days=1)).strftime('%Y-%m-%d 15:00:00')"/>
<field name="address_id" eval="False"/>
<field name="tag_ids" eval="[(4, ref('event.event_tag_category_3_tag_1'))]"/>
<field name="description" type="html">
<div class="oe_structure">
<h5>The finest OpenWood furnitures are coming to your house in a brand new collection</h5>
<p>And this time, we go fully ONLINE! Meet us in our live streams from the comfort of your house.<br/>
Special discount codes will be handed out during the various streams, make sure to be there on time.</p>
<p class="mb-3">For any additional information, please contact us at <a href="mailto:events@idea.com">events@idea.com</a>.</p>
<div class="bg-light rounded-end border-start border-secondary p-3 mb-5" style="border-start-width: 3px !important;">
<p class="mb-1">This event is fully online and FREE, if you have paid for tickets, you should get a refund.<br/>
It will require a good Internet connection to get the best video quality.</p>
</div>
</div>
</field>
</record>
<record id="event_7_ticket_1" model="event.event.ticket">
<field name="name">Standard</field>
<field name="event_id" ref="event.event_7"/>
<field name="end_sale_datetime" eval="(DateTime.now() + timedelta(days=2)).strftime('%Y-%m-%d 15:00:00')"/>
</record>
<record id="event_7_ticket_2" model="event.event.ticket">
<field name="name">VIP</field>
<field name="event_id" ref="event.event_7"/>
<field name="end_sale_datetime" eval="(DateTime.now() + timedelta(days=2)).strftime('%Y-%m-%d 15:00:00')"/>
<field name="seats_max">10</field>
</record>
</data></odoo>

View file

@ -0,0 +1,96 @@
<?xml version="1.0"?>
<odoo><data>
<!-- Event Type -->
<record id="event_type_0" model="event.type">
<field name="name">Exhibition</field>
<field name="auto_confirm" eval="False"/>
</record>
<record id="event_type_1" model="event.type">
<field name="name">Training</field>
<field name="auto_confirm" eval="False"/>
</record>
<record id="event_type_2" model="event.type">
<field name="name">Sport</field>
<field name="auto_confirm" eval="False"/>
<field name="default_timezone">America/Los_Angeles</field>
</record>
<record id="event_type_data_conference" model="event.type">
<field name="default_timezone">Europe/Brussels</field>
</record>
<!-- Category and Tags -->
<record id="event_tag_category_1" model="event.tag.category">
<field name="name">Age</field>
<field name="sequence">3</field>
</record>
<record id="event_tag_category_2" model="event.tag.category">
<field name="name">Activity</field>
<field name="sequence">1</field>
</record>
<record id="event_tag_category_3" model="event.tag.category">
<field name="name">Type</field>
<field name="sequence">2</field>
</record>
<record id="event_tag_category_1_tag_1" model="event.tag">
<field name="name">5-10</field>
<field name="sequence">1</field>
<field name="category_id" ref="event_tag_category_1"/>
<field name="color">1</field>
</record>
<record id="event_tag_category_1_tag_2" model="event.tag">
<field name="name">10-14</field>
<field name="sequence">2</field>
<field name="category_id" ref="event_tag_category_1"/>
<field name="color">2</field>
</record>
<record id="event_tag_category_1_tag_3" model="event.tag">
<field name="name">15-18</field>
<field name="sequence">3</field>
<field name="category_id" ref="event_tag_category_1"/>
<field name="color">3</field>
</record>
<record id="event_tag_category_1_tag_4" model="event.tag">
<field name="name">18+</field>
<field name="sequence">4</field>
<field name="category_id" ref="event_tag_category_1"/>
<field name="color">4</field>
</record>
<record id="event_tag_category_2_tag_1" model="event.tag">
<field name="name">Culture</field>
<field name="sequence">10</field>
<field name="category_id" ref="event_tag_category_2"/>
<field name="color">5</field>
</record>
<record id="event_tag_category_2_tag_2" model="event.tag">
<field name="name">Music</field>
<field name="sequence">11</field>
<field name="category_id" ref="event_tag_category_2"/>
<field name="color">6</field>
</record>
<record id="event_tag_category_2_tag_3" model="event.tag">
<field name="name">Sport</field>
<field name="sequence">12</field>
<field name="category_id" ref="event_tag_category_2"/>
<field name="color">7</field>
</record>
<record id="event_tag_category_3_tag_1" model="event.tag">
<field name="name">Online</field>
<field name="sequence">20</field>
<field name="category_id" ref="event_tag_category_3"/>
<field name="color">8</field>
</record>
<record id="event_tag_category_3_tag_2" model="event.tag">
<field name="name">Conference</field>
<field name="sequence">21</field>
<field name="category_id" ref="event_tag_category_3"/>
<field name="color">9</field>
</record>
</data></odoo>

View file

@ -0,0 +1,175 @@
<?xml version="1.0"?>
<odoo><data>
<!-- Design fair -->
<record id="event_registration_0_0" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=2)"/>
<field name="event_id" ref="event.event_0"/>
<field name="event_ticket_id" ref="event.event_0_ticket_1"/>
<field name="partner_id" ref="base.res_partner_address_1"/>
</record>
<record id="event_registration_0_1" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=2)"/>
<field name="event_id" ref="event.event_0"/>
<field name="event_ticket_id" ref="event.event_0_ticket_1"/>
<field name="partner_id" ref="base.res_partner_address_2"/>
</record>
<record id="event_registration_0_2" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=2)"/>
<field name="event_id" ref="event.event_0"/>
<field name="event_ticket_id" ref="event.event_0_ticket_0"/>
<field name="name">Tucker Carlson</field>
<field name="email">tuck@test.example.com</field>
<field name="partner_id" eval="False"/>
</record>
<!-- Reno Ballon Race -->
<record id="event_registration_1_0" model="event.registration">
<field name="event_id" ref="event.event_1"/>
<field name="partner_id" ref="base.res_partner_address_1"/>
</record>
<record id="event_registration_1_1" model="event.registration">
<field name="event_id" ref="event.event_1"/>
<field name="partner_id" ref="base.res_partner_address_2"/>
</record>
<record id="event_registration_1_2" model="event.registration">
<field name="event_id" ref="event.event_1"/>
<field name="name">Piers Morgan</field>
<field name="email">piersm@test.example.com</field>
<field name="partner_id" eval="False"/>
</record>
<record id="event_registration_1_3" model="event.registration">
<field name="event_id" ref="event.event_1"/>
<field name="partner_id" ref="base.res_partner_address_3"/>
</record>
<record id="event_registration_1_4" model="event.registration">
<field name="event_id" ref="event.event_1"/>
<field name="partner_id" ref="base.res_partner_address_4"/>
</record>
<record id="event_registration_1_5" model="event.registration">
<field name="event_id" ref="event.event_1"/>
<field name="name">Nigel Woodfire</field>
<field name="email">nigelw@test.example.com</field>
<field name="partner_id" eval="False"/>
</record>
<!-- Conference for architects -->
<record id="event_registration_2_0" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=0.5)"/>
<field name="event_id" ref="event.event_2"/>
<field name="event_ticket_id" ref="event.event_2_ticket_1"/>
<field name="partner_id" ref="base.res_partner_address_1"/>
</record>
<record id="event_registration_2_1" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=0.5)"/>
<field name="event_id" ref="event.event_2"/>
<field name="event_ticket_id" ref="event.event_2_ticket_1"/>
<field name="partner_id" ref="base.res_partner_address_2"/>
</record>
<record id="event_registration_2_2" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=0.5)"/>
<field name="event_id" ref="event.event_2"/>
<field name="event_ticket_id" ref="event.event_2_ticket_2"/>
<field name="name">Piers Morgan</field>
<field name="email">piersm@test.example.com</field>
<field name="partner_id" eval="False"/>
</record>
<record id="event_registration_2_3" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=1)"/>
<field name="event_id" ref="event.event_2"/>
<field name="event_ticket_id" ref="event.event_2_ticket_1"/>
<field name="partner_id" ref="base.res_partner_address_3"/>
</record>
<record id="event_registration_2_4" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=1)"/>
<field name="event_id" ref="event.event_2"/>
<field name="event_ticket_id" ref="event.event_2_ticket_1"/>
<field name="partner_id" ref="base.res_partner_address_4"/>
</record>
<!-- Live Music Festival -->
<record id="event_registration_3_0" model="event.registration">
<field name="event_id" ref="event.event_3"/>
<field name="partner_id" ref="base.res_partner_address_1"/>
</record>
<record id="event_registration_3_1" model="event.registration">
<field name="event_id" ref="event.event_3"/>
<field name="partner_id" ref="base.res_partner_address_2"/>
</record>
<record id="event_registration_3_2" model="event.registration">
<field name="event_id" ref="event.event_3"/>
<field name="name">Piers Morgan</field>
<field name="email">piersm@test.example.com</field>
<field name="partner_id" eval="False"/>
</record>
<record id="event_registration_3_3" model="event.registration">
<field name="event_id" ref="event.event_3"/>
<field name="partner_id" ref="base.res_partner_address_3"/>
</record>
<record id="event_registration_3_4" model="event.registration">
<field name="event_id" ref="event.event_3"/>
<field name="partner_id" ref="base.res_partner_address_4"/>
</record>
<record id="event_registration_3_5" model="event.registration">
<field name="event_id" ref="event.event_3"/>
<field name="name">Nigel Woodfire</field>
<field name="email">nigelw@test.example.com</field>
<field name="partner_id" eval="False"/>
</record>
<!-- Business Workshop -->
<record id="event_registration_4_0" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=8)"/>
<field name="event_id" ref="event.event_4"/>
<field name="event_ticket_id" ref="event.event_4_ticket_0"/>
<field name="partner_id" ref="base.res_partner_address_7"/>
</record>
<record id="event_registration_4_1" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=7)"/>
<field name="event_id" ref="event.event_4"/>
<field name="event_ticket_id" ref="event.event_4_ticket_0"/>
<field name="partner_id" ref="base.res_partner_address_13"/>
</record>
<record id="event_registration_4_2" model="event.registration">
<field name="create_date" eval="DateTime.now() - relativedelta(days=7)"/>
<field name="event_id" ref="event.event_4"/>
<field name="event_ticket_id" ref="event.event_4_ticket_0"/>
<field name="partner_id" ref="base.res_partner_address_14"/>
</record>
<!-- OpenWood Collection Online Reveal: Gemini (all) -->
<record id="event_registration_7_0" model="event.registration">
<field name="event_id" ref="event.event_7"/>
<field name="event_ticket_id" ref="event.event_7_ticket_1"/>
<field name="partner_id" ref="base.res_partner_address_5"/>
</record>
<record id="event_registration_7_1" model="event.registration">
<field name="event_id" ref="event.event_7"/>
<field name="event_ticket_id" ref="event.event_7_ticket_1"/>
<field name="partner_id" ref="base.res_partner_address_10"/>
</record>
<record id="event_registration_7_2" model="event.registration">
<field name="event_id" ref="event.event_7"/>
<field name="event_ticket_id" ref="event.event_7_ticket_2"/>
<field name="partner_id" ref="base.res_partner_address_11"/>
</record>
<record id="event_registration_7_3" model="event.registration">
<field name="event_id" ref="event.event_7"/>
<field name="event_ticket_id" ref="event.event_7_ticket_2"/>
<field name="partner_id" ref="base.res_partner_address_25"/>
</record>
<function model="event.registration"
name="action_confirm"
context="{'install_mode' : True}"
eval="[[ref('event_registration_0_0'), ref('event_registration_0_1'),
ref('event_registration_1_0'), ref('event_registration_1_1'), ref('event_registration_1_2'),
ref('event_registration_2_0'), ref('event_registration_2_1'), ref('event_registration_2_2'), ref('event_registration_2_3'),
ref('event_registration_4_2')]]"
/>
<function model="event.registration"
name="action_set_done"
eval="[[ref('event_registration_4_0'), ref('event_registration_4_1')]]"
/>
</data></odoo>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo><data noupdate="1">
<!-- Event Mail Scheduler-->
<record model="ir.cron" forcecreate="True" id="event_mail_scheduler">
<field name="name">Event: Mail Scheduler</field>
<field name="model_id" ref="model_event_mail"/>
<field name="state">code</field>
<field name="code">model.schedule_communications(autocommit=True)</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False" />
</record>
</data></odoo>

View file

@ -0,0 +1,480 @@
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<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="subject">Your badge for {{ object.event_id.name }}</field>
<field name="email_from">{{ (object.event_id.organizer_id.email_formatted or object.event_id.user_id.email_formatted or '') }}</field>
<field name="email_to">{{ (object.email and '"%s" &lt;%s&gt;' % (object.name, object.email) or object.partner_id.email_formatted or '') }}</field>
<field name="description">Sent automatically to someone after they registered to an event</field>
<field name="body_html" type="html">
<div>
Dear <t t-out="object.name or ''">Oscar Morgan</t>,<br/>
Thank you for your inquiry.<br/>
Here is your badge for the event <t t-out="object.event_id.name or ''">OpenWood Collection Online Reveal</t>.<br/>
If you have any questions, please let us know.
<br/><br/>
Thank you,
<t t-if="object.event_id.user_id.signature">
<br />
<t t-out="object.event_id.user_id.signature or ''">--<br/>Mitchell Admin</t>
</t>
</div></field>
<field name="report_template" ref="action_report_event_registration_foldable_badge"/>
<field name="report_name">Foldable Badge - {{ (object.event_id.name or 'Event').replace('/','_') }}</field>
<field name="lang">{{ object.partner_id.lang }}</field>
<field name="auto_delete" eval="True"/>
</record>
<record id="event_subscription" model="mail.template">
<field name="name">Event: Registration Confirmation</field>
<field name="model_id" ref="event.model_event_registration"/>
<field name="subject">Your registration at {{ object.event_id.name }}</field>
<field name="email_from">{{ (object.event_id.organizer_id.email_formatted or object.event_id.user_id.email_formatted or '') }}</field>
<field name="email_to">{{ (object.email and '"%s" &lt;%s&gt;' % (object.name, object.email) or object.partner_id.email_formatted or '') }}</field>
<field name="description">Sent to attendees after registering to an event</field>
<field name="body_html" type="html">
<table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Verdana, Arial,sans-serif; color: #454748; width: 100%; border-collapse:separate;"><tr><td align="center">
<t t-set="date_begin" t-value="format_datetime(object.event_id.date_begin, tz='UTC', dt_format=&quot;yyyyMMdd'T'HHmmss'Z'&quot;)"/>
<t t-set="date_end" t-value="format_datetime(object.event_id.date_end, tz='UTC', dt_format=&quot;yyyyMMdd'T'HHmmss'Z'&quot;)"/>
<t t-set="is_online" t-value="'is_published' in object.event_id and object.event_id.is_published"/>
<t t-set="event_organizer" t-value="object.event_id.organizer_id"/>
<t t-set="event_address" t-value="object.event_id.address_id"/>
<table border="0" cellpadding="0" cellspacing="0" width="590" style="padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
<tbody>
<!-- HEADER -->
<tr>
<td align="center" style="min-width: 590px;">
<table width="590" border="0" cellpadding="0" cellspacing="0" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
<tr><td valign="middle">
<span style="font-size: 10px;">Your registration</span><br/>
<span style="font-size: 20px; font-weight: bold;">
<t t-out="object.name or ''">Oscar Morgan</t>
</span>
</td><td valign="middle" align="right">
<t t-if="is_online">
<a t-att-href="object.event_id.website_url"
style="padding: 8px 12px; font-size: 12px; color: #FFFFFF; text-decoration: none !important; font-weight: 400; background-color: #875A7B; border: 0px solid #875A7B; border-radius:3px">
View Event
</a>
</t>
<t t-else="">
<img t-att-src="'/logo.png?company=%s' % object.company_id.id" style="padding: 0px; margin: 0px; height: auto; width: 80px;" t-att-alt="'%s' % object.company_id.name"/>
</t>
</td></tr>
<tr><td colspan="2" style="text-align:center;">
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin:16px 0px 16px 0px;"/>
</td></tr>
</table>
</td>
</tr>
<!-- EVENT DESCRIPTION -->
<tr>
<td align="center" style="min-width: 590px;">
<table width="590" border="0" cellpadding="0" cellspacing="0" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
<tr><td valign="top" style="font-size: 14px;">
<div>
Hello <t t-out="object.name or ''">Oscar Morgan</t>,<br/>
We are happy to confirm your registration to the event
<t t-if="is_online">
<a t-att-href="object.event_id.website_url" style="color:#875A7B;text-decoration:none;" t-out="object.event_id.name or ''">OpenWood Collection Online Reveal</a>
</t>
<t t-else="">
<strong t-out="object.event_id.name or ''">OpenWood Collection Online Reveal</strong>
</t>
for attendee <t t-out="object.name or ''">Oscar Morgan</t>.
</div>
<div>
<br />
<strong>Add this event to your calendar</strong>
<a t-attf-href="https://www.google.com/calendar/render?action=TEMPLATE&amp;text={{ object.event_id.name }}&amp;dates={{ date_begin }}/{{ date_end }}&amp;location={{ location }}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Google</a>
<a t-attf-href="/event/{{ slug(object.event_id) }}/ics" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> iCal/Outlook</a>
<a t-attf-href="https://calendar.yahoo.com/?v=60&amp;view=d&amp;type=20&amp;title={{ object.event_id.name }}&amp;in_loc={{ location }}&amp;st={{ format_datetime(object.event_id.date_begin, tz='UTC', dt_format='yyyyMMdd\'T\'HHmmss') }}&amp;et={{ format_datetime(object.event_id.date_end, tz='UTC', dt_format='yyyyMMdd\'T\'HHmmss') }}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new">
<img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Yahoo
</a>
<br /><br />
</div>
<div>
See you soon,<br/>
<span style="color: #454748;">
-- <br/>
<t t-if="event_organizer">
<t t-out="event_organizer.name or ''">YourCompany</t>
</t>
<t t-else="">
The <t t-out="object.event_id.name or ''">OpenWood Collection Online Reveal</t> Team
</t>
</span>
</div>
</td></tr>
<tr><td style="text-align:center;">
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
</td></tr>
</table>
</td>
</tr>
<!-- DETAILS -->
<tr>
<td align="center" style="min-width: 590px;">
<table width="590" border="0" cellpadding="0" cellspacing="0" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
<tr><td valign="top" style="font-size: 14px;">
<table style="width:100%;">
<tr>
<td style="vertical-align:top;">
<img src="/web_editor/font_to_img/61555/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34" alt=""/>
</td>
<td style="padding: 0px 10px 0px 10px;width:50%;line-height:20px;vertical-align:top;">
<div><strong>From</strong> <t t-out="object.event_id.date_begin_located or ''">May 4, 2021, 7:00:00 AM</t></div>
<div><strong>To</strong> <t t-out="object.event_id.date_end_located or ''">May 6, 2021, 5:00:00 PM</t></div>
<div style="font-size:12px;color:#9e9e9e"><i>(<t t-out="object.event_id.date_tz or ''">Europe/Brussels</t>)</i></div>
</td>
<td style="vertical-align:top;">
<t t-if="event_address">
<img src="/web_editor/font_to_img/61505/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34" alt=""/>
</t>
</td>
<td style="padding: 0px 10px 0px 10px;width:50%;vertical-align:top;">
<t t-if="event_address">
<t t-set="location" t-value="''"/>
<t t-if="object.event_id.address_id.name">
<div t-out="object.event_id.address_id.name or ''">Teksa SpA</div>
</t>
<t t-if="object.event_id.address_id.street">
<div t-out="object.event_id.address_id.street or ''">Puerto Madero 9710</div>
<t t-set="location" t-value="object.event_id.address_id.street"/>
</t>
<t t-if="object.event_id.address_id.street2">
<div t-out="object.event_id.address_id.street2 or ''">Of A15, Santiago (RM)</div>
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.street2)"/>
</t>
<div>
<t t-if="object.event_id.address_id.city">
<t t-out="object.event_id.address_id.city or ''">Pudahuel</t>,
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.city)"/>
</t>
<t t-if="object.event_id.address_id.state_id.name">
<t t-out="object.event_id.address_id.state_id.name or ''">C1</t>,
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.state_id.name)"/>
</t>
<t t-if="object.event_id.address_id.zip">
<t t-out="object.event_id.address_id.zip or ''">98450</t>
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.zip)"/>
</t>
</div>
<t t-if="object.event_id.address_id.country_id.name">
<div t-out="object.event_id.address_id.country_id.name or ''">Argentina</div>
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.country_id.name)"/>
</t>
</t>
</td>
</tr>
</table>
</td></tr>
<tr><td style="text-align:center;">
<t t-if="event_organizer">
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
</t>
</td></tr>
<tr><td valign="top" style="font-size: 14px;">
<!-- CONTACT ORGANIZER -->
<t t-if="event_organizer">
<div>
<span style="font-weight:300;margin:10px 0px">Questions about this event?</span>
<div>Please contact the organizer:</div>
<ul>
<li><t t-out="event_organizer.name or ''">YourCompany</t></li>
<t t-if="event_organizer.email">
<li>Mail: <a t-attf-href="mailto:{{ event_organizer.email }}" style="text-decoration:none;color:#875A7B;" t-out="event_organizer.email or ''">info@yourcompany.com</a></li>
</t>
<t t-if="event_organizer.phone">
<li>Phone: <t t-out="event_organizer.phone or ''">+1 650-123-4567</t></li>
</t>
</ul>
</div>
</t>
</td></tr>
<tr><td style="text-align:center;">
<!-- CONTACT ORGANIZER SEPARATION -->
<t t-if="is_online or event_address">
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
</t>
</td></tr>
<tr><td valign="top" style="font-size: 14px;">
<!-- PWA MARKGETING -->
<t t-if="is_online">
<div>
<strong>Get the best mobile experience.</strong>
<a href="/event">Install our mobile app</a>
</div>
</t>
</td></tr>
<tr><td style="text-align:center;">
<!-- PWA MARKGETING SEPARATION-->
<t t-if="is_online and event_address">
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
</t>
</td></tr>
<tr><td valign="top" style="font-size: 14px;">
<!-- GOOGLE MAPS LINK -->
<t t-if="event_address and location">
<table style="width:100%;"><tr><td>
<div>
<i class="fa fa-map-marker"/>
<a t-attf-href="https://maps.google.com/maps?q={{ location }}" target="new">
See location on Google Maps
</a>
</div>
</td></tr></table>
</t>
</td></tr>
</table>
</td>
</tr>
</tbody>
</table>
</td></tr>
<!-- FOOTER BY -->
<tr><td align="center" style="min-width: 590px;">
<t t-if="object.company_id">
<table width="590" border="0" cellpadding="0" cellspacing="0" style="min-width: 590px; background-color: #F1F1F1; color: #454748; padding: 8px; border-collapse:separate;">
<tr><td style="text-align: center; font-size: 14px;">
Sent by <a target="_blank" t-attf-href="{{ object.company_id.website }}" style="color: #875A7B;" t-out="object.company_id.name or ''">YourCompany</a>
<t t-if="is_online">
<br />
Discover <a href="/event" style="color:#875A7B;">all our events</a>.
</t>
</td></tr>
</table>
</t>
</td></tr>
</table>
</field>
<field name="report_template" ref="action_report_event_registration_full_page_ticket"/>
<field name="report_name">Full Page Ticket - {{ (object.event_id.name or 'Event').replace('/','') }}</field>
<field name="lang">{{ object.partner_id.lang }}</field>
</record>
<record id="event_reminder" model="mail.template">
<field name="name">Event: Reminder</field>
<field name="model_id" ref="event.model_event_registration"/>
<field name="subject">{{ object.event_id.name }}: {{ object.get_date_range_str() }}</field>
<field name="email_from">{{ (object.event_id.organizer_id.email_formatted or object.event_id.user_id.email_formatted or '') }}</field>
<field name="email_to">{{ (object.email and '"%s" &lt;%s&gt;' % (object.name, object.email) or object.partner_id.email_formatted or '') }}</field>
<field name="description">Sent automatically to attendees if there is a reminder defined on the event</field>
<field name="body_html" type="html">
<table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Verdana, Arial,sans-serif; color: #454748; width: 100%; border-collapse:separate;"><tr><td align="center">
<t t-set="date_begin" t-value="format_datetime(object.event_id.date_begin, tz='UTC', dt_format=&quot;yyyyMMdd'T'HHmmss'Z'&quot;)"/>
<t t-set="date_end" t-value="format_datetime(object.event_id.date_end, tz='UTC', dt_format=&quot;yyyyMMdd'T'HHmmss'Z'&quot;)"/>
<t t-set="is_online" t-value="'is_published' in object.event_id and object.event_id.is_published"/>
<t t-set="event_organizer" t-value="object.event_id.organizer_id"/>
<t t-set="event_address" t-value="object.event_id.address_id"/>
<table border="0" cellpadding="0" cellspacing="0" width="590" style="padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
<tbody>
<!-- HEADER -->
<tr>
<td align="center" style="min-width: 590px;">
<table width="590" border="0" cellpadding="0" cellspacing="0" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
<tr><td valign="middle">
<span style="font-size: 10px;">Your registration</span><br/>
<span style="font-size: 20px; font-weight: bold;" t-out="object.name or ''">Oscar Morgan</span>
</td><td valign="middle" align="right">
<t t-if="is_online">
<a t-attf-href="{{ object.event_id.website_url }}"
style="padding: 8px 12px; font-size: 12px; color: #FFFFFF; text-decoration: none !important; font-weight: 400; background-color: #875A7B; border: 0px solid #875A7B; border-radius:3px">
View Event
</a>
</t>
<t t-else="">
<img t-att-src="'/logo.png?company=%s' % object.company_id.id" style="padding: 0px; margin: 0px; height: auto; width: 80px;" t-att-alt="'%s' % object.company_id.name"/>
</t>
</td></tr>
<tr><td colspan="2" style="text-align:center;">
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin:16px 0px 16px 0px;"/>
</td></tr>
</table>
</td>
</tr>
<!-- EVENT DESCRIPTION -->
<tr>
<td align="center" style="min-width: 590px;">
<table width="590" border="0" cellpadding="0" cellspacing="0" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
<tr><td valign="top" style="font-size: 14px;">
<div>
Hello <t t-out="object.name or ''">Oscar Morgan</t>,<br/>
We are excited to remind you that the event
<t t-if="is_online">
<a t-att-href="object.event_id.website_url" style="color:#875A7B;text-decoration:none;" t-out="object.event_id.name or ''">OpenWood Collection Online Reveal</a>
</t>
<t t-else="">
<strong t-out="object.event_id.name or ''">OpenWood Collection Online Reveal</strong>
</t>
is starting <strong t-out="object.get_date_range_str() or ''">today</strong>.
</div>
<div>
<br />
<strong>Add this event to your calendar</strong>
<a t-attf-href="https://www.google.com/calendar/render?action=TEMPLATE&amp;text={{ object.event_id.name }}&amp;dates={{ date_begin }}/{{ date_end }}&amp;location={{ location }}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Google</a>
<a t-attf-href="/event/{{ slug(object.event_id) }}/ics" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;"><img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> iCal/Outlook</a>
<a t-attf-href="https://calendar.yahoo.com/?v=60&amp;view=d&amp;type=20&amp;title={{ object.event_id.name }}&amp;in_loc={{ location }}&amp;st={{ format_datetime(object.event_id.date_begin, tz='UTC', dt_format='yyyyMMdd\'T\'HHmmss') }}&amp;et={{ format_datetime(object.event_id.date_end, tz='UTC', dt_format='yyyyMMdd\'T\'HHmmss') }}" style="padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;" target="new">
<img src="/web_editor/font_to_img/61525/rgb(135,90,123)/16" style="vertical-align:middle;" height="16" alt=""/> Yahoo
</a>
<br /><br />
</div>
<div>
We confirm your registration and hope to meet you there,<br/>
<span style="color: #454748;">
-- <br/>
<t t-if="event_organizer">
<t t-out="event_organizer.name or ''">YourCompany</t>
</t>
<t t-else="">
The <t t-out="object.event_id.name or ''">OpenWood Collection Online Reveal</t> Team
</t>
</span>
</div>
</td></tr>
<tr><td style="text-align:center;">
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
</td></tr>
</table>
</td>
</tr>
<!-- DETAILS -->
<tr>
<td align="center" style="min-width: 590px;">
<table width="590" border="0" cellpadding="0" cellspacing="0" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
<tr><td valign="top" style="font-size: 14px;">
<table style="width:100%;">
<tr>
<td style="vertical-align:top;">
<img src="/web_editor/font_to_img/61555/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34" alt=""/>
</td>
<td style="padding: 0px 10px 0px 10px;width:50%;line-height:20px;vertical-align:top;">
<div><strong>From</strong> <t t-out="object.event_id.date_begin_located or ''">May 4, 2021, 7:00:00 AM</t></div>
<div><strong>To</strong> <t t-out="object.event_id.date_end_located or ''">May 6, 2021, 5:00:00 PM</t></div>
<div style="font-size:12px;color:#9e9e9e"><i><t t-out="object.event_id.date_tz or ''">Europe/Brussels</t></i></div>
</td>
<td style="vertical-align:top;">
<t t-if="event_address">
<img src="/web_editor/font_to_img/61505/rgb(81,81,102)/34" style="padding:4px;max-width:inherit;" height="34" alt=""/>
</t>
</td>
<td style="padding: 0px 10px 0px 10px;width:50%;vertical-align:top;">
<t t-if="event_address">
<t t-set="location" t-value="''"/>
<t t-if="object.event_id.address_id.name">
<div t-out="object.event_id.address_id.name or ''">Teksa SpA</div>
</t>
<t t-if="object.event_id.address_id.street">
<div t-out="object.event_id.address_id.street or ''">Puerto Madero 9710</div>
<t t-set="location" t-value="object.event_id.address_id.street"/>
</t>
<t t-if="object.event_id.address_id.street2">
<div t-out="object.event_id.address_id.street2 or ''">Of A15, Santiago (RM)</div>
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.street2)"/>
</t>
<div>
<t t-if="object.event_id.address_id.city">
<t t-out="object.event_id.address_id.city or ''">Pudahuel</t>,
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.city)"/>
</t>
<t t-if="object.event_id.address_id.state_id.name">
<t t-out="object.event_id.address_id.state_id.name or ''">C1</t>,
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.state_id.name)"/>
</t>
<t t-if="object.event_id.address_id.zip">
<t t-out="object.event_id.address_id.zip or ''">98450</t>
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.zip)"/>
</t>
</div>
<t t-if="object.event_id.address_id.country_id.name">
<div t-out="object.event_id.address_id.country_id.name or ''">Argentina</div>
<t t-set="location" t-value="'%s, %s' % (location, object.event_id.address_id.country_id.name)"/>
</t>
</t>
</td>
</tr>
</table>
</td></tr>
<tr><td style="text-align:center;">
<t t-if="event_organizer">
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
</t>
</td></tr>
<tr><td valign="top" style="font-size: 14px;">
<!-- CONTACT ORGANIZER -->
<t t-if="event_organizer">
<div>
<span style="font-weight:300;margin:10px 0px">Questions about this event?</span>
<div>Please contact the organizer:</div>
<ul>
<li t-out="event_organizer.name or ''">YourCompany</li>
<t t-if="event_organizer.email">
<li>Mail: <a t-attf-href="mailto:{{ event_organizer.email }}" style="text-decoration:none;color:#875A7B;" t-out="event_organizer.email or ''"></a></li>
</t>
<t t-if="event_organizer.phone">
<li>Phone: <t t-out="event_organizer.phone or ''"></t></li>
</t>
</ul>
</div>
</t>
</td></tr>
<tr><td style="text-align:center;">
<!-- CONTACT ORGANIZER SEPARATION -->
<hr t-if="is_online or event_address" width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
</td></tr>
<tr><td valign="top" style="font-size: 14px;">
<!-- PWA MARKGETING -->
<div t-if="is_online">
<strong>Get the best mobile experience.</strong>
<a href="/event">Install our mobile app</a>
</div>
</td></tr>
<tr><td style="text-align:center;">
<!-- PWA MARKGETING SEPARATION-->
<hr t-if="is_online and event_address" width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
</td></tr>
<tr><td valign="top" style="font-size: 14px;">
<!-- GOOGLE MAPS LINK -->
<table t-if="event_address" style="width:100%;"><tr><td>
<div>
<i class="fa fa-map-marker"/>
<a t-attf-href="https://maps.google.com/maps?q={{ location }}" target="new">
See location on Google Maps
</a>
</div>
</td></tr></table>
</td></tr>
</table>
</td>
</tr>
</tbody>
</table>
</td></tr>
<!-- FOOTER BY -->
<tr><td align="center" style="min-width: 590px;">
<table t-if="object.company_id" width="590" border="0" cellpadding="0" cellspacing="0" style="min-width: 590px; background-color: #F1F1F1; color: #454748; padding: 8px; border-collapse:separate;">
<tr><td style="text-align: center; font-size: 14px;">
Sent by <a target="_blank" t-attf-href="{{ object.company_id.website }}" style="color: #875A7B;" t-out="object.company_id.name or ''">YourCompany</a>
<t t-if="'website_url' in object.event_id and object.event_id.website_url">
<br />
Discover <a href="/event" style="color:#875A7B;">all our events</a>.
</t>
</td></tr>
</table>
</td></tr>
</table>
</field>
<field name="lang">{{ object.partner_id.lang }}</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,88 @@
<?xml version="1.0"?>
<odoo><data>
<!-- LOCATIONS -->
<record id="res_partner_location_0" model="res.partner">
<field name="name">Reno Airfield</field>
<field name="is_company">1</field>
<field name="street">1235 Columbia Hill Rd</field>
<field name="city">Reno</field>
<field name="state_id" ref='base.state_us_23'/>
<field name="zip">89508</field>
<field name="country_id" ref="base.us"/>
</record>
<record id="res_partner_location_1" model="res.partner">
<field name="name">Wembley Stadium</field>
<field name="is_company">1</field>
<field name="street">Wembley HA9 0WS</field>
<field name="city">London</field>
<field name="state_id" ref='base.state_uk117'/>
<field name="country_id" ref="base.uk"/>
</record>
<record id="res_partner_location_2" model="res.partner">
<field name="name">Los Angeles Convention Center</field>
<field name="is_company">1</field>
<field name="street">1201 S Figueroa St</field>
<field name="city">Los Angeles</field>
<field name="state_id" ref='base.state_us_5'/>
<field name="zip">90015</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- SPONSORS / OTHER COUNTRIES -->
<record id="res_partner_event_1" model="res.partner">
<field name="name">Bloem GmbH</field>
<field name="is_company" eval="True"/>
<field name="image_1920" type="base64" file="event/static/src/img/partner_bloem.png"/>
<field name="street">Behrenstraße 55</field>
<field name="zip">10117</field>
<field name="city">Berlin</field>
<field name="country_id" ref="base.de"/>
<field name="phone">+49 30 12345678</field>
<field name="mobile">+49 30 87654321</field>
<field name="email">flower@example.com</field>
<field name="website">www.flower.example.com</field>
</record>
<record id="res_partner_event_2" model="res.partner">
<field name="name">OpenWood</field>
<field name="is_company" eval="True"/>
<field name="image_1920" type="base64" file="event/static/src/img/partner_open_wood.png"/>
<field name="street">Orval 1</field>
<field name="zip">6823</field>
<field name="city">Florenville</field>
<field name="country_id" ref="base.be"/>
<field name="phone">+32 987 65 43 21</field>
<field name="mobile">+32 987 65 43 21</field>
<field name="email">wow@example.com</field>
<field name="website">www.openwood.example.com</field>
</record>
<record id="res_partner_event_3" model="res.partner">
<field name="name">Tree Dealers SP</field>
<field name="is_company" eval="True"/>
<field name="image_1920" type="base64" file="event/static/src/img/partner_tree_dealers.png"/>
<field name="street">Place d'Youville, 995</field>
<field name="zip">QC G1R 3P1</field>
<field name="city">Ville de Quebec</field>
<field name="country_id" ref="base.ca"/>
<field name="phone">+1 418 123 4567</field>
<field name="mobile">+1 418 765 4321</field>
<field name="email">tree@example.com</field>
<field name="website">www.tree.example.com</field>
</record>
<record id="res_partner_event_4" model="res.partner">
<field name="name">Shangai Pterocarpus Furniture Co., Ltd.</field>
<field name="is_company" eval="True"/>
<field name="image_1920" type="base64" file="event/static/src/img/partner_pterocarpus.png"/>
<field name="street">68 Taicang Rd, Shi Men Er Lu Jie Dao, Huangpu Qu</field>
<field name="zip">200000</field>
<field name="city">Shanghai Shi</field>
<field name="country_id" ref="base.cn"/>
<field name="phone">+86 21 1234 5678</field>
<field name="mobile">+86 21 8765 4321</field>
<field name="email">ptero@example.com</field>
<field name="website">www.pterocarpus.example.com</field>
</record>
</data></odoo>

View file

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<odoo>
<record id="base.user_demo" model="res.users">
<field name="groups_id" eval="[(4, ref('event.group_event_user'))]"/>
</record>
</odoo>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more