diff --git a/realms/lib/hook.py b/realms/lib/hook.py index bf6a00e..61d2885 100644 --- a/realms/lib/hook.py +++ b/realms/lib/hook.py @@ -7,7 +7,7 @@ def hook_func(name, fn): @wraps(fn) def wrapper(self, *args, **kwargs): for hook, a, kw in self.__class__._pre_hooks.get(name) or []: - hook(*args, **kwargs) + hook(self, *args, **kwargs) rv = fn(self, *args, **kwargs) @@ -15,7 +15,7 @@ def hook_func(name, fn): kwargs.update(dict(rv=rv)) for hook, a, kw in self.__class__._post_hooks.get(name) or []: - hook(*args, **kwargs) + hook(self, *args, **kwargs) return rv return wrapper diff --git a/realms/modules/search/hooks.py b/realms/modules/search/hooks.py index 25a7d12..abf7346 100644 --- a/realms/modules/search/hooks.py +++ b/realms/modules/search/hooks.py @@ -1,35 +1,40 @@ -from realms.modules.wiki.models import Wiki +from realms.modules.wiki.models import WikiPage from realms import search -@Wiki.after('write_page') -def wiki_write_page(name, content, message=None, username=None, email=None, **kwargs): +@WikiPage.after('write') +def wiki_write_page(page, content, message=None, username=None, email=None, **kwargs): if not hasattr(search, 'index_wiki'): # using simple search or none return - body = dict(name=name, + body = dict(name=page.name, content=content, message=message, email=email, username=username) - return search.index_wiki(name, body) + return search.index_wiki(page.name, body) -@Wiki.after('rename_page') -def wiki_rename_page(old_name, *args, **kwargs): +@WikiPage.before('rename') +def wiki_rename_page_del(page, *args, **kwargs): if not hasattr(search, 'index_wiki'): return - return search.delete_wiki(old_name) + return search.delete_wiki(page.name) -@Wiki.after('delete_page') -def wiki_delete_page(name, *args, **kwargs): +@WikiPage.after('rename') +def wiki_rename_page_add(page, new_name, *args, **kwargs): + wiki_write_page(page, page.data, *args, **kwargs) + + +@WikiPage.after('delete') +def wiki_delete_page(page, *args, **kwargs): if not hasattr(search, 'index_wiki'): return - return search.delete_wiki(name) + return search.delete_wiki(page.name) diff --git a/realms/modules/wiki/models.py b/realms/modules/wiki/models.py index 2d12d18..2bb8e1d 100644 --- a/realms/modules/wiki/models.py +++ b/realms/modules/wiki/models.py @@ -69,7 +69,7 @@ class Wiki(HookMixin): return rv -class WikiPage(object): +class WikiPage(HookMixin): def __init__(self, name, wiki, sha='HEAD'): self.name = name self.filename = cname_to_filename(name)