From ea30cdec6efa5761696c6a2a474fafab21d01a46 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Tue, 12 May 2020 17:33:32 +0200 Subject: [PATCH] Add a model to store future media list. --- media/admin.py | 19 ++++++++++++++++++- media/forms.py | 4 +--- media/models.py | 17 +++++++++++++++++ 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/media/admin.py b/media/admin.py index a18fabd..6c6a07c 100644 --- a/media/admin.py +++ b/media/admin.py @@ -9,7 +9,7 @@ from reversion.admin import VersionAdmin from med.admin import admin_site from .forms import MediaAdminForm -from .models import Auteur, Emprunt, Jeu, Media +from .models import Auteur, Emprunt, Jeu, Media, FutureMedia class AuteurAdmin(VersionAdmin): @@ -60,6 +60,22 @@ class MediaAdmin(VersionAdmin): extra_context=extra_context) +class FutureMediaAdmin(VersionAdmin): + list_display = ('isbn',) + search_fields = ('isbn',) + + def changeform_view(self, request, object_id=None, form_url='', + extra_context=None): + """ + We use _continue for ISBN fetching, so remove continue button + """ + extra_context = extra_context or {} + extra_context['show_save_and_continue'] = False + extra_context['show_save'] = False + return super().changeform_view(request, object_id, form_url, + extra_context=extra_context) + + class EmpruntAdmin(VersionAdmin): list_display = ('media', 'user', 'date_emprunt', 'date_rendu', 'permanencier_emprunt', 'permanencier_rendu_custom') @@ -105,5 +121,6 @@ class JeuAdmin(VersionAdmin): admin_site.register(Auteur, AuteurAdmin) admin_site.register(Media, MediaAdmin) +admin_site.register(FutureMedia, FutureMediaAdmin) admin_site.register(Emprunt, EmpruntAdmin) admin_site.register(Jeu, JeuAdmin) diff --git a/media/forms.py b/media/forms.py index 1933ae8..224dd0c 100644 --- a/media/forms.py +++ b/media/forms.py @@ -41,7 +41,7 @@ class MediaAdminForm(ModelForm): Download data from google books :return True if success """ - api_url = "https://www.googleapis.com/books/v1/volumes?q=isbn:{}".format(isbn) + api_url = "https://www.googleapis.com/books/v1/volumes?q=ISBN:{}".format(isbn) with urllib.request.urlopen(api_url) as url: data = json.loads(url.read().decode()) @@ -234,8 +234,6 @@ class MediaAdminForm(ModelForm): ).casefold().upper() self.cleaned_data['side_identifier'] = side_identifier - print(self.cleaned_data) - return self.cleaned_data def _clean_fields(self): diff --git a/media/models.py b/media/models.py index dbfaf04..3a67389 100644 --- a/media/models.py +++ b/media/models.py @@ -84,6 +84,23 @@ class Media(models.Model): ordering = ['title', 'subtitle'] +class FutureMedia(models.Model): + isbn = ISBNField( + _('ISBN'), + help_text=_('You may be able to scan it from a bar code.'), + unique=True, + blank=True, + null=True, + ) + + class Meta: + verbose_name = _("future medium") + verbose_name_plural = _("future media") + + def __str__(self): + return "Future medium (ISBN: {isbn})".format(isbn=self.isbn, ) + + class Emprunt(models.Model): media = models.ForeignKey( 'Media',