示例#1
0
    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()
示例#2
0
 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)