[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
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user