from rest_framework import serializers from apps.reports.models import ReportExportJob from apps.reports.services.aggregation import ALLOWED_PERIODS class ReportExportCreateSerializer(serializers.Serializer): workspace = serializers.UUIDField() period = serializers.ChoiceField(choices=sorted(ALLOWED_PERIODS)) from_date = serializers.DateField(required=False, allow_null=True) to_date = serializers.DateField(required=False, allow_null=True) user = serializers.UUIDField(required=False, allow_null=True) client = serializers.UUIDField(required=False, allow_null=True) project = serializers.UUIDField(required=False, allow_null=True) tags = serializers.ListField( child=serializers.UUIDField(), required=False, allow_empty=True, ) language = serializers.ChoiceField(choices=("en", "fa"), required=False, default="en") export_type = serializers.ChoiceField(choices=ReportExportJob.ExportType.choices) class ReportExportJobSerializer(serializers.ModelSerializer): class Meta: model = ReportExportJob fields = ( "id", "workspace", "export_type", "status", "filters", "file_name", "error_message", "expires_at", "completed_at", "created_at", ) read_only_fields = fields