1
0
Fork 0
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:
Lukas Winkler 2020-07-28 18:25:56 +02:00
parent 577d1b50c1
commit 51ff990cbb
Signed by: lukas
GPG key ID: 54DE4D798D244853
6 changed files with 26 additions and 25 deletions

View file

@ -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")

View file

@ -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):

View file

@ -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)])

View file

@ -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)

View file

@ -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):

View file

@ -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