Dre4m Shell
Server IP : 127.0.0.2  /  Your IP : 3.139.86.62
Web Server : Apache/2.4.18 (Ubuntu)
System :
User : www-data ( )
PHP Version : 7.0.33-0ubuntu0.16.04.16
Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /opt/odoo/odoo/tools/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /opt/odoo/odoo/tools/yaml_tag.py
import yaml
import logging

class YamlTag(object):
    """
    Superclass for constructors of custom tags defined in yaml file.
    __str__ is overriden in subclass and used for serialization in module recorder.
    """
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)
    def __getitem__(self, key):
        return getattr(self, key)
    def __getattr__(self, attr):
        return None
    def __repr__(self):
        return "<%s %s>" % (self.__class__.__name__, sorted(self.__dict__.items()))

class Assert(YamlTag):
    def __init__(self, model, id=None, severity=logging.WARNING, string="NONAME", **kwargs):
        self.model = model
        self.id = id
        self.severity = severity
        self.string = string
        super(Assert, self).__init__(**kwargs)
    
class Record(YamlTag):
    def __init__(self, model, id, use='id', view=True, **kwargs):
        self.model = model
        self.id = id
        self.view = view
        super(Record, self).__init__(**kwargs)
    def __str__(self):
        return '!record {model: %s, id: %s}:' % (str(self.model,), str(self.id,))

class Python(YamlTag):
    def __init__(self, model, severity=logging.ERROR, name="", **kwargs):
        self.model= model
        self.severity = severity
        self.name = name
        super(Python, self).__init__(**kwargs)
    def __str__(self):
        return '!python {model: %s}: |' % (str(self.model), )

class Menuitem(YamlTag):
    def __init__(self, id, name, **kwargs):
        self.id = id
        self.name = name
        super(Menuitem, self).__init__(**kwargs)

class Workflow(YamlTag):
    def __init__(self, model, action, ref=None, **kwargs):
        self.model = model
        self.action = action
        self.ref = ref
        super(Workflow, self).__init__(**kwargs)
    def __str__(self):
        return '!workflow {model: %s, action: %s, ref: %s}' % (str(self.model,), str(self.action,), str(self.ref,))

class ActWindow(YamlTag):
    def __init__(self, **kwargs):
        super(ActWindow, self).__init__(**kwargs)

class Function(YamlTag):
    def __init__(self, model, name, **kwargs):
        self.model = model
        self.name = name
        super(Function, self).__init__(**kwargs)

class Report(YamlTag):
    def __init__(self, model, name, string, **kwargs):
        self.model = model
        self.name = name
        self.string = string
        super(Report, self).__init__(**kwargs)

class Delete(YamlTag):
    def __init__(self, **kwargs):
        super(Delete, self).__init__(**kwargs)

class Context(YamlTag):
    def __init__(self, **kwargs):
        super(Context, self).__init__(**kwargs)

class Url(YamlTag):
    def __init__(self, **kwargs):
        super(Url, self).__init__(**kwargs)

class Eval(YamlTag):
    def __init__(self, expression):
        self.expression = expression
        super(Eval, self).__init__()
    def __str__(self):
        return '!eval %s' % str(self.expression)
    
class Ref(YamlTag):
    def __init__(self, expr="False", *args, **kwargs):
        self.expr = expr
        super(Ref, self).__init__(*args, **kwargs)
    def __str__(self):
        return 'ref(%s)' % repr(self.expr)
    
class IrSet(YamlTag):
    def __init__(self):
        super(IrSet, self).__init__()

def assert_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return Assert(**kwargs)

def record_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    assert "model" in kwargs, "'model' argument is required for !record"
    assert "id" in kwargs, "'id' argument is required for !record"
    return Record(**kwargs)

def python_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    kwargs['first_line'] = node.start_mark.line + 1
    return Python(**kwargs)

def menuitem_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return Menuitem(**kwargs)

def workflow_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return Workflow(**kwargs)

def act_window_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return ActWindow(**kwargs)

def function_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return Function(**kwargs)

def report_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return Report(**kwargs)

def delete_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return Delete(**kwargs)

def context_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return Context(**kwargs)

def url_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return Url(**kwargs)

def eval_constructor(loader, node):
    expression = loader.construct_scalar(node)
    return Eval(expression)
    
def ref_constructor(loader, tag_suffix, node):
    if tag_suffix == "id":
        kwargs = {"id": loader.construct_scalar(node)}
    else:
        kwargs = loader.construct_mapping(node)
    return Ref(**kwargs)
    
def ir_set_constructor(loader, node):
    kwargs = loader.construct_mapping(node)
    return IrSet(**kwargs)
    
# Registers constructors for custom tags.
# Constructors are actually defined globally: do not redefined them in another
# class/file/package.  This means that module recorder need import this file.
def add_constructors():
    yaml.add_constructor(u"!assert", assert_constructor)
    yaml.add_constructor(u"!record", record_constructor)
    yaml.add_constructor(u"!python", python_constructor)
    yaml.add_constructor(u"!menuitem", menuitem_constructor)
    yaml.add_constructor(u"!workflow", workflow_constructor)
    yaml.add_constructor(u"!act_window", act_window_constructor)
    yaml.add_constructor(u"!function", function_constructor)
    yaml.add_constructor(u"!report", report_constructor)
    yaml.add_constructor(u"!context", context_constructor)
    yaml.add_constructor(u"!delete", delete_constructor)
    yaml.add_constructor(u"!url", url_constructor)
    yaml.add_constructor(u"!eval", eval_constructor)
    yaml.add_multi_constructor(u"!ref", ref_constructor)
    yaml.add_constructor(u"!ir_set", ir_set_constructor)
add_constructors()

Anon7 - 2022
AnonSec Team