コード例 #1
0
 def rule_decorator(object):
     if isclass(object):
         clazz = object
         def init(self, *args, **kwargs):
             scope.SimpleRule.__init__(self)
             if name is None:
                 if hasattr(clazz, '__name__'):
                     self.name = clazz.__name__
                 else:
                     self.name = "JSR223-Jython"
             else:
                 self.name = name
             #set_uid_prefix(self)
             self.log = logging.getLogger(LOG_PREFIX + "." + self.name)
             clazz.__init__(self, *args, **kwargs)
             if description is not None:
                 self.description = description
             elif self.description is None and clazz.__doc__:
                 self.description = clazz.__doc__
             if hasattr(self, "getEventTriggers"):
                 self.triggers = log_traceback(self.getEventTriggers)()
             if tags is not None:
                 self.tags = set(tags)
         subclass = type(clazz.__name__, (clazz, scope.SimpleRule), dict(__init__=init))
         subclass.execute = log_traceback(clazz.execute)
         return addRule(subclass())
     else:
         function = object
         newRule = _FunctionRule(function, function.triggers, name=name, description=description, tags=tags)
         get_automation_manager().addRule(newRule)
         function.triggers = None
         return function
コード例 #2
0
 def __init__(self, callback, triggers, name=None, description=None, tags=None):
     self.triggers = triggers
     if name is None:
         if hasattr(callback, '__name__'):
             name = callback.__name__
         else:
             name = "JSR223-Jython"
     self.name = name
     callback.log = logging.getLogger("{}.{}".format(LOG_PREFIX, name))
     self.callback = log_traceback(callback)
     if description is not None:
         self.description = description
     if tags is not None:
         self.tags = set(tags)
コード例 #3
0
    def rule_decorator(new_rule):
        if isclass(new_rule):
            class_ = new_rule

            def init(self, *args, **kwargs):
                SimpleRule.__init__(self)
                if name is None:
                    if hasattr(class_, '__name__'):
                        self.name = class_.__name__
                    else:
                        self.name = "JSR223-Jython"
                else:
                    self.name = name
                # set_uid_prefix(self)
                self.log = logging.getLogger(u"{}.{}".format(
                    LOG_PREFIX, self.name))
                class_.__init__(self, *args, **kwargs)
                if description is not None:
                    self.description = description
                elif self.description is None and class_.__doc__:
                    self.description = class_.__doc__
                if hasattr(self, "getEventTriggers"):
                    self.triggers = log_traceback(self.getEventTriggers)()
                if tags is not None:
                    self.tags = set(tags)

            subclass = type(class_.__name__, (class_, SimpleRule),
                            dict(__init__=init))
            subclass.execute = log_traceback(class_.execute)
            new_rule = addRule(subclass())
            subclass.UID = new_rule.UID
            return subclass
        else:
            callable_obj = new_rule
            if callable_obj.triggers.count(None) == 0:
                simple_rule = _FunctionRule(callable_obj,
                                            callable_obj.triggers,
                                            name=name,
                                            description=description,
                                            tags=tags)
                new_rule = addRule(simple_rule)
                callable_obj.UID = new_rule.UID
                callable_obj.triggers = None
                return callable_obj
            else:
                LOG.warn(
                    u"rule: not creating rule '{}' due to an invalid trigger definition"
                    .format(name))
                return None
コード例 #4
0
ファイル: rules.py プロジェクト: yfaway/openhab-rules
 def init(self, *args, **kwargs):
     SimpleRule.__init__(self)
     if name is None:
         if hasattr(class_, '__name__'):
             self.name = class_.__name__
         else:
             self.name = "JSR223-Jython"
     else:
         self.name = name
     # set_uid_prefix(self)
     self.log = getLogger(self.name)
     class_.__init__(self, *args, **kwargs)
     if description is not None:
         self.description = description
     elif self.description is None and class_.__doc__:
         self.description = class_.__doc__
     if hasattr(self, "getEventTriggers"):
         self.triggers = log_traceback(self.getEventTriggers)()
     if tags is not None:
         self.tags = set(tags)
コード例 #5
0
 def init(self, *args, **kwargs):
     scope.SimpleRule.__init__(self)
     if name is None:
         if hasattr(clazz, '__name__'):
             self.name = clazz.__name__
         else:
             self.name = "JSR223-Jython"
     else:
         self.name = name
     #set_uid_prefix(self)
     self.log = logging.getLogger("{}.{}".format(LOG_PREFIX, self.name))
     clazz.__init__(self, *args, **kwargs)
     if description is not None:
         self.description = description
     elif self.description is None and clazz.__doc__:
         self.description = clazz.__doc__
     if hasattr(self, "getEventTriggers"):
         self.triggers = log_traceback(self.getEventTriggers)()
     if tags is not None:
         self.tags = set(tags)