Coverage for api\serializers\base.py: 91.7%
8 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-08-30 20:58 +0200
« prev ^ index » next coverage.py v7.15.2, created at 2026-08-30 20:58 +0200
1"""
2Base comun de los serializers para manejar sus campos de auditoria para que solo se borren con su delete,
3no se puede dejar que alguien haga PATCH /api/v1/<lo-que-sea>/{id}/ {"is_deleted": true} y
4se modifique, por lo que todos los serializers heredan de este, y este los debe poner en
5solo lectura, de modo que solo se pueda eliminar pasando por el enpoint delete correspondiente
6"""
9class AuditFieldsMixin:
10 """
11 Deja los campos de auditoria de BaseModel en solo lectura. La forma de borrar sigue siendo DELETE,
12 que pasa por SoftDeleteQuerysetMixin.perform_destroy y escribe is_deleted y deleted_at sin pasar por el serializer.
13 """
15 AUDIT_FIELDS = ('is_deleted', 'deleted_at', 'created_at', 'updated_at')
17 def get_fields(self):
18 fields = super().get_fields()
20 for name in self.AUDIT_FIELDS:
21 if name in fields: 21 ↛ 20line 21 didn't jump to line 20 because the condition on line 21 was always true
22 fields[name].read_only = True
24 return fields