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__