|
@@ -13,9 +13,9 @@ from django.core.urlresolvers import reverse
|
|
|
from django.utils.html import format_html
|
|
|
|
|
|
from coin.members.models import (
|
|
|
- Member, CryptoKey, LdapUser, MembershipFee, OfferSubscription, RowLevelPermission)
|
|
|
+ Member, CryptoKey, LdapUser, MembershipFee, Offer, OfferSubscription, RowLevelPermission)
|
|
|
from coin.members.membershipfee_filter import MembershipFeeFilter
|
|
|
-from coin.members.forms import MemberChangeForm, MemberCreationForm
|
|
|
+from coin.members.forms import AdminMemberChangeForm, MemberCreationForm
|
|
|
from coin.utils import delete_selected
|
|
|
import autocomplete_light
|
|
|
|
|
@@ -45,6 +45,8 @@ class OfferSubscriptionInline(admin.TabularInline):
|
|
|
else:
|
|
|
return self.common_fields
|
|
|
|
|
|
+ # création de membre : lecture écriture
|
|
|
+ # modification d'un membre : lecture seule seulement
|
|
|
def get_readonly_fields(self, request, obj=None):
|
|
|
if obj:
|
|
|
return self.all_fields
|
|
@@ -53,8 +55,27 @@ class OfferSubscriptionInline(admin.TabularInline):
|
|
|
|
|
|
show_change_link = True
|
|
|
|
|
|
+ def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
|
|
+ if request.user.is_superuser:
|
|
|
+ return super(OfferSubscriptionInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
+ else:
|
|
|
+ if db_field.name == "offer":
|
|
|
+ # pouah c'est pas beau, faut faire mieux, ça serait bien que get_manageable_offers renvoie un QuerrySet plutôt qu'une liste
|
|
|
+ kwargs["queryset"] = Offer.objects.filter(id__in=[p.id for p in RowLevelPermission.get_manageable_offers(request.user)])
|
|
|
+ return super(OfferSubscriptionInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
+
|
|
|
+ # pas très beau
|
|
|
+ # quand on créer un membre on autorise à ajouter un abonnement
|
|
|
+ # sinon seulement en lecture seule (sinon ça permettrait de changer les abo qu'on n'a pas le droit de toucher)
|
|
|
+ def has_add_permission(self, request):
|
|
|
+ if request.path.split('/')[-2] == 'add':
|
|
|
+ return True
|
|
|
+ else:
|
|
|
+ return request.user.is_superuser
|
|
|
+
|
|
|
+ # sinon on pourrait supprimer les abo qu'on ne peut pas gérer
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
|
- return False
|
|
|
+ return request.user.is_superuser
|
|
|
|
|
|
|
|
|
class MemberAdmin(UserAdmin):
|
|
@@ -68,21 +89,17 @@ class MemberAdmin(UserAdmin):
|
|
|
actions = [delete_selected, 'set_as_member', 'set_as_non_member',
|
|
|
'bulk_send_welcome_email', 'bulk_send_call_for_membership_fee_email']
|
|
|
|
|
|
- form = MemberChangeForm
|
|
|
+ form = AdminMemberChangeForm
|
|
|
add_form = MemberCreationForm
|
|
|
|
|
|
def get_fieldsets(self, request, obj=None):
|
|
|
coord_fieldset = ('Coordonnées', {'fields': (
|
|
|
- 'email',
|
|
|
+ ('email', 'send_membership_fees_email'),
|
|
|
('home_phone_number', 'mobile_phone_number'),
|
|
|
'address',
|
|
|
('postal_code', 'city', 'country'))})
|
|
|
- if request.user.is_superuser:
|
|
|
- auth_fieldset = ('Authentification', {'fields': (
|
|
|
- ('username', 'password'))})
|
|
|
- else:
|
|
|
- auth_fieldset = ('Authentification', {'fields': (
|
|
|
- ('username',))})
|
|
|
+ auth_fieldset = ('Authentification', {'fields': (
|
|
|
+ ('username', 'password'))})
|
|
|
perm_fieldset = ('Permissions', {'fields': (
|
|
|
('is_active', 'is_staff', 'is_superuser', 'groups'))})
|
|
|
|
|
@@ -238,10 +255,6 @@ class MembershipFeeAdmin(admin.ModelAdmin):
|
|
|
form = autocomplete_light.modelform_factory(MembershipFee, fields='__all__')
|
|
|
|
|
|
|
|
|
-class PermisionAdmin(admin.ModelAdmin):
|
|
|
- pass
|
|
|
-
|
|
|
-
|
|
|
admin.site.register(Member, MemberAdmin)
|
|
|
admin.site.register(MembershipFee, MembershipFeeAdmin)
|
|
|
# admin.site.unregister(Group)
|