def on_completion_match(self, completion, model, iter): name = model[iter][1] domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) ids = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', name, domain, 'ilike', context) if len(ids) == 1: self._view.modelfield.set_client(self._view.model, ids[0]) self.display(self._view.model, self._view.modelfield) self.ok = True else: win = win_search(self.attrs['relation'], sel_multi=False, ids=map(lambda x: x[0], ids), context=context, domain=domain, window=self._window) ids = win.go() if ids: name = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_get', [ids[0]], rpc.session.context)[0] self._view.modelfield.set_client(self._view.model, name) return True
def sig_find(self, widget, event=None, leave=True): self.ok = False self.wid_text.disconnect(self.wid_text_focus_out_id) if not self._readonly: domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) self.wid_text.grab_focus() name_search = self.wid_text.get_text() or '' if name_search == self.value_on_field: name_search = '' ids = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', name_search, domain, 'ilike', context) if (len(ids)==1) and leave and event: self._view.modelfield.set_client(self._view.model, ids[0], force_change=True) self.wid_text_focus_out_id = self.wid_text.connect_after('focus-out-event', self.sig_focus_out, True) self.display(self._view.model, self._view.modelfield) self.ok = True return True #Updating the context in order to avoid domain of name_search and custom domain of search_context context.update({'name_search':name_search}) win = win_search(self.attrs['relation'], sel_multi=False, ids=map(lambda x: x[0], ids), context=context, domain=domain, parent=self._window) ids = win.go() if ids: name = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_get', [ids[0]], rpc.session.context)[0] self._view.modelfield.set_client(self._view.model, name, force_change=True) self.wid_text_focus_out_id = self.wid_text.connect_after('focus-out-event', self.sig_focus_out, True) self.display(self._view.model, self._view.modelfield) self.ok=True
def _sig_add(self, *args): domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) records = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', self.wid_text.get_text(), domain, 'ilike', context) ids = [oid for oid, _ in records] self.wid_text.set_text('') win = win_search(self.attrs['relation'], sel_multi=True, ids=ids, context=context, domain=domain, parent=self._window) ids = win.go() if ids == None: ids = [] if self.name in self.model.pager_cache: self.model.pager_cache[self.name] = list( set(self.model.pager_cache[self.name] + ids)) else: self.model.pager_cache[self.name] = ids self.model.is_m2m_modified = True self._focus_out() self.pager.reset_pager() self.pager.search_count()
def open_remote(self, model, create=True, changed=False, text=None): modelfield = model[self.field_name] relation = modelfield.attrs['relation'] rpc = RPCProxy(relation) context = model[self.field_name].context_get(model) domain = model[self.field_name].domain_get(model) if create: if text and len(text) and text[0] <> '(': domain.append(('name', '=', text)) ids = rpc.search(domain) if ids and len(ids) == 1: return True, ids else: ids = model[self.field_name].get_client(model) win = win_search(relation, sel_multi=True, ids=ids, context=context, domain=domain) found = win.go() if found: return True, found else: return False, None
def _sig_add(self, *args): domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) # exclude the ids that are already present if self.model.pager_cache.get(self.name): domain.append(('id', 'not in', self.model.pager_cache.get(self.name))) records = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', self.wid_text.get_text(), domain, 'ilike', context) ids = [oid for oid, _ in records] self.wid_text.set_text('') win = win_search(self.attrs['relation'], sel_multi=True, ids=ids, context=context, domain=domain, parent=self._window) ids = win.go() if ids != None: if self.name in self.model.pager_cache: self.model.pager_cache[self.name] = list(set(self.model.pager_cache[self.name] + ids)) else: self.model.pager_cache[self.name] = ids self.model.is_m2m_modified = True self._focus_out() self.pager.reset_pager() self.pager.search_count()
def _sig_add(self, *args): flag=False newids=[] domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) ids = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', self.wid_text.get_text(), domain, 'ilike', context) ids = map(lambda x: x[0], ids) self.check_exist() # if len(ids)<>1: win = win_search(self.attrs['relation'], sel_multi=True, ids=ids, context=context, domain=domain, parent=self._window) ids = win.go() if ids == None: ids=[] if len(self.avail_ids) and len(ids): for i in ids: if i not in self.avail_ids: newids.append(i) flag=True if flag==True: ids=newids else: ids=[] self.screen.load(ids) for i in ids: self.avail_ids.add(i) self.screen.display() self.wid_text.set_text('') self._focus_out()
def _sig_search(self, *args): win = win_search(self.action['res_model'], domain=self.domain, context=self.context) res = win.go() if res: self.screen.clear() self.screen.load(res)
def search_remote(self, relation, ids=[], domain=[], context={}): rpc = RPCProxy(relation) win = win_search(relation, sel_multi=False, ids=ids, context=context, domain=domain) found = win.go() if found: return rpc.name_get([found[0]], context)[0] else: return False, None
def sig_activate(self, widget, event=None, leave=False): self.ok = False value = self._view.modelfield.get_client(self._view.model) self.wid_text.disconnect(self.wid_text_focus_out_id) if not value: model, (id, name) = self.get_model() or '', (0, '') else: model, (id, name) = value if id: if not leave: #print self._window dia = dialog(model, id, attrs=self.attrs, window=self._window) ok, id = dia.run() if ok: self._view.modelfield.set_client(self._view.model, (model, id), force_change=True) dia.destroy() else: if not self._readonly and (self.wid_text.get_text() or not leave): domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) ids = rpc.session.rpc_exec_auth('/object', 'execute', model, 'name_search', self.wid_text.get_text(), domain, 'ilike', context) if len(ids) == 1: id, name = ids[0] self._view.modelfield.set_client(self._view.model, (model, [id, name])) self.display(self._view.model, self._view.modelfield) self.ok = True self.wid_text_focus_out_id = self.wid_text.connect_after( 'focus-out-event', self.sig_activate, True) return True win = win_search(model, sel_multi=False, ids=[x[0] for x in ids], context=context, domain=domain, parent=self._window) ids = win.go() if ids: id, name = rpc.session.rpc_exec_auth( '/object', 'execute', model, 'name_get', [ids[0]], rpc.session.context)[0] self._view.modelfield.set_client(self._view.model, (model, [id, name])) self.wid_text_focus_out_id = self.wid_text.connect_after( 'focus-out-event', self.sig_activate, True) self.display(self._view.model, self._view.modelfield) self.ok = True
def sig_find(self, widget, event=None, leave=True): from modules.gui.window.win_search import win_search name_search = self.wid_text.get_text() or '' ids = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', name_search, [], 'ilike', rpc.session.context) win = win_search(self.attrs['relation'], sel_multi=False, ids=map(lambda x: x[0], ids), context=rpc.session.context, parent=self.parent) win.glade.get_widget('newbutton').hide() ids = win.go() if ids: self.selected_value = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_get', [ids[0]], rpc.session.context)[0] self.wid_text.set_text(self.selected_value[1]) return
def value_from_text(self, model, text): if not text: return [] if not (text[0]<>'('): return model[self.field_name].get(model) relation = model[self.field_name].attrs['relation'] rpc = RPCProxy(relation) domain = model[self.field_name].domain_get(model) context = model[self.field_name].context_get(model) names = rpc.name_search(text, domain, 'ilike', context) ids = [x[0] for x in names] win = win_search(relation, sel_multi=True, ids=ids, context=context, domain=domain) found = win.go() return found or []
def sig_activate(self, widget, event=None, leave=False): self.ok = False value = self._view.modelfield.get_client(self._view.model) self.wid_text.disconnect(self.wid_text_focus_out_id) if not value: model, (id, name) = self.get_model() or '', (0, '') else: model, (id, name) = value if id: if not leave: #print self._window dia = dialog(model, id, attrs=self.attrs, window=self._window) ok, id = dia.run() if ok: self._view.modelfield.set_client(self._view.model, (model, id), force_change=True) dia.destroy() else: if not self._readonly and ( self.wid_text.get_text() or not leave): domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) ids = rpc.session.rpc_exec_auth('/object', 'execute', model, 'name_search', self.wid_text.get_text(), domain, 'ilike', context) if len(ids)==1: id, name = ids[0] self._view.modelfield.set_client(self._view.model, (model, [id, name])) self.display(self._view.model, self._view.modelfield) self.ok = True self.wid_text_focus_out_id = self.wid_text.connect_after( 'focus-out-event', self.sig_activate, True) return True win = win_search(model, sel_multi=False, ids=[x[0] for x in ids], context=context, domain=domain, parent=self._window) ids = win.go() if ids: id, name = rpc.session.rpc_exec_auth('/object', 'execute', model, 'name_get', [ids[0]], rpc.session.context)[0] self._view.modelfield.set_client(self._view.model, (model, [id, name])) self.wid_text_focus_out_id = self.wid_text.connect_after( 'focus-out-event', self.sig_activate, True) self.display(self._view.model, self._view.modelfield) self.ok=True
def sig_find(self, widget, event=None, leave=True): self.ok = False self.wid_text.disconnect(self.wid_text_focus_out_id) if not self._readonly: domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) self.wid_text.grab_focus() name_search = self.wid_text.get_text() or '' if name_search == self.value_on_field: name_search = '' ids = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', name_search, domain, 'ilike', context) if (len(ids) == 1) and leave and event: self._view.modelfield.set_client(self._view.model, ids[0], force_change=True) self.wid_text_focus_out_id = self.wid_text.connect_after( 'focus-out-event', self.sig_focus_out, True) self.display(self._view.model, self._view.modelfield) self.ok = True return True #Updating the context in order to avoid domain of name_search and custom domain of search_context context.update({'name_search': name_search}) win = win_search(self.attrs['relation'], sel_multi=False, ids=map(lambda x: x[0], ids), context=context, domain=domain, parent=self._window) ids = win.go() if ids: name = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_get', [ids[0]], rpc.session.context)[0] self._view.modelfield.set_client(self._view.model, name, force_change=True) self.wid_text_focus_out_id = self.wid_text.connect_after( 'focus-out-event', self.sig_focus_out, True) self.display(self._view.model, self._view.modelfield) self.ok = True
def open_remote(self, model, create=True, changed=False, text=None): modelfield = model[self.field_name] relation = modelfield.attrs['relation'] rpc = RPCProxy(relation) context = model[self.field_name].context_get(model) domain = model[self.field_name].domain_get(model) if create: if text and len(text) and text[0]<>'(': domain.append(('name','=',text)) ids = rpc.search(domain) if ids and len(ids)==1: return True, ids else: ids = model[self.field_name].get_client(model) win = win_search(relation, sel_multi=True, ids=ids, context=context, domain=domain) found = win.go() if found: return True, found else: return False, None
def on_completion_match(self, completion, model, iter): name = model[iter][1] domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) ids = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', name, domain, 'ilike', context) if len(ids)==1: self._view.modelfield.set_client(self._view.model, ids[0]) self.display(self._view.model, self._view.modelfield) self.ok = True else: win = win_search(self.attrs['relation'], sel_multi=False, ids=map(lambda x: x[0], ids), context=context, domain=domain, window=self._window) ids = win.go() if ids: name = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_get', [ids[0]], rpc.session.context)[0] self._view.modelfield.set_client(self._view.model, name) return True
def _sig_add(self, *args): flag = False newids = [] domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) ids = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', self.wid_text.get_text(), domain, 'ilike', context) ids = map(lambda x: x[0], ids) self.check_exist() # if len(ids)<>1: win = win_search(self.attrs['relation'], sel_multi=True, ids=ids, context=context, domain=domain, parent=self._window) ids = win.go() if ids == None: ids = [] if len(self.avail_ids) and len(ids): for i in ids: if i not in self.avail_ids: newids.append(i) flag = True if flag == True: ids = newids else: ids = [] self.screen.load(ids) for i in ids: self.avail_ids.add(i) self.screen.display() self.wid_text.set_text('') self._focus_out()
def _sig_add(self, *args): domain = self._view.modelfield.domain_get(self._view.model) context = self._view.modelfield.context_get(self._view.model) records = rpc.session.rpc_exec_auth('/object', 'execute', self.attrs['relation'], 'name_search', self.wid_text.get_text(), domain, 'ilike', context) ids = [oid for oid, _ in records] #Updating the context in order to avoid domain of name_search and custom domain of search_context context.update({'name_search':self.wid_text.get_text()}) self.wid_text.set_text('') win = win_search(self.attrs['relation'], sel_multi=True, ids=ids, context=context, domain=domain, parent=self._window) ids = win.go() if ids == None: ids = [] if self.name in self.model.pager_cache: self.model.pager_cache[self.name] = list(set(self.model.pager_cache[self.name] + ids)) else: self.model.pager_cache[self.name] = ids self.model.is_m2m_modified = True self._focus_out() self.pager.reset_pager() self.pager.search_count()