def button_clicked(self, widget):
     record = self.screen.current_record
     record_id = self.screen.save_current()
     attrs = widget.attrs
     if record_id:
         if not attrs.get('confirm', False) or \
                 common.sur(attrs['confirm']):
             button_type = attrs.get('type', 'object')
             context = record.context_get()
             if button_type == 'object':
                 try:
                     RPCExecute('model', self.screen.model_name,
                         attrs['name'], [record_id], context=context)
                 except RPCException:
                     pass
             elif button_type == 'action':
                 action_id = None
                 try:
                     action_id = RPCExecute('model', 'ir.action',
                         'get_action_id', int(attrs['name']),
                         context=context)
                 except RPCException:
                     pass
                 if action_id:
                     Action.execute(action_id, {
                         'model': self.screen.model_name,
                         'id': record_id,
                         'ids': [record_id],
                         }, context=context)
             else:
                 raise Exception('Unallowed button type')
             self.screen.reload(written=True)
     else:
         self.screen.display()
Exemple #2
0
 def response(self, win, response_id):
     validate = False
     cancel_responses = (gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT)
     self.screen.current_view.set_value()
     readonly = self.screen.group.readonly
     if (response_id not in cancel_responses
             and not readonly
             and self.screen.current_record is not None):
         validate = self.screen.current_record.validate(
             self.screen.current_view.get_fields())
         if validate and self.screen.pre_validate:
             validate = self.screen.current_record.pre_validate()
         if validate and self.save_current:
             if not self.screen.save_current():
                 validate = False
         elif validate and self.screen.current_view.view_type == 'form':
             view = self.screen.current_view
             for widgets in view.widgets.itervalues():
                 for widget in widgets:
                     if (hasattr(widget, 'screen')
                             and widget.screen.pre_validate):
                         record = widget.screen.current_record
                         if record:
                             validate = record.pre_validate()
         if not validate:
             self.message_info(self.screen.invalid_message(),
                 gtk.MESSAGE_ERROR)
             self.screen.set_cursor()
             self.screen.display()
             return
         self.message_info()
         if response_id == gtk.RESPONSE_ACCEPT:
             self.new()
             return
     if (self.screen.current_record
             and not readonly
             and response_id in cancel_responses):
         if (self.screen.current_record.id < 0
                 or self.save_current):
             if (self.save_current
                     or common.sur(
                         _('Are you sure you want to delete this record?')
                         )):
                 self.screen.group.remove(self.screen.current_record,
                     remove=True)
             elif not self.save_current:
                 return
         elif self.screen.current_record.modified:
             self.screen.current_record.cancel()
             self.screen.current_record.reload()
             self.screen.current_record.signal('record-changed')
         result = False
     else:
         result = response_id not in cancel_responses
     self.callback(result)
     self.destroy()
 def sig_remove(self, widget=None):
     if self.screen.current_view.view_type == 'form':
         msg = _('Are you sure to remove this record?')
     else:
         msg = _('Are you sure to remove those records?')
     if sur(msg):
         if not self.screen.remove(delete=True, force_remove=True):
             self.message_info(_('Records not removed!'))
         else:
             self.message_info(_('Records removed!'), 'green')
Exemple #4
0
    def addreplace_predef(self, widget):
        iter = self.model2.get_iter_first()
        fields = []
        while iter:
            field_name = self.model2.get_value(iter, 1)
            fields.append(field_name)
            iter = self.model2.iter_next(iter)
        if not fields:
            return

        selection = self.pref_export.get_selection().get_selected()
        if selection is None:
            return
        model, iter_ = selection
        if iter_ is None:
            pref_id = None
            name = common.ask(_('What is the name of this export?'))
            if not name:
                return
        else:
            pref_id = model.get_value(iter_, 0)
            name = model.get_value(iter_, 2)
            override = common.sur(_("Override '%s' definition?") % name)
            if not override:
                return
        try:
            if not pref_id:
                pref_id, = RPCExecute(
                    'model',
                    'ir.export',
                    'create', [{
                        'name':
                        name,
                        'resource':
                        self.model,
                        'export_fields': [('create', [{
                            'name': x,
                        } for x in fields])],
                    }],
                    context=self.context)
            else:
                RPCExecute('model',
                           'ir.export',
                           'update', [pref_id],
                           fields,
                           context=self.context)
        except RPCException:
            return
        clear_cache('model.%s.view_toolbar_get' % self.model)
        if iter_ is None:
            self.predef_model.append((pref_id, fields, name))
        else:
            model.set_value(iter_, 0, pref_id)
            model.set_value(iter_, 1, fields)
