def button_clicked(self, widget): model = self.form.screen.current_model self.form.set_value() button_type = self.attrs.get('special', '') if button_type=='cancel': self.form.screen.window.destroy() if 'name' in self.attrs.keys(): type_button = self.attrs.get('type','object') if type_button == 'action': obj = service.LocalService('action.main') action_id = int(self.attrs['name']) context_action = self.form.screen.context.copy() if 'context' in self.attrs: context_action.update(self.form.screen.current_model.expr_eval(self.attrs['context'], check_load=False)) obj.execute(action_id, {'model':self.form.screen.name, 'id': False, 'ids': [], 'report_type': 'pdf'}, context=context_action) elif type_button == 'object': result = rpc.session.rpc_exec_auth( '/object', 'execute', self.form.screen.name, self.attrs['name'],[], model.context_get()) datas = {} obj = service.LocalService('action.main') obj._exec_action(result,datas,context=self.form.screen.context) else: raise Exception, 'Unallowed button type' elif model.validate(): id = self.form.screen.save_current() model.get_button_action(self.form.screen, id, self.attrs) self.warn('misc-message', '') else: fields = common.get_invalid_field(self.form.screen.current_model, self.form.screen) msg = '' for req, inv in fields: if not inv: msg += req + ' (<b>invisible</b>) ' else: msg += req msg += '\n' common.warning(_('Correct following red fields !\n\n%s') % ( msg ),_('Input Error !'), parent=self.form.screen.current_view.window) self.warn('misc-message', _('Invalid form, correct red fields !'), "red") self.form.screen.display() self.form.screen.current_view.set_cursor()
def sig_save(self, widget=None, sig_new=True, auto_continue=True): res = self.screen.save_current() warning = False if isinstance(res,dict): id = res.get('id',False) warning = res.get('warning',False) else: id = res if id: self.message_state(_('Document Saved.'), color="darkgreen") elif len(self.screen.models.models) and res != None and self.screen.models.mfields: fields = common.get_invalid_field(self.screen.current_model, self.screen) msg = '' for req, inv in fields: if not inv: msg += req + ' (<b>invisible</b>) ' else: msg += req msg += '\n' common.warning(_('Correct following red fields !\n\n%s') % ( msg ),_('Input Error !'), parent=self.screen.current_view.window, to_xml=False) self.message_state(_('Invalid form, correct red fields !'), color="red") if warning: common.warning(warning,_('Warning !'), parent=self.screen.current_view.window) return bool(id)