Browse Source

Add membership end date in members lisr view

Fabs 11 years ago
parent
commit
322cec5ded

+ 3 - 3
coin/members/admin.py

@@ -2,7 +2,7 @@
 from django.contrib import admin
 from coin.members.models import Member, CryptoKey, LdapUser, MembershipFee
 from django import forms
-from coin.members.membershipfee_filter import DecadeBornListFilter
+from coin.members.membershipfee_filter import MembershipFeeFilter
 import pprint
 
 
@@ -39,9 +39,9 @@ class MemberAdminForm(forms.ModelForm):
         model = Member
 
 class MemberAdmin(admin.ModelAdmin):
-    list_display = ('id', 'status', 'first_name', 'last_name','email')
+    list_display = ('id', 'status', 'first_name', 'last_name','email', 'end_date_of_membership')
     list_display_links = ('id', 'first_name', 'last_name')
-    list_filter = ('status',DecadeBornListFilter)
+    list_filter = ('status',MembershipFeeFilter)
     search_fields = ['first_name','last_name','email']
     actions = ['set_as_member', 'set_as_non_member']
     

+ 5 - 5
coin/members/membershipfee_filter.py

@@ -2,7 +2,7 @@
 from django.contrib.admin import SimpleListFilter
 import datetime
 
-class DecadeBornListFilter(SimpleListFilter):
+class MembershipFeeFilter(SimpleListFilter):
     # Human-readable title which will be displayed in the
     # right admin sidebar just above the filter options.
     title = 'Cotisations'
@@ -32,11 +32,11 @@ class DecadeBornListFilter(SimpleListFilter):
         # Compare the requested value (either '80s' or '90s')
         # to decide how to filter the queryset.
         if self.value() == 'ok':
-            return queryset.filter(membershipfee__start_date__lte=datetime.date.today,
-                                     membershipfee__end_date__gte=datetime.date.today)
+            return queryset.filter(membership_fees__start_date__lte=datetime.date.today,
+                                     membership_fees__end_date__gte=datetime.date.today)
         if self.value() == 'retard':
-            return queryset.exclude(membershipfee__start_date__lte=datetime.date.today,
-                                     membershipfee__end_date__gte=datetime.date.today)
+            return queryset.exclude(membership_fees__start_date__lte=datetime.date.today,
+                                     membership_fees__end_date__gte=datetime.date.today)
         #if self.value() == '90s':
             #return queryset.filter(birthday__gte=date(1990, 1, 1),
                                     #birthday__lte=date(1999, 12, 31))

+ 16 - 4
coin/members/models.py

@@ -49,10 +49,19 @@ class Member(models.Model):
     country = models.CharField(max_length=200);
     entry_date = models.DateField(null=False, blank=False, default=datetime.date.today, help_text='date de première adhésion');
     resign_date = models.DateField(null=True, blank=True, help_text='date de départ de l\'association');
-        
+    
     def __unicode__(self):
-        return self.first_name+' '+self.last_name;
+        name = self.first_name+' '+self.last_name;
+        if (self.organization_name): 
+            name += ' (%s)' % self.organization_name
+        return name
 
+    # Renvoi la date de fin de la dernière cotisation du membre
+    def end_date_of_membership(self):
+        try:
+            return self.membership_fees.order_by('-end_date')[0].end_date
+        except:
+            return None
 
 class CryptoKey(models.Model):
     
@@ -63,14 +72,17 @@ class CryptoKey(models.Model):
     member = models.ForeignKey('Member');
 
     def __unicode__(self):
-        return self.member.__str__();
+        return '%s [%s]' % (self.member.__str__(), self.type);
 
 class MembershipFee(models.Model):
-    member = models.ForeignKey('Member');
+    member = models.ForeignKey('Member', related_name='membership_fees');
     amount = models.IntegerField(null=False, default='20', help_text='en €');
     start_date = models.DateField(null=False, blank=False, default=datetime.date.today, help_text='date de début de cotisation');
     end_date = models.DateField(null=False, blank=False, default=datetime.date.today() + datetime.timedelta(365), help_text='fin de validité de cotisation');
 
+    def __unicode__(self):
+        return ('%s - %s - %i€' % (self.member, self.start_date, self.amount));
+
 #~ Lors de la sauvegarde d'un membre, cette fonction est exécutée pour mettre à jour les données dans le LDAP
 @receiver(post_save, sender=Member)
 def sync_ldap(sender, instance, created, **kwargs):

+ 2 - 2
coin/templates/admin/base_site.html

@@ -1,10 +1,10 @@
 {% extends "admin/base.html" %}
 {% load i18n %}
 
-{% block title %}{{ title }} | {% trans 'COIN' %}{% endblock %}
+{% block title %}COIN ☺ Admin{% endblock %}
 
 {% block branding %}
-<h1 id="site-name">{% trans 'Administration de coin' %}</h1>
+<h1 id="site-name">Administration de COIN</h1>
 {% endblock %}
 
 {% block nav-global %}{% endblock %}