mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-21 11:27:18 +00:00
Add admin settings page to edit some configurations. Install django constance by pip install 'django-constance[database]'
This commit is contained in:
@@ -6,3 +6,4 @@ Django>=1.5.8,<1.6
|
||||
Djblets==0.6.14
|
||||
django-compressor==1.4
|
||||
django-statici18n==1.1.2
|
||||
django-constance[database]
|
||||
|
@@ -7,7 +7,7 @@ import re
|
||||
import random
|
||||
import string
|
||||
|
||||
from seaserv import FILE_SERVER_ROOT, FILE_SERVER_PORT
|
||||
from seaserv import FILE_SERVER_ROOT, FILE_SERVER_PORT, SERVICE_URL
|
||||
|
||||
PROJECT_ROOT = os.path.join(os.path.dirname(__file__), os.pardir)
|
||||
|
||||
@@ -192,6 +192,8 @@ INSTALLED_APPS = (
|
||||
'captcha',
|
||||
'compressor',
|
||||
'statici18n',
|
||||
'constance',
|
||||
'constance.backends.database',
|
||||
|
||||
'seahub.api2',
|
||||
'seahub.avatar',
|
||||
@@ -209,6 +211,8 @@ INSTALLED_APPS = (
|
||||
'seahub.password_session',
|
||||
)
|
||||
|
||||
CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend'
|
||||
CONSTANCE_DATABASE_CACHE_BACKEND = 'default'
|
||||
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
'seahub.base.accounts.AuthBackend',
|
||||
@@ -603,3 +607,12 @@ if 'win32' in sys.platform:
|
||||
LOGIN_URL = SITE_ROOT + 'accounts/login'
|
||||
|
||||
INNER_FILE_SERVER_ROOT = 'http://127.0.0.1:' + FILE_SERVER_PORT
|
||||
|
||||
CONSTANCE_CONFIG = {
|
||||
'SERVICE_URL': (SERVICE_URL, gettext_noop(
|
||||
"This is outside URL for Seahub(Seafile Web).The domain part (i.e., "
|
||||
"www.example.com) will be used in generating share links and "
|
||||
"download/upload file via web. Note: Outside URL means if you use "
|
||||
"Nginx, it should be the Nginx's address")),
|
||||
'FILE_SERVER_ROOT': (FILE_SERVER_ROOT, gettext_noop('URL for seafile fileserver')),
|
||||
}
|
||||
|
@@ -8,6 +8,9 @@
|
||||
<li class="tab {% block cur_info %}{% endblock %}">
|
||||
<a href="{{ SITE_ROOT }}sys/info/"><span class="sf2-icon-wrench"></span>{% trans "Info" %}</a>
|
||||
</li>
|
||||
<li class="tab {% block cur_settings %}{% endblock %}">
|
||||
<a href="{% url "sys_settings" %}" class="admin">{% trans "Settings" %}</a>
|
||||
</li>
|
||||
<li class="tab {% block cur_repo %}{% endblock %}">
|
||||
<a href="{{ SITE_ROOT }}sys/seafadmin/"><span class="sf2-icon-library"></span>{% trans "Libraries" %}</a>
|
||||
</li>
|
||||
|
21
seahub/templates/sysadmin/settings.html
Normal file
21
seahub/templates/sysadmin/settings.html
Normal file
@@ -0,0 +1,21 @@
|
||||
{% extends "sysadmin/base.html" %}
|
||||
{% load seahub_tags i18n %}
|
||||
|
||||
{% block cur_settings %}tab-cur{% endblock %}
|
||||
|
||||
{% block right_panel %}
|
||||
<h3 class="hd">{% trans "Settings" %}</h3>
|
||||
|
||||
<form method="post" action=".">{% csrf_token %}
|
||||
{% for k,v in config_dict.items %}
|
||||
<label>{{ k }}</label>
|
||||
<input type="text" name="{{ k }}" value="{{v.0}}" class="input" />
|
||||
<span>*{{v.1}}</span>
|
||||
<br>
|
||||
{% endfor %}
|
||||
|
||||
<input type="submit" value="{% trans "Submit" %}" />
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
@@ -205,6 +205,7 @@ urlpatterns = patterns(
|
||||
|
||||
### system admin ###
|
||||
url(r'^sys/info/$', sys_info, name='sys_info'),
|
||||
url(r'^sys/settings/$', sys_settings, name='sys_settings'),
|
||||
url(r'^sys/seafadmin/$', sys_repo_admin, name='sys_repo_admin'),
|
||||
url(r'^sys/seafadmin/system/$', sys_list_system, name='sys_list_system'),
|
||||
url(r'^sys/seafadmin/repo-trash/$', sys_repo_trash, name='sys_repo_trash'),
|
||||
|
@@ -11,13 +11,12 @@ import locale
|
||||
import ConfigParser
|
||||
import mimetypes
|
||||
import contextlib
|
||||
|
||||
from datetime import datetime
|
||||
from urlparse import urlparse, urljoin
|
||||
|
||||
import json
|
||||
|
||||
import ccnet
|
||||
from constance import config
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.mail import EmailMessage
|
||||
@@ -36,7 +35,7 @@ from seaserv import seafile_api, send_message, seafserv_rpc, \
|
||||
CCNET_SERVER_ADDR, CCNET_SERVER_PORT, get_org_by_id, is_org_staff, \
|
||||
get_org_id_by_group, get_personal_groups_by_user, \
|
||||
list_personal_repos_by_owner, get_group_repos, \
|
||||
list_inner_pub_repos, CCNET_CONF_PATH, SERVICE_URL
|
||||
list_inner_pub_repos, CCNET_CONF_PATH
|
||||
import seahub.settings
|
||||
from seahub.settings import SITE_NAME, MEDIA_URL, LOGO_PATH, \
|
||||
USER_PASSWORD_STRENGTH_LEVEL, USER_PASSWORD_MIN_LENGTH
|
||||
@@ -167,12 +166,7 @@ def get_fileserver_root():
|
||||
Returns:
|
||||
Constructed fileserver root.
|
||||
"""
|
||||
|
||||
from seahub.settings import FILE_SERVER_ROOT
|
||||
|
||||
assert FILE_SERVER_ROOT is not None, "SERVICE_URL is not set in ccnet.conf."
|
||||
|
||||
return FILE_SERVER_ROOT
|
||||
return config.FILE_SERVER_ROOT
|
||||
|
||||
def get_inner_fileserver_root():
|
||||
"""Construct inner seafile fileserver address and port.
|
||||
@@ -725,7 +719,7 @@ def calc_file_path_hash(path, bits=12):
|
||||
def get_service_url():
|
||||
"""Get service url from seaserv.
|
||||
"""
|
||||
return SERVICE_URL
|
||||
return config.SERVICE_URL
|
||||
|
||||
def get_server_id():
|
||||
"""Get server id from seaserv.
|
||||
|
@@ -1656,3 +1656,36 @@ def sys_sudo_mode(request):
|
||||
'enable_shib_login': enable_shib_login,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@sys_staff_required
|
||||
def sys_settings(request):
|
||||
"""List and change seahub settings in admin panel.
|
||||
|
||||
Arguments:
|
||||
- `request`:
|
||||
"""
|
||||
from constance import config
|
||||
from seahub.settings import CONSTANCE_CONFIG
|
||||
|
||||
if request.method == "POST":
|
||||
for k in request.POST.keys():
|
||||
if k == 'csrfmiddlewaretoken':
|
||||
continue
|
||||
try:
|
||||
setattr(config, k, request.POST.get(k))
|
||||
except AttributeError:
|
||||
continue
|
||||
|
||||
messages.success(request, _('Success'))
|
||||
return HttpResponseRedirect(reverse('sys_settings'))
|
||||
|
||||
config_dict = {}
|
||||
for k in dir(config):
|
||||
val = getattr(config, k)
|
||||
help_text = _(CONSTANCE_CONFIG[k][1])
|
||||
config_dict[k] = (val, help_text)
|
||||
|
||||
return render_to_response('sysadmin/settings.html', {
|
||||
'config_dict': config_dict,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
Reference in New Issue
Block a user