infrasynth-backend-kit/infrasynth/configs/serializers.py
jcv-dev a2930426b4 feat: tenant configs, live signals, and automatic permission management
- infrasynth.configs: typed multi-tenant config store (registry, service,
  secrets, cache) + public config_changed/config_reset signals and API
- emit the declared-but-dead signals (features flags/overrides, scheduler
  task_completed/task_failed, tenancy tenant_updated, audit model_changed)
  and per-model audit field exclusions
- security: permission catalog (security_permission), Django-style
  model-derived AutoPermission, PermissionRegistry, RoleAssignment,
  global-or-tenant Grant/Revoke, catalog API
- consolidate the permission surface: PermissionRegistry only (drop the
  settings dict), IsAuthenticatedAndPermitted aliases HybridPermission,
  require_permission replaced by required_permissions + require_all
- packaging: add [build-system]; add Forgejo publish workflow (.forgejo)
2026-09-29 17:06:54 -05:00

28 lines
1.1 KiB
Python

"""Serializers for the ``configs`` API.
Reads expose ``key``, the (possibly masked) ``value``, and the definition
metadata the UI needs to render a form. Writes carry only ``value``; coercion and
validation happen in :class:`~infrasynth.configs.services.ConfigService` so there
is a single source of truth.
"""
from __future__ import annotations
from rest_framework import serializers
__all__ = ["ConfigValueSerializer", "ConfigWriteSerializer"]
class ConfigValueSerializer(serializers.Serializer):
key = serializers.CharField()
value = serializers.JSONField(allow_null=True) # type: ignore[assignment]
type = serializers.CharField(allow_null=True)
group = serializers.CharField(allow_blank=True)
label = serializers.CharField(allow_blank=True) # type: ignore[assignment]
is_secret = serializers.BooleanField()
is_overridden = serializers.BooleanField()
updated_at = serializers.DateTimeField(allow_null=True)
class ConfigWriteSerializer(serializers.Serializer):
value = serializers.JSONField(required=True, allow_null=True) # type: ignore[assignment]