Move emprunt button
This commit is contained in:
parent
82ebc60982
commit
8613dd2810
|
@ -22,7 +22,9 @@ class DatabaseAdmin(AdminSite):
|
||||||
response = super().index(request, extra_context)
|
response = super().index(request, extra_context)
|
||||||
|
|
||||||
# User is always authenticated
|
# User is always authenticated
|
||||||
user_borrowed = Emprunt.objects.filter(user=request.user)
|
# Get currently borrowed items
|
||||||
|
user_borrowed = Emprunt.objects.filter(user=request.user,
|
||||||
|
date_rendu=None)
|
||||||
response.context_data["borrowed_items"] = user_borrowed
|
response.context_data["borrowed_items"] = user_borrowed
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
# Copyright (C) 2017-2019 by BDE ENS Paris-Saclay
|
# Copyright (C) 2017-2019 by BDE ENS Paris-Saclay
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
from django.urls import reverse
|
||||||
|
from django.utils.html import format_html
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from reversion.admin import VersionAdmin
|
from reversion.admin import VersionAdmin
|
||||||
|
|
||||||
from med.admin import admin_site
|
from med.admin import admin_site
|
||||||
|
@ -24,13 +27,29 @@ class MediaAdmin(VersionAdmin):
|
||||||
|
|
||||||
class EmpruntAdmin(VersionAdmin):
|
class EmpruntAdmin(VersionAdmin):
|
||||||
list_display = ('media', 'user', 'date_emprunt', 'date_rendu',
|
list_display = ('media', 'user', 'date_emprunt', 'date_rendu',
|
||||||
'permanencier_emprunt', 'permanencier_rendu')
|
'permanencier_emprunt', 'permanencier_rendu_custom')
|
||||||
search_fields = ('media__titre', 'media__cote', 'user__username',
|
search_fields = ('media__titre', 'media__cote', 'user__username',
|
||||||
'date_emprunt', 'date_rendu')
|
'date_emprunt', 'date_rendu')
|
||||||
date_hierarchy = 'date_emprunt'
|
date_hierarchy = 'date_emprunt'
|
||||||
autocomplete_fields = ('media', 'user', 'permanencier_emprunt',
|
autocomplete_fields = ('media', 'user', 'permanencier_emprunt',
|
||||||
'permanencier_rendu')
|
'permanencier_rendu')
|
||||||
|
|
||||||
|
def permanencier_rendu_custom(self, obj):
|
||||||
|
"""
|
||||||
|
Show a button if item has not been returned yet
|
||||||
|
"""
|
||||||
|
if obj.permanencier_rendu:
|
||||||
|
return obj.permanencier_rendu
|
||||||
|
else:
|
||||||
|
return format_html(
|
||||||
|
'<a class="button" href="{}">{}</a>',
|
||||||
|
reverse('media:retour-emprunt', args=[obj.pk]),
|
||||||
|
_('Turn back')
|
||||||
|
)
|
||||||
|
|
||||||
|
permanencier_rendu_custom.short_description = _('permanencier rendu')
|
||||||
|
permanencier_rendu_custom.allow_tags = True
|
||||||
|
|
||||||
|
|
||||||
class JeuAdmin(VersionAdmin):
|
class JeuAdmin(VersionAdmin):
|
||||||
list_display = ('nom', 'proprietaire', 'duree', 'nombre_joueurs_min',
|
list_display = ('nom', 'proprietaire', 'duree', 'nombre_joueurs_min',
|
||||||
|
|
|
@ -8,8 +8,6 @@ from . import views
|
||||||
|
|
||||||
app_name = 'media'
|
app_name = 'media'
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^add_emprunt/(?P<userid>[0-9]+)$', views.add_emprunt,
|
|
||||||
name='add-emprunt'),
|
|
||||||
url(r'^retour_emprunt/(?P<empruntid>[0-9]+)$', views.retour_emprunt,
|
url(r'^retour_emprunt/(?P<empruntid>[0-9]+)$', views.retour_emprunt,
|
||||||
name='retour-emprunt'),
|
name='retour-emprunt'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -11,8 +11,6 @@ from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from reversion import revisions as reversion
|
from reversion import revisions as reversion
|
||||||
|
|
||||||
from users.models import User
|
|
||||||
from .forms import EmpruntForm
|
|
||||||
from .models import Emprunt
|
from .models import Emprunt
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,36 +20,6 @@ def form(ctx, template, request):
|
||||||
return render(request, template, c)
|
return render(request, template, c)
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
|
||||||
@permission_required('media.add_emprunt')
|
|
||||||
def add_emprunt(request, userid):
|
|
||||||
try:
|
|
||||||
user = User.objects.get(pk=userid)
|
|
||||||
except User.DoesNotExist:
|
|
||||||
messages.error(request, u"Entrée inexistante")
|
|
||||||
return redirect("admin:media_emprunt_changelist")
|
|
||||||
emprunts_en_cours = Emprunt.objects.filter(date_rendu=None,
|
|
||||||
user=user).count()
|
|
||||||
if emprunts_en_cours >= user.maxemprunt:
|
|
||||||
messages.error(request,
|
|
||||||
"Maximum d'emprunts atteint de "
|
|
||||||
"l'user %s" % user.maxemprunt)
|
|
||||||
return redirect("admin:media_emprunt_changelist")
|
|
||||||
emprunt = EmpruntForm(request.POST or None)
|
|
||||||
if emprunt.is_valid():
|
|
||||||
emprunt = emprunt.save(commit=False)
|
|
||||||
emprunt.user = user
|
|
||||||
emprunt.permanencier_emprunt = request.user
|
|
||||||
emprunt.date_emprunt = timezone.now()
|
|
||||||
with transaction.atomic(), reversion.create_revision():
|
|
||||||
emprunt.save()
|
|
||||||
reversion.set_user(request.user)
|
|
||||||
reversion.set_comment("Création")
|
|
||||||
messages.success(request, "Le emprunt a été ajouté")
|
|
||||||
return redirect("admin:media_emprunt_changelist")
|
|
||||||
return form({'form': emprunt}, 'media/media.html', request)
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('media.change_emprunt')
|
@permission_required('media.change_emprunt')
|
||||||
def retour_emprunt(request, empruntid):
|
def retour_emprunt(request, empruntid):
|
||||||
|
|
|
@ -7,7 +7,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div id="content-main">
|
<div id="content-main">
|
||||||
<h2>Welcome to procrastination haven !</h2>
|
<h2>Welcome to procrastination heaven !</h2>
|
||||||
<p>
|
<p>
|
||||||
Le site va subir progressivement des mises à jour pendant ces vacances.
|
Le site va subir progressivement des mises à jour pendant ces vacances.
|
||||||
Si vous rencontrez des instabilités,
|
Si vous rencontrez des instabilités,
|
||||||
|
|
|
@ -59,7 +59,7 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
|
||||||
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
|
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
|
||||||
)
|
)
|
||||||
list_display = ('username', 'email', 'first_name', 'last_name',
|
list_display = ('username', 'email', 'first_name', 'last_name',
|
||||||
'maxemprunt', 'is_adherent', 'is_staff', 'actions_btn')
|
'maxemprunt', 'is_adherent', 'is_staff')
|
||||||
list_filter = (IsAdherentFilter, 'is_staff', 'is_superuser', 'is_active',
|
list_filter = (IsAdherentFilter, 'is_staff', 'is_superuser', 'is_active',
|
||||||
'groups')
|
'groups')
|
||||||
|
|
||||||
|
@ -114,17 +114,6 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
|
||||||
is_adherent.short_description = _('is adherent')
|
is_adherent.short_description = _('is adherent')
|
||||||
is_adherent.allow_tags = True
|
is_adherent.allow_tags = True
|
||||||
|
|
||||||
def actions_btn(self, obj):
|
|
||||||
# TODO permit adhere only if perms.media.add_emprunt
|
|
||||||
return format_html(
|
|
||||||
'<a class="button" href="{}">{}</a>',
|
|
||||||
reverse('media:add-emprunt', args=[obj.pk]),
|
|
||||||
_('Register borrowed item')
|
|
||||||
)
|
|
||||||
|
|
||||||
actions_btn.short_description = _('actions')
|
|
||||||
actions_btn.allow_tags = True
|
|
||||||
|
|
||||||
|
|
||||||
admin_site.register(User, UserAdmin)
|
admin_site.register(User, UserAdmin)
|
||||||
admin_site.register(Adhesion, AdhesionAdmin)
|
admin_site.register(Adhesion, AdhesionAdmin)
|
||||||
|
|
Loading…
Reference in New Issue