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