def _sig_add(self, *args): if not self.focus_out: return domain = self.field.domain_get(self.record) add_remove = self.record.expr_eval(self.attrs.get('add_remove')) if add_remove: domain = [domain, add_remove] context = self.field.get_context(self.record) value = self.wid_text.get_text().decode('utf-8') self.focus_out = False def callback(result): self.focus_out = True if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) self.screen.set_cursor() self.wid_text.set_text('') win = WinSearch(self.attrs['relation'], callback, sel_multi=True, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.attrs.get('create', True), title=self.attrs.get('string')) win.screen.search_filter(quote(value)) win.show()
def _sig_add(self, *args): if not self.focus_out: return domain = self.field.domain_get(self.record) add_remove = self.record.expr_eval(self.attrs.get('add_remove')) if add_remove: domain = [domain, add_remove] context = self.field.context_get(self.record) value = self.wid_text.get_text().decode('utf-8') self.focus_out = False def callback(result): self.focus_out = True if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) self.screen.set_cursor() self.wid_text.set_text('') win = WinSearch(self.attrs['relation'], callback, sel_multi=True, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.attrs.get('create', True)) win.screen.search_filter(quote(value)) win.show()
def search_set(*args): if not fields: return make_product() field = self.screen.group.fields[fields.pop()] relation = field.attrs.get('relation') if not relation: search_set() domain = field.domain_get(first) context = field.get_search_context(first) order = field.get_search_order(first) def callback(result): if result: product[field.name] = result win_search = WinSearch(relation, callback, sel_multi=True, context=context, domain=domain, order=order, title=self.attrs.get('string')) win_search.win.connect('destroy', search_set) win_search.screen.search_filter() win_search.show()
def sig_edit(self, entry=None, icon_pos=None, *args): model = self.get_model() if not model or not common.MODELACCESS[model]['read']: return if not self.focus_out or not self.field: return self.changed = False self.focus_out = False value = self.field.get(self.record) if (icon_pos == Gtk.EntryIconPosition.SECONDARY and not self._readonly and self.has_target(value)): self.field.set_client(self.record, self.value_from_id(None, '')) self.wid_text.set_text('') self.changed = True self.focus_out = True return if self.has_target(value): screen = self.get_screen() screen.load([self.id_from_value(self.field.get(self.record))]) def callback(result): if result: self.field.set_client(self.record, self.value_from_id(screen.current_record.id, screen.current_record.rec_name()), force_change=True) self.focus_out = True self.changed = True WinForm(screen, callback, save_current=True, title=self.attrs.get('string')) return if not self._readonly: domain = self.field.domain_get(self.record) context = self.field.get_search_context(self.record) order = self.field.get_search_order(self.record) text = self.wid_text.get_text() def callback(result): if result: self.field.set_client(self.record, self.value_from_id(*result[0]), force_change=True) self.focus_out = True self.changed = True win = WinSearch(model, callback, sel_multi=False, context=context, domain=domain, order=order, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.create_access, title=self.attrs.get('string'), exclude_field=self.attrs.get('relation_field')) win.screen.search_filter(quote(text)) win.show() return self.focus_out = True self.changed = True
def sig_edit(self, *args): model = self.get_model() if not model or not common.MODELACCESS[model]['read']: return if not self.focus_out or not self.field: return self.changed = False value = self.field.get(self.record) model = self.get_model() self.focus_out = False if model and self.has_target(value): screen = self.get_screen() screen.load([self.id_from_value(self.field.get(self.record))]) def callback(result): if result: self.field.set_client( self.record, self.value_from_id(screen.current_record.id, screen.current_record.rec_name()), force_change=True) self.focus_out = True self.changed = True WinForm(screen, callback, save_current=True) return elif model and not self._readonly: domain = self.field.domain_get(self.record) context = self.field.context_get(self.record) text = self.wid_text.get_text().decode('utf-8') def callback(result): if result: self.field.set_client(self.record, self.value_from_id(*result[0]), force_change=True) self.focus_out = True self.changed = True win = WinSearch(model, callback, sel_multi=False, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.create_access) win.screen.search_filter(quote(text)) win.show() return self.focus_out = True self.changed = True return
def _sig_add(self, *args): context = self.field.get_context(self.record) value = self.wid_text.get_text() domain = self.field.domain_get(self.record) def callback(result): if result: self.add_new_keys([r[0] for r in result]) self.wid_text.set_text('') win = WinSearch(self.schema_model, callback, sel_multi=True, context=context, domain=domain, new=False) win.screen.search_filter(quote(value)) win.show()
def _sig_add(self, *args): context = self.field.context_get(self.record) value = self.wid_text.get_text().decode('utf-8') domain = self.field.domain_get(self.record) def callback(result): if result: self.add_new_keys([r[0] for r in result]) self.wid_text.set_text('') win = WinSearch(self.schema_model, callback, sel_multi=True, context=context, domain=domain, new=False) win.screen.search_filter(quote(value)) win.show()
def search_remote(self, record, field, text, callback=None): model = self.get_model(record, field) domain = field.domain_get(record) context = field.get_search_context(record) order = field.get_search_order(record) access = common.MODELACCESS[model] create_access = int(self.attrs.get('create', 1)) and access['create'] def search_callback(found): value = None if found: value = self.value_from_id(model, *found[0]) field.set_client(record, value) if callback: callback() win = WinSearch(model, search_callback, sel_multi=False, context=context, domain=domain, order=order, view_ids=self.attrs.get('view_ids', '').split(','), new=create_access, title=self.attrs.get('string')) win.screen.search_filter(quote(text)) return win
def _sig_add(self, *args, **kwargs): if not self.focus_out: return domain = self.field.domain_get(self.record) context = self.field.context_get(self.record) value = self.wid_text.get_text() self.focus_out = False try: if value: dom = [('rec_name', 'ilike', '%' + value + '%'), domain] else: dom = domain ids = RPCExecute('model', self.attrs['relation'], 'search', dom, 0, CONFIG['client.limit'], None, context=context) except RPCException: self.focus_out = True return False def callback(result): self.focus_out = True if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) self.screen.set_cursor() self.wid_text.set_text('') if len(ids) != 1 or not value or kwargs.get('win_search', False): WinSearch(self.attrs['relation'], callback, sel_multi=True, ids=ids, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.attrs.get('create', True)) else: callback([(i, None) for i in ids])
def search_remote(self, record, relation, text, domain=None, context=None, callback=None): field = record.group.fields[self.attrs['name']] relation = field.attrs['relation'] access = common.MODELACCESS[relation] create_access = self.attrs.get('create', True) and access['create'] def search_callback(found): value = None if found: value = found[0] field.set_client(record, value) if callback: callback() win = WinSearch(relation, search_callback, sel_multi=False, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), new=create_access, title=self.attrs.get('string')) win.screen.search_filter(quote(text.decode('utf-8'))) return win
def search_remote(self, record, field, text, callback=None): relation = field.attrs['relation'] domain = field.domain_get(record) context = field.get_search_context(record) order = field.get_search_order(record) access = common.MODELACCESS[relation] create_access = self.attrs.get('create', True) and access['create'] def search_callback(found): value = None if found: value = found[0] field.set_client(record, value) if callback: callback() win = WinSearch(relation, search_callback, sel_multi=False, context=context, domain=domain, order=order, view_ids=self.attrs.get('view_ids', '').split(','), new=create_access, title=self.attrs.get('string')) win.screen.search_filter(quote(text)) return win
def sig_edit(self, *args): model = self.get_model() if not model or not common.MODELACCESS[model]['read']: return if not self.focus_out or not self.field: return self.changed = False value = self.field.get(self.record) model = self.get_model() self.focus_out = False if model and self.has_target(value): screen = self.get_screen() screen.load([self.id_from_value(self.field.get(self.record))]) def callback(result): if result: self.field.set_client(self.record, self.value_from_id(screen.current_record.id, screen.current_record.rec_name()), force_change=True) self.focus_out = True self.changed = True WinForm(screen, callback, save_current=True) return elif model and not self._readonly: domain = self.field.domain_get(self.record) context = self.field.context_get(self.record) text = self.wid_text.get_text().decode('utf-8') def callback(result): if result: self.field.set_client(self.record, self.value_from_id(*result[0]), force_change=True) self.focus_out = True self.changed = True win = WinSearch(model, callback, sel_multi=False, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.create_access) win.screen.search_filter(quote(text)) win.show() return self.focus_out = True self.changed = True return
def sig_activate(self): model = self.get_model() if not model or not common.MODELACCESS[model]['read']: return if not self.focus_out or not self.field: return self.changed = False value = self.field.get(self.record) model = self.get_model() self.focus_out = False if model and not self.has_target(value): if (not self._readonly and (self.wid_text.get_text() or self.field.get_state_attrs( self.record)['required'])): domain = self.field.domain_get(self.record) context = self.field.context_get(self.record) self.wid_text.grab_focus() try: if self.wid_text.get_text(): dom = [('rec_name', 'ilike', '%' + self.wid_text.get_text() + '%'), domain] else: dom = domain ids = RPCExecute('model', model, 'search', dom, 0, CONFIG['client.limit'], None, context=context) except RPCException: self.focus_out = True self.changed = True return if len(ids) == 1: self.field.set_client(self.record, self.value_from_id(ids[0]), force_change=True) self.focus_out = True self.changed = True return def callback(result): if result: self.field.set_client(self.record, self.value_from_id(*result[0]), force_change=True) else: self.wid_text.set_text('') self.focus_out = True self.changed = True WinSearch(model, callback, sel_multi=False, ids=ids, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.but_new.get_property('sensitive')) return self.focus_out = True self.changed = True return
def _sig_add(self, *args): from tryton.gui.window.win_search import WinSearch domain = self.domain[:] model_name = self.screen.model_name value = self.wid_text.get_text() def callback(result): if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) self.screen.set_cursor() self.wid_text.set_text('') win = WinSearch(model_name, callback, sel_multi=True, context=self.context, domain=domain) win.screen.search_filter(quote(value)) win.show()
def _sig_add(self, *args): from tryton.gui.window.win_search import WinSearch domain = self.domain[:] model_name = self.screen.model_name value = self.wid_text.get_text().decode('utf-8') def callback(result): if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) self.screen.set_cursor() self.wid_text.set_text('') win = WinSearch(model_name, callback, sel_multi=True, context=self.context, domain=domain) win.screen.search_filter(quote(value)) win.show()
def _sig_add(self, *args): if not self.focus_out: return access = common.MODELACCESS[self.screen.model_name] if not access['write'] or not access['read']: return self.view.set_value() domain = self.field.domain_get(self.record) context = self.field.get_search_context(self.record) domain = [domain, self.record.expr_eval(self.attrs.get('add_remove'))] removed_ids = self.field.get_removed_ids(self.record) domain = ['OR', domain, ('id', 'in', removed_ids)] text = self.wid_text.get_text() self.focus_out = False sequence = self._sequence() def callback(result): self.focus_out = True if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) if sequence: self.screen.group.set_sequence( field=sequence, position=self.screen.new_position) self.screen.set_cursor() self.wid_text.set_text('') order = self.field.get_search_order(self.record) win = WinSearch(self.attrs['relation'], callback, sel_multi=True, context=context, domain=domain, order=order, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.but_new.get_property('sensitive'), title=self.attrs.get('string'), exclude_field=self.attrs.get('relation_field')) win.screen.search_filter(quote(text)) win.show()
def sig_activate(self): model = self.get_model() if not model or not common.MODELACCESS[model]['read']: return if not self.focus_out or not self.field: return self.changed = False value = self.field.get(self.record) model = self.get_model() self.focus_out = False if model and not self.has_target(value): if (not self._readonly and (self.wid_text.get_text() or self.field.get_state_attrs( self.record)['required'])): domain = self.field.domain_get(self.record) context = self.field.context_get(self.record) text = self.wid_text.get_text().decode('utf-8') def callback(result): if result: self.field.set_client(self.record, self.value_from_id(*result[0]), force_change=True) else: self.set_text('') self.focus_out = True self.changed = True win = WinSearch(model, callback, sel_multi=False, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.create_access) win.screen.search_filter(quote(text)) if len(win.screen.group) == 1: win.response(None, gtk.RESPONSE_OK) else: win.show() return self.focus_out = True self.changed = True return
def search_set(*args): if not fields: return make_product() field = self.screen.group.fields[fields.pop()] relation = field.attrs.get("relation") if not relation: search_set() domain = field.domain_get(first) context = field.context_get(first) def callback(result): if result: product[field.name] = result win_search = WinSearch(relation, callback, sel_multi=True, context=context, domain=domain) win_search.win.connect("destroy", search_set) win_search.screen.search_filter() win_search.show()
def _sig_add(self, *args): if not self.focus_out: return access = common.MODELACCESS[self.screen.model_name] if not access["write"] or not access["read"]: return domain = self.field.domain_get(self.record) context = self.field.context_get(self.record) domain = [domain, self.record.expr_eval(self.attrs.get("add_remove"))] removed_ids = self.field.get_removed_ids(self.record) domain = ["OR", domain, ("id", "in", removed_ids)] text = self.wid_text.get_text().decode("utf-8") self.focus_out = False sequence = None if self.screen.current_view.view_type == "tree": sequence = self.screen.current_view.attributes.get("sequence") def callback(result): self.focus_out = True if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) if sequence: self.screen.group.set_sequence(field=sequence) self.screen.set_cursor() self.wid_text.set_text("") win = WinSearch( self.attrs["relation"], callback, sel_multi=True, context=context, domain=domain, view_ids=self.attrs.get("view_ids", "").split(","), views_preload=self.attrs.get("views", {}), new=self.but_new.get_property("sensitive"), ) win.screen.search_filter(quote(text)) win.show()
def _sig_add(self, *args): if not self.focus_out: return domain = self.field.domain_get(self.record) add_remove = self.record.expr_eval(self.attrs.get('add_remove')) if add_remove: domain = [domain, add_remove] context = self.field.get_search_context(self.record) order = self.field.get_search_order(self.record) value = self.wid_text.get_text() self.focus_out = False def callback(result): self.focus_out = True if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) self.screen.set_cursor() self.wid_text.set_text('') win = WinSearch(self.attrs['relation'], callback, sel_multi=True, context=context, domain=domain, order=order, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.create_access, title=self.attrs.get('string')) win.screen.search_filter(quote(value)) if len(win.screen.group) == 1: win.response(None, Gtk.ResponseType.OK) else: win.show()
def search_remote(self, record, relation, ids=None, domain=None, context=None, callback=None): field = record.group.fields[self.field_name] def search_callback(found): value = None if found: value = found[0] field.set_client(record, value) if callback: callback() WinSearch(relation, search_callback, sel_multi=False, ids=ids, context=context, domain=domain)
def _sig_add(self, *args): if not self.focus_out: return access = common.MODELACCESS[self.screen.model_name] if not access['write'] or not access['read']: return self.view.set_value() domain = self.field.domain_get(self.record) context = self.field.context_get(self.record) domain = [domain, self.record.expr_eval(self.attrs.get('add_remove'))] removed_ids = self.field.get_removed_ids(self.record) domain = ['OR', domain, ('id', 'in', removed_ids)] text = self.wid_text.get_text().decode('utf-8') self.focus_out = False sequence = None if self.screen.current_view.view_type == 'tree': sequence = self.screen.current_view.attributes.get('sequence') def callback(result): self.focus_out = True if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) if sequence: self.screen.group.set_sequence(field=sequence) self.screen.set_cursor() self.wid_text.set_text('') win = WinSearch(self.attrs['relation'], callback, sel_multi=True, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.but_new.get_property('sensitive')) win.screen.search_filter(quote(text)) win.show()
def _sig_add(self, *args, **kwargs): if not self.focus_out: return access = common.MODELACCESS[self.screen.model_name] if not access['write'] or not access['read']: return self.view.set_value() domain = self.field.domain_get(self.record) context = self.field.context_get(self.record) domain = [domain, self.record.expr_eval(self.attrs.get('add_remove'))] removed_ids = self.field.get_removed_ids(self.record) self.focus_out = False try: if self.wid_text.get_text(): dom = [('rec_name', 'ilike', '%' + self.wid_text.get_text() + '%'), ['OR', domain, ('id', 'in', removed_ids)]] else: dom = ['OR', domain, ('id', 'in', removed_ids)] ids = RPCExecute('model', self.attrs['relation'], 'search', dom, 0, CONFIG['client.limit'], None, context=context) except RPCException: self.focus_out = True return False sequence = None if self.screen.current_view.view_type == 'tree': sequence = self.screen.current_view.widget_tree.sequence def callback(result): self.focus_out = True if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) if sequence: self.screen.group.set_sequence(field=sequence) self.screen.set_cursor() self.wid_text.set_text('') if len(ids) != 1 or kwargs.get('win_search', False): WinSearch(self.attrs['relation'], callback, sel_multi=True, ids=ids, context=context, domain=domain, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.but_new.get_property('sensitive')) else: callback([(i, None) for i in ids])
def _sig_add(self, *args): context = self.field.context_get(self.record) value = self.wid_text.get_text() domain = self.field.domain_get(self.record) dom = [('rec_name', 'ilike', '%%%s%%' % value)] if value else [] dom.append(('id', 'not in', [self.keys[f]['id'] for f in self.fields])) try: ids = RPCExecute('model', self.schema_model, 'search', domain + dom, 0, CONFIG['client.limit'], None, context=context) except RPCException: return False def callback(result): if result: self.send_modified() try: new_fields = RPCExecute('model', self.schema_model, 'get_keys', [r[0] for r in result], context=context) except RPCException: new_fields = [] for new_field in new_fields: if new_field['name'] not in self.fields: self.keys[new_field['name']] = new_field self.add_line(new_field['name']) self.wid_text.set_text('') if len(ids) != 1: WinSearch(self.schema_model, callback, sel_multi=True, ids=ids, context=context, domain=domain, new=False) else: callback([(id, None) for id in ids])
def sig_activate(self): model = self.get_model() if not model or not common.MODELACCESS[model]['read']: return if not self.focus_out or not self.field: return self.changed = False value = self.field.get(self.record) model = self.get_model() self.focus_out = False if model and not self.has_target(value): if (not self._readonly and (self.wid_text.get_text() or self.field.get_state_attrs(self.record)['required'])): domain = self.field.domain_get(self.record) context = self.field.get_search_context(self.record) order = self.field.get_search_order(self.record) text = self.wid_text.get_text() def callback(result): if result: self.field.set_client(self.record, self.value_from_id(*result[0]), force_change=True) else: self.wid_text.set_text('') self.focus_out = True self.changed = True win = WinSearch(model, callback, sel_multi=False, context=context, domain=domain, order=order, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.create_access, title=self.attrs.get('string'), exclude_field=self.attrs.get('relation_field')) win.screen.search_filter(quote(text)) if len(win.screen.group) == 1: win.response(None, Gtk.ResponseType.OK) else: win.show() return self.focus_out = True self.changed = True return
def _sig_add(self, *args): from tryton.gui.window.win_search import WinSearch domain = self.domain[:] model_name = self.screen.model_name try: if self.wid_text.get_text(): dom = [('rec_name', 'ilike', '%' + self.wid_text.get_text() + '%'), domain] else: dom = domain ids = RPCExecute('model', model_name, 'search', dom, 0, CONFIG['client.limit'], None, context=self.context) except RPCException: return False def callback(result): if result: ids = [x[0] for x in result] self.screen.load(ids, modified=True) self.screen.display(res_id=ids[0]) self.screen.set_cursor() self.wid_text.set_text('') if len(ids) != 1: WinSearch(model_name, callback, sel_multi=True, ids=ids, context=self.context, domain=domain) else: callback([(i, None) for i in ids])
def search_remote(self, record, relation, text, domain=None, context=None, callback=None): field = record.group.fields[self.attrs['name']] def search_callback(found): value = None if found: value = found[0] field.set_client(record, value) if callback: callback() win = WinSearch(relation, search_callback, sel_multi=False, context=context, domain=domain) win.screen.search_filter(quote(text.decode('utf-8'))) return win