new respos
This commit is contained in:
parent
662764b581
commit
d7fd5e5537
14 changed files with 125 additions and 48 deletions
|
@ -1,6 +1,7 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import Event
|
from .models import Event, Participants
|
||||||
|
|
||||||
# Add event by admin page return a 502 error
|
# Add event by admin page return a 502 error
|
||||||
admin.site.register(Event)
|
admin.site.register(Event)
|
||||||
|
admin.site.register(Participants)
|
||||||
|
|
|
@ -232,20 +232,29 @@ class ViewEvent(LoginRequiredMixin, TemplateView):
|
||||||
else:
|
else:
|
||||||
namesnon += [participant.participant.get_doodlename()]
|
namesnon += [participant.participant.get_doodlename()]
|
||||||
instrument_count[instru] = (sure, maybe, namesoui, namespe, namesnon)
|
instrument_count[instru] = (sure, maybe, namesoui, namespe, namesnon)
|
||||||
|
instrument_count_l = []
|
||||||
instrument_count = [
|
instru_order = ["Clarinette","Piccolo","Flute","Glockenspiel","Saxophone Alto","Trompette","Trombone","Cor","Saxophone Ténor","Saxophone Baryton","Clarinette Basse","Euphonium","Souba","Percussion"]
|
||||||
(instrument, sure, maybe, namesoui, namespe, namesnon)
|
for instrument in instru_order:
|
||||||
for instrument, (
|
if instrument in instrument_count.keys():
|
||||||
sure,
|
(sure,maybe,namesoui,namespe,namesnon) =instrument_count[instrument]
|
||||||
maybe,
|
instrument_count_l.append(( instrument, sure,
|
||||||
namesoui,
|
maybe,
|
||||||
namespe,
|
namesoui,
|
||||||
namesnon,
|
namespe,
|
||||||
) in instrument_count.items()
|
namesnon,
|
||||||
]
|
))
|
||||||
|
for instrument in sorted(instrument_count.keys()):
|
||||||
|
if instrument not in instru_order:
|
||||||
|
(sure,maybe,namesoui,namespe,namesnon) =instrument_count[instrument]
|
||||||
|
instrument_count_l.append(( instrument, sure,
|
||||||
|
maybe,
|
||||||
|
namesoui,
|
||||||
|
namespe,
|
||||||
|
namesnon,
|
||||||
|
))
|
||||||
|
|
||||||
context["event"] = event
|
context["event"] = event
|
||||||
context["instrument_count"] = instrument_count
|
context["instrument_count"] = instrument_count_l
|
||||||
context["participants"] = participants
|
context["participants"] = participants
|
||||||
context["nboui"] = len(participants.filter(reponse="oui"))
|
context["nboui"] = len(participants.filter(reponse="oui"))
|
||||||
context["nbpe"] = len(participants.filter(reponse="pe"))
|
context["nbpe"] = len(participants.filter(reponse="pe"))
|
||||||
|
|
28
gestion/migrations/0008_auto_20211022_1923.py
Normal file
28
gestion/migrations/0008_auto_20211022_1923.py
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# Generated by Django 2.2.24 on 2021-10-22 17:23
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('gestion', '0007_ernestouser_is_chef_event'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ernestouser',
|
||||||
|
name='is_chef_com',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Respo com'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ernestouser',
|
||||||
|
name='is_chef_instru',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Respo instruments'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ernestouser',
|
||||||
|
name='is_chef_event',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Respo événements'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -12,3 +12,26 @@ class ChefEventRequiredMixin(UserPassesTestMixin):
|
||||||
is_chef = (user is not None) and hasattr(user, "profile") and user.profile.is_chef
|
is_chef = (user is not None) and hasattr(user, "profile") and user.profile.is_chef
|
||||||
is_chef_event = (user is not None) and hasattr(user, "profile") and user.profile.is_chef_event
|
is_chef_event = (user is not None) and hasattr(user, "profile") and user.profile.is_chef_event
|
||||||
return is_chef or is_chef_event
|
return is_chef or is_chef_event
|
||||||
|
|
||||||
|
class ChefInstruRequiredMixin(UserPassesTestMixin):
|
||||||
|
def test_func(self):
|
||||||
|
user = self.request.user
|
||||||
|
is_chef = (user is not None) and hasattr(user, "profile") and user.profile.is_chef
|
||||||
|
is_chef_instru = (user is not None) and hasattr(user, "profile") and user.profile.is_chef_instru
|
||||||
|
return is_chef or is_chef_instru
|
||||||
|
|
||||||
|
|
||||||
|
class ChefComRequiredMixin(UserPassesTestMixin):
|
||||||
|
def test_func(self):
|
||||||
|
user = self.request.user
|
||||||
|
is_chef = (user is not None) and hasattr(user, "profile") and user.profile.is_chef
|
||||||
|
is_chef_com = (user is not None) and hasattr(user, "profile") and user.profile.is_chef_com
|
||||||
|
return is_chef or is_chef_com
|
||||||
|
class AllChefRequiredMixin(UserPassesTestMixin):
|
||||||
|
def test_func(self):
|
||||||
|
user = self.request.user
|
||||||
|
is_chef = (user is not None) and hasattr(user, "profile") and user.profile.is_chef
|
||||||
|
is_su = (user is not None) and user.is_superuser
|
||||||
|
is_chef_com = (user is not None) and hasattr(user, "profile") and user.profile.is_chef_com
|
||||||
|
is_chef_event = (user is not None) and hasattr(user, "profile") and user.profile.is_chef_event
|
||||||
|
return is_chef or is_chef_com or is_chef_event or is_su
|
||||||
|
|
|
@ -82,6 +82,8 @@ class ErnestoUser(models.Model):
|
||||||
is_ernesto = models.BooleanField(_("Membre de l'Ernestophone"), default=True)
|
is_ernesto = models.BooleanField(_("Membre de l'Ernestophone"), default=True)
|
||||||
is_chef = models.BooleanField(_("Chef Fanfare"), default=False)
|
is_chef = models.BooleanField(_("Chef Fanfare"), default=False)
|
||||||
is_chef_event = models.BooleanField(_("Respo événements"), default=False)
|
is_chef_event = models.BooleanField(_("Respo événements"), default=False)
|
||||||
|
is_chef_com = models.BooleanField(_("Respo com"), default=False)
|
||||||
|
is_chef_instru = models.BooleanField(_("Respo instruments"), default=False)
|
||||||
phone = models.CharField(
|
phone = models.CharField(
|
||||||
_("Téléphone"),
|
_("Téléphone"),
|
||||||
max_length=20,
|
max_length=20,
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{% if user.is_superuser or user.profile.is_chef or user.profile.is_chef_event %}
|
{% if user.is_superuser or user.profile.is_chef or user.profile.is_chef_event or user.profile.is_chef_com %}
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle" href="{% url 'chef' %}" id="navbardrop" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link dropdown-toggle" href="{% url 'chef' %}" id="navbardrop" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<b>{% trans 'Le pouvoir des cheff·e·s'%}</b>
|
<b>{% trans 'Le pouvoir des cheff·e·s'%}</b>
|
||||||
|
@ -81,9 +81,13 @@
|
||||||
<a class="dropdown-item" href="{% url 'actu:liste' %}">{% trans "Modifier les actualités" %}</a>
|
<a class="dropdown-item" href="{% url 'actu:liste' %}">{% trans "Modifier les actualités" %}</a>
|
||||||
<a class="dropdown-item" href="{% url 'liste_photo' %}">{% trans "Modifier les photos" %}</a>
|
<a class="dropdown-item" href="{% url 'liste_photo' %}">{% trans "Modifier les photos" %}</a>
|
||||||
<a class="dropdown-item" href="{% url 'liste_video' %}">{% trans "Modifier les vidéos" %}</a>
|
<a class="dropdown-item" href="{% url 'liste_video' %}">{% trans "Modifier les vidéos" %}</a>
|
||||||
{% endif %}
|
|
||||||
{% if user.profile.is_chef_event %}
|
{% elif user.profile.is_chef_event %}
|
||||||
<a class="dropdown-item" href="{% url 'calendrier:create_event' %}">{% trans "Ajouter un événement" %}</a>
|
<a class="dropdown-item" href="{% url 'calendrier:create_event' %}">{% trans "Ajouter un événement" %}</a>
|
||||||
|
|
||||||
|
{% elif user.profile.is_chef_com %}
|
||||||
|
<a class="dropdown-item" href="{% url 'liste_photo' %}">{% trans "Modifier les photos" %}</a>
|
||||||
|
<a class="dropdown-item" href="{% url 'liste_video' %}">{% trans "Modifier les vidéos" %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,11 +10,20 @@
|
||||||
<div class="6u 12u$(small)">
|
<div class="6u 12u$(small)">
|
||||||
<h2>{% trans "Le pouvoir des cheff·e·s" %} :</h2>
|
<h2>{% trans "Le pouvoir des cheff·e·s" %} :</h2>
|
||||||
<ul>
|
<ul>
|
||||||
|
{% if user.profile.is_chef or user.is_superuser %}
|
||||||
<li> <a href="/admin/">{% trans "Administration" %}</a></li>
|
<li> <a href="/admin/">{% trans "Administration" %}</a></li>
|
||||||
<li> <a href="{% url 'calendrier:create_event' %}">{% trans "Ajouter un événement" %}</a></li>
|
|
||||||
|
{% endif %}
|
||||||
|
{% if user.profile.is_chef %}
|
||||||
<li><a href="{% url 'actu:liste' %}">{% trans "Modifier les actualités" %}</a></li>
|
<li><a href="{% url 'actu:liste' %}">{% trans "Modifier les actualités" %}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if user.profile.is_chef or user.profile.is_chef_event%}
|
||||||
|
<li> <a href="{% url 'calendrier:create_event' %}">{% trans "Ajouter un événement" %}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if user.profile.is_chef or user.profile.is_chef_com%}
|
||||||
<li><a href="{% url 'liste_photo' %}">{% trans "Modifier les photos" %}</a></li>
|
<li><a href="{% url 'liste_photo' %}">{% trans "Modifier les photos" %}</a></li>
|
||||||
<li><a href="{% url 'liste_video' %}">{% trans "Modifier les vidéos" %}</a></li>
|
<li><a href="{% url 'liste_video' %}">{% trans "Modifier les vidéos" %}</a></li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -16,12 +16,13 @@ import os
|
||||||
from calendrier.forms import ChangeDoodleName
|
from calendrier.forms import ChangeDoodleName
|
||||||
from gestion.forms import (ChangeFormUser, ChangeMembreForm,
|
from gestion.forms import (ChangeFormUser, ChangeMembreForm,
|
||||||
InscriptionMembreForm, RegistrationFormUser)
|
InscriptionMembreForm, RegistrationFormUser)
|
||||||
from gestion.mixins import ChefRequiredMixin
|
from gestion.mixins import ChefRequiredMixin, AllChefRequiredMixin, ChefComRequiredMixin
|
||||||
from gestion.models import ErnestoUser, Photo, VideoGallery
|
from gestion.models import ErnestoUser, Photo, VideoGallery
|
||||||
from partitions.models import Category
|
from partitions.models import Category
|
||||||
|
|
||||||
|
|
||||||
def generer(*args):
|
def generer(*args):
|
||||||
|
|
||||||
caracteres = string.ascii_letters + string.digits
|
caracteres = string.ascii_letters + string.digits
|
||||||
aleatoire = [random.choice(caracteres) for i in range(6)]
|
aleatoire = [random.choice(caracteres) for i in range(6)]
|
||||||
return "".join(aleatoire)
|
return "".join(aleatoire)
|
||||||
|
@ -75,7 +76,7 @@ class Profil(LoginRequiredMixin, TemplateView):
|
||||||
template_name = "gestion/profile.html"
|
template_name = "gestion/profile.html"
|
||||||
|
|
||||||
|
|
||||||
class Chef(ChefRequiredMixin, TemplateView):
|
class Chef(AllChefRequiredMixin, TemplateView):
|
||||||
template_name = "gestion/chef.html"
|
template_name = "gestion/chef.html"
|
||||||
|
|
||||||
|
|
||||||
|
@ -204,14 +205,14 @@ class Inscription(TemplateView):
|
||||||
return render(request, self.template_name, context)
|
return render(request, self.template_name, context)
|
||||||
|
|
||||||
|
|
||||||
class PhotoList(ChefRequiredMixin, ListView):
|
class PhotoList(ChefComRequiredMixin, ListView):
|
||||||
model = Photo
|
model = Photo
|
||||||
context_object_name = "photos"
|
context_object_name = "photos"
|
||||||
ordering = "cat"
|
ordering = "cat"
|
||||||
template_name = "gestion/photo.html"
|
template_name = "gestion/photo.html"
|
||||||
|
|
||||||
|
|
||||||
class PhotoCreate(ChefRequiredMixin, CreateView):
|
class PhotoCreate(ChefComRequiredMixin, CreateView):
|
||||||
model = Photo
|
model = Photo
|
||||||
fields = ["name", "cat", "auteur", "url", "color", "image"]
|
fields = ["name", "cat", "auteur", "url", "color", "image"]
|
||||||
template_name = "gestion/create_photo.html"
|
template_name = "gestion/create_photo.html"
|
||||||
|
@ -223,27 +224,27 @@ class PhotoCreate(ChefRequiredMixin, CreateView):
|
||||||
return HttpResponseRedirect(self.success_url)
|
return HttpResponseRedirect(self.success_url)
|
||||||
|
|
||||||
|
|
||||||
class PhotoUpdate(ChefRequiredMixin, UpdateView):
|
class PhotoUpdate(ChefComRequiredMixin, UpdateView):
|
||||||
model = Photo
|
model = Photo
|
||||||
fields = ["name", "cat", "auteur", "url", "color", "image"]
|
fields = ["name", "cat", "auteur", "url", "color", "image"]
|
||||||
template_name = "gestion/update_photo.html"
|
template_name = "gestion/update_photo.html"
|
||||||
success_url = reverse_lazy("liste_photo")
|
success_url = reverse_lazy("liste_photo")
|
||||||
|
|
||||||
|
|
||||||
class PhotoDelete(ChefRequiredMixin, DeleteView):
|
class PhotoDelete(ChefComRequiredMixin, DeleteView):
|
||||||
model = Photo
|
model = Photo
|
||||||
template_name = "gestion/delete_photo.html"
|
template_name = "gestion/delete_photo.html"
|
||||||
success_url = reverse_lazy("liste_photo")
|
success_url = reverse_lazy("liste_photo")
|
||||||
|
|
||||||
|
|
||||||
class VideoList(ChefRequiredMixin, ListView):
|
class VideoList(ChefComRequiredMixin, ListView):
|
||||||
model = VideoGallery
|
model = VideoGallery
|
||||||
ordering = "order"
|
ordering = "order"
|
||||||
context_object_name = "videos"
|
context_object_name = "videos"
|
||||||
template_name = "gestion/video.html"
|
template_name = "gestion/video.html"
|
||||||
|
|
||||||
|
|
||||||
class VideoCreate(ChefRequiredMixin, CreateView):
|
class VideoCreate(ChefComRequiredMixin, CreateView):
|
||||||
model = VideoGallery
|
model = VideoGallery
|
||||||
fields = ["name", "url", "order"]
|
fields = ["name", "url", "order"]
|
||||||
template_name = "gestion/create_video.html"
|
template_name = "gestion/create_video.html"
|
||||||
|
@ -255,14 +256,14 @@ class VideoCreate(ChefRequiredMixin, CreateView):
|
||||||
return HttpResponseRedirect(self.success_url)
|
return HttpResponseRedirect(self.success_url)
|
||||||
|
|
||||||
|
|
||||||
class VideoUpdate(ChefRequiredMixin, UpdateView):
|
class VideoUpdate(ChefComRequiredMixin, UpdateView):
|
||||||
model = VideoGallery
|
model = VideoGallery
|
||||||
fields = ["name", "url", "order"]
|
fields = ["name", "url", "order"]
|
||||||
template_name = "gestion/update_video.html"
|
template_name = "gestion/update_video.html"
|
||||||
success_url = reverse_lazy("liste_video")
|
success_url = reverse_lazy("liste_video")
|
||||||
|
|
||||||
|
|
||||||
class VideoDelete(ChefRequiredMixin, DeleteView):
|
class VideoDelete(ChefComRequiredMixin, DeleteView):
|
||||||
model = VideoGallery
|
model = VideoGallery
|
||||||
template_name = "gestion/delete_video.html"
|
template_name = "gestion/delete_video.html"
|
||||||
success_url = reverse_lazy("liste_video")
|
success_url = reverse_lazy("liste_video")
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<div class="icon fa-copyright" style="color:#000000"> Lucas Gierzack</div></div>
|
<div class="icon fa-copyright" style="color:#000000"> Lucas Gierzack</div></div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</span>
|
</span>
|
||||||
{% if user.profile.is_chef %}
|
{% if user.profile.is_chef or user.profile.is_chef_instru %}
|
||||||
<a href="{% url "instruments:ajouter_instru" %}" class="button alt big">{% trans "Ajouter un instrument" %}</a>
|
<a href="{% url "instruments:ajouter_instru" %}" class="button alt big">{% trans "Ajouter un instrument" %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p></p>
|
<p></p>
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
<td> {{ instrument.etat }} </td>
|
<td> {{ instrument.etat }} </td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url "instruments:fiche_instru" instrument.id %}" class="button small">{% trans "Consulter" %}<a/>
|
<a href="{% url "instruments:fiche_instru" instrument.id %}" class="button small">{% trans "Consulter" %}<a/>
|
||||||
{% if user.profile.is_chef %}
|
{% if user.profile.is_chef or user.profile.is_chef_instru %}
|
||||||
|
|
||||||
<a href="{% url "instruments:delete_instru" instrument.id %}" class="button small">{% trans "Supprimer" %}
|
<a href="{% url "instruments:delete_instru" instrument.id %}" class="button small">{% trans "Supprimer" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
<td> {{ instrument.etat}} </td>
|
<td> {{ instrument.etat}} </td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url "instruments:fiche_instru" instrument.id %}" class="button small">{% trans "Consulter" %}<a/>
|
<a href="{% url "instruments:fiche_instru" instrument.id %}" class="button small">{% trans "Consulter" %}<a/>
|
||||||
{% if user.profile.is_chef %}
|
{% if user.profile.is_chef or user.profile.is_chef_instru %}
|
||||||
|
|
||||||
<a href="{% url "instruments:delete_instru" instrument.id %}" class="button small">{% trans "Supprimer" %}
|
<a href="{% url "instruments:delete_instru" instrument.id %}" class="button small">{% trans "Supprimer" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
{% trans "Modele : "%} {% if instru.model %}{{instru.model}} {% else %}-{% endif %}<br>
|
{% trans "Modele : "%} {% if instru.model %}{{instru.model}} {% else %}-{% endif %}<br>
|
||||||
{% trans "Numéro de série : "%} {% if instru.serial %}{{instru.serial}}{% else %}-{% endif %} <br>
|
{% trans "Numéro de série : "%} {% if instru.serial %}{{instru.serial}}{% else %}-{% endif %} <br>
|
||||||
{% trans "Prix : "%} {% if instru.prix %}{{instru.prix}} {% else %}-{% endif %}<br>
|
{% trans "Prix : "%} {% if instru.prix %}{{instru.prix}} {% else %}-{% endif %}<br>
|
||||||
{% trans "Acheté·e en" %}{% if instru.annee %}{{annee}}{% else %}-{% endif %}
|
{% trans "Acheté·e en" %}{% if instru.annee %}{{annee}}{% else %}-{% endif %}
|
||||||
</p>
|
</p>
|
||||||
{% if infos or infos_en %}
|
{% if infos or infos_en %}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
{% if suppression %}
|
{% if suppression %}
|
||||||
<p>{{ suppression }}</p>
|
<p>{{ suppression }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if not user.profile.is_chef %}
|
{% if not user.profile.is_chef or not user.profile.is_chef_instru %}
|
||||||
</div>
|
</div>
|
||||||
<div class="5u 12u$(small)">
|
<div class="5u 12u$(small)">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
{% endifequal %} </td>
|
{% endifequal %} </td>
|
||||||
<td> {{ rep.prix }} </td>
|
<td> {{ rep.prix }} </td>
|
||||||
<td> {{ rep.lieux }} </td>
|
<td> {{ rep.lieux }} </td>
|
||||||
{% if user.profile.is_chef %}
|
{%if user.profile.is_chef or user.profile.is_chef_instru %}
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url "instruments:update_rep" rep.id %}" class="button small">{% trans "Modifier" %}</a>
|
<a href="{% url "instruments:update_rep" rep.id %}" class="button small">{% trans "Modifier" %}</a>
|
||||||
<a href="{% url "instruments:delete_rep" rep.id %}" class="button small">{% trans "Supprimer" %}</a>
|
<a href="{% url "instruments:delete_rep" rep.id %}" class="button small">{% trans "Supprimer" %}</a>
|
||||||
|
@ -80,13 +80,13 @@
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
<a class='button ' href="{% url "instruments:liste" %}">Retour aux instruments</a>
|
<a class='button ' href="{% url "instruments:liste" %}">Retour aux instruments</a>
|
||||||
{% if user.profile.is_chef %}
|
{% if user.profile.is_chef or user.profile.is_chef_instru %}
|
||||||
<a class='button ' href="{% url "instruments:ajouter_rep" instru.id %}">Ajouter une réparation</a>
|
<a class='button ' href="{% url "instruments:ajouter_rep" instru.id %}">Ajouter une réparation</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if user.profile.is_chef %}
|
{% if user.profile.is_chef or user.profile.is_chef_instru %}
|
||||||
|
|
||||||
<div class="5u 12u$(small)">
|
<div class="5u 12u$(small)">
|
||||||
<div class="info_part">
|
<div class="info_part">
|
||||||
|
|
|
@ -5,7 +5,7 @@ from django.utils.safestring import mark_safe
|
||||||
from django.views.generic import (CreateView, DeleteView, TemplateView,
|
from django.views.generic import (CreateView, DeleteView, TemplateView,
|
||||||
UpdateView)
|
UpdateView)
|
||||||
|
|
||||||
from gestion.mixins import ChefRequiredMixin
|
from gestion.mixins import ChefRequiredMixin, ChefInstruRequiredMixin
|
||||||
from gestion.models import Photo
|
from gestion.models import Photo
|
||||||
from instruments.forms import ChefEditInstrumentForm, ChefReparationForm
|
from instruments.forms import ChefEditInstrumentForm, ChefReparationForm
|
||||||
from instruments.models import Instrument, Reparation
|
from instruments.models import Instrument, Reparation
|
||||||
|
@ -26,14 +26,14 @@ class ListeInstru(LoginRequiredMixin, TemplateView):
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
class CreateInstru(ChefRequiredMixin, CreateView):
|
class CreateInstru(ChefInstruRequiredMixin, CreateView):
|
||||||
model = Instrument
|
model = Instrument
|
||||||
fields = ["owner","user", "etat", "type", "marque", "model", "serial", "annee", "prix"]
|
fields = ["owner","user", "etat", "type", "marque", "model", "serial", "annee", "prix"]
|
||||||
template_name = "instruments/create_instru.html"
|
template_name = "instruments/create_instru.html"
|
||||||
success_url = reverse_lazy("instruments:liste")
|
success_url = reverse_lazy("instruments:liste")
|
||||||
|
|
||||||
|
|
||||||
class CreateRep(ChefRequiredMixin, TemplateView):
|
class CreateRep(ChefInstruRequiredMixin, TemplateView):
|
||||||
form_class = ChefReparationForm
|
form_class = ChefReparationForm
|
||||||
template_name = "instruments/create_rep.html"
|
template_name = "instruments/create_rep.html"
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ class CreateRep(ChefRequiredMixin, TemplateView):
|
||||||
return render(request, self.template_name, context)
|
return render(request, self.template_name, context)
|
||||||
|
|
||||||
|
|
||||||
class DeleteRep(ChefRequiredMixin, TemplateView):
|
class DeleteRep(ChefInstruRequiredMixin, TemplateView):
|
||||||
model = Reparation
|
model = Reparation
|
||||||
template_name = "instruments/delete_instru.html"
|
template_name = "instruments/delete_instru.html"
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ class FicheInstru(LoginRequiredMixin, TemplateView):
|
||||||
return render(request, self.template_name, context)
|
return render(request, self.template_name, context)
|
||||||
|
|
||||||
|
|
||||||
class UpdateRep(ChefRequiredMixin, UpdateView):
|
class UpdateRep(ChefInstruRequiredMixin, UpdateView):
|
||||||
model = Reparation
|
model = Reparation
|
||||||
fields = ["date", "description", "description_en", "prix", "lieux"]
|
fields = ["date", "description", "description_en", "prix", "lieux"]
|
||||||
template_name = "instruments/update_rep.html"
|
template_name = "instruments/update_rep.html"
|
||||||
|
@ -113,7 +113,7 @@ class UpdateRep(ChefRequiredMixin, UpdateView):
|
||||||
return reverse_lazy("instruments:fiche_instru", kwargs={"pk": id_instru})
|
return reverse_lazy("instruments:fiche_instru", kwargs={"pk": id_instru})
|
||||||
|
|
||||||
|
|
||||||
class DeleteInstru(ChefRequiredMixin, DeleteView):
|
class DeleteInstru(ChefInstruRequiredMixin, DeleteView):
|
||||||
model = Instrument
|
model = Instrument
|
||||||
template_name = "instruments/delete_instru.html"
|
template_name = "instruments/delete_instru.html"
|
||||||
success_url = reverse_lazy("instruments:liste")
|
success_url = reverse_lazy("instruments:liste")
|
||||||
|
|
|
@ -15,5 +15,5 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</siv>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h4>{% trans "Liste des pads :" %}</h4>
|
<h4>{% trans "Liste des pads :" %}</h4>
|
||||||
|
|
||||||
{% if user.profile.is_chef %}
|
{% if user.profile.is_chef_event or user.profile.is_chef %}
|
||||||
<p><a href="{% url "pads:add" %}" class="button">{% trans "Ajouter un pad" %}</a></p>
|
<p><a href="{% url "pads:add" %}" class="button">{% trans "Ajouter un pad" %}</a></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
{% for p in pads %}
|
{% for p in pads %}
|
||||||
<li>
|
<li>
|
||||||
<a class="fichier" href="{{ p.url }}" target="_blank">{{ p.nom }}</a>
|
<a class="fichier" href="{{ p.url }}" target="_blank">{{ p.nom }}</a>
|
||||||
{% if user.profile.is_chef %}
|
{% if user.profile.is_chef_event or user.profile.is_chef %}
|
||||||
  <a class="button alt" href="{% url "pads:edit" p.id %}">{% trans "Modifier" %}</a>
|
  <a class="button alt" href="{% url "pads:edit" p.id %}">{% trans "Modifier" %}</a>
|
||||||
  <a class="button alt" href="{% url "pads:delete" p.id %}">{% trans "Supprimer" %}</a>
|
  <a class="button alt" href="{% url "pads:delete" p.id %}">{% trans "Supprimer" %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -4,7 +4,7 @@ from django.urls import reverse_lazy
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.views.generic import CreateView, DeleteView, ListView, UpdateView
|
from django.views.generic import CreateView, DeleteView, ListView, UpdateView
|
||||||
|
|
||||||
from gestion.mixins import ChefRequiredMixin
|
from gestion.mixins import ChefRequiredMixin, ChefEventRequiredMixin
|
||||||
from pads.models import Pad
|
from pads.models import Pad
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ class PadList(LoginRequiredMixin, ListView):
|
||||||
template_name = "pads/list.html"
|
template_name = "pads/list.html"
|
||||||
|
|
||||||
|
|
||||||
class PadCreate(ChefRequiredMixin, CreateView):
|
class PadCreate(ChefEventRequiredMixin, CreateView):
|
||||||
model = Pad
|
model = Pad
|
||||||
fields = ["nom", "url"]
|
fields = ["nom", "url"]
|
||||||
template_name = "pads/create.html"
|
template_name = "pads/create.html"
|
||||||
|
@ -28,14 +28,14 @@ class PadCreate(ChefRequiredMixin, CreateView):
|
||||||
return HttpResponseRedirect(self.success_url)
|
return HttpResponseRedirect(self.success_url)
|
||||||
|
|
||||||
|
|
||||||
class PadUpdate(ChefRequiredMixin, UpdateView):
|
class PadUpdate(ChefEventRequiredMixin, UpdateView):
|
||||||
model = Pad
|
model = Pad
|
||||||
fields = ["nom", "url"]
|
fields = ["nom", "url"]
|
||||||
template_name = "pads/update.html"
|
template_name = "pads/update.html"
|
||||||
success_url = reverse_lazy("pads:list")
|
success_url = reverse_lazy("pads:list")
|
||||||
|
|
||||||
|
|
||||||
class PadDelete(ChefRequiredMixin, DeleteView):
|
class PadDelete(ChefEventRequiredMixin, DeleteView):
|
||||||
model = Pad
|
model = Pad
|
||||||
template_name = "pads/delete.html"
|
template_name = "pads/delete.html"
|
||||||
success_url = reverse_lazy("pads:list")
|
success_url = reverse_lazy("pads:list")
|
||||||
|
|
Loading…
Reference in a new issue