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
|
vb.cpus = 2
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.provision "shell", path: "install.sh", privileged: "false"
|
config.vm.provision "shell", path: "install.sh", privileged: false
|
||||||
end
|
end
|
||||||
|
|
||||||
Vagrant::Config.run do |config|
|
Vagrant::Config.run do |config|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import httplib
|
||||||
import traceback
|
import traceback
|
||||||
import click
|
import click
|
||||||
from flask import Flask, request, render_template, url_for, redirect, g
|
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.cache import Cache
|
||||||
from flask.ext.login import LoginManager, current_user
|
from flask.ext.login import LoginManager, current_user
|
||||||
from flask.ext.sqlalchemy import SQLAlchemy, declarative_base, Model, _QueryProperty
|
from flask.ext.sqlalchemy import SQLAlchemy, declarative_base, Model, _QueryProperty
|
||||||
|
@ -160,6 +161,7 @@ def create_app(config=None):
|
||||||
db.init_app(app)
|
db.init_app(app)
|
||||||
cache.init_app(app)
|
cache.init_app(app)
|
||||||
assets.init_app(app)
|
assets.init_app(app)
|
||||||
|
elastic.init_app(app)
|
||||||
|
|
||||||
for status_code in httplib.responses:
|
for status_code in httplib.responses:
|
||||||
if status_code >= 400:
|
if status_code >= 400:
|
||||||
|
@ -197,6 +199,7 @@ login_manager = LoginManager()
|
||||||
db = SQLAlchemy()
|
db = SQLAlchemy()
|
||||||
cache = Cache()
|
cache = Cache()
|
||||||
assets = Assets()
|
assets = Assets()
|
||||||
|
elastic = Elastic()
|
||||||
|
|
||||||
assets.register('main.js',
|
assets.register('main.js',
|
||||||
'vendor/jquery/dist/jquery.js',
|
'vendor/jquery/dist/jquery.js',
|
||||||
|
|
|
@ -95,6 +95,8 @@ CACHE_REDIS_DB = '0'
|
||||||
#CACHE_TYPE = 'memcached'
|
#CACHE_TYPE = 'memcached'
|
||||||
CACHE_MEMCACHED_SERVERS = ['127.0.0.1:11211']
|
CACHE_MEMCACHED_SERVERS = ['127.0.0.1:11211']
|
||||||
|
|
||||||
|
ELASTICSEARCH_URL = 'http://127.0.0.1:9200'
|
||||||
|
|
||||||
# Get ReCaptcha Keys for your domain here:
|
# Get ReCaptcha Keys for your domain here:
|
||||||
# https://www.google.com/recaptcha/admin#whyrecaptcha
|
# https://www.google.com/recaptcha/admin#whyrecaptcha
|
||||||
RECAPTCHA_ENABLE = False
|
RECAPTCHA_ENABLE = False
|
||||||
|
@ -146,4 +148,4 @@ if ENV != "DEV":
|
||||||
ASSETS_DEBUG = False
|
ASSETS_DEBUG = False
|
||||||
SQLALCHEMY_ECHO = False
|
SQLALCHEMY_ECHO = False
|
||||||
|
|
||||||
MODULES = ['wiki', 'auth']
|
MODULES = ['wiki', 'auth', 'search']
|
||||||
|
|
|
@ -7,12 +7,15 @@ def hook_func(name, fn):
|
||||||
@wraps(fn)
|
@wraps(fn)
|
||||||
def wrapper(self, *args, **kwargs):
|
def wrapper(self, *args, **kwargs):
|
||||||
for hook, a, kw in self.__class__._pre_hooks.get(name) or []:
|
for hook, a, kw in self.__class__._pre_hooks.get(name) or []:
|
||||||
hook(*a, **kw)
|
hook(*args, **kwargs)
|
||||||
|
|
||||||
rv = fn(self, *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 []:
|
for hook, a, kw in self.__class__._post_hooks.get(name) or []:
|
||||||
hook(*a, **kw)
|
hook(*args, **kwargs)
|
||||||
|
|
||||||
return rv
|
return rv
|
||||||
return wrapper
|
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
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def rename_page(self, old_name, new_name, username=None, email=None, message=None):
|
def rename_page(self, old_name, new_name, username=None, email=None, message=None):
|
||||||
"""Rename page.
|
"""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 %}
|
1
setup.py
1
setup.py
|
@ -26,6 +26,7 @@ setup(name='realms-wiki',
|
||||||
'Flask==0.10.1',
|
'Flask==0.10.1',
|
||||||
'Flask-Assets==0.10',
|
'Flask-Assets==0.10',
|
||||||
'Flask-Cache==0.13.1',
|
'Flask-Cache==0.13.1',
|
||||||
|
'Flask-Elastic==0.2',
|
||||||
'Flask-Login==0.2.11',
|
'Flask-Login==0.2.11',
|
||||||
'Flask-SQLAlchemy==2.0',
|
'Flask-SQLAlchemy==2.0',
|
||||||
'Flask-WTF==0.10.2',
|
'Flask-WTF==0.10.2',
|
||||||
|
|
Loading…
Reference in a new issue