Exemple #5
0
 def sig_remove(self, widget=None):
     if not common.MODELACCESS[self.model]['delete']:
         return
     if self.screen.current_view.view_type == 'form':
         msg = _('Are you sure to remove this record?')
     else:
         msg = _('Are you sure to remove those records?')
     if sur(msg):
         if not self.screen.remove(delete=True, force_remove=True):
             self.message_info(_('Records not removed.'), gtk.MESSAGE_ERROR)
         else:
             self.message_info(_('Records removed.'), gtk.MESSAGE_INFO)
Exemple #6
0
 def sig_remove(self, widget=None):
     if not common.MODELACCESS[self.model]['delete']:
         return
     if self.screen.current_view.view_type == 'form':
         msg = _('Are you sure to remove this record?')
     else:
         msg = _('Are you sure to remove those records?')
     if sur(msg):
         if not self.screen.remove(delete=True, force_remove=True):
             self.message_info(_('Records not removed.'), gtk.MESSAGE_ERROR)
         else:
             self.message_info(_('Records removed.'), gtk.MESSAGE_INFO)
Exemple #7
0
    def get_values(self, treeview, row, column):
        treemod = treeview.get_model()
        tree_iter = treemod.get_iter(row)
        # Get GNU Health Federation ID (column 0)
        federation_id = treemod.get_value(tree_iter,0)

        #Federation Resource name
        resource = self.resource.get_text()

        #local model associated to federation resource
        model = self.modinfo[resource]

        local_vals = self.set_local_data(model,
            self.federation_data.json())

        local_record = self.check_local_record (federation_id)
        if (local_record):
            already_exists_msg= \
                "A record exists LOCALLY with this ID \n\n" \
                "Would you like to update it \n" \
                "with the data from the Federation ?"

            resp_update = sur (_(already_exists_msg))
            # Create the record locally from the information
            # retrieved from the Federation
            if (resp_update):
                local_record = \
                    self.update_local_record (model, local_record, local_vals)

        else:
            not_found_locally_msg= \
                "The person exists on the Federation" \
                " but not locally...  \n" \
                "Would you like to transfer it ?"
            resp_create = sur (_(not_found_locally_msg))

            # Create the record locally from the information
            # retrieved from the Federation
            if (resp_create):
                local_record = self.create_local_record (model, local_vals)
Exemple #8
0
 def sig_remove(self, widget=None):
     if (not common.MODELACCESS[self.model]['delete']
             or not self.screen.deletable):
         return
     if self.screen.current_view.view_type == 'form':
         msg = _('Are you sure to remove this record?')
     else:
         msg = _('Are you sure to remove those records?')
     if sur(msg):
         if not self.screen.remove(delete=True, force_remove=True):
             self.message_info(
                 _('Records not removed.'), Gtk.MessageType.ERROR)
         else:
             self.message_info(_('Records removed.'), Gtk.MessageType.INFO)
             self.screen.count_tab_domain(True)
    def button_clicked(self, widget, path):
        if not path:
            return True
        store = self.treeview.get_model()
        record = store.get_value(store.get_iter(path), 0)

        state_changes = record.expr_eval(
            self.attrs.get('states', {}), check_load=False)
        if state_changes.get('invisible') \
                or state_changes.get('readonly'):
            return True

        self.screen.current_record = record
        obj_id = self.screen.save_current()
        if obj_id:
            if not self.attrs.get('confirm', False) or \
                    common.sur(self.attrs['confirm']):
                button_type = self.attrs.get('type', 'object')
                ctx = record.context_get()
                if button_type == 'object':
                    try:
                        RPCExecute('model', self.screen.model_name,
                            self.attrs['name'], [obj_id], context=ctx)
                    except RPCException:
                        pass
                elif button_type == 'action':
                    try:
                        action_id = RPCExecute('model', 'ir.action',
                            'get_action_id', int(self.attrs['name']),
                            context=ctx)
                    except RPCException:
                        action_id = None
                    if action_id:
                        Action.execute(action_id, {
                            'model': self.screen.model_name,
                            'id': obj_id,
                            'ids': [obj_id],
                            }, context=ctx)
                else:
                    raise Exception('Unallowed button type')
                self.screen.reload(written=True)
            else:
                self.screen.display()
