diff options
| author | RomainLibert <rli@odoo.com> | 2018-06-12 11:30:02 +0000 |
|---|---|---|
| committer | RomainLibert <rli@odoo.com> | 2018-12-17 11:46:48 +0000 |
| commit | a03faab03fdf8a164c2f1298cc138b3fa83b0bea (patch) | |
| tree | b62bc7a1dedb4756ee19103199084adf2c9d3734 /addons/event/controllers | |
| parent | 496920a8f5691b7654b83453f9dd855af8a3c504 (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__.py | 4 | ||||
| -rw-r--r-- | addons/event/controllers/main.py | 23 |
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)) + ]) |
