Пример #1
0
def test_lazy():
    from xoutil.objects import lazy, setdefaultattr
    class new(object): pass
    inst = new()
    setter = lambda a: -a
    setdefaultattr(inst, 'c', lazy(setter, 10))
    assert inst.c == -10
    setdefaultattr(inst, 'c', lazy(setter, 20))
    assert inst.c == -10
Пример #2
0
 def _handle_browser_tags(self, record, request):
     tags = setdefaultattr(record, "tags", {})
     ua = request.user_agent
     if ua:
         tags["os"] = ua.platform.capitalize()
         browser = str(ua.browser).capitalize() + " " + str(ua.version)
         tags["browser"] = browser
Пример #3
0
 def __set__(self, inst, value):
     from xoutil.objects import setdefaultattr
     target = self.target
     if target and not isinstance(value, target):
         raise TypeError('Cannot assign %s to %s' % (value, self.name))
     previous = getattr(inst, self._name, None)
     if previous:
         backrefs = getattr(previous, self.ref)
         backrefs.remove(self)
     setattr(inst, self._name, value)
     backrefs = setdefaultattr(value, self.ref, [])
     backrefs.append(inst)
Пример #4
0
def initialize_sys_path(self):
    from xoutil.objects import setdefaultattr
    from xoeuf.odoo.modules import module

    _super = patch.get_super("initialize_sys_path")
    external_addons = setdefaultattr(self, "__addons", [])
    if not external_addons:
        _super()
        result = module.ad_paths
        external_addons.extend(self.find_external_addons())
        result.extend(external_addons)
        module.ad_paths = result
        return result
    else:
        return module.ad_paths
Пример #5
0
        def _handle_cli_tags(self, record):
            import sys
            from itertools import takewhile

            tags = setdefaultattr(record, "tags", {})
            if sys.argv:
                cmd = " ".join(takewhile(lambda arg: not arg.startswith("-"), sys.argv))
            else:
                cmd = None
            if cmd:
                import os

                cmd = os.path.basename(cmd)
            if cmd:
                tags["cmd"] = cmd
Пример #6
0
 def __new__(cls, **attrs):
     from xoutil.objects import setdefaultattr
     this_instances = setdefaultattr(Entity, 'this_instances', [])
     res = super(Entity, cls).__new__(cls, **attrs)
     this_instances.append(res)
     return res
Пример #7
0
 def _handle_db_tags(self, record, request):
     db = getattr(request, "session", {}).get("db", None)
     if db:
         tags = setdefaultattr(record, "tags", {})
         tags["db"] = db
Пример #8
0
 def inner(self, *args, **kwargs):
     stack = setdefaultattr(self, attr, [])
     items = pop_n(stack, n)
     kwargs[kwargname] = tuple(items)
     return f(self, *args, **kwargs)
Пример #9
0
 def inner(self, *args, **kwargs):
     res = f(self, *args, **kwargs)
     setdefaultattr(self, attr, []).append(res)
     return res