Exemple #10
0
    def addreplace_predef(self, widget):
        iter = self.model2.get_iter_root()
        fields = []
        while iter:
            field_name = self.model2.get_value(iter, 1)
            fields.append(field_name)
            iter = self.model2.iter_next(iter)
        if not fields:
            return

        selection = self.pref_export.get_selection().get_selected()
        if selection is None:
            return
        model, iter_ = selection
        if iter_ is None:
            pref_id = None
            name = common.ask(_("What is the name of this export?"))
            if not name:
                return
        else:
            pref_id = model.get_value(iter_, 0)
            name = model.get_value(iter_, 2)
            override = common.sur(_("Override '%s' definition?") % name)
            if not override:
                return
        try:
            new_id, = RPCExecute(
                "model",
                "ir.export",
                "create",
                [{"name": name, "resource": self.model, "export_fields": [("create", [{"name": x} for x in fields])]}],
                context=self.context,
            )
            if pref_id:
                RPCExecute("model", "ir.export", "delete", [pref_id], context=self.context)
        except RPCException:
            return
        if iter_ is None:
            self.predef_model.append((new_id, fields, name))
        else:
            model.set_value(iter_, 0, new_id)
            model.set_value(iter_, 1, fields)
Exemple #11
0
 def close_pages(self):
     if self.notebook.get_n_pages():
         if not common.sur(
                 _('The following action requires to close all tabs.\n'
                   'Do you want to continue?')):
             return False
     res = True
     while res:
         wid = self.get_page()
         if wid:
             if not wid.sig_close():
                 return False
             res = self._win_del()
         else:
             res = False
     if self.menu_screen:
         self.menu_screen.save_tree_state()
     if self.menu.get_visible():
         CONFIG['menu.pane'] = self.pane.get_position()
     return True
Exemple #12
0
 def button(self, button):
     'Execute button on the current record'
     if button.get('confirm', False) and not sur(button['confirm']):
         return
     record = self.current_record
     if not record.save(force_reload=False):
         return
     context = record.context_get()
     try:
         action_id = RPCExecute('model', self.model_name, button['name'],
             [record.id], context=context)
     except RPCException:
         action_id = None
     if action_id:
         Action.execute(action_id, {
                 'model': self.model_name,
                 'id': record.id,
                 'ids': [record.id],
                 }, context=context)
     self.reload([record.id], written=True)
Exemple #13
0
 def button(self, button):
     'Execute button on the selected records'
     self.current_view.set_value()
     fields = self.current_view.get_fields()
     for record in self.selected_records:
         domain = record.expr_eval(
             button.get('states', {})).get('pre_validate', [])
         if not record.validate(fields, pre_validate=domain):
             self.display(set_cursor=True)
             if domain:
                 # Reset valid state with normal domain
                 record.validate(fields)
             return
     if button.get('confirm', False) and not sur(button['confirm']):
         return
     if button.get('type', 'class') == 'class':
         if not self.current_record.save(force_reload=False):
             return
     if button.get('type', 'class') == 'class':
         self._button_class(button)
     else:
         self._button_instance(button)
Exemple #14
0
 def button(self, button):
     'Execute button on the current record'
     if button.get('confirm', False) and not sur(button['confirm']):
         return
     record = self.current_record
     if not record.save(force_reload=False):
         return
     context = record.context_get()
     try:
         action_id = RPCExecute('model',
                                self.model_name,
                                button['name'], [record.id],
                                context=context)
     except RPCException:
         action_id = None
     if action_id:
         Action.execute(action_id, {
             'model': self.model_name,
             'id': record.id,
             'ids': [record.id],
         },
                        context=context)
     self.reload([record.id], written=True)
Exemple #15
0
 def button(self, button):
     'Execute button on the selected records'
     self.current_view.set_value()
     fields = self.current_view.get_fields()
     for record in self.selected_records:
         domain = record.expr_eval(
             button.get('states', {})).get('pre_validate', [])
         if not record.validate(fields, pre_validate=domain):
             warning(self.invalid_message(record), _('Pre-validation'))
             self.display(set_cursor=True)
             if domain:
                 # Reset valid state with normal domain
                 record.validate(fields)
             return
     if button.get('confirm', False) and not sur(button['confirm']):
         return
     if button.get('type', 'class') == 'class':
         if not self.current_record.save(force_reload=False):
             return
     if button.get('type', 'class') == 'class':
         self._button_class(button)
     else:
         self._button_instance(button)