1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 02:48:51 +00:00

Merge pull request #859 from haiwen/license

[sys-admin] check seafile license expiration
This commit is contained in:
llj
2015-10-24 18:27:20 +08:00
4 changed files with 67 additions and 1 deletions

View File

@@ -316,6 +316,12 @@ p { margin:0.5em 0; }
.alc { text-align: center;}
.cspt { cursor:pointer; }
.pos-rel { position:relative; }
.top-tip {
background:#fddaa4;
color:#1f0600;
text-align:center;
margin:0 0 15px;
}
/** for input, textarea in form **/ /* e.g repo-create */
.input, .textarea {
width:260px;

View File

@@ -81,10 +81,33 @@ $(function(){
if (data['need_update']) {
var tip = "{% trans "A new server version %(v)s is available." %}";
tip = tip.replace('%(v)s', data['new_version']);
$('#title-panel').html('<p class="alc" style="background:#fddaa4;color:#1f0600;padding:3px 0;margin:0 0 15px;">' + tip + '</p>').removeClass('hide');
$('#title-panel').append('<p>' + tip + '</p>').addClass('top-tip').removeClass('hide');
}
}
});
{% if is_pro %}
// check if seafile license expired
$.ajax({
url: "{% url 'sys_check_license' %}",
dataType: 'json',
cache: false,
success: function(data) {
var tip;
if (data['already_expired']) {
tip = "Your license expired on %(date)s.";
} else if (data['to_be_expired']) {
tip = "Your license will expire on %(date)s.";
}
if (data['already_expired'] || data['to_be_expired']) {
tip = tip.replace('%(date)s', data['expiration_date']);
$('#title-panel').append('<p>' + tip + '</p>').addClass('top-tip').removeClass('hide');
}
}
});
{% endif %}
});
$('#add-user-btn').click(function() {

View File

@@ -236,6 +236,7 @@ urlpatterns = patterns(
url(r'^sys/uploadlink/remove/$', sys_upload_link_remove, name='sys_upload_link_remove'),
url(r'^sys/notificationadmin/', notification_list, name='notification_list'),
url(r'^sys/sudo/', sys_sudo_mode, name='sys_sudo_mode'),
url(r'^sys/check-license/', sys_check_license, name='sys_check_license'),
url(r'^useradmin/add/$', user_add, name="user_add"),
url(r'^useradmin/remove/(?P<email>[^/]+)/$', user_remove, name="user_remove"),
url(r'^useradmin/removetrial/(?P<user_or_org>[^/]+)/$', remove_trial, name="remove_trial"),

View File

@@ -8,6 +8,7 @@ import re
import datetime
import stat
import csv, chardet, StringIO
import time
from constance import config
from django.core.urlresolvers import reverse
@@ -2041,3 +2042,38 @@ def sys_settings(request):
return render_to_response('sysadmin/settings.html', {
'config_dict': config_dict,
}, context_instance=RequestContext(request))
@login_required_ajax
@sys_staff_required
def sys_check_license(request):
"""Check seafile license expiration.
"""
if not is_pro_version():
raise Http404
content_type = 'application/json; charset=utf-8'
result = {}
license_file = os.path.join(settings.PROJECT_ROOT, '../../seafile-license.txt')
license_dict = parse_license(license_file)
if license_dict:
try:
expiration = license_dict['Expiration']
except KeyError as e:
logger.error(e)
result['error'] = str(e)
return HttpResponse(json.dumps(result), status=500, content_type=content_type)
struct_time = datetime.datetime.strptime(expiration, "%Y-%m-%d")
expiration_timestamp = time.mktime(struct_time.timetuple())
if time.time() > expiration_timestamp:
# already expired
result['already_expired'] = True
elif time.time() + 30 * 24 * 60 * 60 > expiration_timestamp:
# will be expired in 30 days
result['to_be_expired'] = True
result['expiration_date'] = expiration
return HttpResponse(json.dumps(result), content_type=content_type)