From 28a0f817b776c4a4e79a2bd35a5f4b1869af4612 Mon Sep 17 00:00:00 2001 From: karthik Date: Sun, 2 Jan 2022 14:35:59 +0530 Subject: [PATCH] Invalidate queryset caches of Task and Job model on User delete Task and Job models have many to one relationship with User model on assignee and reviewer fields. And on deleting the parent model, these fields are set to NULL. However due to an open issue in django-cacheops package, the related querysets are not invalidated upon deletion of parent model. Refer - https://github.com/Suor/django-cacheops/issues/348. So we have to manually invalidate the cached querysets. --- cvat/apps/engine/views.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index b9fb09877ca..6a73057a9f8 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -16,6 +16,7 @@ import cv2 from django.db.models.query import Prefetch import django_rq +from cacheops import invalidate_model from django.apps import apps from django.conf import settings from django.contrib.auth.models import User @@ -1092,6 +1093,12 @@ def self(self, request): serializer = serializer_class(request.user, context={ "request": request }) return Response(serializer.data) + def perform_destroy(self, instance): + super(UserViewSet, self).perform_destroy(instance) + invalidate_model(Task) + invalidate_model(Job) + + class RedefineDescriptionField(FieldInspector): # pylint: disable=no-self-use def process_result(self, result, method_name, obj, **kwargs):