Coverage for shps/api_serializers.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.6.0, created at 2024-07-27 11:19 +0000

1from rest_framework import serializers 

2from .serializer_base import LinkedPastsSerializer 

3from .models import TempSpatial, Source 

4 

5 

6class SimpleSerializer(serializers.HyperlinkedModelSerializer): 

7 """A class to serialize TempSpatial objects without GIS data points""" 

8 

9 source_name = serializers.CharField(source="source.name") 

10 adm_name = serializers.CharField(source="administrative_unit.pref_label") 

11 spatial_extent_sqm = serializers.ReadOnlyField(source="sq_km") 

12 slugged_name = serializers.ReadOnlyField(source="slug_name") 

13 title = serializers.ReadOnlyField(source="name") 

14 

15 class Meta: 

16 model = TempSpatial 

17 fields = ( 

18 "id", 

19 "url", 

20 "wikidata_id", 

21 "title", 

22 "alt_name", 

23 "source", 

24 "source_name", 

25 "administrative_unit", 

26 "adm_name", 

27 "start_date", 

28 "end_date", 

29 "date_accuracy", 

30 "spatial_extent_sqm", 

31 "slugged_name", 

32 ) 

33 

34 

35class SourceSerializer(serializers.HyperlinkedModelSerializer): 

36 """A class to serialize Source objects as JSON compatible data""" 

37 

38 class Meta: 

39 model = Source 

40 fields = ( 

41 "name", 

42 "description", 

43 "quote", 

44 "original_url", 

45 ) 

46 

47 

48class TempSpatialSerializer( 

49 LinkedPastsSerializer, serializers.HyperlinkedModelSerializer 

50): 

51 """A class to serialize TempSpatial objects as GeoJSON compatible data""" 

52 

53 source_name = serializers.CharField(source="source.name") 

54 adm_name = serializers.CharField(source="administrative_unit.pref_label") 

55 spatial_extent_sqm = serializers.ReadOnlyField(source="sq_km") 

56 slugged_name = serializers.ReadOnlyField(source="slug_name") 

57 title = serializers.ReadOnlyField(source="name") 

58 

59 class Meta: 

60 model = TempSpatial 

61 geo_field = "geom" 

62 fields = ( 

63 "id", 

64 "wikidata_id", 

65 "title", 

66 "name", 

67 "alt_name", 

68 "source", 

69 "source_name", 

70 "administrative_unit", 

71 "adm_name", 

72 "start_date", 

73 "end_date", 

74 "date_accuracy", 

75 "spatial_extent", 

76 "spatial_extent_sqm", 

77 "slugged_name", 

78 ) 

79 auto_bbox = True