diff --git a/seahub/templates/sysadmin/sys_invitations_admin.html b/seahub/templates/sysadmin/sys_invitations_admin.html
index 477e392de9..a189d97c13 100644
--- a/seahub/templates/sysadmin/sys_invitations_admin.html
+++ b/seahub/templates/sysadmin/sys_invitations_admin.html
@@ -12,8 +12,9 @@
{% trans "Inviter" %} |
{% trans "Accepter" %} |
{% trans "Type" %} |
- {% trans "Invited at" %} |
- {% trans "Accepted at" %} |
+ {% trans "Invited at" %} |
+ {% trans "Accepted at" %} |
+ |
{% for invitation in invitations %}
@@ -30,6 +31,7 @@
{% else %}
-- |
{% endif %}
+ {% trans "Delete" %} |
{% endfor %}
@@ -44,5 +46,21 @@
{% block extra_script %}
{% endblock %}
diff --git a/seahub/urls.py b/seahub/urls.py
index ed39134483..99e92d3f90 100644
--- a/seahub/urls.py
+++ b/seahub/urls.py
@@ -348,6 +348,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/invitationadmin/$', sys_invitation_admin, name='sys_invitation_admin'),
+ url(r'^sys/invitationadmin/remove/$', sys_invitation_remove, name='sys_invitation_remove'),
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"),
diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py
index 82574ab7b3..3677e43bcd 100644
--- a/seahub/views/sysadmin.py
+++ b/seahub/views/sysadmin.py
@@ -16,7 +16,7 @@ from django.conf import settings as dj_settings
from django.core.urlresolvers import reverse
from django.contrib import messages
from django.http import HttpResponse, Http404, HttpResponseRedirect, HttpResponseNotAllowed
-from django.shortcuts import render_to_response
+from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.utils import timezone
from django.utils.translation import ugettext as _
@@ -2316,6 +2316,27 @@ def sys_invitation_admin(request):
},
context_instance=RequestContext(request))
+@login_required
+@sys_staff_required
+def sys_invitation_remove(request):
+ """Delete an invitation.
+ """
+ ct = 'application/json; charset=utf-8'
+ result = {}
+
+ if not ENABLE_GUEST_INVITATION:
+ return HttpResponse(json.dumps({}), status=400, content_type=ct)
+
+ inv_id = request.POST.get('inv_id', '')
+ if not inv_id:
+ result = {'error': "Argument missing"}
+ return HttpResponse(json.dumps(result), status=400, content_type=ct)
+
+ inv = get_object_or_404(Invitation, pk=inv_id)
+ inv.delete()
+
+ return HttpResponse(json.dumps({'success': True}), content_type=ct)
+
@login_required
@sys_staff_required
def sys_terms_admin(request):