def _init_storage(self, storage): if isinstance(storage, StorageBackend): self.storage = storage else: # If a StorageBackend isn't provided, use the default # SQLAlchemy backend. from sphinx.websupport.storage.sqlalchemystorage \ import SQLAlchemyStorage if not storage: # no explicit DB path given; create default sqlite database db_path = path.join(self.datadir, 'db', 'websupport.db') ensuredir(path.dirname(db_path)) storage = 'sqlite:///' + db_path self.storage = SQLAlchemyStorage(storage)
from werkzeug import SharedDataMiddleware from whoosh.fields import Schema, ID, TEXT, NGRAM import os import cPickle as pickle ROOT = os.path.dirname(os.path.abspath(__file__)) SRCDIR = os.path.join(ROOT, 'source') BUILDDIR = os.path.join(ROOT, 'build', 'web') INDEXDIR = os.path.join(BUILDDIR, "data", "db") print("SRC:{0}, BUILD:{1}, INDEX:{2}".format(SRCDIR, BUILDDIR, INDEXDIR)) uri = os.environ.get('DATABASE_URL') # DATABSE_URL is given storage = SQLAlchemyStorage(uri) whoosh = whooshsearch.WhooshSearch whoosh.schema = Schema(path=ID(stored=True, unique=True), title=TEXT(field_boost=2.0, stored=True), text=NGRAM(stored=True)) search = whoosh(INDEXDIR) support = WebSupport(srcdir=SRCDIR, builddir=BUILDDIR, search=search, storage=storage) #### flask part from flask import Flask, render_template, abort, g, request, jsonify, url_for