summaryrefslogtreecommitdiff
path: root/postgresqleu/membership/admin.py
blob: b9c68e11d147956b1645a43c5aa788ff962a2c01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from django.contrib import admin
from django.db.models import Q
from django.utils import timezone

from .models import Member, MemberLog, Meeting


class ActiveMemberFilter(admin.SimpleListFilter):
    title = 'Active'
    parameter_name = 'isactive'

    def lookups(self, request, model_admin):
        return (
            ('Yes', 'Yes'),
            ('No', 'No'),
        )

    def queryset(self, request, queryset):
        if self.value() == 'Yes':
            return queryset.filter(paiduntil__gte=timezone.now())
        if self.value() == 'No':
            return queryset.filter(Q(paiduntil__lt=timezone.now()) | Q(paiduntil__isnull=True))
        return queryset


class MemberAdmin(admin.ModelAdmin):
    list_display = ('user', 'fullname', 'country', 'membersince', 'paiduntil', )
    ordering = ('user',)
    list_filter = (ActiveMemberFilter, )
    search_fields = ('fullname', )
    autocomplete_fields = ('user', 'activeinvoice', )

    def change_view(self, request, object_id, extra_context=None):
        member = Member(pk=object_id)
        return super(MemberAdmin, self).change_view(request, object_id, extra_context={
            'logentries': member.memberlog_set.all().order_by('-timestamp')[:10],
        })


class MemberLogAdmin(admin.ModelAdmin):
    list_display = ('member', 'timestamp', 'message', )
    ordering = ('-timestamp', )
    autocomplete_fields = ('member', )


class MeetingAdmin(admin.ModelAdmin):
    list_display = ('name', 'dateandtime', )
    filter_horizontal = ('members', )
    autocomplete_fields = ('members', )


admin.site.register(Member, MemberAdmin)
admin.site.register(MemberLog, MemberLogAdmin)
admin.site.register(Meeting, MeetingAdmin)