From 0c504e85fcdf08be93bb8364086d32c89fc55087 Mon Sep 17 00:00:00 2001 From: Alexandre Iooss Date: Thu, 8 Aug 2019 21:08:24 +0200 Subject: [PATCH] Simple library views --- media/admin.py | 15 +- media/forms.py | 24 +-- media/templates/media/aff_auteurs.html | 13 -- media/templates/media/aff_emprunts.html | 7 +- media/templates/media/aff_jeux.html | 13 -- media/templates/media/aff_medias.html | 13 -- media/templates/media/delete.html | 16 -- media/templates/media/index_auteurs.html | 6 +- media/templates/media/index_emprunts.html | 9 +- media/templates/media/index_jeux.html | 6 +- media/templates/media/index_medias.html | 6 +- media/urls.py | 14 -- media/views.py | 176 +--------------------- theme/locale/fr/LC_MESSAGES/django.po | 14 +- theme/templates/admin/base_site.html | 10 +- 15 files changed, 49 insertions(+), 293 deletions(-) delete mode 100644 media/templates/media/delete.html diff --git a/media/admin.py b/media/admin.py index b895baf..b329a6e 100644 --- a/media/admin.py +++ b/media/admin.py @@ -13,19 +13,20 @@ class AuteurAdmin(VersionAdmin): class MediaAdmin(VersionAdmin): - list_display = ('titre', 'cote') + list_display = ('titre', 'authors', 'cote') + + def authors(self, obj): + return ", ".join([a.nom for a in obj.auteur.all()]) class EmpruntAdmin(VersionAdmin): - list_display = ( - 'media', 'user', 'date_emprunt', 'date_rendu', 'permanencier_emprunt', - 'permanencier_rendu') + list_display = ('media', 'user', 'date_emprunt', 'date_rendu', + 'permanencier_emprunt', 'permanencier_rendu') class JeuAdmin(VersionAdmin): - list_display = ( - 'nom', 'proprietaire', 'duree', 'nombre_joueurs_min', 'nombre_joueurs_max', - 'comment') + list_display = ('nom', 'proprietaire', 'duree', 'nombre_joueurs_min', + 'nombre_joueurs_max', 'comment') admin.site.register(Auteur, AuteurAdmin) diff --git a/media/forms.py b/media/forms.py index 7c07b40..2c2b7bb 100644 --- a/media/forms.py +++ b/media/forms.py @@ -5,23 +5,7 @@ from django import forms from django.forms import ModelForm -from .models import Auteur, Media, Jeu, Emprunt - - -class AuteurForm(ModelForm): - class Meta: - model = Auteur - fields = '__all__' - - -class MediaForm(ModelForm): - auteur = forms.ModelMultipleChoiceField(Auteur.objects.all(), - widget=forms.CheckboxSelectMultiple, - required=False) - - class Meta: - model = Media - fields = '__all__' +from .models import Jeu, Emprunt class JeuForm(ModelForm): @@ -30,10 +14,10 @@ class JeuForm(ModelForm): fields = '__all__' def clean_nombre_joueurs_max(self): - if self.cleaned_data['nombre_joueurs_max'] < self.cleaned_data[ - 'nombre_joueurs_min']: + max_player = self.cleaned_data['nombre_joueurs_max'] + if max_player < self.cleaned_data['nombre_joueurs_min']: raise forms.ValidationError("Max ne peut être inférieur à min") - return self.cleaned_data['nombre_joueurs_max'] + return max_player class EmpruntForm(ModelForm): diff --git a/media/templates/media/aff_auteurs.html b/media/templates/media/aff_auteurs.html index d81c5d1..e7b7762 100644 --- a/media/templates/media/aff_auteurs.html +++ b/media/templates/media/aff_auteurs.html @@ -10,24 +10,11 @@ SPDX-License-Identifier: GPL-3.0-or-later Nom - {% for auteur in auteurs_list %} {{ auteur.nom }} - - {% if perms.media.change_auteur %} - - Éditer - - {% endif %} - {% if perms.media.delete_auteur %} - - Supprimer - - {% endif %} - {% endfor %} diff --git a/media/templates/media/aff_emprunts.html b/media/templates/media/aff_emprunts.html index ee227c6..ab72aa2 100644 --- a/media/templates/media/aff_emprunts.html +++ b/media/templates/media/aff_emprunts.html @@ -21,9 +21,7 @@ SPDX-License-Identifier: GPL-3.0-or-later {% for emprunt in emprunts_list %} {{ emprunt.media }} - - {{ emprunt.user }} - + {{ emprunt.user }} {{ emprunt.date_emprunt }} {{ emprunt.permanencier_emprunt }} @@ -40,9 +38,6 @@ SPDX-License-Identifier: GPL-3.0-or-later {% if perms.media.change_emprunt %} Editer {% endif %} - {% if perms.media.delete_emprunt %} - Supprimer - {% endif %} {% endfor %} diff --git a/media/templates/media/aff_jeux.html b/media/templates/media/aff_jeux.html index 6cc3a9a..6669de1 100644 --- a/media/templates/media/aff_jeux.html +++ b/media/templates/media/aff_jeux.html @@ -15,7 +15,6 @@ SPDX-License-Identifier: GPL-3.0-or-later Joueurs min Joueurs max Comment - {% for jeu in jeux_list %} @@ -26,18 +25,6 @@ SPDX-License-Identifier: GPL-3.0-or-later {{ jeu.nombre_joueurs_min }} {{ jeu.nombre_joueurs_max }} {{ jeu.comment }} - - {% if perms.media.change_jeu %} - - Éditer - - {% endif %} - {% if perms.media.delete_jeu %} - - Supprimer - - {% endif %} - {% endfor %} diff --git a/media/templates/media/aff_medias.html b/media/templates/media/aff_medias.html index bca63da..331fccf 100644 --- a/media/templates/media/aff_medias.html +++ b/media/templates/media/aff_medias.html @@ -12,7 +12,6 @@ SPDX-License-Identifier: GPL-3.0-or-later Titre Auteur Cote - {% for media in medias_list %} @@ -20,18 +19,6 @@ SPDX-License-Identifier: GPL-3.0-or-later {{ media.titre }} {% for aut in media.auteur.all %}{{ aut }}, {% endfor %} {{ media.cote }} - - {% if perms.media.change_media %} - - Éditer - - {% endif %} - {% if perms.media.delete_media %} - - Supprimer - - {% endif %} - {% endfor %} diff --git a/media/templates/media/delete.html b/media/templates/media/delete.html deleted file mode 100644 index da24ea7..0000000 --- a/media/templates/media/delete.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "media/sidebar.html" %} -{% comment %} -SPDX-License-Identifier: GPL-3.0-or-later -{% endcomment %} - -{% load bootstrap3 %} - -{% block title %}Création et modification de media{% endblock %} - -{% block content %} -
- {% csrf_token %} -

