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

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""" 

7 

8 

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 """ 

14 

15 AUDIT_FIELDS = ('is_deleted', 'deleted_at', 'created_at', 'updated_at') 

16 

17 def get_fields(self): 

18 fields = super().get_fields() 

19 

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 

23 

24 return fields