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 %} + + + + + + + + + {% for org in orgs %} + + + + + + + + {% endfor %} +
{% trans "Name" %}{% trans "Creator" %}{% trans "Space Used" %}{% trans "Created At / Expiration" %}{% trans "Operations" %}
+ {{ org.org_name }} + {% if org.trial_info %} +

(Trial  X)

+ {% endif %} +
{{ org.creator }} + {{ org.quota_usage|filesizeformat }} {% if org.total_quota > 0 %} / {{ org.total_quota|filesizeformat }} {% endif %} + {{ org.ctime|tsstr_sec }}
+ {% if org.expiration %}{{ org.expiration|date:'Y-m-d H:i:s' }}{% else %}--{% endif %} +
{% trans "Delete" %}
diff --git a/seahub/templates/sysadmin/sys_org_admin.html b/seahub/templates/sysadmin/sys_org_admin.html index 85bc412250..62289b12f9 100644 --- a/seahub/templates/sysadmin/sys_org_admin.html +++ b/seahub/templates/sysadmin/sys_org_admin.html @@ -1,8 +1,13 @@ {% extends "sysadmin/base.html" %} {% load seahub_tags i18n %} - {% block cur_org %}tab-cur{% endblock %} +{% block left_panel %}{{block.super}} +
+ +
+{% endblock %} + {% block right_panel %}

{% trans "All Organizations" %}

@@ -29,35 +34,8 @@ {% if orgs %} - - - - - - - - - {% for org in orgs %} - - - - - - - - - {% endfor %} -
{% trans "Name" %}{% trans "Url Prefix" %}{% trans "Creator" %}{% trans "Space Used" %}{% trans "Created At" %}
- {{ 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 }}
- +{% 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 "Tip: you can search by keyword in name or creator or both." %}

+
+
+ +
+ +

{% 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):