Browse Source

Delete docs for form if file is missing from redis

pull/170/head
ariannedee 5 years ago
parent
commit
03dfeebf7a
2 changed files with 42 additions and 0 deletions
  1. +38
    -0
      edivorce/apps/core/tests/test_api.py
  2. +4
    -0
      edivorce/apps/core/views/graphql.py

+ 38
- 0
edivorce/apps/core/tests/test_api.py View File

@ -276,6 +276,44 @@ class GraphQLAPITest(GraphQLTestCase):
self.assertEqual(len(content['documents']), 1)
self.assertEqual(content['documents'][0]['filename'], doc.filename)
def test_missing_redis_document_deletes_all_documents(self):
self._login()
doc_1 = self._create_document()
doc_2 = self._create_document()
doc_3 = self._create_document()
another_doc = self._create_document(party_code=2)
self.assertEqual(Document.objects.count(), 4)
query = '''
{
documents (docType: "MC", partyCode: 0) {
filename
}
}'''
response = self.query(query)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertResponseNoErrors(response)
content = json.loads(response.content)['data']
self.assertEqual(len(content['documents']), 3)
self.assertEqual(content['documents'][0]['filename'], doc_1.filename)
self.assertEqual(content['documents'][1]['filename'], doc_2.filename)
self.assertEqual(content['documents'][2]['filename'], doc_3.filename)
# Delete file from Redis
doc_1.file.delete()
response = self.query(query)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertResponseNoErrors(response)
content = json.loads(response.content)['data']
self.assertEqual(len(content['documents']), 0)
# All files in for that doc_type/party_code/user were deleted
self.assertEqual(Document.objects.count(), 1)
self.assertEqual(Document.objects.first(), another_doc)
def test_update_metadata(self):
doc_1 = self._create_document()
doc_2 = self._create_document()


+ 4
- 0
edivorce/apps/core/views/graphql.py View File

@ -30,6 +30,10 @@ class Query(graphene.ObjectType):
if info.context.user.is_anonymous:
raise GraphQLError('Unauthorized')
q = Document.objects.filter(bceid_user=info.context.user, **kwargs)
for doc in q:
if not doc.file_exists():
q.delete()
return Document.objects.none()
return q


Loading…
Cancel
Save