Attention, voulez-vous vraiment supprimer cet objet {{ objet_name }} ( {{ objet }} ) ?

- {% bootstrap_button "Confirmer" button_type="submit" icon="trash" %} -
-{% endblock %} diff --git a/media/templates/media/index_auteurs.html b/media/templates/media/index_auteurs.html index a051707..0d5a2d4 100644 --- a/media/templates/media/index_auteurs.html +++ b/media/templates/media/index_auteurs.html @@ -3,12 +3,14 @@ SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} +{% load i18n %} + {% block title %}Auteurs{% endblock %} {% block content %}

Liste des auteurs

- {% if perms.media.add_auteur %} - Ajouter un auteur + {% if user.is_staff %} + {% trans 'Go to admin' %} {% endif %} {% include "media/aff_auteurs.html" with auteurs_list=auteurs_list %} {% endblock %} diff --git a/media/templates/media/index_emprunts.html b/media/templates/media/index_emprunts.html index 39254af..a06d84d 100644 --- a/media/templates/media/index_emprunts.html +++ b/media/templates/media/index_emprunts.html @@ -3,9 +3,14 @@ SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} +{% load i18n %} + {% block title %}Emprunts{% endblock %} {% block content %} -

Liste des emprunts

- {% include "media/aff_emprunts.html" with emprunts_list=emprunts_list %} +

