Commit a4e3ebfb by benjaoming

make SEARCH_VIEW configurable from conf.settings

parent 24271db1
...@@ -3,11 +3,16 @@ build ...@@ -3,11 +3,16 @@ build
dist dist
*.egg-info *.egg-info
README.rst README.rst
testproject/testproject/whoosh_index/
#Docs #Docs
docs/_build docs/_build
docs/_build/* docs/_build/*
# Test project
testproject/testproject/settings/local.py
testproject/testproject/media/*
# Installer logs # Installer logs
pip-log.txt pip-log.txt
...@@ -22,6 +27,7 @@ pip-log.txt ...@@ -22,6 +27,7 @@ pip-log.txt
#Virtualenv #Virtualenv
virtualenv virtualenv
.venv
#Mr Developer #Mr Developer
.mr.developer.cfg .mr.developer.cfg
......
...@@ -117,6 +117,16 @@ USE_BOOTSTRAP_SELECT_WIDGET = getattr( django_settings, 'WIKI_USE_BOOTSTRAP_SELE ...@@ -117,6 +117,16 @@ USE_BOOTSTRAP_SELECT_WIDGET = getattr( django_settings, 'WIKI_USE_BOOTSTRAP_SELE
#: you can derive from this. #: you can derive from this.
URL_CONFIG_CLASS = getattr( django_settings, 'WIKI_URL_CONFIG_CLASS', 'wiki.urls.WikiURLPatterns' ) URL_CONFIG_CLASS = getattr( django_settings, 'WIKI_URL_CONFIG_CLASS', 'wiki.urls.WikiURLPatterns' )
# Search view - dotted path denoting where the search view Class is located
SEARCH_VIEW = getattr(
django_settings,
'WIKI_SEARCH_VIEW',
'wiki.views.article.SearchView'
if not 'haystack' in django_settings.INSTALLED_APPS
else
'wiki.plugins.haystack.views.HaystackSearchView'
)
# Seconds of timeout before renewing article cache. Articles are automatically # Seconds of timeout before renewing article cache. Articles are automatically
# renewed whenever an edit occurs but article content may be generated from # renewed whenever an edit occurs but article content may be generated from
# other objects that are changed. # other objects that are changed.
......
# -*- coding: utf-8 -*-
from django.utils.importlib import import_module
def get_class_from_str(class_path):
"""Dynamically load a View class from a string path
"myapp.views.MyView" -- used for dynamic settings"""
module_path, klass_name = class_path.rsplit('.', 1)
module = import_module(module_path)
return getattr(module, klass_name)
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf import settings as django_settings
from django.conf.urls import patterns, url, include from django.conf.urls import patterns, url, include
from django.utils.importlib import import_module
from wiki.views import article, accounts
from wiki.conf import settings from wiki.conf import settings
from wiki.core.plugins import registry from wiki.core.plugins import registry
from wiki.views import article, accounts
from wiki.core.utils import get_class_from_str
class WikiURLPatterns(object): class WikiURLPatterns(object):
''' '''
...@@ -32,14 +31,14 @@ class WikiURLPatterns(object): ...@@ -32,14 +31,14 @@ class WikiURLPatterns(object):
revision_merge_view = 'wiki.views.article.merge' revision_merge_view = 'wiki.views.article.merge'
create_root = 'wiki.views.article.root_create' create_root = 'wiki.views.article.root_create'
search_view_class = article.SearchViewHaystack if 'haystack' in django_settings.INSTALLED_APPS else article.SearchView search_view_class = settings.SEARCH_VIEW
article_diff_view = 'wiki.views.article.diff' article_diff_view = 'wiki.views.article.diff'
# account views # account views
signup_view_class = accounts.Signup signup_view_class = accounts.Signup
login_view_class = accounts.Login login_view_class = accounts.Login
logout_view_class = accounts.Logout logout_view_class = accounts.Logout
def get_urls(self): def get_urls(self):
urlpatterns = self.get_root_urls() urlpatterns = self.get_root_urls()
urlpatterns += self.get_accounts_urls() urlpatterns += self.get_accounts_urls()
...@@ -56,7 +55,7 @@ class WikiURLPatterns(object): ...@@ -56,7 +55,7 @@ class WikiURLPatterns(object):
urlpatterns = patterns('', urlpatterns = patterns('',
url('^$', self.article_view_class.as_view(), name='root', kwargs={'path': ''}), url('^$', self.article_view_class.as_view(), name='root', kwargs={'path': ''}),
url('^create-root/$', self.create_root, name='root_create'), url('^create-root/$', self.create_root, name='root_create'),
url('^_search/$', self.search_view_class.as_view(), name='search'), url('^_search/$', get_class_from_str(self.search_view_class).as_view(), name='search'),
url('^_revision/diff/(?P<revision_id>\d+)/$', self.article_diff_view, name='diff'), url('^_revision/diff/(?P<revision_id>\d+)/$', self.article_diff_view, name='diff'),
) )
return urlpatterns return urlpatterns
...@@ -142,8 +141,6 @@ def get_pattern(app_name="wiki", namespace="wiki", url_config_class=None): ...@@ -142,8 +141,6 @@ def get_pattern(app_name="wiki", namespace="wiki", url_config_class=None):
if url_config_classname is None: if url_config_classname is None:
url_config_class = WikiURLPatterns url_config_class = WikiURLPatterns
else: else:
url_config_modname, config_classname=url_config_classname.rsplit('.', 1) url_config_class = get_class_from_str(url_config_classname)
url_config_mod = import_module(url_config_modname)
url_config_class = getattr(url_config_mod, config_classname)
urlpatterns = url_config_class().get_urls() urlpatterns = url_config_class().get_urls()
return urlpatterns, app_name, namespace return urlpatterns, app_name, namespace
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment