Пример #1
0
 def create(self, model):
     from widget.model.group import ModelRecordGroup
     mod = ModelRecordGroup(resource=self.attrs['relation'],
                            fields={},
                            parent=model)
     mod.signal_connect(mod, 'model-changed', self._model_changed)
     return mod
Пример #2
0
 def set(self, model, value, test_state=False, modified=False):
     from widget.model.group import ModelRecordGroup
     mod =  ModelRecordGroup(resource=self.attrs['relation'], fields={}, parent=model)
     mod.signal_connect(mod, 'model-changed', self._model_changed)
     model.value[self.name] =mod
     #self.internal.signal_connect(self.internal, 'model-changed', self._model_changed)
     model.value[self.name].pre_load(value, display=False)
Пример #3
0
 def set(self, model, value, test_state=False, modified=False):
     from widget.model.group import ModelRecordGroup
     mod = ModelRecordGroup(resource=self.attrs['relation'],
                            fields={},
                            parent=model)
     mod.signal_connect(mod, 'model-changed', self._model_changed)
     model.value[self.name] = mod
     #self.internal.signal_connect(self.internal, 'model-changed', self._model_changed)
     model.value[self.name].pre_load(value, display=False)
Пример #4
0
 def set(self, model, value, test_state=False, modified=False):
     if value and not isinstance(value[0], int):
         model = self.set_default(model, value)
         return
     from widget.model.group import ModelRecordGroup
     mod =  ModelRecordGroup(resource=self.attrs['relation'], fields={}, parent=model)
     mod.signal_connect(mod, 'model-changed', self._model_changed)
     model.value[self.name] = mod
     #self.internal.signal_connect(self.internal, 'model-changed', self._model_changed)
     if value:
         value = value[:self.limit]
     model.value[self.name].pre_load(value, display=False)
Пример #5
0
 def set(self, model, value, test_state=False, modified=False):
     if value and not isinstance(value[0], int):
         model = self.set_default(model, value)
         return
     from widget.model.group import ModelRecordGroup
     mod = ModelRecordGroup(resource=self.attrs['relation'],
                            fields={},
                            parent=model)
     mod.signal_connect(mod, 'model-changed', self._model_changed)
     model.value[self.name] = mod
     #self.internal.signal_connect(self.internal, 'model-changed', self._model_changed)
     if value:
         value = value[:self.limit]
     model.value[self.name].pre_load(value, display=False)
Пример #6
0
    def set_default(self, model, value):
        from widget.model.group import ModelRecordGroup
        fields = {}
        if value and len(value):
            context = self.context_get(model)
            rpc2 = RPCProxy(self.attrs['relation'])
            fields = rpc2.fields_get(value[0].keys(), context)

        model.value[self.name] = ModelRecordGroup(
            resource=self.attrs['relation'], fields=fields, parent=model)
        model.value[self.name].signal_connect(model.value[self.name],
                                              'model-changed',
                                              self._model_changed)
        mod = None
        for record in (value or []):
            mod = model.value[self.name].model_new(default=False)
            mod.set_default(record)
            model.value[self.name].model_add(mod)
        model.value[self.name].current_model = mod
        #mod.signal('record-changed')
        return True
Пример #7
0
 def create(self, model):
     from widget.model.group import ModelRecordGroup
     mod = ModelRecordGroup(resource=self.attrs['relation'], fields={}, parent=model)
     mod.signal_connect(mod, 'model-changed', self._model_changed)
     return mod
