| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
"""Script that implements some prebuild tasks needed by target docs.prebuild"""import sysimport os.pathimport timefrom contextlib import contextmanagerfrom searx import settings, get_setting, localesfrom searx.infopage import InfoPageSet, InfoPage_doc_user = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'docs', 'user'))def main():    locales.locales_initialize()    base_url = get_setting('server.base_url', None)    if base_url:        infopageset_ctx = _instance_infosetset_ctx(base_url)    else:        infopageset_ctx = _offline_infosetset_ctx()    with infopageset_ctx as infopageset:        for _, _, page in infopageset.iter_pages('en'):            fname = os.path.join(_doc_user, os.path.basename(page.fname))            with open(fname, 'w') as f:                f.write(page.content)class OfflinePage(InfoPage):    def get_ctx(self):          """Jinja context to render :py:obj:`DocPage.content` for offline purpose (no        links to SearXNG instance)"""        ctx = super().get_ctx()        ctx['link'] = lambda name, url: '`%s`' % name        ctx['search'] = lambda query: '`%s`' % query        return ctx@contextmanagerdef _offline_infosetset_ctx():    yield InfoPageSet(OfflinePage)@contextmanagerdef _instance_infosetset_ctx(base_url):            settings['server']['secret_key'] = ''    from searx.webapp import app                with app.test_request_context(base_url=base_url):        yield InfoPageSet()                                                time.sleep(3)    return DOCif __name__ == '__main__':    sys.exit(main())
 |