diff options
| author | ryv-odoo <ryv@odoo.com> | 2019-11-26 13:36:10 +0000 |
|---|---|---|
| committer | Patrick Hoste <pko@odoo.com> | 2020-02-04 14:48:31 +0000 |
| commit | 67c090e48a8b6bd418998198d9672efe079fbc73 (patch) | |
| tree | 57be59df95aafd2e90207d2183e32616c685fd82 | |
| parent | cec6c77a0b1f1fe6b04dd88a71861390f22e7a8d (diff) | |
[IMP] website_event_track: improve track proposal
PURPOSE
- When creating a talk proposal, the spaces and carriage return were ignored
- Track name change from "Location" into "Room"
- Remove link between image/biography and the related partner and allow the
user to add one when submitting a track proposal.
SPECIFICATION
- Adds the plaintext2html requirement to the controller.
- Adds an input to upload an image on a track proposal.
Task ID : 2093336
PR : #43420
4 files changed, 28 insertions, 18 deletions
diff --git a/addons/website_event_track/controllers/main.py b/addons/website_event_track/controllers/main.py index 747ec271c86..95c7a909959 100644 --- a/addons/website_event_track/controllers/main.py +++ b/addons/website_event_track/controllers/main.py @@ -6,11 +6,12 @@ import babel.dates import collections import datetime import pytz +import base64 from werkzeug.exceptions import NotFound from odoo import fields, http from odoo.http import request -from odoo.tools import html_escape as escape, html2plaintext +from odoo.tools import plaintext2html, html2plaintext class WebsiteEventTrackController(http.Controller): @@ -93,6 +94,7 @@ class WebsiteEventTrackController(http.Controller): return request.render("website_event_track.agenda", { 'event': event, + 'main_object': event, 'days': days, 'tracks_by_days': tracks_by_days, 'tag': tag @@ -129,7 +131,7 @@ class WebsiteEventTrackController(http.Controller): if not event.can_access_from_current_website(): raise NotFound() - return request.render("website_event_track.event_track_proposal", {'event': event}) + return request.render("website_event_track.event_track_proposal", {'event': event, 'main_object': event}) @http.route(['''/event/<model("event.event"):event>/track_proposal/post'''], type='http', auth="public", methods=['POST'], website=True) def event_track_proposal_post(self, event, **post): @@ -146,11 +148,12 @@ class WebsiteEventTrackController(http.Controller): 'partner_name': post['partner_name'], 'partner_email': post['email_from'], 'partner_phone': post['phone'], - 'partner_biography': escape(post['biography']), + 'partner_biography': plaintext2html(post['biography']), 'event_id': event.id, 'tag_ids': [(6, 0, tags)], 'user_id': False, - 'description': escape(post['description']) + 'description': plaintext2html(post['description']), + 'image': base64.b64encode(post['image'].read()) if post.get('image') else False }) if request.env.user != request.website.user_id: track.sudo().message_subscribe(partner_ids=request.env.user.partner_id.ids) diff --git a/addons/website_event_track/models/event_track.py b/addons/website_event_track/models/event_track.py index 7d7b20a72be..870d57c4cd9 100644 --- a/addons/website_event_track/models/event_track.py +++ b/addons/website_event_track/models/event_track.py @@ -66,14 +66,14 @@ class Track(models.Model): date = fields.Datetime('Track Date') date_end = fields.Datetime('Track End Date', compute='_compute_end_date', store=True) duration = fields.Float('Duration', default=1.5, help="Track duration in hours.") - location_id = fields.Many2one('event.track.location', 'Room') + location_id = fields.Many2one('event.track.location', 'Location') event_id = fields.Many2one('event.event', 'Event', required=True) color = fields.Integer('Color', related="stage_id.color") priority = fields.Selection([ ('0', 'Low'), ('1', 'Medium'), ('2', 'High'), ('3', 'Highest')], 'Priority', required=True, default='1') - image = fields.Image("Image", related='partner_id.image_128', store=True, readonly=False) + image = fields.Image("Image", max_width=128, max_height=128) @api.depends('name') def _compute_website_url(self): @@ -88,7 +88,6 @@ class Track(models.Model): self.partner_name = self.partner_id.name self.partner_email = self.partner_id.email self.partner_phone = self.partner_id.phone - self.partner_biography = self.partner_id.website_description @api.depends('date', 'duration') def _compute_end_date(self): diff --git a/addons/website_event_track/views/event_track_templates.xml b/addons/website_event_track/views/event_track_templates.xml index a40ba933c53..eabbd1dfe9c 100644 --- a/addons/website_event_track/views/event_track_templates.xml +++ b/addons/website_event_track/views/event_track_templates.xml @@ -222,7 +222,8 @@ <div t-field="track.partner_biography"/> <div t-if="track.partner_id" class="row mt32"> <div class="col-md-2"> - <span t-field="track.partner_id.sudo().image_128" t-options='{"widget": "image", "class": "rounded-circle"}'/> + <span t-if="track.image" t-field="track.image" t-options="{'widget': 'image', 'class': 'rounded-circle'}"/> + <span t-else="" t-field="track.partner_id.sudo().image_128" t-options='{"widget": "image", "class": "rounded-circle"}'/> </div> <div class="col-md-10"> <h4 t-field="track.partner_id.name" class="mb4"/> @@ -338,7 +339,7 @@ <div class="form-group row"> <label class="col-lg-3 col-md-4 col-form-label" for="description">Talk Introduction</label> <div class="col-lg-7 col-md-8"> - <textarea class="form-control" name="description" style="min-height: 120px"/> + <textarea class="form-control" name="description"/> </div> </div> <div class="form-group row" t-if="len(event.allowed_track_tag_ids)"> @@ -376,6 +377,12 @@ <textarea class="form-control" name="biography" rows="5"/> </div> </div> + <div class="form-group row"> + <label class="col-lg-3 col-md-4 col-form-label" for="image">Speaker(s) Picture</label> + <div class="col-lg-7 col-md-8"> + <input name="image" type="file" accept="image/*"/> + </div> + </div> <div class="form-group row o_form_buttons"> <div class="offset-lg-3 offset-md-4 col-md-8 col-lg-7"> <button type="submit" class="btn btn-primary">Submit Proposal</button> @@ -441,8 +448,8 @@ <li><b>Proposed By</b>: <t t-esc="track.partner_name or track.partner_email"/></li> <li><b>Mail</b>: <a t-attf-href="mailto:#{track.partner_email}"><t t-esc="track.partner_email"/></a></li> <li><b>Phone</b>: <t t-esc="track.partner_phone"/></li> - <li><b>Speakers Biography</b>: <t t-esc="track.partner_biography"/></li> - <li><b>Talk Introduction</b>: <t t-esc="track.description"/></li> + <li><b>Speakers Biography</b>: <div t-field="track.partner_biography"/></li> + <li><b>Talk Introduction</b>: <div t-field="track.description"/></li> </ul> </template> diff --git a/addons/website_event_track/views/event_track_views.xml b/addons/website_event_track/views/event_track_views.xml index aff706c133e..a9e13eeef2d 100644 --- a/addons/website_event_track/views/event_track_views.xml +++ b/addons/website_event_track/views/event_track_views.xml @@ -99,7 +99,7 @@ <filter string="Stage" name="stage" context="{'group_by': 'stage_id'}"/> <filter string="Date" name="date" context="{'group_by': 'date'}"/> <filter string="Event" name="event" context="{'group_by': 'event_id'}"/> - <filter string="Room" name="location" context="{'group_by': 'location_id'}"/> + <filter string="Location" name="location" context="{'group_by': 'location_id'}"/> </group> </search> </field> @@ -118,8 +118,9 @@ <field name="website_url" invisible="1"/> <field name="is_published" widget="website_redirect_button"/> </div> - <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/> - <field name="kanban_state" widget="state_selection"/> + <widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/> + <field name="kanban_state" widget="state_selection" class="ml-3"/> + <field name="image" widget="image" class="oe_avatar"/> <div class="oe_title"> <label for="name" class="oe_edit_only"/> <h1> @@ -201,7 +202,7 @@ <p class="o_view_nocontent_smiling_face"> Add a new track </p><p> - Tracks define the schedule of your event. These can be a talk, a round table, a meeting, etc. + Tracks define the schedule of your event.<br/>These can be a talk, a round table, a meeting, etc. </p> </field> </record> @@ -215,14 +216,14 @@ <p class="o_view_nocontent_smiling_face"> Add a new track </p><p> - Tracks define the schedule of your event. These can be a talk, a round table, a meeting, etc. + Tracks define the schedule of your event.<br/>These can be a talk, a round table, a meeting, etc. </p> </field> </record> <menuitem id="menu_event_track" - name="Event Tracks" + name="Tracks" action="action_event_track" parent="event.event_main_menu" groups="base.group_no_one"/> @@ -232,7 +233,7 @@ <field name="name">Event Locations</field> <field name="model">event.track.location</field> <field name="arch" type="xml"> - <form string="Event Location"> + <form string="Event Locations"> <sheet> <group> <field name="name"/> |
