from django.utils.translation import gettext_lazy as _
from rest_framework import serializers

from common.serializers.fields import LabeledChoiceField
from terminal import const
from ..models import AppProvider

__all__ = ['AppProviderSerializer', 'AppProviderContainerSerializer', ]


class AppProviderSerializer(serializers.ModelSerializer):
    load = LabeledChoiceField(
        read_only=True, label=_('Load status'), choices=const.ComponentLoad.choices,
    )

    class Meta:
        model = AppProvider
        field_mini = ['id', 'name', 'hostname']
        read_only_fields = [
            'date_created', 'date_updated',
        ]
        fields = field_mini + ['load', 'terminal'] + read_only_fields


class AppProviderContainerSerializer(serializers.Serializer):
    container_id = serializers.CharField(label=_('Container ID'))
    container_image = serializers.CharField(label=_('Container Image'))
    container_name = serializers.CharField(label=_('Container Name'))
    container_status = serializers.CharField(label=_('Container Status'))
    container_ports = serializers.ListField(child=serializers.CharField(), label=_('Container Ports'))