Ajout des CD et des vinyles

This commit is contained in:
Yohann D'ANELLO 2020-05-22 18:04:41 +02:00
parent 001f40a033
commit 054865cd41
7 changed files with 82 additions and 24 deletions

View File

@ -9,7 +9,7 @@ from reversion.admin import VersionAdmin
from med.admin import admin_site
from .forms import MediaAdminForm
from .models import Auteur, Emprunt, FutureMedia, Jeu, Manga, Media
from .models import Auteur, BD, CD, Emprunt, FutureMedia, Jeu, Manga, Vinyle
class AuteurAdmin(VersionAdmin):
@ -76,6 +76,17 @@ class FutureMediaAdmin(VersionAdmin):
extra_context=extra_context)
class CDAdmin(VersionAdmin):
list_display = ('title', 'authors_list', 'side_identifier',)
search_fields = ('title', 'authors__name', 'side_identifier',)
autocomplete_fields = ('authors',)
def authors_list(self, obj):
return ", ".join([a.name for a in obj.authors.all()])
authors_list.short_description = _('authors')
class EmpruntAdmin(VersionAdmin):
list_display = ('media', 'user', 'date_emprunt', 'date_rendu',
'permanencier_emprunt', 'permanencier_rendu_custom')
@ -120,8 +131,10 @@ class JeuAdmin(VersionAdmin):
admin_site.register(Auteur, AuteurAdmin)
admin_site.register(Media, MediaAdmin)
admin_site.register(BD, MediaAdmin)
admin_site.register(Manga, MediaAdmin)
admin_site.register(CD, CDAdmin)
admin_site.register(Vinyle, CDAdmin)
admin_site.register(FutureMedia, FutureMediaAdmin)
admin_site.register(Emprunt, EmpruntAdmin)
admin_site.register(Jeu, JeuAdmin)

View File

@ -10,7 +10,7 @@ import urllib.request
from django.forms import ModelForm
from django.utils.translation import gettext_lazy as _
from .models import Auteur, Media
from .models import Auteur, BD
from .scraper import BedetequeScraper
@ -263,5 +263,5 @@ class MediaAdminForm(ModelForm):
self.add_error(name, e)
class Meta:
model = Media
model = BD
fields = '__all__'

View File

@ -1,7 +1,9 @@
from time import sleep
from django.core.management import BaseCommand
from media.forms import MediaAdminForm
from media.models import Manga, Media
from media.models import BD, Manga
class Command(BaseCommand):
@ -13,7 +15,11 @@ class Command(BaseCommand):
def handle(self, *args, **options):
converted = 0
for media in Media.objects.all():
for media in BD.objects.all():
if media.pk < 3400:
continue
# We sleep 5 seconds to avoid a ban from Bedetheque
sleep(5)
self.stdout.write(str(media))
form = MediaAdminForm(instance=media,
data={"isbn": media.isbn, "_isbn": True, })

View File

@ -30,7 +30,7 @@ class Auteur(models.Model):
ordering = ['name']
class Media(models.Model):
class BD(models.Model):
isbn = ISBNField(
_('ISBN'),
help_text=_('You may be able to scan it from a bar code.'),
@ -86,8 +86,8 @@ class Media(models.Model):
return self.title
class Meta:
verbose_name = _("medium")
verbose_name_plural = _("media")
verbose_name = _("BD")
verbose_name_plural = _("BDs")
ordering = ['title', 'subtitle']
@ -140,16 +140,55 @@ class Manga(models.Model):
null=True,
)
class Vinyle(models.Model):
title = models.CharField(
verbose_name=_('title'),
max_length=255,
)
side_identifier = models.CharField(
verbose_name=_('side identifier'),
max_length=255,
)
authors = models.ManyToManyField(
'Auteur',
verbose_name=_('authors'),
)
def __str__(self):
if self.subtitle:
return "{} : {}".format(self.title, self.subtitle)
else:
return self.title
return self.title
class Meta:
verbose_name = _("manga")
verbose_name_plural = _("mangas")
ordering = ['title', 'subtitle']
verbose_name = _("vinyle")
verbose_name_plural = _("vinyles")
ordering = ['title']
class CD(models.Model):
title = models.CharField(
verbose_name=_('title'),
max_length=255,
)
side_identifier = models.CharField(
verbose_name=_('side identifier'),
max_length=255,
)
authors = models.ManyToManyField(
'Auteur',
verbose_name=_('authors'),
)
def __str__(self):
return self.title
class Meta:
verbose_name = _("CD")
verbose_name_plural = _("CDs")
ordering = ['title']
class FutureMedia(models.Model):
@ -171,7 +210,7 @@ class FutureMedia(models.Model):
class Emprunt(models.Model):
media = models.ForeignKey(
'Media',
'BD',
on_delete=models.PROTECT,
)
user = models.ForeignKey(

View File

@ -1,6 +1,6 @@
from rest_framework import serializers
from .models import Auteur, Emprunt, Jeu, Media
from .models import Auteur, BD, Emprunt, Jeu
class AuteurSerializer(serializers.HyperlinkedModelSerializer):
@ -11,7 +11,7 @@ class AuteurSerializer(serializers.HyperlinkedModelSerializer):
class MediaSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Media
model = BD
fields = ['url', 'isbn', 'title', 'subtitle', 'external_url',
'side_identifier', 'authors', 'number_of_pages',
'publish_date']

View File

@ -4,7 +4,7 @@
from django.test import TestCase
from django.urls import reverse
from media.models import Auteur, Media
from media.models import Auteur, BD
from users.models import User
"""
@ -25,12 +25,12 @@ class TemplateTests(TestCase):
self.dummy_author = Auteur.objects.create(name="Test author")
# Create media
self.dummy_media1 = Media.objects.create(
self.dummy_media1 = BD.objects.create(
title="Test media",
side_identifier="T M",
)
self.dummy_media1.authors.add(self.dummy_author)
self.dummy_media2 = Media.objects.create(
self.dummy_media2 = BD.objects.create(
title="Test media bis",
side_identifier="T M 2",
external_url="https://example.com/",

View File

@ -11,7 +11,7 @@ from django.utils.translation import gettext_lazy as _
from rest_framework import viewsets
from reversion import revisions as reversion
from .models import Auteur, Emprunt, Jeu, Media
from .models import Auteur, BD, Emprunt, Jeu
from .serializers import AuteurSerializer, EmpruntSerializer, \
JeuSerializer, MediaSerializer
@ -57,7 +57,7 @@ class MediaViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows media to be viewed or edited.
"""
queryset = Media.objects.all()
queryset = BD.objects.all()
serializer_class = MediaSerializer