feat: refresh cache for permission list on knowledge save

This commit is contained in:
CaptainB 2025-06-24 16:11:39 +08:00
parent 214499372c
commit 8d5c3e6068

View File

@ -11,6 +11,7 @@ from typing import Dict, List
import uuid_utils.compat as uuid import uuid_utils.compat as uuid
from celery_once import AlreadyQueued from celery_once import AlreadyQueued
from django.core import validators from django.core import validators
from django.core.cache import cache
from django.db import transaction, models from django.db import transaction, models
from django.db.models import QuerySet from django.db.models import QuerySet
from django.db.models.functions import Reverse, Substr from django.db.models.functions import Reverse, Substr
@ -20,6 +21,7 @@ from rest_framework import serializers
from application.models import ApplicationKnowledgeMapping from application.models import ApplicationKnowledgeMapping
from common.config.embedding_config import VectorStore from common.config.embedding_config import VectorStore
from common.constants.cache_version import Cache_Version
from common.constants.permission_constants import ResourceAuthType, ResourcePermissionGroup from common.constants.permission_constants import ResourceAuthType, ResourcePermissionGroup
from common.database_model_manage.database_model_manage import DatabaseModelManage from common.database_model_manage.database_model_manage import DatabaseModelManage
from common.db.search import native_search, get_dynamics_model, native_page_search from common.db.search import native_search, get_dynamics_model, native_page_search
@ -534,6 +536,10 @@ class KnowledgeSerializer(serializers.Serializer):
user_id=self.data.get('user_id'), user_id=self.data.get('user_id'),
auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP
).save() ).save()
# 刷新缓存
version = Cache_Version.PERMISSION_LIST.get_version()
key = Cache_Version.PERMISSION_LIST.get_key(user_id=self.data.get('user_id'))
cache.delete(key, version=version)
return { return {
**KnowledgeModelSerializer(knowledge).data, **KnowledgeModelSerializer(knowledge).data,
@ -581,6 +587,11 @@ class KnowledgeSerializer(serializers.Serializer):
user_id=self.data.get('user_id'), user_id=self.data.get('user_id'),
auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP
).save() ).save()
# 刷新缓存
version = Cache_Version.PERMISSION_LIST.get_version()
key = Cache_Version.PERMISSION_LIST.get_key(user_id=self.data.get('user_id'))
cache.delete(key, version=version)
sync_web_knowledge.delay(str(knowledge_id), instance.get('source_url'), instance.get('selector')) sync_web_knowledge.delay(str(knowledge_id), instance.get('source_url'), instance.get('selector'))
return {**KnowledgeModelSerializer(knowledge).data, 'document_list': []} return {**KnowledgeModelSerializer(knowledge).data, 'document_list': []}