Пример #8
0
    def __init__(self,
                 model_name,
                 view_ids=None,
                 view_type=None,
                 help={},
                 parent=None,
                 context=None,
                 views_preload=None,
                 tree_saves=True,
                 domain=None,
                 create_new=False,
                 row_activate=None,
                 hastoolbar=False,
                 hassubmenu=False,
                 default_get=None,
                 show_search=False,
                 window=None,
                 limit=100,
                 readonly=False,
                 auto_search=True,
                 is_wizard=False,
                 search_view=None,
                 win_search=False):
        if view_ids is None:
            view_ids = []
        if view_type is None:
            view_type = ['tree', 'form']
        if views_preload is None:
            views_preload = {}
        if not domain:
            domain = []
        if default_get is None:
            default_get = {}
        if search_view is None:
            search_view = "{}"

        super(Screen, self).__init__()
        self.win_search = win_search
        self.win_search_domain = []
        self.win_search_ids = []
        self.win_search_callback = False
        self.show_search = show_search
        self.auto_search = auto_search
        self.search_count = 0
        self.hastoolbar = hastoolbar
        self.hassubmenu = hassubmenu
        self.default_get = default_get
        self.sort = False
        self.type = None
        self.dummy_cal = False
        if not row_activate:
            self.row_activate = lambda self, screen=None: self.switch_view(
                screen, 'form')
        else:
            self.row_activate = row_activate
        self.create_new = create_new
        self.name = model_name
        self.domain_init = domain
        self.action_domain = []
        self.action_domain += domain
        self.latest_search = []
        self.views_preload = views_preload
        self.resource = model_name
        self.rpc = RPCProxy(model_name)
        self.context_init = context or {}
        self.context_update()
        self.views = []
        self.fields = {}
        self.view_ids = view_ids
        self.models = None
        self.parent = parent
        self.window = window
        self.is_wizard = is_wizard
        self.search_view = eval(search_view)
        models = ModelRecordGroup(model_name,
                                  self.fields,
                                  parent=self.parent,
                                  context=self.context,
                                  is_wizard=is_wizard,
                                  screen=self)
        self.models_set(models)
        self.current_model = None
        self.screen_container = screen_container(self.win_search)
        self.filter_widget = None
        self.widget = self.screen_container.widget_get()
        self.__current_view = 0
        self.tree_saves = tree_saves
        self.limit = limit
        self.old_limit = limit
        self.offset = 0
        self.readonly = readonly
        self.custom_panels = []
        self.view_fields = {
        }  # Used to switch self.fields when the view switchs
        self.sort_domain = []
        self.old_ctx = {}
        self.help_mode = False
        if view_type:
            self.view_to_load = view_type[1:]
            view_id = False
            if view_ids:
                view_id = view_ids.pop(0)
            if view_type[0] in ('tree', 'graph', 'calendar'):
                self.screen_container.help = help
                self.help_mode = view_type[0]
            view = self.add_view_id(view_id, view_type[0], help=help)
            self.screen_container.set(view.widget)
        self.display()
Пример #9
0
    def __init__(self,
                 model_name,
                 view_ids=None,
                 view_type=None,
                 parent=None,
                 context=None,
                 views_preload=None,
                 tree_saves=True,
                 domain=None,
                 create_new=False,
                 row_activate=None,
                 hastoolbar=False,
                 default_get=None,
                 show_search=False,
                 window=None,
                 limit=80,
                 readonly=False,
                 is_wizard=False):
        if view_ids is None:
            view_ids = []
        if view_type is None:
            view_type = ['tree', 'form']
        if context is None:
            context = {}
        if views_preload is None:
            views_preload = {}
        if domain is None:
            domain = []
        if default_get is None:
            default_get = {}

        super(Screen, self).__init__()

        self.show_search = show_search
        self.search_count = 0
        self.hastoolbar = hastoolbar
        self.default_get = default_get
        if not row_activate:
            self.row_activate = lambda self, screen=None: self.switch_view(
                screen, 'form')
        else:
            self.row_activate = row_activate
        self.create_new = create_new
        self.name = model_name
        self.domain = domain
        self.latest_search = []
        self.views_preload = views_preload
        self.resource = model_name
        self.rpc = RPCProxy(model_name)
        self.context = context
        self.context.update(rpc.session.context)
        self.views = []
        self.fields = {}
        self.view_ids = view_ids
        self.models = None
        self.parent = parent
        self.window = window
        self.is_wizard = is_wizard
        models = ModelRecordGroup(model_name,
                                  self.fields,
                                  parent=self.parent,
                                  context=self.context,
                                  is_wizard=is_wizard)
        self.models_set(models)
        self.current_model = None
        self.screen_container = screen_container()
        self.filter_widget = None
        self.widget = self.screen_container.widget_get()
        self.__current_view = 0
        self.tree_saves = tree_saves
        self.limit = limit
        self.readonly = readonly
        self.view_fields = {
        }  # Used to switch self.fields when the view switchs

        if view_type:
            self.view_to_load = view_type[1:]
            view_id = False
            if view_ids:
                view_id = view_ids.pop(0)
            view = self.add_view_id(view_id, view_type[0])
            self.screen_container.set(view.widget)
        self.display()