jumpserver/apps/orgs/serializers.py

53 lines
1.8 KiB
Python

from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
from rest_framework.serializers import ModelSerializer
from .models import Organization
from .utils import get_current_org
class ResourceStatisticsSerializer(serializers.Serializer):
users_amount = serializers.IntegerField(required=False, label=_('Users amount'))
groups_amount = serializers.IntegerField(required=False, label=_('User groups amount'))
assets_amount = serializers.IntegerField(required=False, label=_('Assets amount'))
nodes_amount = serializers.IntegerField(required=False, label=_('Nodes amount'))
domains_amount = serializers.IntegerField(required=False, label=_('Domains amount'))
gateways_amount = serializers.IntegerField(required=False, label=_('Gateways amount'))
asset_perms_amount = serializers.IntegerField(required=False, label=_('Asset permissions amount'))
class OrgSerializer(ModelSerializer):
resource_statistics = ResourceStatisticsSerializer(source='resource_statistics_cache', read_only=True)
class Meta:
model = Organization
fields_mini = ['id', 'name']
fields_small = fields_mini + [
'resource_statistics',
'is_default', 'is_root', 'internal',
'date_created', 'created_by',
'comment', 'created_by',
]
fields_m2m = []
fields = fields_small + fields_m2m
read_only_fields = ['created_by', 'date_created']
class CurrentOrgSerializer(ModelSerializer):
class Meta:
model = Organization
fields = ['id', 'name', 'is_default', 'is_root', 'comment']
class CurrentOrgDefault:
requires_context = False
def __call__(self, *args):
return get_current_org()
def __repr__(self):
return '%s()' % self.__class__.__name__