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

[sys-admin] check seafile license expiration

This commit is contained in:
lian
2015-10-24 15:53:02 +08:00
parent ce6030cdfe
commit 5d7761ee0f
3 changed files with 66 additions and 1 deletions

View File

@@ -81,10 +81,38 @@ $(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').html('<p class="alc" style="background:#fddaa4;color:#1f0600;padding:3px 0;margin:0 0 15px;"><span>' + tip + '</span></p>').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, $title_panel = $('#title-panel');
if (data['already_expired']) {
tip = "Your license is already expired in %(v)s.",
tip = tip.replace('%(v)s', data['expiration']);
} else if (data['to_be_expired']) {
tip = "Your license will be expired in %(v)s.",
tip = tip.replace('%(v)s', data['expiration']);
}
if (typeof(tip) != 'undefined') {
if ($title_panel.find('p').length) {
$title_panel.find('p').append('<br /><span>' + tip + '</span>');
} else {
$title_panel.html('<p class="alc" style="background:#fddaa4;color:#1f0600;padding:3px 0;margin:0 0 15px;"><span>' + tip + '</span></p>').removeClass('hide');
}
}
}
});
{% endif %}
});
$('#add-user-btn').click(function() {

View File

@@ -238,6 +238,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
@@ -2030,3 +2031,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'] = expiration
return HttpResponse(json.dumps(result), content_type=content_type)