Coverage for shps/serializer_base.py: 83%

29 statements  

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

1from rest_framework_gis.serializers import GeoFeatureModelSerializer 

2from django.conf import settings 

3 

4try: 

5 if settings.BASE_URL.endswith("/"): 

6 base_url = settings.BASE_URL[:-1] 

7 else: 

8 base_url = settings.BASE_URL 

9except AttributeError: 

10 base_url = "http://PROVIDE-A-SERVER-BASE-URL" 

11 

12 

13class LinkedPastsSerializer(GeoFeatureModelSerializer): 

14 def to_representation(self, instance): 

15 feature = super(LinkedPastsSerializer, self).to_representation(instance) 

16 when = { 

17 "timespans": [ 

18 {"start": {"in": instance.start_date}, "end": {"in": instance.end_date}} 

19 ] 

20 } 

21 names = [{"toponym": instance.name}] 

22 if len(instance.alt_name_list()) > 0: 

23 all_names = [{"toponym": x} for x in instance.alt_name_list()] 

24 all_names = names + all_names 

25 else: 

26 all_names = names 

27 types = [ 

28 { 

29 "identifier": "{}{}".format( 

30 base_url, instance.administrative_unit.get_absolute_url() 

31 ), 

32 "label": instance.administrative_unit.pref_label, 

33 } 

34 ] 

35 descriptions = [ 

36 { 

37 "value": "{}".format(instance.source.description), 

38 "lang": "en", 

39 } 

40 ] 

41 feature["when"] = when 

42 feature["names"] = all_names 

43 feature["types"] = types 

44 feature["descriptions"] = descriptions 

45 if instance.wikidata_id == "": 

46 pass 

47 else: 

48 links = [ 

49 { 

50 "type": "skos:closeMatch", 

51 "identifier": f"http://www.wikidata.org/entity/{instance.wikidata_id}", 

52 } 

53 ] 

54 feature["links"] = links 

55 feature["@id"] = "{}{}".format(base_url, instance.get_permalink_url()) 

56 return feature