Funding data export.
[wolnelektury.git] / src / funding / admin.py
1 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
2 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
3 #
4 from django.utils.translation import ugettext_lazy as _
5 from django.contrib import admin
6 from fnpdjango.actions import export_as_csv_action
7 from .models import Offer, Perk, Funding, Spent
8
9
10 class OfferAdmin(admin.ModelAdmin):
11     model = Offer
12     list_display = ['title', 'author', 'target', 'sum', 'is_win', 'start', 'end']
13     search_fields = ['title', 'author']
14     readonly_fields = ('cover_img_tag',)
15
16
17 class PerkAdmin(admin.ModelAdmin):
18     model = Perk
19     search_fields = ['name', 'long_name']
20     list_display = ['name', 'long_name', 'price', 'end_date', 'offer']
21     list_filter = ['offer']
22
23
24 class PayedFilter(admin.SimpleListFilter):
25     title = _('payment complete')
26     parameter_name = 'payed'
27
28     def lookups(self, request, model_admin):
29         return (
30             ('yes', _('Yes')),
31             ('no', _('No')),
32         )
33
34     def queryset(self, request, queryset):
35         if self.value() == 'yes':
36             return queryset.exclude(payed_at=None)
37         elif self.value() == 'no':
38             return queryset.filter(payed_at=None)
39
40
41 class PerksFilter(admin.SimpleListFilter):
42     title = _('perks')
43     parameter_name = 'perks'
44
45     def lookups(self, request, model_admin):
46         return (
47             ('yes', _('Yes')),
48             ('no', _('No')),
49         )
50
51     def queryset(self, request, queryset):
52         if self.value() == 'yes':
53             return queryset.exclude(perks=None)
54         elif self.value() == 'no':
55             return queryset.filter(perks=None)
56
57
58 class FundingAdmin(admin.ModelAdmin):
59     model = Funding
60     list_display = ['payed_at', 'offer', 'amount', 'name', 'email', 'perk_names']
61     search_fields = ['name', 'email', 'offer__title', 'offer__author']
62     list_filter = [PayedFilter, 'offer', PerksFilter]
63     actions = [export_as_csv_action()]
64
65
66 class SpentAdmin(admin.ModelAdmin):
67     model = Spent
68     list_display = ['book', 'amount', 'timestamp']
69     search_fields = ['book__title']
70
71
72 admin.site.register(Offer, OfferAdmin)
73 admin.site.register(Perk, PerkAdmin)
74 admin.site.register(Funding, FundingAdmin)
75 admin.site.register(Spent, SpentAdmin)