mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-25 22:22:26 +00:00
Nouvelle gestion acl dans cotisation
This commit is contained in:
parent
f412a07e09
commit
15852329d4
10 changed files with 114 additions and 107 deletions
|
@ -110,11 +110,6 @@ class Facture(models.Model):
|
||||||
return user_request.has_perms(('cableur',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('cableur',)), u"Vous n'avez pas le\
|
||||||
droit de créer des factures"
|
droit de créer des factures"
|
||||||
|
|
||||||
def can_edit_all(user_request, *args, **kwargs):
|
|
||||||
if not user_request.has_perms(('cableur',)):
|
|
||||||
return False, u"Vous n'avez pas le droit d'éditer les factures"
|
|
||||||
return None
|
|
||||||
|
|
||||||
def can_edit(self, user_request, *args, **kwargs):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
if not user_request.has_perms(('cableur',)):
|
if not user_request.has_perms(('cableur',)):
|
||||||
return False, u"Vous n'avez pas le droit d'éditer les factures"
|
return False, u"Vous n'avez pas le droit d'éditer les factures"
|
||||||
|
@ -125,11 +120,6 @@ class Facture(models.Model):
|
||||||
else:
|
else:
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_delete_all(user_request, *args, **kwargs):
|
|
||||||
if not user_request.has_perms(('cableur',)):
|
|
||||||
return False, u"Vous n'avez pas le droit de supprimer une facture"
|
|
||||||
return None
|
|
||||||
|
|
||||||
def can_delete(self, user_request, *args, **kwargs):
|
def can_delete(self, user_request, *args, **kwargs):
|
||||||
if not user_request.has_perms(('cableur',)):
|
if not user_request.has_perms(('cableur',)):
|
||||||
return False, u"Vous n'avez pas le droit de supprimer une facture"
|
return False, u"Vous n'avez pas le droit de supprimer une facture"
|
||||||
|
@ -140,6 +130,8 @@ class Facture(models.Model):
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_view_all(user_request, *args, **kwargs):
|
def can_view_all(user_request, *args, **kwargs):
|
||||||
|
if not user_request.has_perms(('cableur',)):
|
||||||
|
return False, u"Vous n'avez pas le droit de voir les factures"
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_view(self, user_request, *args, **kwargs):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
|
@ -147,9 +139,17 @@ class Facture(models.Model):
|
||||||
self.user != user_request:
|
self.user != user_request:
|
||||||
return False, u"Vous ne pouvez pas afficher l'historique d'une\
|
return False, u"Vous ne pouvez pas afficher l'historique d'une\
|
||||||
facture d'un autre user que vous sans droit cableur"
|
facture d'un autre user que vous sans droit cableur"
|
||||||
|
elif not self.valid:
|
||||||
|
return False, u"La facture est invalidée et ne peut être affichée"
|
||||||
else:
|
else:
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
|
def can_change_control(user_request, *args, **kwargs):
|
||||||
|
return user_request.has_perms(('tresorier',)), "Vous ne pouvez pas éditer le controle sans droit trésorier"
|
||||||
|
|
||||||
|
def can_change_pdf(user_request, *args, **kwargs):
|
||||||
|
return user_request.has_perms(('tresorier',)), "Vous ne pouvez pas éditer une facture sans droit trésorier"
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.user) + ' ' + str(self.date)
|
return str(self.user) + ' ' + str(self.date)
|
||||||
|
|
||||||
|
@ -252,25 +252,41 @@ class Vente(models.Model):
|
||||||
return Vente.objects.get(pk=venteid)
|
return Vente.objects.get(pk=venteid)
|
||||||
|
|
||||||
def can_create(user_request, *args, **kwargs):
|
def can_create(user_request, *args, **kwargs):
|
||||||
return True, None
|
return user_request.has_perms(('cableur',)), u"Vous n'avez pas le\
|
||||||
|
droit de créer des ventes"
|
||||||
def can_edit_all(user_request, *args, **kwargs):
|
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_edit(self, user_request, *args, **kwargs):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
return True, None
|
if not user_request.has_perms(('cableur',)):
|
||||||
|
return False, u"Vous n'avez pas le droit d'éditer les ventes"
|
||||||
def can_delete_all(user_request, *args, **kwargs):
|
elif not user_request.has_perms(('tresorier',)) and\
|
||||||
return True, None
|
(self.facture.control or not self.facture.valid):
|
||||||
|
return False, u"Vous n'avez pas le droit d'éditer une vente\
|
||||||
|
controlée ou invalidée par un trésorier"
|
||||||
|
else:
|
||||||
|
return True, None
|
||||||
|
|
||||||
def can_delete(self, user_request, *args, **kwargs):
|
def can_delete(self, user_request, *args, **kwargs):
|
||||||
return True, None
|
if not user_request.has_perms(('cableur',)):
|
||||||
|
return False, u"Vous n'avez pas le droit de supprimer une vente"
|
||||||
|
if self.facture.control or not self.facture.valid:
|
||||||
|
return False, u"Vous ne pouvez pas supprimer une vente\
|
||||||
|
contrôlée ou invalidée par un trésorier"
|
||||||
|
else:
|
||||||
|
return True, None
|
||||||
|
|
||||||
def can_view_all(user_request, *args, **kwargs):
|
def can_view_all(user_request, *args, **kwargs):
|
||||||
|
if not user_request.has_perms(('cableur',)):
|
||||||
|
return False, u"Vous n'avez pas le droit de voir les ventes"
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_view(self, user_request, *args, **kwargs):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
return True, None
|
if not user_request.has_perms(('cableur',)) and\
|
||||||
|
self.facture.user != user_request:
|
||||||
|
return False, u"Vous ne pouvez pas afficher l'historique d'une\
|
||||||
|
facture d'un autre user que vous sans droit cableur"
|
||||||
|
else:
|
||||||
|
return True, None
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.name) + ' ' + str(self.facture)
|
return str(self.name) + ' ' + str(self.facture)
|
||||||
|
@ -355,18 +371,10 @@ class Article(models.Model):
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
||||||
droit d'ajouter des articles"
|
droit d'ajouter des articles"
|
||||||
|
|
||||||
def can_edit_all(user_request, *args, **kwargs):
|
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
|
||||||
droit d'éditer des articles"
|
|
||||||
|
|
||||||
def can_edit(self, user_request, *args, **kwargs):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
||||||
droit d'éditer des articles"
|
droit d'éditer des articles"
|
||||||
|
|
||||||
def can_delete_all(user_request, *args, **kwargs):
|
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
|
||||||
droit de supprimer des articles"
|
|
||||||
|
|
||||||
def can_delete(self, user_request, *args, **kwargs):
|
def can_delete(self, user_request, *args, **kwargs):
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
||||||
droit de supprimer des articles"
|
droit de supprimer des articles"
|
||||||
|
@ -396,18 +404,10 @@ class Banque(models.Model):
|
||||||
return user_request.has_perms(('cableur',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('cableur',)), u"Vous n'avez pas le\
|
||||||
droit d'ajouter des banques"
|
droit d'ajouter des banques"
|
||||||
|
|
||||||
def can_edit_all(user_request, *args, **kwargs):
|
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
|
||||||
droit d'éditer des banques"
|
|
||||||
|
|
||||||
def can_edit(self, user_request, *args, **kwargs):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
||||||
droit d'éditer des banques"
|
droit d'éditer des banques"
|
||||||
|
|
||||||
def can_delete_all(user_request, *args, **kwargs):
|
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
|
||||||
droit de supprimer des banques"
|
|
||||||
|
|
||||||
def can_delete(self, user_request, *args, **kwargs):
|
def can_delete(self, user_request, *args, **kwargs):
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
||||||
droit de supprimer des banques"
|
droit de supprimer des banques"
|
||||||
|
@ -442,18 +442,10 @@ class Paiement(models.Model):
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
||||||
droit d'ajouter des paiements"
|
droit d'ajouter des paiements"
|
||||||
|
|
||||||
def can_edit_all(user_request, *args, **kwargs):
|
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
|
||||||
droit d'éditer des paiements"
|
|
||||||
|
|
||||||
def can_edit(self, user_request, *args, **kwargs):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
||||||
droit d'éditer des paiements"
|
droit d'éditer des paiements"
|
||||||
|
|
||||||
def can_delete_all(user_request, *args, **kwargs):
|
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
|
||||||
droit de supprimer des paiements"
|
|
||||||
|
|
||||||
def can_delete(self, user_request, *args, **kwargs):
|
def can_delete(self, user_request, *args, **kwargs):
|
||||||
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
return user_request.has_perms(('tresorier',)), u"Vous n'avez pas le\
|
||||||
droit de supprimer des paiements"
|
droit de supprimer des paiements"
|
||||||
|
@ -502,25 +494,41 @@ class Cotisation(models.Model):
|
||||||
return Cotisations.objects.get(pk=cotisationid)
|
return Cotisations.objects.get(pk=cotisationid)
|
||||||
|
|
||||||
def can_create(user_request, *args, **kwargs):
|
def can_create(user_request, *args, **kwargs):
|
||||||
return True, None
|
return user_request.has_perms(('cableur',)), u"Vous n'avez pas le\
|
||||||
|
droit de créer des cotisations"
|
||||||
def can_edit_all(user_request, *args, **kwargs):
|
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_edit(self, user_request, *args, **kwargs):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
return True, None
|
if not user_request.has_perms(('cableur',)):
|
||||||
|
return False, u"Vous n'avez pas le droit d'éditer les cotisations"
|
||||||
def can_delete_all(user_request, *args, **kwargs):
|
elif not user_request.has_perms(('tresorier',)) and\
|
||||||
return True, None
|
(self.vente.facture.control or not self.vente.facture.valid):
|
||||||
|
return False, u"Vous n'avez pas le droit d'éditer une cotisation\
|
||||||
|
controlée ou invalidée par un trésorier"
|
||||||
|
else:
|
||||||
|
return True, None
|
||||||
|
|
||||||
def can_delete(self, user_request, *args, **kwargs):
|
def can_delete(self, user_request, *args, **kwargs):
|
||||||
return True, None
|
if not user_request.has_perms(('cableur',)):
|
||||||
|
return False, u"Vous n'avez pas le droit de supprimer une cotisations"
|
||||||
|
if self.vente.facture.control or not self.vente.facture.valid:
|
||||||
|
return False, u"Vous ne pouvez pas supprimer une cotisations\
|
||||||
|
contrôlée ou invalidée par un trésorier"
|
||||||
|
else:
|
||||||
|
return True, None
|
||||||
|
|
||||||
def can_view_all(user_request, *args, **kwargs):
|
def can_view_all(user_request, *args, **kwargs):
|
||||||
|
if not user_request.has_perms(('cableur',)):
|
||||||
|
return False, u"Vous n'avez pas le droit de voir les cotisations"
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_view(self, user_request, *args, **kwargs):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
return True, None
|
if not user_request.has_perms(('cableur',)) and\
|
||||||
|
self.vente.facture.user != user_request:
|
||||||
|
return False, u"Vous ne pouvez pas afficher l'historique d'une\
|
||||||
|
cotisation d'un autre user que vous sans droit cableur"
|
||||||
|
else:
|
||||||
|
return True, None
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.vente)
|
return str(self.vente)
|
||||||
|
|
|
@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load acl %}
|
||||||
|
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -41,11 +43,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
<td>{{ article.duration }}</td>
|
<td>{{ article.duration }}</td>
|
||||||
<td>{{ article.type_user }}</td>
|
<td>{{ article.type_user }}</td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
{% if is_trez %}
|
{% can_edit article %}
|
||||||
<a class="btn btn-primary btn-sm" role="button" title="Éditer" href="{% url 'cotisations:edit-article' article.id %}">
|
<a class="btn btn-primary btn-sm" role="button" title="Éditer" href="{% url 'cotisations:edit-article' article.id %}">
|
||||||
<i class="glyphicon glyphicon-edit"></i>
|
<i class="glyphicon glyphicon-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% acl_end %}
|
||||||
<a class="btn btn-info btn-sm" role="button" title="Historique" href="{% url 'cotisations:history' 'article' article.id %}">
|
<a class="btn btn-info btn-sm" role="button" title="Historique" href="{% url 'cotisations:history' 'article' article.id %}">
|
||||||
<i class="glyphicon glyphicon-time"></i>
|
<i class="glyphicon glyphicon-time"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load acl %}
|
||||||
|
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -33,11 +35,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ banque.name }}</td>
|
<td>{{ banque.name }}</td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
{% if is_trez %}
|
{% can_edit banque %}
|
||||||
<a class="btn btn-primary btn-sm" role="button" title="Éditer" href="{% url 'cotisations:edit-banque' banque.id %}">
|
<a class="btn btn-primary btn-sm" role="button" title="Éditer" href="{% url 'cotisations:edit-banque' banque.id %}">
|
||||||
<i class="glyphicon glyphicon-edit"></i>
|
<i class="glyphicon glyphicon-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% acl_end %}
|
||||||
<a class="btn btn-info btn-sm" role="button" title="Historique" href="{% url 'cotisations:history' 'banque' banque.id %}">
|
<a class="btn btn-info btn-sm" role="button" title="Historique" href="{% url 'cotisations:history' 'banque' banque.id %}">
|
||||||
<i class="glyphicon glyphicon-time"></i>
|
<i class="glyphicon glyphicon-time"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load acl %}
|
||||||
|
|
||||||
{% if facture_list.paginator %}
|
{% if facture_list.paginator %}
|
||||||
{% include "pagination.html" with list=facture_list %}
|
{% include "pagination.html" with list=facture_list %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -47,7 +49,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
<td>{{ facture.paiement }}</td>
|
<td>{{ facture.paiement }}</td>
|
||||||
<td>{{ facture.date }}</td>
|
<td>{{ facture.date }}</td>
|
||||||
<td>{{ facture.id }}</td>
|
<td>{{ facture.id }}</td>
|
||||||
{% if is_cableur %}
|
|
||||||
<td>
|
<td>
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<button class="btn btn-default dropdown-toggle" type="button" id="editionfacture" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
|
<button class="btn btn-default dropdown-toggle" type="button" id="editionfacture" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
|
||||||
|
@ -55,17 +56,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu" aria-labelledby="editionfacture">
|
<ul class="dropdown-menu" aria-labelledby="editionfacture">
|
||||||
{% if facture.valid and not facture.control or is_trez %}
|
{% can_edit facture %}
|
||||||
<li><a href="{% url 'cotisations:edit-facture' facture.id %}"><i class="glyphicon glyphicon-bitcoin"></i> Modifier</a></li>
|
<li><a href="{% url 'cotisations:edit-facture' facture.id %}"><i class="glyphicon glyphicon-bitcoin"></i> Modifier</a></li>
|
||||||
<li><a href="{% url 'cotisations:del-facture' facture.id %}"><i class="glyphicon glyphicon-trash"></i> Supprimer</a></li>
|
<li><a href="{% url 'cotisations:del-facture' facture.id %}"><i class="glyphicon glyphicon-trash"></i> Supprimer</a></li>
|
||||||
<li><a href="{% url 'cotisations:history' 'facture' facture.id %}"><i class="glyphicon glyphicon-time"></i> Historique</a></li>
|
<li><a href="{% url 'cotisations:history' 'facture' facture.id %}"><i class="glyphicon glyphicon-time"></i> Historique</a></li>
|
||||||
{% else %}
|
{% acl_else %}
|
||||||
<li>Facture controlée</li>
|
<li>Facture controlée</li>
|
||||||
{% endif %}
|
{% acl_end %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
{% endif %}
|
|
||||||
<td>
|
<td>
|
||||||
{% if facture.valid %}
|
{% if facture.valid %}
|
||||||
<a class="btn btn-primary btn-sm" role="button" href="{% url 'cotisations:facture-pdf' facture.id %}">
|
<a class="btn btn-primary btn-sm" role="button" href="{% url 'cotisations:facture-pdf' facture.id %}">
|
||||||
|
|
|
@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load acl %}
|
||||||
|
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -33,11 +35,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ paiement.moyen }}</td>
|
<td>{{ paiement.moyen }}</td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
{% if is_trez %}
|
{% can_edit paiement %}
|
||||||
<a class="btn btn-primary btn-sm" role="button" title="Éditer" href="{% url 'cotisations:edit-paiement' paiement.id %}">
|
<a class="btn btn-primary btn-sm" role="button" title="Éditer" href="{% url 'cotisations:edit-paiement' paiement.id %}">
|
||||||
<i class="glyphicon glyphicon-edit"></i>
|
<i class="glyphicon glyphicon-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% acl_end %}
|
||||||
<a class="btn btn-info btn-sm" role="button" title="Historique" href="{% url 'cotisations:history' 'paiement' paiement.id %}">
|
<a class="btn btn-info btn-sm" role="button" title="Historique" href="{% url 'cotisations:history' 'paiement' paiement.id %}">
|
||||||
<i class="glyphicon glyphicon-time"></i>
|
<i class="glyphicon glyphicon-time"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -24,15 +24,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap3 %}
|
{% load bootstrap3 %}
|
||||||
|
{% load acl %}
|
||||||
|
|
||||||
{% block title %}Articles{% endblock %}
|
{% block title %}Articles{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Liste des types d'articles</h2>
|
<h2>Liste des types d'articles</h2>
|
||||||
{% if is_trez %}
|
{% can_create Article %}
|
||||||
<a class="btn btn-primary btn-sm" role="button" href="{% url 'cotisations:add-article' %}"><i class="glyphicon glyphicon-plus"></i> Ajouter un type d'articles</a>
|
<a class="btn btn-primary btn-sm" role="button" href="{% url 'cotisations:add-article' %}"><i class="glyphicon glyphicon-plus"></i> Ajouter un type d'articles</a>
|
||||||
|
{% acl_end %}
|
||||||
<a class="btn btn-danger btn-sm" role="button" href="{% url 'cotisations:del-article' %}"><i class="glyphicon glyphicon-trash"></i> Supprimer un ou plusieurs types d'articles</a>
|
<a class="btn btn-danger btn-sm" role="button" href="{% url 'cotisations:del-article' %}"><i class="glyphicon glyphicon-trash"></i> Supprimer un ou plusieurs types d'articles</a>
|
||||||
{% endif %}
|
|
||||||
{% include "cotisations/aff_article.html" with article_list=article_list %}
|
{% include "cotisations/aff_article.html" with article_list=article_list %}
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -24,15 +24,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap3 %}
|
{% load bootstrap3 %}
|
||||||
|
{% load acl %}
|
||||||
|
|
||||||
{% block title %}Banques{% endblock %}
|
{% block title %}Banques{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Liste des banques</h2>
|
<h2>Liste des banques</h2>
|
||||||
|
{% can_create Banque %}
|
||||||
<a class="btn btn-primary btn-sm" role="button" href="{% url 'cotisations:add-banque' %}"><i class="glyphicon glyphicon-plus"></i> Ajouter une banque</a>
|
<a class="btn btn-primary btn-sm" role="button" href="{% url 'cotisations:add-banque' %}"><i class="glyphicon glyphicon-plus"></i> Ajouter une banque</a>
|
||||||
{% if is_trez %}
|
{% acl_end %}
|
||||||
<a class="btn btn-danger btn-sm" role="button" href="{% url 'cotisations:del-banque' %}"><i class="glyphicon glyphicon-trash"></i> Supprimer une ou plusieurs banques</a>
|
<a class="btn btn-danger btn-sm" role="button" href="{% url 'cotisations:del-banque' %}"><i class="glyphicon glyphicon-trash"></i> Supprimer une ou plusieurs banques</a>
|
||||||
{% endif %}
|
|
||||||
{% include "cotisations/aff_banque.html" with banque_list=banque_list %}
|
{% include "cotisations/aff_banque.html" with banque_list=banque_list %}
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -24,15 +24,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap3 %}
|
{% load bootstrap3 %}
|
||||||
|
{% load acl %}
|
||||||
|
|
||||||
{% block title %}Paiements{% endblock %}
|
{% block title %}Paiements{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Liste des types de paiements</h2>
|
<h2>Liste des types de paiements</h2>
|
||||||
{% if is_trez %}
|
{% can_create Paiement %}
|
||||||
<a class="btn btn-primary btn-sm" role="button" href="{% url 'cotisations:add-paiement' %}"><i class="glyphicon glyphicon-plus"></i> Ajouter un type de paiement</a>
|
<a class="btn btn-primary btn-sm" role="button" href="{% url 'cotisations:add-paiement' %}"><i class="glyphicon glyphicon-plus"></i> Ajouter un type de paiement</a>
|
||||||
|
{% acl_end %}
|
||||||
<a class="btn btn-danger btn-sm" role="button" href="{% url 'cotisations:del-paiement' %}"><i class="glyphicon glyphicon-trash"></i> Supprimer un ou plusieurs types de paiements</a>
|
<a class="btn btn-danger btn-sm" role="button" href="{% url 'cotisations:del-paiement' %}"><i class="glyphicon glyphicon-trash"></i> Supprimer un ou plusieurs types de paiements</a>
|
||||||
{% endif %}
|
|
||||||
{% include "cotisations/aff_paiement.html" with paiement_list=paiement_list %}
|
{% include "cotisations/aff_paiement.html" with paiement_list=paiement_list %}
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -23,32 +23,41 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load acl %}
|
||||||
|
|
||||||
{% block sidebar %}
|
{% block sidebar %}
|
||||||
{% if is_trez %}
|
{% can_create Facture %}
|
||||||
<a class="list-group-item list-group-item-success" href="{% url "cotisations:new-facture-pdf" %}">
|
<a class="list-group-item list-group-item-success" href="{% url "cotisations:new-facture-pdf" %}">
|
||||||
<i class="glyphicon glyphicon-plus"></i>
|
<i class="glyphicon glyphicon-plus"></i>
|
||||||
Créer une facture
|
Créer une facture
|
||||||
</a>
|
</a>
|
||||||
|
{% acl_end %}
|
||||||
<a class="list-group-item list-group-item-warning" href="{% url "cotisations:control" %}">
|
<a class="list-group-item list-group-item-warning" href="{% url "cotisations:control" %}">
|
||||||
<i class="glyphicon glyphicon-eye-open"></i>
|
<i class="glyphicon glyphicon-eye-open"></i>
|
||||||
Contrôler les factures
|
Contrôler les factures
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% can_view_all Facture %}
|
||||||
<a class="list-group-item list-group-item-info" href="{% url "cotisations:index" %}">
|
<a class="list-group-item list-group-item-info" href="{% url "cotisations:index" %}">
|
||||||
<i class="glyphicon glyphicon-list"></i>
|
<i class="glyphicon glyphicon-list"></i>
|
||||||
Factures
|
Factures
|
||||||
</a>
|
</a>
|
||||||
|
{% acl_end %}
|
||||||
|
{% can_view_all Article %}
|
||||||
<a class="list-group-item list-group-item-info" href="{% url "cotisations:index-article" %}">
|
<a class="list-group-item list-group-item-info" href="{% url "cotisations:index-article" %}">
|
||||||
<i class="glyphicon glyphicon-list"></i>
|
<i class="glyphicon glyphicon-list"></i>
|
||||||
Articles en vente
|
Articles en vente
|
||||||
</a>
|
</a>
|
||||||
|
{% acl_end %}
|
||||||
|
{% can_view_all Banque %}
|
||||||
<a class="list-group-item list-group-item-info" href="{% url "cotisations:index-banque" %}">
|
<a class="list-group-item list-group-item-info" href="{% url "cotisations:index-banque" %}">
|
||||||
<i class="glyphicon glyphicon-list"></i>
|
<i class="glyphicon glyphicon-list"></i>
|
||||||
Banques
|
Banques
|
||||||
</a>
|
</a>
|
||||||
|
{% acl_end %}
|
||||||
|
{% can_view_all Paiement %}
|
||||||
<a class="list-group-item list-group-item-info" href="{% url "cotisations:index-paiement" %}">
|
<a class="list-group-item list-group-item-info" href="{% url "cotisations:index-paiement" %}">
|
||||||
<i class="glyphicon glyphicon-list"></i>
|
<i class="glyphicon glyphicon-list"></i>
|
||||||
Moyens de paiement
|
Moyens de paiement
|
||||||
</a>
|
</a>
|
||||||
|
{% acl_end %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -49,7 +49,9 @@ from re2o.utils import (
|
||||||
can_edit,
|
can_edit,
|
||||||
can_delete,
|
can_delete,
|
||||||
can_view,
|
can_view,
|
||||||
can_delete_set
|
can_view_all,
|
||||||
|
can_delete_set,
|
||||||
|
can_change,
|
||||||
)
|
)
|
||||||
from preferences.models import OptionalUser, AssoOption, GeneralOption
|
from preferences.models import OptionalUser, AssoOption, GeneralOption
|
||||||
from .models import Facture, Article, Vente, Paiement, Banque
|
from .models import Facture, Article, Vente, Paiement, Banque
|
||||||
|
@ -166,7 +168,7 @@ def new_facture(request, user, userid):
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('tresorier')
|
@can_change(Facture, ['pdf'])
|
||||||
def new_facture_pdf(request):
|
def new_facture_pdf(request):
|
||||||
"""Permet de générer un pdf d'une facture. Réservée
|
"""Permet de générer un pdf d'une facture. Réservée
|
||||||
au trésorier, permet d'emettre des factures sans objet
|
au trésorier, permet d'emettre des factures sans objet
|
||||||
|
@ -206,31 +208,13 @@ def new_facture_pdf(request):
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def facture_pdf(request, factureid):
|
@can_view(Facture)
|
||||||
|
def facture_pdf(request, facture, factureid):
|
||||||
"""Affiche en pdf une facture. Cree une ligne par Vente de la facture,
|
"""Affiche en pdf une facture. Cree une ligne par Vente de la facture,
|
||||||
et génére une facture avec le total, le moyen de paiement, l'adresse
|
et génére une facture avec le total, le moyen de paiement, l'adresse
|
||||||
de l'adhérent, etc. Réservée à self pour un user sans droits,
|
de l'adhérent, etc. Réservée à self pour un user sans droits,
|
||||||
les droits cableurs permettent d'afficher toute facture"""
|
les droits cableurs permettent d'afficher toute facture"""
|
||||||
try:
|
|
||||||
facture = Facture.objects.get(pk=factureid)
|
|
||||||
except Facture.DoesNotExist:
|
|
||||||
messages.error(request, u"Facture inexistante")
|
|
||||||
return redirect(reverse('cotisations:index'))
|
|
||||||
if not request.user.has_perms(('cableur',))\
|
|
||||||
and facture.user != request.user:
|
|
||||||
messages.error(request, "Vous ne pouvez pas afficher une facture ne vous\
|
|
||||||
appartenant pas sans droit cableur")
|
|
||||||
return redirect(reverse(
|
|
||||||
'users:profil',
|
|
||||||
kwargs={'userid': str(request.user.id)}
|
|
||||||
))
|
|
||||||
if not facture.valid:
|
|
||||||
messages.error(request, "Vous ne pouvez pas afficher\
|
|
||||||
une facture non valide")
|
|
||||||
return redirect(reverse(
|
|
||||||
'users:profil',
|
|
||||||
kwargs={'userid': str(request.user.id)}
|
|
||||||
))
|
|
||||||
ventes_objects = Vente.objects.all().filter(facture=facture)
|
ventes_objects = Vente.objects.all().filter(facture=facture)
|
||||||
ventes = []
|
ventes = []
|
||||||
options, _created = AssoOption.objects.get_or_create()
|
options, _created = AssoOption.objects.get_or_create()
|
||||||
|
@ -308,14 +292,10 @@ def del_facture(request, facture, factureid):
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('cableur')
|
@can_create(Facture)
|
||||||
def credit_solde(request, userid):
|
@can_edit(User)
|
||||||
|
def credit_solde(request, user, userid):
|
||||||
""" Credit ou débit de solde """
|
""" Credit ou débit de solde """
|
||||||
try:
|
|
||||||
user = User.objects.get(pk=userid)
|
|
||||||
except User.DoesNotExist:
|
|
||||||
messages.error(request, u"Utilisateur inexistant")
|
|
||||||
return redirect(reverse('cotisations:index'))
|
|
||||||
facture = CreditSoldeForm(request.POST or None)
|
facture = CreditSoldeForm(request.POST or None)
|
||||||
if facture.is_valid():
|
if facture.is_valid():
|
||||||
facture_instance = facture.save(commit=False)
|
facture_instance = facture.save(commit=False)
|
||||||
|
@ -513,7 +493,8 @@ def del_banque(request, instances):
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('tresorier')
|
@can_view_all(Facture)
|
||||||
|
@can_change(Facture, ['control'])
|
||||||
def control(request):
|
def control(request):
|
||||||
"""Pour le trésorier, vue pour controler en masse les
|
"""Pour le trésorier, vue pour controler en masse les
|
||||||
factures.Case à cocher, pratique"""
|
factures.Case à cocher, pratique"""
|
||||||
|
@ -553,7 +534,7 @@ def control(request):
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('cableur')
|
@can_view_all(Article)
|
||||||
def index_article(request):
|
def index_article(request):
|
||||||
"""Affiche l'ensemble des articles en vente"""
|
"""Affiche l'ensemble des articles en vente"""
|
||||||
article_list = Article.objects.order_by('name')
|
article_list = Article.objects.order_by('name')
|
||||||
|
@ -563,7 +544,7 @@ def index_article(request):
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('cableur')
|
@can_view_all(Paiement)
|
||||||
def index_paiement(request):
|
def index_paiement(request):
|
||||||
"""Affiche l'ensemble des moyens de paiement en vente"""
|
"""Affiche l'ensemble des moyens de paiement en vente"""
|
||||||
paiement_list = Paiement.objects.order_by('moyen')
|
paiement_list = Paiement.objects.order_by('moyen')
|
||||||
|
@ -573,7 +554,7 @@ def index_paiement(request):
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('cableur')
|
@can_view_all(Banque)
|
||||||
def index_banque(request):
|
def index_banque(request):
|
||||||
"""Affiche l'ensemble des banques"""
|
"""Affiche l'ensemble des banques"""
|
||||||
banque_list = Banque.objects.order_by('name')
|
banque_list = Banque.objects.order_by('name')
|
||||||
|
@ -583,7 +564,7 @@ def index_banque(request):
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('cableur')
|
@can_view_all(Facture)
|
||||||
def index(request):
|
def index(request):
|
||||||
"""Affiche l'ensemble des factures, pour les cableurs et +"""
|
"""Affiche l'ensemble des factures, pour les cableurs et +"""
|
||||||
options, _created = GeneralOption.objects.get_or_create()
|
options, _created = GeneralOption.objects.get_or_create()
|
||||||
|
|
Loading…
Reference in a new issue