X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/6c9b763b7ca1cd2f2e06fc0d42eaa6025552b0f2..c76406e46e71cb86cfb440667bfbbe21b36e709e:/forum_modules/pgfulltext/handlers.py?ds=sidebyside diff --git a/forum_modules/pgfulltext/handlers.py b/forum_modules/pgfulltext/handlers.py index 5f18270..9d8f954 100644 --- a/forum_modules/pgfulltext/handlers.py +++ b/forum_modules/pgfulltext/handlers.py @@ -1,6 +1,8 @@ import re +from django.db import connection, transaction from django.db.models import Q from forum.models.question import Question, QuestionManager +from forum.models.node import Node from forum.modules import decorate word_re = re.compile(r'\w+', re.UNICODE) @@ -10,7 +12,7 @@ def question_search(self, keywords): tsquery = " | ".join(word_re.findall(keywords)) ilike = keywords + u"%%" - return self.extra( + return True, self.extra( tables = ['forum_rootnode_doc'], select={ 'ranking': """ @@ -23,9 +25,21 @@ def question_search(self, keywords): """], params=[tsquery, ilike], select_params=[tsquery], - order_by=['-ranking'] ) +def delete_docs(node): + cursor = connection.cursor() + cursor.execute("DELETE FROM forum_rootnode_doc WHERE node_id = %s" % (node.id)) + + for n in node.children.all(): + delete_docs(n) + + +#@decorate(Node.delete) +def delete(origin, self, *args, **kwargs): + delete_docs(self) + transaction.commit_unless_managed() + origin(self, *args, **kwargs)