Skip to content

Commit 2c16712

Browse files
benj-filamentHugo-Trentesaux
authored andcommitted
[ADD] website_event_private: new module
1 parent 889a36d commit 2c16712

23 files changed

Lines changed: 955 additions & 0 deletions
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../../website_event_private
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import setuptools
2+
3+
setuptools.setup(
4+
setup_requires=['setuptools-odoo'],
5+
odoo_addon=True,
6+
)

website_event_private/README.rst

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
=====================
2+
Website Event Private
3+
=====================
4+
5+
..
6+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7+
!! This file is generated by oca-gen-addon-readme !!
8+
!! changes will be overwritten. !!
9+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10+
!! source digest: sha256:e2fa0df647bdf86e9ad2ca5b9877819b436963e805bc2b4de1237d0e104d109d
11+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12+
13+
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
14+
:target: https://odoo-community.org/page/development-status
15+
:alt: Beta
16+
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
17+
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
18+
:alt: License: AGPL-3
19+
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fevent-lightgray.png?logo=github
20+
:target: https://github.com/OCA/event/tree/16.0/website_event_private
21+
:alt: OCA/event
22+
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
23+
:target: https://translation.odoo-community.org/projects/event-16-0/event-16-0-website_event_private
24+
:alt: Translate me on Weblate
25+
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26+
:target: https://runboat.odoo-community.org/builds?repo=OCA/event&target_branch=16.0
27+
:alt: Try me on Runboat
28+
29+
|badge1| |badge2| |badge3| |badge4| |badge5|
30+
31+
This module allows you to configure the privacy of website events :
32+
33+
* *Public*: anyone can view the event and register
34+
* *Private displayed*: the event appears in the event list (but not clickable) and one needs access token to see content / register
35+
* *Private hidden*: the event does not appear in the list of events and one needs access token to see content / register
36+
37+
**Table of contents**
38+
39+
.. contents::
40+
:local:
41+
42+
Configuration
43+
=============
44+
45+
46+
To configure this module, you need to:
47+
48+
#. Go to an event and set the privacy option
49+
#. If you select private displayed or hidden, access token link will appear just after the privacy field
50+
51+
Usage
52+
=====
53+
54+
On private event record, you need to share the access link which is generated
55+
and accessible on backend event form to give access to the event.
56+
57+
Bug Tracker
58+
===========
59+
60+
Bugs are tracked on `GitHub Issues <https://github.com/OCA/event/issues>`_.
61+
In case of trouble, please check there if your issue has already been reported.
62+
If you spotted it first, help us to smash it by providing a detailed and welcomed
63+
`feedback <https://github.com/OCA/event/issues/new?body=module:%20website_event_private%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
64+
65+
Do not contact contributors directly about support or help with technical issues.
66+
67+
Credits
68+
=======
69+
70+
Authors
71+
~~~~~~~
72+
73+
* Le Filament
74+
75+
Contributors
76+
~~~~~~~~~~~~
77+
78+
* Juliana <JulianaPoudou>
79+
* Benjamin <benj-filament>
80+
81+
Other credits
82+
~~~~~~~~~~~~~
83+
84+
* Le Filament <https://www.le-filament.com>
85+
86+
Maintainers
87+
~~~~~~~~~~~
88+
89+
This module is maintained by the OCA.
90+
91+
.. image:: https://odoo-community.org/logo.png
92+
:alt: Odoo Community Association
93+
:target: https://odoo-community.org
94+
95+
OCA, or the Odoo Community Association, is a nonprofit organization whose
96+
mission is to support the collaborative development of Odoo features and
97+
promote its widespread use.
98+
99+
This module is part of the `OCA/event <https://github.com/OCA/event/tree/16.0/website_event_private>`_ project on GitHub.
100+
101+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

