diff --git a/seahub/templates/sysadmin/org_admin_table.html b/seahub/templates/sysadmin/org_admin_table.html
new file mode 100644
index 0000000000..720d1b5e64
--- /dev/null
+++ b/seahub/templates/sysadmin/org_admin_table.html
@@ -0,0 +1,28 @@
+{% load seahub_tags i18n %}
+
{% trans "All Organizations" %}
@@ -29,35 +34,8 @@
{% if orgs %}
-
-
- {% trans "Name" %} |
- {% trans "Url Prefix" %} |
- {% trans "Creator" %} |
- {% trans "Space Used" %} |
- {% trans "Created At" %} |
-
- {% for org in orgs %}
-
-
- {{ org.org_name }}
- {% if org.trial_info %}
- (Trial X)
- {% endif %}
- |
- {{ org.url_prefix }} |
- {{ org.creator }} |
-
- {{ org.quota_usage|filesizeformat }} {% if org.total_quota > 0 %} / {{ org.total_quota|filesizeformat }} {% endif %}
- |
- {{ org.ctime|tsstr_sec }} |
-
-
- {% endfor %}
-
-
+{% include "sysadmin/org_admin_table.html" %}
{% include "snippets/admin_paginator.html" %}
-
{% else %}
{% trans "None." %}
{% endif %}
@@ -70,6 +48,12 @@ $('#add-btn').click(function() {
$('#simplemodal-container').css({'width':'auto'});
});
+addConfirmTo($('.remove-btn'), {
+ 'title':"{% trans "Delete org" %}",
+ 'con':"{% trans "Are you sure you want to delete %s ?" %}",
+ 'post': true // post request
+});
+
$('#add-org-form').submit(function() {
var form = $(this),
form_id = form.attr('id'),
diff --git a/seahub/templates/sysadmin/sys_org_search.html b/seahub/templates/sysadmin/sys_org_search.html
new file mode 100644
index 0000000000..58d3fb8c55
--- /dev/null
+++ b/seahub/templates/sysadmin/sys_org_search.html
@@ -0,0 +1,33 @@
+{% extends "sysadmin/base.html" %}
+{% load seahub_tags i18n staticfiles %}
+{% block cur_org %}tab-cur{% endblock %}
+
+{% block right_panel %}
+
{% trans "Search Org"%}
+
+
+
+
{% trans "Result"%}
+{% if orgs %}
+{% include "sysadmin/org_admin_table.html" %}
+{% else %}
+
{% trans "No result" %}
+{% endif %}
+
+{% endblock %}
+
+{% block extra_script %}
+
+{% endblock %}
diff --git a/seahub/urls.py b/seahub/urls.py
index bd945463f3..ba3604660c 100644
--- a/seahub/urls.py
+++ b/seahub/urls.py
@@ -220,6 +220,7 @@ urlpatterns = patterns(
url(r'^sys/groupadmin/$', sys_group_admin, name='sys_group_admin'),
url(r'^sys/groupadmin/(?P
\d+)/$', sys_admin_group_info, name='sys_admin_group_info'),
url(r'^sys/orgadmin/$', sys_org_admin, name='sys_org_admin'),
+ url(r'^sys/orgadmin/search/$', sys_org_search, name='sys_org_search'),
url(r'^sys/orgadmin/(?P\d+)/set_quota/$', sys_org_set_quota, name='sys_org_set_quota'),
url(r'^sys/orgadmin/(?P\d+)/rename/$', sys_org_rename, name='sys_org_rename'),
url(r'^sys/orgadmin/(?P\d+)/set_member_quota/$', sys_org_set_member_quota, name='sys_org_set_member_quota'),
diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py
index 522b3c3259..cc44a5e604 100644
--- a/seahub/views/sysadmin.py
+++ b/seahub/views/sysadmin.py
@@ -13,6 +13,7 @@ from django.contrib import messages
from django.http import HttpResponse, Http404, HttpResponseRedirect, HttpResponseNotAllowed
from django.shortcuts import render_to_response
from django.template import RequestContext
+from django.utils import timezone
from django.utils.translation import ugettext as _
from seaserv import ccnet_threaded_rpc, seafserv_threaded_rpc, get_emailusers, \
@@ -1159,10 +1160,22 @@ def sys_org_admin(request):
org.quota_usage = seafserv_threaded_rpc.get_org_quota_usage(org.org_id)
org.total_quota = seafserv_threaded_rpc.get_org_quota(org.org_id)
+ from seahub_extra.organizations.settings import ORG_TRIAL_DAYS
+ if ORG_TRIAL_DAYS > 0:
+ from datetime import timedelta
+ org.expiration = datetime.datetime.fromtimestamp(org.ctime / 1e6) + timedelta(days=ORG_TRIAL_DAYS)
+
org.trial_info = None
for trial_org in trial_orgs:
if trial_org.user_or_org == str(org.org_id):
org.trial_info = {'expire_date': trial_org.expire_date}
+ if trial_org.expire_date:
+ org.expiration = trial_org.expire_date
+
+ if org.expiration:
+ org.is_expired = True if org.expiration < timezone.now() else False
+ else:
+ org.is_expired = False
if len(orgs_plus_one) == per_page + 1:
page_next = True
@@ -1178,6 +1191,39 @@ def sys_org_admin(request):
'page_next': page_next,
}, context_instance=RequestContext(request))
+@login_required
+@sys_staff_required
+def sys_org_search(request):
+ org_name = request.GET.get('name', '').lower()
+ creator = request.GET.get('creator', '').lower()
+ if not org_name and not creator:
+ return HttpResponseRedirect(reverse('sys_org_admin'))
+
+ orgs = []
+ orgs_all = ccnet_threaded_rpc.get_all_orgs(-1, -1)
+
+ if org_name and creator:
+ for o in orgs_all:
+ if org_name in o.org_name.lower() and creator in o.creator.lower():
+ orgs.append(o)
+ else:
+ if org_name:
+ for o in orgs_all:
+ if org_name in o.org_name.lower():
+ orgs.append(o)
+
+ if creator:
+ for o in orgs_all:
+ if creator in o.creator.lower():
+ orgs.append(o)
+
+ return render_to_response(
+ 'sysadmin/sys_org_search.html', {
+ 'orgs': orgs,
+ 'name': org_name,
+ 'creator': creator,
+ }, context_instance=RequestContext(request))
+
@login_required
@sys_staff_required
def sys_org_rename(request, org_id):