[IMP] event_*: allow Event Users to manage the events from website

Purpose
=======

Before, the Event Manager could make some action on the frontend size,
like joining full meeting room, see unpublished track...

Now, the Event User has more permissions and can create Event, Track...

So, we want also to change the logic on the frontend side and allow him
to do the same actions as the Event Manager.

Task ID-2204364
COM odoo/odoo#57022
ENT odoo/enterprise#13984
UPG odoo/upgrade#1897
This commit is contained in:
std-odoo
2021-04-02 13:44:07 +00:00
committed by Thibault Delavallée
parent fc459bb908
commit a48f5a3736
13 changed files with 30 additions and 30 deletions
@@ -104,7 +104,7 @@ class ExhibitorController(WebsiteEventController):
'sponsor_countries': sponsor_countries,
# environment
'hostname': request.httprequest.host.split(':')[0],
'user_event_manager': request.env.user.has_group('event.group_event_manager'),
'is_event_user': request.env.user.has_group('event.group_event_user'),
}
# ------------------------------------------------------------
@@ -158,10 +158,10 @@ class ExhibitorController(WebsiteEventController):
'sponsors_other': sponsors_other[:30],
# options
'option_widescreen': option_widescreen,
'option_can_edit': request.env.user.has_group('event.group_event_manager'),
'option_can_edit': request.env.user.has_group('event.group_event_user'),
# environment
'hostname': request.httprequest.host.split(':')[0],
'user_event_manager': request.env.user.has_group('event.group_event_manager'),
'is_event_user': request.env.user.has_group('event.group_event_user'),
}
# ------------------------------------------------------------
@@ -162,7 +162,7 @@
t-att-data-sponsor-id="sponsor.id"
t-att-data-event-is-ongoing="sponsor.event_id.is_ongoing"
t-att-data-sponsor-is-ongoing="sponsor.is_in_opening_hours"
t-att-data-user-event-manager="user_event_manager">
t-att-data-user-event-manager="is_event_user">
<div t-if="sponsor_image_url" class="card-img-top position-static o_wesponsor_bg_image"
t-attf-style="padding-top: 50%; background-image: url(#{sponsor_image_url});">
<small t-if="not sponsor.is_published" class="o_wesponsor_card_header_badge bg-danger">
@@ -170,7 +170,7 @@
</small>
<div class="o_wesponsor_connect_button">
<a href="#" class="btn btn-primary h3">
<t t-if="not user_event_manager and not sponsor.event_id.is_ongoing and not event.is_participating">
<t t-if="not is_event_user and not sponsor.event_id.is_ongoing and not event.is_participating">
Register
</t>
<t t-elif="sponsor.exhibitor_type == 'online'">Connect</t>
@@ -190,7 +190,7 @@
</small>
<div class="o_wesponsor_connect_button">
<a href="#" class="btn btn-primary h3">
<t t-if="not user_event_manager and not sponsor.event_id.is_ongoing and not event.is_participating">
<t t-if="not is_event_user and not sponsor.event_id.is_ongoing and not event.is_participating">
Register
</t>
<t t-else="">Connect</t>
@@ -51,8 +51,8 @@ class WebsiteEventMeetController(EventCommunityController):
meeting_rooms = request.env['event.meeting.room'].sudo().search(search_domain)
meeting_rooms = meeting_rooms.sorted(self._sort_event_rooms, reverse=True)
is_event_manager = request.env.user.has_group("event.group_event_manager")
if not is_event_manager:
is_event_user = request.env.user.has_group("event.group_event_user")
if not is_event_user:
meeting_rooms = meeting_rooms.filtered(lambda m: not m.room_is_full)
visitor = request.env['website.visitor']._get_visitor_from_request()
@@ -68,7 +68,7 @@ class WebsiteEventMeetController(EventCommunityController):
"default_lang_code": request.context.get('lang', request.env.user.lang),
"default_username": visitor.display_name if visitor else None,
# environment
"is_event_manager": is_event_manager,
"is_event_user": is_event_user,
}
@http.route("/event/<model('event.event'):event>/meeting_room_create",
@@ -155,5 +155,5 @@ class WebsiteEventMeetController(EventCommunityController):
'meeting_rooms_other': meeting_rooms_other,
# options
'option_widescreen': True,
'is_event_manager': request.env.user.has_group('event.group_event_manager'),
'is_event_user': request.env.user.has_group('event.group_event_manager'),
}
@@ -95,7 +95,7 @@
</div>
<!-- Action to do when clicking on the card -->
<t t-if="event.is_ongoing or is_event_manager">
<t t-if="event.is_ongoing or is_event_user">
<!--During the event or if event manager-->
<t t-set="meeting_room_href" t-value="'/event/' + slug(event) + '/meeting_room/' + slug(meeting_room)"/>
</t>
@@ -110,10 +110,10 @@
<t t-set="meeting_room_data_target" t-value="'#o_join_later_modal_%i' % meeting_room.id"/>
</t>
<a t-if="is_event_manager or not meeting_room.room_is_full"
<a t-if="is_event_user or not meeting_room.room_is_full"
t-att-data-meeting-room-id="meeting_room.id"
t-att-data-open-room="opened"
t-att-data-is-event-manager="int(is_event_manager)"
t-att-data-is-event-manager="int(is_event_user)"
t-attf-class="card o_wevent_meeting_room_card w-100 my-2 bg-light d-block text-decoration-none"
t-att-href="meeting_room_href"
t-att-data-toggle="meeting_room_data_toggle"
@@ -123,7 +123,7 @@
<div class="d-flex flex-column">
<div class="d-flex flex-row justify-content-between">
<h4 class="text-break mw-75 text-uppercase" t-esc="meeting_room.name"/>
<div t-if="is_event_manager" class="w-25">
<div t-if="is_event_user" class="w-25">
<div class="dropdown float-right dropleft">
<button class="btn py-0" data-toggle="dropdown"><h3 class="m-0">&#8942;</h3></button>
<div class="dropdown-menu">
@@ -163,7 +163,7 @@
<p>Want to create your own discussion room ?</p>
<a href="#" role="button"
class="btn btn-primary o_wevent_create_room_button"
t-if="event.is_ongoing or event.start_today or is_event_manager"
t-if="event.is_ongoing or event.start_today or is_event_user"
t-att-data-event-id="event.id"
t-att-data-default-lang-code="default_lang_code">
<span>Create a Room</span>
@@ -54,7 +54,7 @@
</t>
<!-- ROOM CONTENT -->
<div class="d-flex flex-column">
<div t-if="meeting_room.room_is_full and not is_event_manager" class="alert alert-warning text-center">
<div t-if="meeting_room.room_is_full and not is_event_user" class="alert alert-warning text-center">
<span>Oops! This room is full !</span><br />Come back later to have a chat with us!
</div>
<div t-else="" class="d-flex flex-column">
@@ -72,7 +72,7 @@
<t t-set="auto_open" t-value="1"/>
<t t-set="attach_to" t-value="'#o_wemeet_jitsi_iframe'"/>
<t t-set="max_capacity" t-value="meeting_room.room_max_capacity"/>
<t t-set="check_full" t-value="int(not is_event_manager)"/>
<t t-set="check_full" t-value="int(not is_event_user)"/>
<t t-set="default_username" t-value="default_username"/>
<t t-set="jitsi_server_domain" t-value="meeting_room.chat_room_id.jitsi_server_domain"/>
</t>
@@ -141,7 +141,7 @@ class EventTrackController(http.Controller):
# environment
'is_html_empty': is_html_empty,
'hostname': request.httprequest.host.split(':')[0],
'user_event_manager': request.env.user.has_group('event.group_event_manager'),
'is_event_user': request.env.user.has_group('event.group_event_user'),
}
# ------------------------------------------------------------
@@ -155,7 +155,7 @@ class EventTrackController(http.Controller):
'event': event,
'main_object': event,
'tag': tag,
'user_event_manager': request.env.user.has_group('event.group_event_manager'),
'is_event_user': request.env.user.has_group('event.group_event_user'),
}
vals.update(self._prepare_calendar_values(event))
@@ -347,7 +347,7 @@ class EventTrackController(http.Controller):
# environment
'is_html_empty': is_html_empty,
'hostname': request.httprequest.host.split(':')[0],
'user_event_manager': request.env.user.has_group('event.group_event_manager'),
'is_event_user': request.env.user.has_group('event.group_event_user'),
}
@http.route("/event/track/toggle_reminder", type="json", auth="public", website=True)
@@ -159,7 +159,7 @@
<small t-if="track.is_track_live and not track.is_track_done and track.website_published"
class="mx-1 badge badge-danger">Live
</small>
<small t-if="not track.website_published and user_event_manager and track.stage_id.is_accepted"
<small t-if="not track.website_published and is_event_user and track.stage_id.is_accepted"
title="Unpublished"
class="ml-1 badge badge-danger o_wevent_online_badge_unpublished">Unpublished</small>
<small t-if="not track.stage_id.is_accepted" title="Not Accepted"
@@ -174,9 +174,9 @@
</div>
<div class="o_we_agenda_card_content d-flex flex-column justify-content-center my-1">
<div t-att-class="'text-black' if track.website_published or user_event_manager else 'text-muted'"
<div t-att-class="'text-black' if track.website_published or is_event_user else 'text-muted'"
t-att-onclick="'window.location=\'/event/%s/track/%s\'' % (slug(event), slug(track))
if track.website_published or user_event_manager else ''">
if track.website_published or is_event_user else ''">
<span class="o_we_agenda_card_title text-bold" t-esc="track.name"/>
</div>
<div class="text-muted text-center">
@@ -210,7 +210,7 @@
</t>
</div>
<span class="h5 mb0">
<a t-if="track.is_published or user_event_manager"
<a t-if="track.is_published or is_event_user"
class="mr-2"
t-att-href="track.website_url">
<span t-field="track.name"/>
@@ -218,7 +218,7 @@
<t t-else="">
<span class="mr-2" t-field="track.name"/>
</t>
<span t-if="not track.is_published and user_event_manager"
<span t-if="not track.is_published and is_event_user"
class="badge badge-danger o_wevent_online_badge_unpublished">
Unpublished
</span>
@@ -175,7 +175,7 @@
<div class="tab-pane fade show active" id="track_list" role="tabpanel">
<ul class="list-unstyled mb-0">
<li t-foreach="tracks_other" t-as="track_other" class="w-100">
<a t-if="user_event_manager or track_other.is_published"
<a t-if="is_event_user or track_other.is_published"
class="d-block w-100 h-100 px-2 pt-2 pb-1 text-decoration-none"
t-att-href="track_other.website_url">
<t t-call="website_event_track.event_track_aside_other_track"/>
@@ -4,7 +4,7 @@
<template id="tracks_display_list" inherit_id="website_event_track.tracks_display_list">
<!-- TRACK LIST: ADD REPLAY TAG FOR FINISHED TRACKS -->
<xpath expr="//div[@t-foreach='tracks']//div[hasclass('col-md-7')]//span[@t-elif='not track.is_track_done and not track.is_track_soon']" position="after">
<a t-elif="track.youtube_video_url and (track.is_published or user_event_manager)"
<a t-elif="track.youtube_video_url and (track.is_published or is_event_user)"
t-att-href="track.website_url" class="badge badge-danger ml-2">Replay
</a>
</xpath>
@@ -41,7 +41,7 @@ var Quiz = publicWidget.Widget.extend({
completed: false,
isMember: false,
progressBar: false,
isManager: false
isEventUser: false
});
this.quiz = quizData || false;
if (this.quiz) {
@@ -55,7 +55,7 @@
</span>
</div>
<div class="flex-grow-1 text-right">
<button t-if="widget.track.isManager"
<button t-if="widget.track.isEventUser"
class="d-none d-md-inline-block btn btn-light border o_quiz_js_quiz_reset">
Reset
</button>
@@ -9,7 +9,7 @@
t-att-data-completed="1 if quiz_completed else 0"
t-att-data-quiz-attempts-count="quiz_attempts_count or 0"
t-att-data-quiz-points-gained="quiz_points"
t-att-data-is-manager="user_event_manager or 0">
t-att-data-is-event-user="is_event_user or 0">
<t t-foreach="track.quiz_id.question_ids" t-as="question">
<t t-call="website_event_track_quiz.quiz_question"/>
</t>