Liste des emprunts

+ {% if user.is_staff %} + {% trans 'Go to admin' %} + {% endif %} + {% include "media/aff_emprunts.html" with emprunts_list=emprunts_list %} {% endblock %} diff --git a/media/templates/media/index_jeux.html b/media/templates/media/index_jeux.html index 9aa09ce..22d65ff 100644 --- a/media/templates/media/index_jeux.html +++ b/media/templates/media/index_jeux.html @@ -3,12 +3,14 @@ SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} +{% load i18n %} + {% block title %}Jeux{% endblock %} {% block content %}

Liste des jeux

- {% if perms.media.add_jeu %} - Ajouter un jeu + {% if user.is_staff %} + {% trans 'Go to admin' %} {% endif %} {% include "media/aff_jeux.html" with jeux_list=jeux_list %} {% endblock %} diff --git a/media/templates/media/index_medias.html b/media/templates/media/index_medias.html index 2b681fe..a5e6e99 100644 --- a/media/templates/media/index_medias.html +++ b/media/templates/media/index_medias.html @@ -3,12 +3,14 @@ SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} +{% load i18n %} + {% block title %}Media{% endblock %} {% block content %}

Liste des medias

- {% if perms.media.add_media %} - Ajouter un media + {% if user.is_staff %} + {% trans 'Go to admin' %} {% endif %} {% include "media/aff_medias.html" with medias_list=medias_list %} {% endblock %} diff --git a/media/urls.py b/media/urls.py index 600fb3e..c0d9fdf 100644 --- a/media/urls.py +++ b/media/urls.py @@ -7,20 +7,8 @@ from django.conf.urls import url from . import views urlpatterns = [ - url(r'^add_auteur/$', views.add_auteur, name='add-auteur'), - url(r'^edit_auteur/(?P[0-9]+)$', views.edit_auteur, - name='edit-auteur'), - url(r'^del_auteur/(?P[0-9]+)$', views.del_auteur, - name='del-auteur'), url(r'^index_auteurs/$', views.index_auteurs, name='index-auteurs'), - url(r'^add_jeu/$', views.add_jeu, name='add-jeu'), - url(r'^edit_jeu/(?P[0-9]+)$', views.edit_jeu, name='edit-jeu'), - url(r'^del_jeu/(?P[0-9]+)$', views.del_jeu, name='del-jeu'), url(r'^index_jeux/$', views.index_jeux, name='index-jeux'), - url(r'^add_media/$', views.add_media, name='add-media'), - url(r'^edit_media/(?P[0-9]+)$', views.edit_media, - name='edit-media'), - url(r'^del_media/(?P[0-9]+)$', views.del_media, name='del-media'), url(r'^index_medias/$', views.index_medias, name='index-medias'), url(r'^add_emprunt/(?P[0-9]+)$', views.add_emprunt, name='add-emprunt'), @@ -28,7 +16,5 @@ urlpatterns = [ name='retour-emprunt'), url(r'^edit_emprunt/(?P[0-9]+)$', views.edit_emprunt, name='edit-emprunt'), - url(r'^del_emprunt/(?P[0-9]+)$', views.del_emprunt, - name='del-emprunt'), url(r'^index_emprunts/$', views.index_emprunt, name='index'), ] diff --git a/media/views.py b/media/views.py index f7a8927..e08901d 100644 --- a/media/views.py +++ b/media/views.py @@ -13,7 +13,7 @@ from reversion import revisions as reversion from med.settings import PAGINATION_NUMBER from users.models import User -from .forms import AuteurForm, MediaForm, JeuForm, EmpruntForm, EditEmpruntForm +from .forms import EmpruntForm, EditEmpruntForm from .models import Auteur, Media, Jeu, Emprunt @@ -23,162 +23,6 @@ def form(ctx, template, request): return render(request, template, c) -@login_required -@permission_required('media.add_auteur') -def add_auteur(request): - auteur = AuteurForm(request.POST or None) - if auteur.is_valid(): - with transaction.atomic(), reversion.create_revision(): - auteur.save() - reversion.set_user(request.user) - reversion.set_comment("Création") - messages.success(request, "L'auteur a été ajouté") - return redirect("/media/index_auteurs/") - return form({'mediaform': auteur}, 'media/media.html', request) - - -@login_required -@permission_required('media.change_auteur') -def edit_auteur(request, auteurid): - try: - auteur_instance = Auteur.objects.get(pk=auteurid) - except Auteur.DoesNotExist: - messages.error(request, u"Entrée inexistante") - return redirect("/media/index_auteurs/") - auteur = AuteurForm(request.POST or None, instance=auteur_instance) - if auteur.is_valid(): - with transaction.atomic(), reversion.create_revision(): - auteur.save() - reversion.set_user(request.user) - reversion.set_comment("Champs modifié(s) : %s" % ', '.join( - field for field in auteur.changed_data)) - messages.success(request, "Auteur modifié") - return redirect("/media/index_auteurs/") - return form({'mediaform': auteur}, 'media/media.html', request) - - -@login_required -@permission_required('media.delete_auteur') -def del_auteur(request, auteurid): - try: - auteur_instance = Auteur.objects.get(pk=auteurid) - except Auteur.DoesNotExist: - messages.error(request, u"Entrée inexistante") - return redirect("/media/index_auteurs/") - if request.method == "POST": - with transaction.atomic(), reversion.create_revision(): - auteur_instance.delete() - reversion.set_user(request.user) - messages.success(request, "L'auteur a été détruit") - return redirect("/media/index_auteurs") - return form({'objet': auteur_instance, 'objet_name': 'auteur'}, - 'media/delete.html', request) - - -@login_required -@permission_required('media.add_media') -def add_media(request): - media = MediaForm(request.POST or None) - if media.is_valid(): - with transaction.atomic(), reversion.create_revision(): - media.save() - reversion.set_user(request.user) - reversion.set_comment("Création") - messages.success(request, "Le media a été ajouté") - return redirect("/media/index_medias/") - return form({'mediaform': media}, 'media/media.html', request) - - -@login_required -@permission_required('media.change_media') -def edit_media(request, mediaid): - try: - media_instance = Media.objects.get(pk=mediaid) - except Media.DoesNotExist: - messages.error(request, u"Entrée inexistante") - return redirect("/media/index_medias/") - media = MediaForm(request.POST or None, instance=media_instance) - if media.is_valid(): - with transaction.atomic(), reversion.create_revision(): - media.save() - reversion.set_user(request.user) - reversion.set_comment("Champs modifié(s) : %s" % ', '.join( - field for field in media.changed_data)) - messages.success(request, "Media modifié") - return redirect("/media/index_medias/") - return form({'mediaform': media}, 'media/media.html', request) - - -@login_required -@permission_required('media.delete_media') -def del_media(request, mediaid): - try: - media_instance = Media.objects.get(pk=mediaid) - except Media.DoesNotExist: - messages.error(request, u"Entrée inexistante") - return redirect("/media/index_medias/") - if request.method == "POST": - with transaction.atomic(), reversion.create_revision(): - media_instance.delete() - reversion.set_user(request.user) - messages.success(request, "Le media a été détruit") - return redirect("/media/index_medias") - return form({'objet': media_instance, 'objet_name': 'media'}, - 'media/delete.html', request) - - -@login_required -@permission_required('media.add_jeu') -def add_jeu(request): - jeu = JeuForm(request.POST or None) - if jeu.is_valid(): - with transaction.atomic(), reversion.create_revision(): - jeu.save() - reversion.set_user(request.user) - reversion.set_comment("Création") - messages.success(request, "Le jeu a été ajouté") - return redirect("/media/index_jeux/") - return form({'mediaform': jeu}, 'media/media.html', request) - - -@login_required -@permission_required('media.change_jeu') -def edit_jeu(request, jeuid): - try: - jeu_instance = Jeu.objects.get(pk=jeuid) - except Jeu.DoesNotExist: - messages.error(request, u"Entrée inexistante") - return redirect("/media/index_jeux/") - jeu = JeuForm(request.POST or None, instance=jeu_instance) - if jeu.is_valid(): - with transaction.atomic(), reversion.create_revision(): - jeu.save() - reversion.set_user(request.user) - reversion.set_comment("Champs modifié(s) : %s" % ', '.join( - field for field in jeu.changed_data)) - messages.success(request, "Media modifié") - return redirect("/media/index_jeux/") - return form({'mediaform': jeu}, 'media/media.html', request) - - -@login_required -@permission_required('media.delete_jeu') -def del_jeu(request, jeuid): - try: - jeu_instance = Jeu.objects.get(pk=jeuid) - except Jeu.DoesNotExist: - messages.error(request, u"Entrée inexistante") - return redirect("/media/index_jeux/") - if request.method == "POST": - with transaction.atomic(), reversion.create_revision(): - jeu_instance.delete() - reversion.set_user(request.user) - messages.success(request, "Le jeu a été détruit") - return redirect("/media/index_jeux") - return form({'objet': jeu_instance, 'objet_name': 'jeu'}, - 'media/delete.html', request) - - @login_required @permission_required('media.add_emprunt') def add_emprunt(request, userid): @@ -245,24 +89,6 @@ def retour_emprunt(request, empruntid): return redirect("/media/index_emprunts/") -@login_required -@permission_required('media.delete_emprunt') -def del_emprunt(request, empruntid): - try: - emprunt_instance = Emprunt.objects.get(pk=empruntid) - except Emprunt.DoesNotExist: - messages.error(request, u"Entrée inexistante") - return redirect("/media/index_emprunts/") - if request.method == "POST": - with transaction.atomic(), reversion.create_revision(): - emprunt_instance.delete() - reversion.set_user(request.user) - messages.success(request, "L'emprunt a été détruit") - return redirect("/media/index_emprunts") - return form({'objet': emprunt_instance, 'objet_name': 'emprunt'}, - 'media/delete.html', request) - - @login_required def index_jeux(request): jeux_list = Jeu.objects.all() diff --git a/theme/locale/fr/LC_MESSAGES/django.po b/theme/locale/fr/LC_MESSAGES/django.po index 2f733c4..141cdbf 100644 --- a/theme/locale/fr/LC_MESSAGES/django.po +++ b/theme/locale/fr/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-03 13:24+0200\n" +"POT-Creation-Date: 2019-08-08 20:49+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,22 +18,22 @@ msgid "Welcome," msgstr "" #: templates/admin/base_site.html:29 -msgid "My profile" -msgstr "Mon profil" +msgid "Library" +msgstr "Explorer la médiatèque" -#: templates/admin/base_site.html:41 templates/admin/base_site.html:60 +#: templates/admin/base_site.html:42 templates/admin/base_site.html:61 msgid "View admin" msgstr "Administration" -#: templates/admin/base_site.html:53 +#: templates/admin/base_site.html:54 msgid "Documentation" msgstr "" -#: templates/admin/base_site.html:62 +#: templates/admin/base_site.html:63 msgid "Log out" msgstr "" -#: templates/admin/base_site.html:64 templates/registration/login.html:8 +#: templates/admin/base_site.html:65 templates/registration/login.html:8 msgid "Log in" msgstr "" diff --git a/theme/templates/admin/base_site.html b/theme/templates/admin/base_site.html index f8ee871..c111140 100644 --- a/theme/templates/admin/base_site.html +++ b/theme/templates/admin/base_site.html @@ -26,7 +26,15 @@ SPDX-License-Identifier: GPL-3.0-or-later {% endblock %} {% block userlinks %} {# Link to our apps outside of admin #} - {% trans 'Library' %} / + + {% trans 'Library' %} + + Emprunts + Auteurs + Medias + Jeux + + / {% if user.is_authenticated %} {% if perms.users.add_user %}