6f29fbc837d0237e54c3bb476c4079ad6534ec9b
[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 gettext_lazy as _
5 from django.contrib import admin
6 from modeltranslation.admin import TranslationAdmin
7 from fnpdjango.actions import export_as_csv_action
8 from .models import Offer, Perk, Funding, Spent
9
10
11 class OfferAdmin(TranslationAdmin):
12     model = Offer
13     list_display = ['title', 'author', 'target', 'sum', 'is_win', 'start', 'end']
14     search_fields = ['title', 'author']
15     readonly_fields = ('cover_img_tag',)
16     autocomplete_fields = ['book']
17
18
19 class PerkAdmin(TranslationAdmin):
20     model = Perk
21     search_fields = ['name', 'long_name']
22     list_display = ['name', 'long_name', 'price', 'end_date', 'offer']
23     list_filter = ['offer']
24
25
26 class PayedFilter(admin.SimpleListFilter):
27     title = _('payment complete')
28     parameter_name = 'payed'
29
30     def lookups(self, request, model_admin):
31         return (
32             ('yes', _('Yes')),
33             ('no', _('No')),
34         )
35
36     def queryset(self, request, queryset):
37         if self.value() == 'yes':
38             return queryset.exclude(completed_at=None)
39         elif self.value() == 'no':
40             return queryset.filter(completed_at=None)
41
42
43 class PerksFilter(admin.SimpleListFilter):
44     title = _('perks')
45     parameter_name = 'perks'
46
47     def lookups(self, request, model_admin):
48         return (
49             ('yes', _('Yes')),
50             ('no', _('No')),
51         )
52
53     def queryset(self, request, queryset):
54         if self.value() == 'yes':
55             return queryset.exclude(perks=None)
56         elif self.value() == 'no':
57             return queryset.filter(perks=None)
58
59
60 class FundingAdmin(admin.ModelAdmin):
61     model = Funding
62     list_display = ['created_at', 'completed_at', 'offer', 'amount', 'name', 'email', 'perk_names']
63     search_fields = ['name', 'email', 'offer__title', 'offer__author']
64     list_filter = [PayedFilter, 'offer', PerksFilter]
65     search_fields = ['user']
66     actions = [export_as_csv_action(
67         fields=[
68             'id', 'offer', 'name', 'email', 'amount', 'completed_at',
69             'notifications', 'notify_key', 'wl_optout_url'
70         ]
71     )]
72
73
74 class SpentAdmin(admin.ModelAdmin):
75     model = Spent
76     list_display = ['book', 'amount', 'timestamp']
77     search_fields = ['book__title']
78
79
80 admin.site.register(Offer, OfferAdmin)
81 admin.site.register(Perk, PerkAdmin)
82 admin.site.register(Funding, FundingAdmin)
83 admin.site.register(Spent, SpentAdmin)