8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-29 16:12:26 +00:00

Nouvelle gestion acl dans cotisation

This commit is contained in:
Gabriel Detraz 2017-12-27 21:09:00 +01:00 committed by root
parent f412a07e09
commit 15852329d4
10 changed files with 114 additions and 107 deletions

View file

@ -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)

View file

@ -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>

View file

@ -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>

View file

@ -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 %}">

View file

@ -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>

View file

@ -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 />

View file

@ -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 />

View file

@ -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 />

View file

@ -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 %}

View file

@ -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()