clean up, add provider, defaults

main
eric 2023-02-20 20:04:10 -05:00
parent 1c64bc33a8
commit e034013b81
3 changed files with 44 additions and 1 deletions

View File

@ -75,6 +75,9 @@ def load_doab_record(doab_id, title, item_type, urls, timestamps, **kwargs):
""" """
logger.info('load doab %s', doab_id) logger.info('load doab %s', doab_id)
(new_item, created) = Item.objects.get_or_create(doab=doab_id) (new_item, created) = Item.objects.get_or_create(doab=doab_id)
new_item.title = title
new_item.resource_type = item_type
new_item.save()
new_record = Record.objects.create(item=new_item) new_record = Record.objects.create(item=new_item)
for timestamp in timestamps: for timestamp in timestamps:
(new_timestamp, created) = Timestamp.objects.get_or_create( (new_timestamp, created) = Timestamp.objects.get_or_create(

View File

@ -0,0 +1,28 @@
# Generated by Django 4.1.7 on 2023-02-21 00:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('doab_check', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='link',
name='provider',
field=models.CharField(default='', max_length=255),
),
migrations.AlterField(
model_name='linkrel',
name='role',
field=models.CharField(default='identifier', max_length=10),
),
migrations.AlterField(
model_name='timestamp',
name='created',
field=models.DateTimeField(auto_now_add=True),
),
]

View File

@ -1,4 +1,5 @@
from urllib.parse import urlparse
from django.db import models from django.db import models
@ -28,6 +29,17 @@ class Link(models.Model):
# so we can set it to dead instead of deleting # so we can set it to dead instead of deleting
live = models.BooleanField(default=True) live = models.BooleanField(default=True)
# derived from url so we can do sorting, etc.
provider = models.CharField(max_length=255, default='')
def save(self, *args, **kwargs):
if self.url:
netloc = urlparse(self.url).netloc.lower()
if netloc.startswith('www.'):
netloc = netloc[4:]
self.provider = netloc
super().save(*args, **kwargs)
class Timestamp(models.Model): class Timestamp(models.Model):
''' timestamp of the record returned by doab. records can have multiple timestamps ''' ''' timestamp of the record returned by doab. records can have multiple timestamps '''
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
@ -43,7 +55,7 @@ class Record(models.Model):
class LinkRel(models.Model): class LinkRel(models.Model):
''' association between an item and a link ''' ''' association between an item and a link '''
# might be 'cover' # might be 'cover'
role = models.CharField(max_length=10, null=True) role = models.CharField(max_length=10, default='identifier')
link = models.ForeignKey("Link", related_name='related', on_delete=models.CASCADE) link = models.ForeignKey("Link", related_name='related', on_delete=models.CASCADE)
item = models.ForeignKey("Item", related_name='related', on_delete=models.CASCADE) item = models.ForeignKey("Item", related_name='related', on_delete=models.CASCADE)