class Resource(object): def __init__(self, name, parent=None, schema=None, hooks=None): self.name = name self.parent = parent self.parents = self.create_parents() self.handler = Handler(name, schema, hooks or {}) if schema is not None: self.before_write(validate) def create_parents(self): if self.parent is not None: return self.parent.parents + [self.parent.name] return [] def before_read(self, hook): self.add_hook(hook, *('before_' + i for i in ('get', 'find'))) def before_write(self, hook): self.add_hook(hook, *('before_' + i for i in ('create', 'replace', 'update'))) def before(self, hook): self.add_hook(hook, *('before_' + i for i in ('create', 'replace', 'update', 'get', 'find'))) def after_read(self, hook): self.add_hook(hook, *('after_' + i for i in ('get', 'find'))) def after_write(self, hook): self.add_hook(hook, *('after_' + i for i in ('create', 'replace', 'update'))) def after(self, hook): self.add_hook(hook, *('after_' + i for i in ('create', 'replace', 'update', 'get', 'find'))) def add_hook(self, hook, *actions): for i in actions: self.handler.add_hook(i, hook)
def __init__(self, name, parent=None, schema=None, hooks=None): self.name = name self.parent = parent self.parents = self.create_parents() self.handler = Handler(name, schema, hooks or {}) if schema is not None: self.before_write(validate)