Commit aaa93476 by Gregory Martin
parent a5088033
...@@ -11,3 +11,7 @@ coverage/ ...@@ -11,3 +11,7 @@ coverage/
#vim #vim
*.swp *.swp
venv/
.idea/
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import urlparse
import jwt
import unittest
import ddt
from calendar import timegm from calendar import timegm
from datetime import datetime, timedelta from datetime import datetime, timedelta
from mock import patch import ddt
import jwt
import unittest
import urlparse
from django.conf import settings
from django.core.management import call_command from django.core.management import call_command
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.conf import settings
from django.test.utils import override_settings from django.test.utils import override_settings
from mock import patch
from rest_framework import status from rest_framework import status
from rest_framework.test import APITestCase from rest_framework.test import APITestCase
...@@ -508,6 +507,42 @@ class AnnotationListViewTests(BaseAnnotationViewTests): ...@@ -508,6 +507,42 @@ class AnnotationListViewTests(BaseAnnotationViewTests):
start=start start=start
) )
def test_delete_all_user_annotations(self, user_id=TEST_USER):
"""
Verify that deleting all user annotations works
"""
self._create_annotation(text=u'Comment with foo', tags=[u'bar'])
self._create_annotation(text=u'Another comment', tags=[u'foo'])
self._create_annotation(text=u'A longer comment with bar', tags=[u'foo'])
response = self._get_search_results()
self.assertEqual(response["total"], 3)
url = reverse('api:v1:annotations')
self.payload["user_id"] = user_id
# Delete all notes for User 1
response = self.client.delete(url, headers=self.headers, data=self.payload)
self.assertEqual(response.status_code, status.HTTP_200_OK)
# Verify notes are deleted for User 1
response = self._get_search_results()
self.assertEqual(response["total"], 0)
# Reattempt delete for User 1
response = self.client.delete(url, headers=self.headers, data=self.payload)
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_delete_all_user_annotations_no_user(self):
# Delete for No User
url = reverse('api:v1:annotations')
response = self.client.delete(url, headers=self.headers, data=self.payload)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
def test_delete_all_user_annotations_other_user(self):
url = reverse('api:v1:annotations')
self.payload["user_id"] = TEST_OTHER_USER
response = self.client.delete(url, headers=self.headers, data=self.payload)
self.assertEqual(response.status_code, status.HTTP_200_OK)
@ddt.ddt @ddt.ddt
class AnnotationDetailViewTests(BaseAnnotationViewTests): class AnnotationDetailViewTests(BaseAnnotationViewTests):
......
import logging
import json import json
import newrelic.agent import logging
import newrelic.agent
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.db.models import Q from django.db.models import Q
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from rest_framework import status from rest_framework import status
from rest_framework.generics import GenericAPIView from rest_framework.generics import GenericAPIView
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.views import APIView from rest_framework.views import APIView
from haystack.query import SQ from haystack.query import SQ
from notesapi.v1.models import Note from notesapi.v1.models import Note
from notesapi.v1.serializers import NoteSerializer, NotesElasticSearchSerializer from notesapi.v1.serializers import (NotesElasticSearchSerializer,
NoteSerializer)
if not settings.ES_DISABLED: if not settings.ES_DISABLED:
from notesserver.highlight import SearchQuerySet from notesserver.highlight import SearchQuerySet
...@@ -349,6 +348,18 @@ class AnnotationListView(GenericAPIView): ...@@ -349,6 +348,18 @@ class AnnotationListView(GenericAPIView):
serializer = NoteSerializer(note) serializer = NoteSerializer(note)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers={'Location': location}) return Response(serializer.data, status=status.HTTP_201_CREATED, headers={'Location': location})
def delete(self, *args, **kwargs): # pylint: disable=unused-argument
"""
Delete all annotations for user_id
"""
params = self.request.data
if 'user_id' not in params:
return Response(status=status.HTTP_400_BAD_REQUEST)
Note.objects.filter(user_id=params['user_id']).delete()
return Response(status=status.HTTP_200_OK)
class AnnotationDetailView(APIView): class AnnotationDetailView(APIView):
""" """
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment