Source code for nh_eobs.wizard.cancel_notifications

# Part of Open eObs. See LICENSE file for full copyright and licensing details.
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT as DTF
from datetime import datetime as dt, timedelta as td
from openerp.osv import osv, fields
from openerp import SUPERUSER_ID


[docs]class cancel_notifications_wizard(osv.TransientModel): _name = 'nh.clinical.cancel_notifications' _columns = { 'date_limit': fields.datetime('Cancel Until', required=True) } _defaults = { 'date_limit': (dt.now() + td(days=-1)).strftime(DTF) }
[docs] def submit(self, cr, uid, ids, context=None): data = self.browse(cr, uid, ids[0], context) user = self.pool['res.users'].browse(cr, uid, uid, context=context) user_locations = [l.id for l in user.location_ids] activity_pool = self.pool['nh.activity'] domain = [ ('date_deadline', '<=', data.date_limit), ('state', 'not in', ['completed', 'cancelled']), ('data_model', 'ilike', '%notification%'), ('location_id.parent_id', 'in', user_locations) ] notification_ids = activity_pool.search( cr, SUPERUSER_ID, domain, context=context) [activity_pool.cancel( cr, SUPERUSER_ID, n, context=context) for n in notification_ids] cancel_reason_id = self.pool['nh.cancel.reason'].search( cr, uid, [('name', '=', 'Cancelled by Shift Coordinator')], context=context) activity_pool.write( cr, SUPERUSER_ID, notification_ids, {'terminate_uid': uid, 'cancel_reason_id': cancel_reason_id[0]}, context=context) return {'type': 'ir.actions.act_window_close'}