From b37812cc6e91fcd9d59ed51148ed80d9dfd8ca56 Mon Sep 17 00:00:00 2001 From: plt Date: Sat, 25 May 2013 11:40:40 +0800 Subject: [PATCH] Add public link admin --- seahub/templates/admin_base.html | 4 ++ .../templates/sysadmin/sys_publink_admin.html | 65 +++++++++++++++++++ seahub/urls.py | 3 +- seahub/views/sysadmin.py | 32 +++++++++ 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 seahub/templates/sysadmin/sys_publink_admin.html diff --git a/seahub/templates/admin_base.html b/seahub/templates/admin_base.html index 9df18b1e07..54c88842c9 100644 --- a/seahub/templates/admin_base.html +++ b/seahub/templates/admin_base.html @@ -16,6 +16,10 @@
  • {% trans "Notifications" %}
  • +
  • + {% trans "Links" %} +
  • + {% endif %} {% endblock %} diff --git a/seahub/templates/sysadmin/sys_publink_admin.html b/seahub/templates/sysadmin/sys_publink_admin.html new file mode 100644 index 0000000000..8692640ae4 --- /dev/null +++ b/seahub/templates/sysadmin/sys_publink_admin.html @@ -0,0 +1,65 @@ +{% extends "admin_base.html" %} +{% load i18n seahub_tags %} +{% block nav_seafadmin_class %}class="cur"{% endblock %} + +{% block main_panel %} +

    {% trans "All Public Links" %}

    +{% if publinks %} + + + + + + + + + {% for publink in publinks %} + + + + + + + + {% endfor %} +
    {% trans "Name" %}{% trans "Owner" %}{% trans "Create At" %}{% trans "Count" %}{% trans "Operations" %}
    {{ publink.name }}{{ publink.username }}{{ publink.ctime|translate_seahub_time }} {{ publink.view_cnt }}{% trans "Remove" %} +
    + +
    + {% if current_page != 1 %} + {% trans "Previous" %} + {% endif %} + {% if page_next %} + {% trans "Next" %} + {% endif %} + {% if current_page != 1 or page_next %} + | + {% endif %} + {% trans "Per page: " %} + {% if per_page == 25 %} + 25 + {% else %} + 25 + {% endif %} + {% if per_page == 50 %} + 50 + {% else %} + 50 + {% endif %} + {% if per_page == 100 %} + 100 + {% else %} + 100 + {% endif %} +
    +{% else %} +

    {% trans "Empty" %}

    +{% endif %} +{% endblock %} + +{% block extra_script %} + +{% endblock %} + diff --git a/seahub/urls.py b/seahub/urls.py index 0b887864f9..ff01aab149 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -15,7 +15,7 @@ from seahub.views.wiki import personal_wiki, personal_wiki_pages, \ personal_wiki_page_delete from seahub.views.sysadmin import sys_repo_admin, sys_user_admin, sys_group_admin, \ user_info, user_add, user_remove, user_make_admin, \ - user_remove_admin, user_reset, user_activate + user_remove_admin, user_reset, user_activate, sys_publink_admin # Uncomment the next two lines to enable the admin: #from django.contrib import admin @@ -115,6 +115,7 @@ urlpatterns = patterns('', (r'^sys/seafadmin/$', sys_repo_admin), url(r'^sys/useradmin/$', sys_user_admin, name='sys_useradmin'), url(r'^sys/groupadmin/$', sys_group_admin, name='sys_group_admin'), + url(r'^sys/publinkadmin/$', sys_publink_admin, name='sys_publink_admin'), url(r'^sys/notificationadmin/', notification_list, name='notification_list'), url(r'^useradmin/add/$', user_add, name="user_add"), (r'^useradmin/remove/(?P[^/]+)/$', user_remove), diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 0b3722d5dc..dc4c0d4b88 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -1,5 +1,6 @@ # encoding: utf-8 +import os from types import FunctionType import logging import simplejson as json @@ -30,6 +31,7 @@ from seahub.auth.decorators import login_required from seahub.utils import IS_EMAIL_CONFIGURED from seahub.forms import SetUserQuotaForm, AddUserForm from seahub.profile.models import Profile +from seahub.share.models import FileShare, AnonymousShare import seahub.settings as settings from seahub.settings import INIT_PASSWD, \ @@ -381,3 +383,33 @@ def sys_group_admin(request): 'page_next': page_next, }, context_instance=RequestContext(request)) + +@login_required +@sys_staff_required +def sys_publink_admin(request): + # Make sure page request is an int. If not, deliver first page. + try: + current_page = int(request.GET.get('page', '1')) + per_page = int(request.GET.get('per_page', '100')) + except ValueError: + current_page = 1 + per_page = 100 + + publinks = FileShare.objects.all()[per_page * (current_page -1): + per_page + 1] + for l in publinks: + if l.s_type == 'f': + l.name = os.path.basename(l.path) + else: + l.name = os.path.dirname(l.path) + + return render_to_response( + 'sysadmin/sys_publink_admin.html', { + 'publinks': publinks, + 'current_page': current_page, + 'prev_page': current_page-1, + 'next_page': current_page+1, + 'per_page': per_page, + 'page_next': True, + }, + context_instance=RequestContext(request))