From f7a72d29c8daa9a93b9941343efe1c62747ce7cd Mon Sep 17 00:00:00 2001 From: Olivier Sarrat Date: Mon, 12 Dec 2016 13:21:15 +0100 Subject: [PATCH] Thunderbird/ics sharing & French translations Last commit to end first complete version of the module. --- groupeurd_calendar/__openerp__.py | 14 +++--- groupeurd_calendar/controllers.py | 37 ++++++++------- groupeurd_calendar/i18n/fr.po | 79 ++++++++++++++++++++++++++++++- groupeurd_calendar/models.py | 10 ++++ 4 files changed, 113 insertions(+), 27 deletions(-) diff --git a/groupeurd_calendar/__openerp__.py b/groupeurd_calendar/__openerp__.py index b279f47..fd3cacf 100644 --- a/groupeurd_calendar/__openerp__.py +++ b/groupeurd_calendar/__openerp__.py @@ -3,22 +3,20 @@ 'name': "groupeurd_calendar", 'summary': """ - Adaptation du module "smile_event_event_calendar" pour les besoins spécifiques du Groupe URD.""", + Adaptation des modules "smile_event_event_calendar" & "calendar_ics" pour les besoins spécifiques du Groupe URD.""", 'description': """ - nouveau champ "équipe" dans évènement public pour le faire apparaître dans les calendriers de tous ses organisateurs/formateurs - - calendrier unique par salarié avec évènements personnels, évènements communs, et à terme évènements à inscription publique - => synchroniser les évènements publics dans le calendrier personnel du responsable et des organisateurs/formateurs de l'évènement (ces évènements publics ne seront pas modifiables depuis les agendas personnels) + - calendrier unique par salarié avec évènements personnels, évènements communs, et évènements publics (synchroniser les évènements publics dans le calendrier personnel du responsable et des organisateurs/formateurs de l'évènement (ces évènements publics ne seront pas modifiables depuis les agendas personnels) - visibilité des calendriers de tous les autres salariés - accès à des vues personnalisées : planning de tous les salariés par semaine, planning de tous les salariés par mois - synchro bi-directionnelle avec Thunderbird - - [optionnel] partage .ics des calendriers + - partage .ics des calendriers INSTALLATION - Lors de l'installation, modifier le Filtre de domaine de la règle "Hide Private Meetings" à la valeur suivante - ['|',('user_id','=',user.id),'|',('show_as','=','busy'),('show_as','=','free')] - => cela permet d'afficher les évènements (calendar.event) qui sont de type disponibles + - Lors de l'installation, modifier le Filtre de domaine de la règle "Hide Private Meetings" à la valeur suivante ['|',('user_id','=',user.id),'|',('show_as','=','busy'),('show_as','=','free')] (cela permet d'afficher les évènements (calendar.event) qui sont de type disponibles) + - Attention, le partage ics de calendrier et la synchro Thunderbird ne fonctionneront que sur une instance Odoo mono-base """, 'author': "Groupe URD", @@ -31,7 +29,7 @@ 'version': '0.1', # any module necessary for this one to work correctly - 'depends': ['smile_event_event_calendar'], + 'depends': ['smile_event_event_calendar', 'calendar_ics'], # always loaded 'data': [ diff --git a/groupeurd_calendar/controllers.py b/groupeurd_calendar/controllers.py index 83fe661..99d8ff9 100644 --- a/groupeurd_calendar/controllers.py +++ b/groupeurd_calendar/controllers.py @@ -1,20 +1,23 @@ # -*- coding: utf-8 -*- from openerp import http +from openerp.http import request -# class GroupeurdCalendar(http.Controller): -# @http.route('/groupeurd_calendar/groupeurd_calendar/', auth='public') -# def index(self, **kw): -# return "Hello, world" - -# @http.route('/groupeurd_calendar/groupeurd_calendar/objects/', auth='public') -# def list(self, **kw): -# return http.request.render('groupeurd_calendar.listing', { -# 'root': '/groupeurd_calendar/groupeurd_calendar', -# 'objects': http.request.env['groupeurd_calendar.groupeurd_calendar'].search([]), -# }) - -# @http.route('/groupeurd_calendar/groupeurd_calendar/objects//', auth='public') -# def object(self, obj, **kw): -# return http.request.render('groupeurd_calendar.object', { -# 'object': obj -# }) \ No newline at end of file +class res_partner_icalendar(http.Controller): + @http.route(['/calendar-ics//public.ics'], auth="public") + def icalendar_public(self, partner_id, **post): + #pdb.set_trace() + + partner = http.request.env['res.partner'].sudo().search([('id','=',partner_id)]) + if partner: + document = partner.sudo().get_ics_calendar(type='public') + return request.make_response( + document, + headers=[ + ('Content-Disposition', 'attachment; filename="public.ics"'), + ('Content-Type', 'text/calendar'), + ('Content-Length', len(document)), + ] + ) + else: + raise Warning("Public failed") + pass # Some error page \ No newline at end of file diff --git a/groupeurd_calendar/i18n/fr.po b/groupeurd_calendar/i18n/fr.po index ef710a5..311a119 100644 --- a/groupeurd_calendar/i18n/fr.po +++ b/groupeurd_calendar/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-14 13:54+0000\n" -"PO-Revision-Date: 2016-11-14 13:54+0000\n" +"POT-Creation-Date: 2016-12-12 11:53+0000\n" +"PO-Revision-Date: 2016-12-12 11:53+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -26,8 +26,83 @@ msgstr "Évènement" msgid "Event team members" msgstr "Equipe de l'évènement" +#. module: groupeurd_calendar +#: model:ir.model,name:groupeurd_calendar.model_res_partner +msgid "Partner" +msgstr "Partenaire" + #. module: groupeurd_calendar #: view:calendar.event:groupeurd_calendar.revised_calendar_event_form msgid "{\"readonly\":[('event_event_id','!=',False)]}" msgstr "{\"readonly\":[('event_event_id','!=',False)]}" + +#. module: smile_event_event_calendar +#: field:calendar.event,event_event_id:0 +#: model:ir.model,name:smile_event_event_calendar.model_calendar_event +#: model:ir.model,name:smile_event_event_calendar.model_event_event +msgid "Event" +msgstr "Évènement public" + +#. module: smile_event_event_calendar +#: code:addons/smile_event_event_calendar/models/calendar_event.py:35 +#, python-format +msgid "You cannot change event value if is already assign" +msgstr "Vous ne pouvez pas changerla valeur d'un évènement s'il est déjà assigné" + +#. module: smile_event_event_calendar +#: code:addons/smile_event_event_calendar/models/calendar_event.py:42 +#, python-format +msgid "You cannot remove start or stop date if one of the current record have and event" +msgstr "Vous ne pouvez pas supprimer la date de début ou fin s'il l'un des éléments courants a un évènement" + + +#. module: event +#: view:event.registration:event.view_registration_search +#: field:event.registration,event_id:0 +#: model:ir.model,name:event.model_event_event +#: view:report.event.registration:event.view_report_event_registration_search +#: field:report.event.registration,event_id:0 +msgid "Event" +msgstr "Évènement public" + + +#. module: event +#: view:event.event:event.view_event_tree +msgid "Event Category" +msgstr "Catégorie d'évènement public" + + + +#. module: event +#: field:event.registration,event_begin_date:0 +msgid "Event Start Date" +msgstr "Date de début de l'évènement" + + +#. module: event +#: view:event.event:event.view_event_form +#: view:event.event:event.view_event_search +#: view:event.event:event.view_event_tree +#: model:ir.actions.act_window,name:event.action_event_view +#: model:ir.module.category,name:event.module_category_event_management +#: model:ir.ui.menu,name:event.event_configuration +#: model:ir.ui.menu,name:event.event_main_menu +#: model:ir.ui.menu,name:event.menu_event_event +#: model:ir.ui.menu,name:event.menu_reporting_events +msgid "Events" +msgstr "Évènements publics" + + +#. module: event +#: view:event.event:event.view_event_search +#: view:report.event.registration:event.view_report_event_registration_search +msgid "My Events" +msgstr "Mes évènements publics" + + +#. module: event +#: field:report.event.registration,nbevent:0 +msgid "Number of Events" +msgstr "Nombre d'événements publics" + diff --git a/groupeurd_calendar/models.py b/groupeurd_calendar/models.py index 30f0ce2..1667ce8 100644 --- a/groupeurd_calendar/models.py +++ b/groupeurd_calendar/models.py @@ -85,3 +85,13 @@ class CalendarEvent(models.Model): return res + + +#Overrides calendar_ics "res_partner" override to have our custom URL +class res_partner(models.Model): + _inherit = "res.partner" + @api.one + def create_ics_url(self): + self.ics_url_field = '%s/calendar-ics/%s/public.ics' % (self.env['ir.config_parameter'].sudo().get_param('web.base.url'), self.id) + +