コード例 #1
0
ファイル: rule.py プロジェクト: bellamusic/cloudsdk
class Rule():
    cls = None

    def __init__(self):
        self.server = DBServer('everhomes_rule', 'tasks')


    def _find(self, pattern=None, **conditions):
        return self.server.query(pattern=pattern, **conditions)

    def _find_all(self):
        return self.server.find_all()

    @staticmethod
    @log
    def validate(key, condition):
        server = DBServer(key, 'tasks')
        # should add datetime support?
        ret = server.query(pattern=condition)
        server.close()
        if ret is None or len(ret) <= 0:
            return False
        return True

    # send alarm
    @staticmethod
    def send_alarm(data):
        server = DBServer('everhomes_alarm', 'tasks')
        server.insert(data)
        server.close()

    @classmethod
    def find(cls, pattern=None, **conditions):
        return cls.instance()._find(pattern=pattern, **conditions)

    @classmethod
    def find_all(cls):
        return cls.instance()._find_all()

    @classmethod
    def instance(cls):
        if cls.cls is None:
            cls.cls = cls()
        return cls.cls
コード例 #2
0
ファイル: manager.py プロジェクト: bellamusic/cloudsdk
class RuleManager():
    def __init__(self):
        """
        db client DBServer('collection','table')
        """
        self.db = DBServer('everhomes_rule', 'tasks')

    def register(self, rule, **condition):
        """
        :param rule: unique name
        :param condition:
        :return:
        """
        if self.db.find_one(**{'_name': rule}):
            logger.error("The rule name is exist.", "Rule name=", rule)
            raise ValueError("Duplicate key error")
        self.db.insert(condition)

    def deregister(self, rule):
        """
        :param rule: rule name
        :return:
        """
        self.db.delete(pattern={'_name': rule})

    def list_rules(self):
        return self.db.find_all()

    def query(self, **condition):
        return self.db.query(**condition)

    def close(self):
        self.db.close()

    def __del__(self):
        self.db.close()