summaryrefslogtreecommitdiff
path: root/addons/event/controllers
diff options
context:
space:
mode:
authorRomainLibert <rli@odoo.com>2018-06-12 11:30:02 +0000
committerRomainLibert <rli@odoo.com>2018-12-17 11:46:48 +0000
commita03faab03fdf8a164c2f1298cc138b3fa83b0bea (patch)
treeb62bc7a1dedb4756ee19103199084adf2c9d3734 /addons/event/controllers
parent496920a8f5691b7654b83453f9dd855af8a3c504 (diff)
[IMP] event, website_event: Make ics file generation available in event
Ics file generation should be possible even when only event is installed as it is a basic feature of events. Moreover we need to be able to generate such files in order to replace the old outlook api used in the event templates, api which is not supported anymore. We decided to use ics files because it is supported by most calendar schedulers hence working with outlook. Linked to task #1853063 closes odoo/odoo#28477
Diffstat (limited to 'addons/event/controllers')
-rw-r--r--addons/event/controllers/__init__.py4
-rw-r--r--addons/event/controllers/main.py23
2 files changed, 27 insertions, 0 deletions
diff --git a/addons/event/controllers/__init__.py b/addons/event/controllers/__init__.py
new file mode 100644
index 00000000000..5d4b25db9c0
--- /dev/null
+++ b/addons/event/controllers/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import main
diff --git a/addons/event/controllers/main.py b/addons/event/controllers/main.py
new file mode 100644
index 00000000000..481fc5f27ba
--- /dev/null
+++ b/addons/event/controllers/main.py
@@ -0,0 +1,23 @@
+# -*- 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", "[('state', 'in', ('confirm', 'done'))]"):event>/ics'''], type='http', auth="public")
+ def event_ics_file(self, event):
+ if not event or not event.registration_ids:
+ return request.not_found()
+ 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))
+ ])