search module, wip
This commit is contained in:
parent
c2404760b8
commit
312c61ef61
2
Vagrantfile
vendored
2
Vagrantfile
vendored
|
@ -9,7 +9,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|||
vb.cpus = 2
|
||||
end
|
||||
|
||||
config.vm.provision "shell", path: "install.sh", privileged: "false"
|
||||
config.vm.provision "shell", path: "install.sh", privileged: false
|
||||
end
|
||||
|
||||
Vagrant::Config.run do |config|
|
||||
|
|
|
@ -11,6 +11,7 @@ import httplib
|
|||
import traceback
|
||||
import click
|
||||
from flask import Flask, request, render_template, url_for, redirect, g
|
||||
from flask.ext.elastic import Elastic
|
||||
from flask.ext.cache import Cache
|
||||
from flask.ext.login import LoginManager, current_user
|
||||
from flask.ext.sqlalchemy import SQLAlchemy, declarative_base, Model, _QueryProperty
|
||||
|
@ -160,6 +161,7 @@ def create_app(config=None):
|
|||
db.init_app(app)
|
||||
cache.init_app(app)
|
||||
assets.init_app(app)
|
||||
elastic.init_app(app)
|
||||
|
||||
for status_code in httplib.responses:
|
||||
if status_code >= 400:
|
||||
|
@ -197,6 +199,7 @@ login_manager = LoginManager()
|
|||
db = SQLAlchemy()
|
||||
cache = Cache()
|
||||
assets = Assets()
|
||||
elastic = Elastic()
|
||||
|
||||
assets.register('main.js',
|
||||
'vendor/jquery/dist/jquery.js',
|
||||
|
|
|
@ -95,6 +95,8 @@ CACHE_REDIS_DB = '0'
|
|||
#CACHE_TYPE = 'memcached'
|
||||
CACHE_MEMCACHED_SERVERS = ['127.0.0.1:11211']
|
||||
|
||||
ELASTICSEARCH_URL = 'http://127.0.0.1:9200'
|
||||
|
||||
# Get ReCaptcha Keys for your domain here:
|
||||
# https://www.google.com/recaptcha/admin#whyrecaptcha
|
||||
RECAPTCHA_ENABLE = False
|
||||
|
@ -146,4 +148,4 @@ if ENV != "DEV":
|
|||
ASSETS_DEBUG = False
|
||||
SQLALCHEMY_ECHO = False
|
||||
|
||||
MODULES = ['wiki', 'auth']
|
||||
MODULES = ['wiki', 'auth', 'search']
|
||||
|
|
|
@ -7,12 +7,15 @@ 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(*a, **kw)
|
||||
hook(*args, **kwargs)
|
||||
|
||||
rv = fn(self, *args, **kwargs)
|
||||
|
||||
# Attach return value for post hooks
|
||||
kwargs.update(dict(rv=rv))
|
||||
|
||||
for hook, a, kw in self.__class__._post_hooks.get(name) or []:
|
||||
hook(*a, **kw)
|
||||
hook(*args, **kwargs)
|
||||
|
||||
return rv
|
||||
return wrapper
|
||||
|
|
0
realms/modules/search/__init__.py
Normal file
0
realms/modules/search/__init__.py
Normal file
15
realms/modules/search/hooks.py
Normal file
15
realms/modules/search/hooks.py
Normal file
|
@ -0,0 +1,15 @@
|
|||
from realms.modules.wiki.models import Wiki
|
||||
from realms.modules.search.models import Search
|
||||
|
||||
|
||||
@Wiki.after('write_page')
|
||||
def wiki_write_page(name, content, **kwargs):
|
||||
body = dict(name=name,
|
||||
content=content)
|
||||
body.update(kwargs)
|
||||
return Search.index('wiki', 'page', body=body)
|
||||
|
||||
|
||||
@Wiki.after('rename_page')
|
||||
def wiki_rename_page(*args, **kwargs):
|
||||
pass
|
17
realms/modules/search/models.py
Normal file
17
realms/modules/search/models.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
from realms import elastic
|
||||
from realms.lib.model import HookMixin
|
||||
|
||||
|
||||
class Search(HookMixin):
|
||||
|
||||
@classmethod
|
||||
def index(cls, index, doc_type, id_=None, body=None):
|
||||
return elastic.index(index=index, doc_type=doc_type, id=id_, body=body)
|
||||
|
||||
@classmethod
|
||||
def wiki(cls, query):
|
||||
return elastic.search(index='wiki', body={"query": {"match_all": {}}})
|
||||
|
||||
@classmethod
|
||||
def users(cls, query):
|
||||
pass
|
10
realms/modules/search/views.py
Normal file
10
realms/modules/search/views.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from flask import abort, g, render_template, request, redirect, Blueprint, flash, url_for, current_app
|
||||
from .models import Search
|
||||
blueprint = Blueprint('search', __name__)
|
||||
|
||||
|
||||
@blueprint.route('/_search')
|
||||
def search():
|
||||
results = Search.wiki(request.args.get('q'))
|
||||
print results
|
||||
return render_template('search/search.html', results=results)
|
|
@ -124,7 +124,6 @@ class Wiki(HookMixin):
|
|||
|
||||
return ret
|
||||
|
||||
|
||||
def rename_page(self, old_name, new_name, username=None, email=None, message=None):
|
||||
"""Rename page.
|
||||
|
||||
|
|
4
realms/templates/search/search.html
Normal file
4
realms/templates/search/search.html
Normal file
|
@ -0,0 +1,4 @@
|
|||
{% extends 'layout.html' %}
|
||||
{% block body %}
|
||||
|
||||
{% endblock %}
|
Loading…
Reference in a new issue