# -*- coding: utf-8 -*- # from django.core.cache import cache from rest_framework import serializers from ..models import Cluster, AdminUser from ..const import ADMIN_USER_CONN_CACHE_KEY class AdminUserSerializer(serializers.ModelSerializer): """ 管理用户 """ assets_amount = serializers.SerializerMethodField() unreachable_amount = serializers.SerializerMethodField() reachable_amount = serializers.SerializerMethodField() class Meta: model = AdminUser fields = '__all__' @staticmethod def get_unreachable_amount(obj): data = cache.get(ADMIN_USER_CONN_CACHE_KEY.format(obj.name)) if data: return len(data.get('dark')) else: return 0 @staticmethod def get_reachable_amount(obj): data = cache.get(ADMIN_USER_CONN_CACHE_KEY.format(obj.name)) if data: return len(data.get('contacted')) else: return 0 @staticmethod def get_assets_amount(obj): return obj.assets_amount class AdminUserUpdateClusterSerializer(serializers.ModelSerializer): """ 管理用户更新关联到的集群 """ clusters = serializers.PrimaryKeyRelatedField( many=True, queryset=Cluster.objects.all() ) class Meta: model = AdminUser fields = ['id', 'clusters']