Commit d3c1929d by Tim Babych Committed by Oleg Marshev

delete is in

parent 84b6db7c
......@@ -2,10 +2,9 @@ import json
from django.db import models
from django.core.exceptions import ValidationError
from django.conf import settings
from django.db.models.signals import post_save
from django.db.models import signals
from django.dispatch import receiver
from elasticutils.contrib.django import Indexable, MappingType
from elasticutils.contrib.django import Indexable, MappingType, get_es
class Note(models.Model):
user_id = models.CharField(max_length=255)
......@@ -77,11 +76,22 @@ class Note(models.Model):
@receiver(post_save, sender=Note)
@receiver(signals.post_save, sender=Note)
def update_in_index(sender, instance, **kw):
if settings.ES_DISABLED:
return
NoteMappingType.bulk_index([instance.as_dict()], id_field='id')
if settings.ES_DISABLED:
return
NoteMappingType.bulk_index([instance.as_dict()], id_field='id')
@receiver(signals.post_delete, sender=Note)
def delete_in_index(sender, instance, **kw):
if settings.ES_DISABLED:
return
get_es().delete(
index=settings.ES_INDEXES['default'],
doc_type=NoteMappingType.get_mapping_type_name(),
id=instance.id
)
class NoteMappingType(MappingType, Indexable):
......
import jwt
from calendar import timegm
from datetime import datetime, timedelta
from time import sleep
from mock import patch
import unittest
......@@ -274,25 +273,28 @@ class AnnotationViewTests(BaseAnnotationViewTests):
# response = self.client.put(url, payload, format='json')
# self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
# def test_delete(self):
# """
# Ensure we can delete an existing annotation.
# """
# kwargs = dict(text=u"Bar", id='456')
# self._create_annotation(**kwargs)
# url = reverse('api:v1:annotations_detail', kwargs={'annotation_id': 456})
# response = self.client.delete(url, self.headers)
def test_delete(self):
"""
Ensure we can delete an existing annotation.
"""
note = self._create_annotation()
url = reverse('api:v1:annotations_detail', kwargs={'annotation_id': note['id']})
# self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT, "response should be 204 NO CONTENT")
# self.assertEqual(self._get_annotation('456'), None, "annotation wasn't deleted in db")
response = self.client.delete(url, self.headers)
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT, "response should be 204 NO CONTENT")
# def test_delete_notfound(self):
# """
# Case when no annotation is present with specific id when trying to delete.
# """
# url = reverse('api:v1:annotations_detail', kwargs={'annotation_id': 123})
# response = self.client.delete(url, self.headers)
# self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND, "response should be 404 NOT FOUND")
get_es().indices.refresh()
url = reverse('api:v1:annotations_detail', kwargs={'annotation_id': note['id']})
response = self.client.get(url, self.headers)
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_delete_notfound(self):
"""
Case when no annotation is present with specific id when trying to delete.
"""
url = reverse('api:v1:annotations_detail', kwargs={'annotation_id': 123})
response = self.client.delete(url, self.headers)
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND, "response should be 404 NOT FOUND")
def test_search(self):
"""
......
......@@ -84,13 +84,11 @@ class AnnotationDetailView(APIView):
Get an existing annotation.
"""
note_id = self.kwargs.get('annotation_id')
if not note_searcher.filter(id=note_id).count():
return Response(False, status=status.HTTP_404_NOT_FOUND)
results = NoteMappingType.process_result(
list(note_searcher.filter(id=note_id).values_dict("_source"))
)
if not results:
return Response(False, status=status.HTTP_404_NOT_FOUND)
return Response(results[0])
def put(self, *args, **kwargs): # pylint: disable=unused-argument
......@@ -130,9 +128,6 @@ class AnnotationDetailView(APIView):
return Response('Annotation not found! No update performed.', status=status.HTTP_404_NOT_FOUND)
note.delete()
es_note.delete()
# FIXME
# Annotation deleted successfully.
return Response(status=status.HTTP_204_NO_CONTENT)
......
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