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)
|
modified_date = models.DateTimeField(auto_now=True)
|
||||||
pageviews = models.IntegerField(default=0, editable=False)
|
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)
|
self.description_html = md_to_html(self.description_md)
|
||||||
if not self.acro_letters:
|
if not self.acro_letters:
|
||||||
self.acro_letters = [0]
|
self.acro_letters = [0]
|
||||||
for pos, char in enumerate(self.full_name):
|
for pos, char in enumerate(self.full_name):
|
||||||
if char == " " and pos <= len(self.full_name):
|
if char == " " and pos <= len(self.full_name):
|
||||||
self.acro_letters.append(pos + 1)
|
self.acro_letters.append(pos + 1)
|
||||||
if not self.slug:
|
|
||||||
self.slug = slugify(self.name)
|
|
||||||
super(Acronym, self).save(*args, **kwargs)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
@ -53,13 +61,3 @@ class Acronym(models.Model):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ["name"]
|
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):
|
def __str__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def clean(self, *args, **kwargs):
|
||||||
if not self.fetched:
|
if not self.fetched:
|
||||||
ads.config.token = ADS_AUTH_TOKEN
|
ads.config.token = ADS_AUTH_TOKEN
|
||||||
cols = ["title", "author", "year", "pubdate", "doi", "identifier"]
|
cols = ["title", "author", "year", "pubdate", "doi", "identifier"]
|
||||||
|
@ -45,7 +45,6 @@ class PaperReference(models.Model):
|
||||||
else:
|
else:
|
||||||
self.arxiv_id = None
|
self.arxiv_id = None
|
||||||
self.fetched = True
|
self.fetched = True
|
||||||
super(PaperReference, self).save(*args, **kwargs)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def ads_url(self):
|
def ads_url(self):
|
||||||
|
|
|
@ -12,9 +12,8 @@ class Tag(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def clean(self):
|
||||||
self.slug = slugify(self.name)
|
self.slug = slugify(self.name)
|
||||||
super(Tag, self).save()
|
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('tag', args=[str(self.slug)])
|
return reverse('tag', args=[str(self.slug)])
|
||||||
|
|
|
@ -17,8 +17,7 @@ class Weblink(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.url
|
return self.url
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def clean(self):
|
||||||
uri = urlparse(self.url)
|
uri = urlparse(self.url)
|
||||||
self.host, created = Host.objects.get_or_create(host=uri.hostname)
|
self.host, created = Host.objects.get_or_create(host=uri.hostname)
|
||||||
self.title = get_website_title(self.url)
|
self.title = get_website_title(self.url)
|
||||||
super(Weblink, self).save(*args, **kwargs)
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
from urllib.parse import unquote
|
from urllib.parse import unquote
|
||||||
|
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from simple_history.models import HistoricalRecords
|
from simple_history.models import HistoricalRecords
|
||||||
|
|
||||||
from acros.models import Acronym, WikipediaImage
|
from acros.models import Acronym, WikipediaImage
|
||||||
from acros.utils.apis import WikipediaAPISummary
|
from acros.utils.apis import WikipediaAPISummary, NotFoundError
|
||||||
|
|
||||||
|
|
||||||
class WikipediaLink(models.Model):
|
class WikipediaLink(models.Model):
|
||||||
|
@ -19,9 +20,12 @@ class WikipediaLink(models.Model):
|
||||||
fetched = models.BooleanField(default=False)
|
fetched = models.BooleanField(default=False)
|
||||||
history = HistoricalRecords()
|
history = HistoricalRecords()
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def clean(self):
|
||||||
if not self.fetched:
|
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 = summary.extract
|
||||||
self.extract_html = summary.extract_html
|
self.extract_html = summary.extract_html
|
||||||
self.description = summary.description
|
self.description = summary.description
|
||||||
|
@ -38,7 +42,6 @@ class WikipediaLink(models.Model):
|
||||||
self.thumbnail = thumbnail
|
self.thumbnail = thumbnail
|
||||||
self.fetched = True
|
self.fetched = True
|
||||||
|
|
||||||
super(WikipediaLink, self).save(*args, **kwargs)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def url(self):
|
def url(self):
|
||||||
|
|
|
@ -16,7 +16,10 @@ class WikipediaAPISummary:
|
||||||
|
|
||||||
def __init__(self, title: str):
|
def __init__(self, title: str):
|
||||||
r = requests.get(self.urlbase + title)
|
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()
|
self.data = r.json()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Reference in a new issue