Coverage for website/thaliawebsite/api/v2/fields/current_object.py: 56.25%

14 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1class CurrentRequestObjectDefault: 

2 """A default class that can be used to represent an object based on the request arguments. 

3 

4 In order to use this, the 'request' must have been provided as part 

5 of the context dictionary when instantiating the serializer. 

6 """ 

7 

8 requires_context = True 

9 

10 def __init__(self, model, url_field, model_field="pk") -> None: 

11 super().__init__() 

12 self.model = model 

13 self.model_field = model_field 

14 self.url_field = url_field 

15 

16 def __call__(self, serializer_field): 

17 val = serializer_field.context["view"].kwargs.get( 

18 serializer_field.context["view"].lookup_field, None 

19 ) 

20 if self.url_field: 

21 val = serializer_field.context["view"].kwargs.get(self.url_field, None) 

22 return self.model.objects.get(**{self.model_field: val}) 

23 

24 def __repr__(self): 

25 return f"{self.__class__.__name__}()"