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
55
56
57
58
59
|
from django.contrib import admin
from django.db.models import Q
from django.http import HttpResponseRedirect
from datetime import datetime
import urllib
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=datetime.now())
if self.value() == 'No':
return queryset.filter(Q(paiduntil__lt=datetime.now()) | Q(paiduntil__isnull=True))
return queryset
class MemberAdmin(admin.ModelAdmin):
list_display = ('user', 'fullname', 'country', 'membersince', 'paiduntil', )
ordering = ('user',)
list_filter = (ActiveMemberFilter, )
actions = ['email_members', ]
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],
})
def email_members(self, request, queryset):
selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
return HttpResponseRedirect('/admin/membership/_email/?ids=%s&orig=%s' % (','.join(selected), urllib.quote(urllib.urlencode(request.GET))))
email_members.short_description = 'Send email to selected members'
class MemberLogAdmin(admin.ModelAdmin):
list_display = ('member', 'timestamp', 'message', )
ordering = ('-timestamp', )
class MeetingAdmin(admin.ModelAdmin):
list_display = ('name', 'dateandtime', )
filter_horizontal = ('members', )
admin.site.register(Member, MemberAdmin)
admin.site.register(MemberLog, MemberLogAdmin)
admin.site.register(Meeting, MeetingAdmin)
|