1
0
Fork 0
mirror of https://github.com/Findus23/acronomy.git synced 2024-09-19 15:33:45 +02:00
acronomy/acros/models/WikipediaLink.py

48 lines
1.8 KiB
Python
Raw Normal View History

2020-07-18 22:21:57 +02:00
from urllib.parse import unquote
2020-06-01 11:03:21 +02:00
from django.db import models
from simple_history.models import HistoricalRecords
2020-07-18 21:59:42 +02:00
from acros.models import Acronym, WikipediaImage
from acros.utils.apis import WikipediaAPISummary
2020-06-01 11:03:21 +02:00
class WikipediaLink(models.Model):
acronym = models.ForeignKey(Acronym, on_delete=models.CASCADE, related_name="wiki_articles")
title = models.CharField(max_length=200)
extract = models.TextField(blank=True)
extract_html = models.TextField(blank=True)
2020-07-27 21:01:40 +02:00
description = models.TextField(blank=True, null=True)
2020-07-18 21:59:42 +02:00
thumbnail = models.ForeignKey(WikipediaImage, on_delete=models.CASCADE, related_name="wiki_articles",
blank=True, null=True)
2020-06-01 11:03:21 +02:00
timestamp = models.DateTimeField(blank=True)
fetched = models.BooleanField(default=False)
history = HistoricalRecords()
def save(self, *args, **kwargs):
if not self.fetched:
2020-07-18 21:59:42 +02:00
summary = WikipediaAPISummary(self.title)
self.extract = summary.extract
self.extract_html = summary.extract_html
2020-07-27 20:59:44 +02:00
self.description = summary.description
2020-07-18 21:59:42 +02:00
self.timestamp = summary.timestamp
self.title = summary.title
if summary.image:
2020-07-18 22:21:57 +02:00
filename = unquote(summary.image.split("/")[-1])
2020-07-18 21:59:42 +02:00
try:
thumbnail = WikipediaImage.objects.get(filename=filename)
except WikipediaImage.DoesNotExist:
thumbnail = WikipediaImage.objects.create(filename=filename)
thumbnail.save()
self.thumbnail = thumbnail
2020-06-01 11:03:21 +02:00
self.fetched = True
super(WikipediaLink, self).save(*args, **kwargs)
@property
def url(self):
return f"https://en.wikipedia.org/wiki/{self.title}"
def __str__(self):
return self.title