X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/149903ae7da0968ef3b1b0dc0f329afeaa5a7007..215578b869ea0f64347f3565793238039a9467e6:/src/references/models.py diff --git a/src/references/models.py b/src/references/models.py index c98647191..e8813a016 100644 --- a/src/references/models.py +++ b/src/references/models.py @@ -31,6 +31,9 @@ class Entity(models.Model): def populate_from_wikidata(self, wikidata_id): client = Client() + client.opener.addheaders = [( + 'User-Agent', 'Wolne Lektury / https://wolnelektury.pl / Python-wikidata' + )] entity = client.get(wikidata_id) self.label = entity.label.get('pl', entity.label) or '' @@ -65,18 +68,60 @@ class Entity(models.Model): result_data['thumbwidth'], result_data['thumbheight'] ] - image_data['responsiveUrls'] = result_data['responsiveUrls'] + if 'responsiveUrls' in result_data: + image_data['responsiveUrls'] = result_data['responsiveUrls'] image_data_list.append(image_data) 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, + ) + + class Reference(models.Model): book = models.ForeignKey('catalogue.Book', models.CASCADE) entity = models.ForeignKey(Entity, models.CASCADE) - first_section = models.CharField(max_length=255) class Meta: unique_together = (('book', 'entity'),) + +class Occurence(models.Model): + reference = models.ForeignKey(Reference, models.CASCADE) + section = models.IntegerField() + html = models.TextField() + + class Meta: + ordering = ('section',)