Multi-utilisateur : droits par entreprise + renommage Operation bancaire
This commit is contained in:
+48
-10
@@ -2,11 +2,34 @@ from django.contrib import admin
|
||||
from django.utils import timezone
|
||||
|
||||
from .models import (
|
||||
Bareme, Entreprise, Client, Facture, LigneFacture, Depense, Paiement,
|
||||
Categorie,
|
||||
Bareme, Entreprise, Client, Facture, LigneFacture, Depense, Paiement, Categorie,
|
||||
)
|
||||
|
||||
|
||||
class ScopedAdmin(admin.ModelAdmin):
|
||||
"""Cloisonne les données par entreprise pour les non-superadmins."""
|
||||
scope_path = "entreprise"
|
||||
|
||||
def get_queryset(self, request):
|
||||
qs = super().get_queryset(request)
|
||||
if request.user.is_superuser:
|
||||
return qs
|
||||
return qs.filter(**{f"{self.scope_path}__in": Entreprise.accessibles(request.user)})
|
||||
|
||||
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
||||
if not request.user.is_superuser:
|
||||
acc = Entreprise.accessibles(request.user)
|
||||
if db_field.name == "entreprise":
|
||||
kwargs["queryset"] = acc
|
||||
elif db_field.name == "client":
|
||||
kwargs["queryset"] = Client.objects.filter(entreprise__in=acc)
|
||||
elif db_field.name == "paiement":
|
||||
kwargs["queryset"] = Paiement.objects.filter(entreprise__in=acc)
|
||||
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
||||
|
||||
|
||||
# ----- Référentiels mutualisés (visibles par tous) -----
|
||||
|
||||
@admin.register(Categorie)
|
||||
class CategorieAdmin(admin.ModelAdmin):
|
||||
list_display = ("nom", "usage", "exclure_calculs", "actif", "ordre")
|
||||
@@ -22,16 +45,33 @@ class BaremeAdmin(admin.ModelAdmin):
|
||||
list_filter = ("annee", "activite")
|
||||
|
||||
|
||||
# ----- Entreprise (accès) -----
|
||||
|
||||
@admin.register(Entreprise)
|
||||
class EntrepriseAdmin(admin.ModelAdmin):
|
||||
list_display = ("nom", "activite", "franchise_tva", "versement_liberatoire",
|
||||
"num_tva_intracom", "vue_tva", "email")
|
||||
list_filter = ("activite", "franchise_tva", "versement_liberatoire")
|
||||
search_fields = ("nom", "siret", "num_tva_intracom")
|
||||
filter_horizontal = ("utilisateurs", "groupes")
|
||||
|
||||
def get_queryset(self, request):
|
||||
qs = super().get_queryset(request)
|
||||
if request.user.is_superuser:
|
||||
return qs
|
||||
return Entreprise.accessibles(request.user)
|
||||
|
||||
def get_readonly_fields(self, request, obj=None):
|
||||
# Seul un superadmin gère les droits d'accès.
|
||||
if not request.user.is_superuser:
|
||||
return ("utilisateurs", "groupes")
|
||||
return ()
|
||||
|
||||
|
||||
# ----- Données cloisonnées par entreprise -----
|
||||
|
||||
@admin.register(Client)
|
||||
class ClientAdmin(admin.ModelAdmin):
|
||||
class ClientAdmin(ScopedAdmin):
|
||||
list_display = ("nom", "entreprise", "email", "siret")
|
||||
list_filter = ("entreprise",)
|
||||
search_fields = ("nom", "email", "siret")
|
||||
@@ -48,10 +88,9 @@ def marquer_encaissee(modeladmin, request, queryset):
|
||||
|
||||
|
||||
@admin.register(Facture)
|
||||
class FactureAdmin(admin.ModelAdmin):
|
||||
class FactureAdmin(ScopedAdmin):
|
||||
list_display = ("numero", "entreprise", "client", "date_emission",
|
||||
"date_encaissement", "statut", "montant_ht",
|
||||
"montant_tva", "montant_ttc")
|
||||
"date_encaissement", "statut", "montant_ht", "montant_tva", "montant_ttc")
|
||||
list_filter = ("entreprise", "statut", "activite", "date_emission")
|
||||
search_fields = ("numero", "client__nom")
|
||||
date_hierarchy = "date_emission"
|
||||
@@ -72,7 +111,7 @@ class DepenseInline(admin.TabularInline):
|
||||
|
||||
|
||||
@admin.register(Paiement)
|
||||
class PaiementAdmin(admin.ModelAdmin):
|
||||
class PaiementAdmin(ScopedAdmin):
|
||||
list_display = ("date", "entreprise", "libelle", "sens", "montant_total",
|
||||
"reparti", "reste", "equilibre")
|
||||
list_filter = ("entreprise", "sens", "date")
|
||||
@@ -94,10 +133,9 @@ class PaiementAdmin(admin.ModelAdmin):
|
||||
|
||||
|
||||
@admin.register(Depense)
|
||||
class DepenseAdmin(admin.ModelAdmin):
|
||||
class DepenseAdmin(ScopedAdmin):
|
||||
list_display = ("date", "entreprise", "libelle", "categorie", "activite",
|
||||
"regime_tva", "montant_ttc", "montant_tva", "tva_autoliq",
|
||||
"paiement")
|
||||
"regime_tva", "montant_ttc", "montant_tva", "tva_autoliq", "paiement")
|
||||
list_filter = ("entreprise", "categorie", "regime_tva", "activite", "date")
|
||||
search_fields = ("libelle",)
|
||||
date_hierarchy = "date"
|
||||
|
||||
Reference in New Issue
Block a user