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:
@@ -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;
|
||||
|
@@ -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() {
|
||||
|
@@ -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"),
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user