mirror of
https://github.com/bringout/oca-ocb-technical.git
synced 2026-04-24 20:12:06 +02:00
19.0 vanilla
This commit is contained in:
parent
5faf7397c5
commit
2696f14ed7
721 changed files with 220375 additions and 91221 deletions
|
|
@ -0,0 +1,93 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class CalendarPopoverDeleteWizard(models.TransientModel):
|
||||
_name = 'calendar.popover.delete.wizard'
|
||||
_inherit = ['mail.composer.mixin']
|
||||
_description = 'Calendar Popover Delete Wizard'
|
||||
|
||||
calendar_event_id = fields.Many2one('calendar.event', 'Calendar Event')
|
||||
delete = fields.Selection([('one', 'Delete this event'), ('next', 'Delete this and following events'), ('all', 'Delete all the events')], default='one')
|
||||
recipient_ids = fields.Many2many(
|
||||
'res.partner',
|
||||
string="Recipients",
|
||||
compute='_compute_recipient_ids',
|
||||
readonly=False,
|
||||
)
|
||||
|
||||
def close(self):
|
||||
# Return if there are multiple attendees or if the organizer's partner_id differs
|
||||
if self.calendar_event_id.attendees_count != 1 or self.calendar_event_id.user_id.partner_id != self.calendar_event_id.partner_ids:
|
||||
return self.calendar_event_id.action_unlink_event(self.calendar_event_id.partner_id.id, self.delete)
|
||||
if not self.calendar_event_id or not self.delete:
|
||||
pass
|
||||
elif self.delete == 'one':
|
||||
self.calendar_event_id.unlink()
|
||||
else:
|
||||
switch = {
|
||||
'next': 'future_events',
|
||||
'all': 'all_events'
|
||||
}
|
||||
self.calendar_event_id.action_mass_deletion(switch.get(self.delete, ''))
|
||||
|
||||
@api.depends('calendar_event_id')
|
||||
def _compute_recipient_ids(self):
|
||||
""" Compute the recipients by combining the record's partner and attendees partners. """
|
||||
for wizard in self:
|
||||
wizard.recipient_ids = wizard.calendar_event_id.partner_id | wizard.calendar_event_id.attendee_ids.partner_id
|
||||
|
||||
@api.depends('calendar_event_id')
|
||||
def _compute_subject(self):
|
||||
""" Compute the subject by rendering the template's subject field based on the event. """
|
||||
for wizard in self.filtered('template_id'):
|
||||
wizard.subject = wizard.template_id._render_field(
|
||||
'subject',
|
||||
[wizard.calendar_event_id.id],
|
||||
compute_lang=True,
|
||||
options={'post_process': True},
|
||||
)[wizard.calendar_event_id.id]
|
||||
|
||||
@api.depends('calendar_event_id')
|
||||
def _compute_body(self):
|
||||
""" Compute the body by rendering the template's body HTML field based on the event. """
|
||||
for wizard in self.filtered('template_id'):
|
||||
wizard.body = wizard.template_id._render_field(
|
||||
'body_html',
|
||||
[wizard.calendar_event_id.id],
|
||||
compute_lang=True,
|
||||
options={'post_process': True},
|
||||
)[wizard.calendar_event_id.id]
|
||||
|
||||
def action_delete(self):
|
||||
"""
|
||||
Delete the event based on the specified deletion type.
|
||||
|
||||
:return: Action URL to redirect to the calendar view
|
||||
"""
|
||||
self.ensure_one()
|
||||
event = self.calendar_event_id
|
||||
deletion_type = self.env.context.get('default_recurrence')
|
||||
|
||||
# Unlink recurrent events.
|
||||
if event.recurrency:
|
||||
if deletion_type in ['one', 'self_only']:
|
||||
event.unlink()
|
||||
elif deletion_type in ['next', 'all']:
|
||||
event.action_mass_deletion('future_events' if deletion_type == 'next' else 'all_events')
|
||||
else:
|
||||
event.unlink()
|
||||
|
||||
return {
|
||||
'type': 'ir.actions.act_url',
|
||||
'target': 'self',
|
||||
'url': '/odoo/calendar'
|
||||
}
|
||||
|
||||
def action_send_mail_and_delete(self):
|
||||
""" Send email notification and delete the event based on the specified deletion type. """
|
||||
self.env.ref('calendar.calendar_template_delete_event').send_mail(
|
||||
self.calendar_event_id.id, email_layout_xmlid='mail.mail_notification_light', force_send=True
|
||||
)
|
||||
return self.action_delete()
|
||||
Loading…
Add table
Add a link
Reference in a new issue