diff --git a/.gitignore b/.gitignore index 2c47d6c616..e01c4adf4d 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ deps ghostdriver.log seahub/thumbnail/thumb/* .virtualenv +tags diff --git a/seahub/api2/endpoints/wikis.py b/seahub/api2/endpoints/wikis.py index 05524d20b1..e548832d5a 100644 --- a/seahub/api2/endpoints/wikis.py +++ b/seahub/api2/endpoints/wikis.py @@ -73,3 +73,26 @@ class WikisView(APIView): content_type=content_type) return Response(wiki.to_dict()) + + +class WikiView(APIView): + authentication_classes = (TokenAuthentication, SessionAuthentication) + permission_classes = (IsAuthenticated, ) + throttle_classes = (UserRateThrottle, ) + + def delete(self, request, slug): + """Delete a wiki. + """ + username = request.user.username + try: + owner = Wiki.objects.get(slug=slug).username + except Wiki.DoesNotExist: + error_msg = 'Wiki not found.' + return api_error(status.HTTP_404_NOT_FOUND, error_msg) + if owner != username: + error_msg = 'Permission denied.' + return api_error(status.HTTP_403_FORBIDDEN, error_msg) + + Wiki.objects.filter(slug=slug).delete() + + return Response({"success": True}) diff --git a/seahub/urls.py b/seahub/urls.py index 4d0f3ba925..6e4de0e87d 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -51,7 +51,8 @@ from seahub.api2.endpoints.notifications import NotificationsView, NotificationV from seahub.api2.endpoints.user_enabled_modules import UserEnabledModulesView from seahub.api2.endpoints.repo_file_uploaded_bytes import RepoFileUploadedBytesView from seahub.api2.endpoints.user_avatar import UserAvatarView -from seahub.api2.endpoints.revision_tag import TaggedItemsView,TagNamesView +from seahub.api2.endpoints.wikis import WikisView, WikiView +from seahub.api2.endpoints.revision_tag import TaggedItemsView, TagNamesView from seahub.api2.endpoints.user import User # Admin @@ -280,6 +281,10 @@ urlpatterns = patterns( ## user::avatar url(r'^api/v2.1/user-avatar/$', UserAvatarView.as_view(), name='api-v2.1-user-avatar'), + ## user::wiki + url(r'^api/v2.1/wikis/$', WikisView.as_view(), name='api-v2.1-wikis'), + url(r'^api/v2.1/wikis/(?P[^/]+)/$', WikiView.as_view(), name='api-v2.1-wikis'), + ## admin::sysinfo url(r'^api/v2.1/admin/sysinfo/$', SysInfo.as_view(), name='api-v2.1-sysinfo'), diff --git a/seahub/wiki/models.py b/seahub/wiki/models.py index a8a5ca78c4..41e469ecec 100644 --- a/seahub/wiki/models.py +++ b/seahub/wiki/models.py @@ -10,6 +10,7 @@ from seahub.utils import get_service_url from seahub.utils.timeutils import (timestamp_to_isoformat_timestr, datetime_to_isoformat_timestr) + class WikiDoesNotExist(Exception): pass