X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/102acc0b6eb715826f26b5082611604cf6ebe240..0213808c52019edebba66cd0163867a441f8a4a0:/src/references/models.py diff --git a/src/references/models.py b/src/references/models.py index 24a6dad67..fb249e1c8 100644 --- a/src/references/models.py +++ b/src/references/models.py @@ -36,8 +36,8 @@ class Entity(models.Model): )] entity = client.get(wikidata_id) - self.label = entity.label.get('pl', entity.label) or '' - self.description = entity.description.get('pl', entity.description) or '' + self.label = entity.label.get('pl', entity.label.get('mul', entity.label)) or '' + self.description = entity.description.get('pl', entity.description.get('mul', entity.description)) or '' sitelinks = entity.attributes.get('sitelinks', {}) self.wikipedia_link = sitelinks.get('plwiki', sitelinks.get('enwiki', {})).get('url') or '' @@ -75,6 +75,51 @@ class Entity(models.Model): self.images = json.dumps(image_data_list) + def get_images(self): + return json.loads(self.images) + + def get_pretty_coords(self): + def to_minutes(n): + coo = [] + coo.append(int(n)) + n -= coo[-1] + n *= 60 + coo.append(int(n)) + n -= coo[-1] + n *= 60 + coo.append(n) + return coo + + if not self.lat or not self.lon: + return '' + + lat, latm, lon, lonm = self.lat, 'N', self.lon, 'E' + if lat < 0: + latm = 'S' + lat = -lat + if lon < 0: + lonm = 'W' + lon = -lon + + return '%d°%d\'%d"%s %d°%d\'%d"%s' % ( + *to_minutes(lat), + latm, + *to_minutes(lon), + lonm, + ) + + def get_json(self): + data = { + "id": self.id, + "images": self.get_images(), + "label": self.label, + "description": self.description, + "wikipedia_link": self.wikipedia_link, + } + if self.lat and self.lon: + data['location'] = [self.lat, self.lon] + return json.dumps(data) + class Reference(models.Model): book = models.ForeignKey('catalogue.Book', models.CASCADE)