website_event_private/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import models
2+
from . import controllers
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "Website Event Private",
3+
"summary": "Website Event Private",
4+
"version": "16.0.1.0.0",
5+
"author": "Le Filament, Odoo Community Association (OCA)",
6+
"license": "AGPL-3",
7+
"website": "https://github.com/OCA/event",
8+
"application": False,
9+
"category": "Marketing",
10+
"depends": ["website_event"],
11+
"data": [
12+
"templates/event_templates_list.xml",
13+
"views/event_views.xml",
14+
"views/event_type_views.xml",
15+
],
16+
"assets": {
17+
"web.assets_frontend": [
18+
"website_event_private/static/src/scss/website_event_private.scss",
19+
],
20+
},
21+
"installable": True,
22+
"auto_install": False,
23+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import main
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Copyright 2023- Le Filament (https://le-filament.com)
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from odoo import http
5+
from odoo.http import request
6+
7+
from odoo.addons.website_event.controllers.main import WebsiteEventController
8+
9+
10+
class WebsiteEvent(WebsiteEventController):
11+
# ------------------------------------------------------
12+
# Inherit parent routes
13+
# ------------------------------------------------------
14+
@http.route()
15+
def event_page(self, event, page, **post):
16+
if not self._check_privacy(event, **post):
17+
return request.redirect("/event")
18+
19+
return super(WebsiteEvent, self).event_page(event, page, **post)
20+
21+
@http.route()
22+
def event(self, event, **post):
23+
if not self._check_privacy(event, **post):
24+
return request.redirect("/event")
25+
26+
return super(WebsiteEvent, self).event(event, **post)
27+
28+
@http.route()
29+
def event_register(self, event, **post):
30+
if not self._check_privacy(event, **post):
31+
return request.redirect("/event")
32+
33+
return super(WebsiteEvent, self).event_register(event, **post)
34+
35+
# ------------------------------------------------------
36+
# Business method
37+
# ------------------------------------------------------
38+
def _check_privacy(self, event, **post):
39+
if event.event_privacy != "public" and not request.env.user.has_group(
40+
"website.group_website_restricted_editor"
41+
):
42+
cookie = request.httprequest.cookies.get("odoo-event-%d" % event.id)
43+
if (
44+
post
45+
and post.get("access_token")
46+
and post.get("access_token") == event.access_token
47+
):
48+
access_token = post.get("access_token")
49+
request.future_response.set_cookie(
50+
key="odoo-event-%d" % event.id,
51+
value=access_token,
52+
max_age=10 * 86400,
53+
secure=True,
54+
httponly=True,
55+
samesite="Strict",
56+
)
57+
return True
58+
elif cookie and cookie == event.access_token:
59+
return True
60+
else:
61+
return False
62+
return True

website_event_private/i18n/fr.po

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Translation of Odoo Server.
2+
# This file contains the translation of the following modules:
3+
# * website_event_private
4+
#
5+
msgid ""
6+
msgstr ""
7+
"Project-Id-Version: Odoo Server 16.0\n"
8+
"Report-Msgid-Bugs-To: \n"
9+
"POT-Creation-Date: 2024-08-14 13:05+0000\n"
10+
"PO-Revision-Date: 2024-08-14 13:05+0000\n"
11+
"Last-Translator: \n"
12+
"Language-Team: \n"
13+
"MIME-Version: 1.0\n"
14+
"Content-Type: text/plain; charset=UTF-8\n"
15+
"Content-Transfer-Encoding: \n"
16+
"Plural-Forms: \n"
17+
18+
#. module: website_event_private
19+
#: model_terms:ir.ui.view,arch_db:website_event_private.events_private_list
20+
msgid "<i class=\"fa fa-user-secret me-2\"/>Private"
21+
msgstr "<i class=\"fa fa-user-secret me-2\"/>Privé"
22+
23+
#. module: website_event_private
24+
#: model:ir.model,name:website_event_private.model_event_event
25+
msgid "Event"
26+
msgstr "Évènement"
27+
28+
#. module: website_event_private
29+
#: model:ir.model,name:website_event_private.model_event_type
30+
msgid "Event Template"
31+
msgstr "Modèle d'événement"
32+
33+
#. module: website_event_private
34+
#: model:ir.model.fields,field_description:website_event_private.field_event_event__event_share_link
35+
msgid "Event link"
36+
msgstr "Lien d'accès à l'évènement"
37+
38+
#. module: website_event_private
39+
#: model:ir.model.fields,field_description:website_event_private.field_event_event__event_privacy
40+
#: model:ir.model.fields,field_description:website_event_private.field_event_type__event_privacy
41+
msgid "Event privacy"
42+
msgstr "Confidentialité de l'évènement"
43+
44+
#. module: website_event_private
45+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_event__event_privacy__private_displayed
46+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_type__event_privacy__private_displayed
47+
msgid "Private displayed"
48+
msgstr "Privé mais listé"
49+
50+
#. module: website_event_private
51+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_event__event_privacy__private_hidden
52+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_type__event_privacy__private_hidden
53+
msgid "Private hidden"
54+
msgstr "Privé et non listé"
55+
56+
#. module: website_event_private
57+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_event__event_privacy__public
58+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_type__event_privacy__public
59+
msgid "Public"
60+
msgstr ""
61+
62+
#. module: website_event_private
63+
#: model:ir.model.fields,field_description:website_event_private.field_event_event__access_token
64+
msgid "Security Token"
65+
msgstr "Jeton de sécurité"
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Translation of Odoo Server.
2+
# This file contains the translation of the following modules:
3+
# * website_event_private
4+
#
5+
msgid ""
6+
msgstr ""
7+
"Project-Id-Version: Odoo Server 16.0\n"
8+
"Report-Msgid-Bugs-To: \n"
9+
"POT-Creation-Date: 2024-08-14 13:05+0000\n"
10+
"PO-Revision-Date: 2024-08-14 13:05+0000\n"
11+
"Last-Translator: \n"
12+
"Language-Team: \n"
13+
"MIME-Version: 1.0\n"
14+
"Content-Type: text/plain; charset=UTF-8\n"
15+
"Content-Transfer-Encoding: \n"
16+
"Plural-Forms: \n"
17+
18+
#. module: website_event_private
19+
#: model_terms:ir.ui.view,arch_db:website_event_private.events_private_list
20+
msgid "<i class=\"fa fa-user-secret me-2\"/>Private"
21+
msgstr ""
22+
23+
#. module: website_event_private
24+
#: model:ir.model,name:website_event_private.model_event_event
25+
msgid "Event"
26+
msgstr ""
27+
28+
#. module: website_event_private
29+
#: model:ir.model,name:website_event_private.model_event_type
30+
msgid "Event Template"
31+
msgstr ""
32+
33+
#. module: website_event_private
34+
#: model:ir.model.fields,field_description:website_event_private.field_event_event__event_share_link
35+
msgid "Event link"
36+
msgstr ""
37+
38+
#. module: website_event_private
39+
#: model:ir.model.fields,field_description:website_event_private.field_event_event__event_privacy
40+
#: model:ir.model.fields,field_description:website_event_private.field_event_type__event_privacy
41+
msgid "Event privacy"
42+
msgstr ""
43+
44+
#. module: website_event_private
45+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_event__event_privacy__private_displayed
46+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_type__event_privacy__private_displayed
47+
msgid "Private displayed"
48+
msgstr ""
49+
50+
#. module: website_event_private
51+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_event__event_privacy__private_hidden
52+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_type__event_privacy__private_hidden
53+
msgid "Private hidden"
54+
msgstr ""
55+
56+
#. module: website_event_private
57+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_event__event_privacy__public
58+
#: model:ir.model.fields.selection,name:website_event_private.selection__event_type__event_privacy__public
59+
msgid "Public"
60+
msgstr ""
61+
62+
#. module: website_event_private
63+
#: model:ir.model.fields,field_description:website_event_private.field_event_event__access_token
64+
msgid "Security Token"
65+
msgstr ""
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import event_type
2+
from . import event_event

0 commit comments

Comments
 (0)