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