mirror of
https://github.com/Findus23/acronomy.git
synced 2024-09-19 15:33:45 +02:00
use clean instead of save
This commit is contained in:
parent
577d1b50c1
commit
51ff990cbb
6 changed files with 26 additions and 25 deletions
|
@ -31,16 +31,24 @@ class Acronym(models.Model):
|
|||
modified_date = models.DateTimeField(auto_now=True)
|
||||
pageviews = models.IntegerField(default=0, editable=False)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
def clean(self):
|
||||
if not self.slug:
|
||||
self.slug = slugify(self.name)
|
||||
|
||||
if not self.id:
|
||||
try:
|
||||
found = Acronym.objects.get(slug=self.slug)
|
||||
except Acronym.DoesNotExist:
|
||||
found = False
|
||||
if found:
|
||||
raise ValidationError(f"slug '{self.slug}' already exists")
|
||||
|
||||
self.description_html = md_to_html(self.description_md)
|
||||
if not self.acro_letters:
|
||||
self.acro_letters = [0]
|
||||
for pos, char in enumerate(self.full_name):
|
||||
if char == " " and pos <= len(self.full_name):
|
||||
self.acro_letters.append(pos + 1)
|
||||
if not self.slug:
|
||||
self.slug = slugify(self.name)
|
||||
super(Acronym, self).save(*args, **kwargs)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
@ -53,13 +61,3 @@ class Acronym(models.Model):
|
|||
|
||||
class Meta:
|
||||
ordering = ["name"]
|
||||
|
||||
def clean(self):
|
||||
if not self.id:
|
||||
new_slug = slugify(self.name)
|
||||
try:
|
||||
found = Acronym.objects.get(slug=new_slug)
|
||||
except Acronym.DoesNotExist:
|
||||
found = False
|
||||
if found:
|
||||
raise ValidationError(f"slug '{new_slug}' already exists")
|
||||
|
|
|
@ -22,7 +22,7 @@ class PaperReference(models.Model):
|
|||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
def clean(self, *args, **kwargs):
|
||||
if not self.fetched:
|
||||
ads.config.token = ADS_AUTH_TOKEN
|
||||
cols = ["title", "author", "year", "pubdate", "doi", "identifier"]
|
||||
|
@ -45,7 +45,6 @@ class PaperReference(models.Model):
|
|||
else:
|
||||
self.arxiv_id = None
|
||||
self.fetched = True
|
||||
super(PaperReference, self).save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def ads_url(self):
|
||||
|
|
|
@ -12,9 +12,8 @@ class Tag(models.Model):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
def clean(self):
|
||||
self.slug = slugify(self.name)
|
||||
super(Tag, self).save()
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('tag', args=[str(self.slug)])
|
||||
|
|
|
@ -17,8 +17,7 @@ class Weblink(models.Model):
|
|||
def __str__(self):
|
||||
return self.url
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
def clean(self):
|
||||
uri = urlparse(self.url)
|
||||
self.host, created = Host.objects.get_or_create(host=uri.hostname)
|
||||
self.title = get_website_title(self.url)
|
||||
super(Weblink, self).save(*args, **kwargs)
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
from urllib.parse import unquote
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
from simple_history.models import HistoricalRecords
|
||||
|
||||
from acros.models import Acronym, WikipediaImage
|
||||
from acros.utils.apis import WikipediaAPISummary
|
||||
from acros.utils.apis import WikipediaAPISummary, NotFoundError
|
||||
|
||||
|
||||
class WikipediaLink(models.Model):
|
||||
|
@ -19,9 +20,12 @@ class WikipediaLink(models.Model):
|
|||
fetched = models.BooleanField(default=False)
|
||||
history = HistoricalRecords()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
def clean(self):
|
||||
if not self.fetched:
|
||||
summary = WikipediaAPISummary(self.title)
|
||||
try:
|
||||
summary = WikipediaAPISummary(self.title)
|
||||
except NotFoundError as e:
|
||||
raise ValidationError(str(e))
|
||||
self.extract = summary.extract
|
||||
self.extract_html = summary.extract_html
|
||||
self.description = summary.description
|
||||
|
@ -38,7 +42,6 @@ class WikipediaLink(models.Model):
|
|||
self.thumbnail = thumbnail
|
||||
self.fetched = True
|
||||
|
||||
super(WikipediaLink, self).save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
|
|
|
@ -16,7 +16,10 @@ class WikipediaAPISummary:
|
|||
|
||||
def __init__(self, title: str):
|
||||
r = requests.get(self.urlbase + title)
|
||||
r.raise_for_status()
|
||||
try:
|
||||
r.raise_for_status()
|
||||
except requests.HTTPError:
|
||||
raise NotFoundError("Wikipedia API returns error")
|
||||
self.data = r.json()
|
||||
|
||||
@property
|
||||
|
|
Loading…
Reference in a new issue