#!/usr/bin/env python
"""
    debug script for indexing problems

    @copyright: 2010 MoinMoin:ReimarBauer
    @license: GNU GPL, see COPYING for details.
"""

import sys, os, shutil, time
moinpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
sys.path.insert(0, moinpath)
os.chdir(moinpath)

from MoinMoin.search.Xapian import XapianIndex
from MoinMoin.web.contexts import ScriptContext
from MoinMoin._tests import nuke_xapian_index, wikiconfig, become_trusted, create_page, nuke_page, append_page
from MoinMoin.PageEditor import PageEditor


def run(request, timer):
    pages = {u'SearchTestPage': u'this is a test page',
             u'SearchTestLinks': u'SearchTestPage',
             u'SearchTestLinksLowerCase': u'searchtestpage',
             u'SearchTestOtherLinks': u'SearchTestLinks',
             u'TestEdit': u'TestEdit',
             u'TestOnEditing': u'another test page'}

    nuke_xapian_index(request)
    index = XapianIndex(request)

    index.do_queued_updates()

    become_trusted(request)
    for pagename, content in pages.iteritems():
        if content:
            page = PageEditor(request, pagename, do_editor_backup=False)
            page.deletePage()
            fpath = page.getPagePath(check_create=0)
            shutil.rmtree(fpath, True)
            time.sleep(timer)
            page.saveText(content, 0)

    connection = XapianIndex(request).get_search_connection()
    documents = connection.get_all_documents()
    result = len(documents)
    indexpages = []
    for document in documents:
        data = document.data
        indexpages.append(data["pagename"][0])

    for pagename, text in pages.iteritems():
        if text:
            nuke_page(request, pagename)

    return result, indexpages, pages.keys()

if __name__ == '__main__':
    request = ScriptContext()
    print "----------------------------------------"
    print "this fails - unfortunately"
    result, indexpages, keys = run(request, timer=0)
    print "***************** %s *************" % result
    print set(indexpages) == set(keys)
    print "----------------------------------------"
    print "this succedds, because of 1s sleep"
    result, indexpages, keys = run(request, timer=1)
    print "***************** %s *************" % result
    print set(indexpages) == set(keys)

