add a filter
[wolnelektury.git] / src / funding / admin.py
1 # This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
2 # Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
3 #
4 from django.contrib import admin
5 from modeltranslation.admin import TranslationAdmin
6 from fnpdjango.actions import export_as_csv_action
7 from .models import Offer, Perk, Funding, Spent
8
9
10 class OfferAdmin(TranslationAdmin):
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     autocomplete_fields = ['book']
16
17
18 class PerkAdmin(TranslationAdmin):
19     model = Perk
20     search_fields = ['name', 'long_name']
21     list_display = ['name', 'long_name', 'price', 'end_date', 'offer']
22     list_filter = ['offer']
23
24
25 class PayedFilter(admin.SimpleListFilter):
26     title = 'płatność doszła do skutku'
27     parameter_name = 'payed'
28
29     def lookups(self, request, model_admin):
30         return (
31             ('yes', 'Tak'),
32             ('no', 'Nie'),
33         )
34
35     def queryset(self, request, queryset):
36         if self.value() == 'yes':
37             return queryset.exclude(completed_at=None)
38         elif self.value() == 'no':
39             return queryset.filter(completed_at=None)
40
41
42 class PerksFilter(admin.SimpleListFilter):
43     title = 'prezenty'
44     parameter_name = 'perks'
45
46     def lookups(self, request, model_admin):
47         return (
48             ('yes', 'Tak'),
49             ('no', 'Nie'),
50         )
51
52     def queryset(self, request, queryset):
53         if self.value() == 'yes':
54             return queryset.exclude(perks=None)
55         elif self.value() == 'no':
56             return queryset.filter(perks=None)
57
58
59 class FundingAdmin(admin.ModelAdmin):
60     model = Funding
61     list_display = ['created_at', 'completed_at', 'offer', 'amount', 'name', 'email', 'perk_names']
62     search_fields = ['name', 'email', 'offer__title', 'offer__author']
63     list_filter = [PayedFilter, 'offer', PerksFilter]
64     actions = [export_as_csv_action(
65         fields=[
66             'id', 'offer', 'name', 'email', 'amount', 'completed_at',
67             'notifications', 'notify_key', 'wl_optout_url'
68         ]
69     )]
70
71
72 class SpentAdmin(admin.ModelAdmin):
73     model = Spent
74     list_display = ['book', 'amount', 'timestamp']
75     search_fields = ['book__title']
76     autocomplete_fields = ['book']
77
78
79 admin.site.register(Offer, OfferAdmin)
80 admin.site.register(Perk, PerkAdmin)
81 admin.site.register(Funding, FundingAdmin)
82 admin.site.register(Spent, SpentAdmin)