+
+class OfferAdmin(admin.ModelAdmin):
+ model = Offer
+ list_display = ['title', 'author', 'target', 'sum', 'is_win', 'start', 'end']
+ search_fields = ['title', 'author']
+ readonly_fields = ('cover_img_tag',)
+
+
+class PerkAdmin(admin.ModelAdmin):
+ model = Perk
+ search_fields = ['name', 'long_name']
+ list_display = ['name', 'long_name', 'price', 'end_date', 'offer']
+ list_filter = ['offer']
+
+
+
+class PayedFilter(admin.SimpleListFilter):
+ title = _('payment complete')
+ parameter_name = 'payed'
+ def lookups(self, request, model_admin):
+ return (
+ ('yes', _('Yes')),
+ ('no', _('No')),
+ )
+ def queryset(self, request, queryset):
+ if self.value() == 'yes':
+ return queryset.exclude(payed_at=None)
+ elif self.value() == 'no':
+ return queryset.filter(payed_at=None)
+
+class PerksFilter(admin.SimpleListFilter):
+ title = _('perks')
+ parameter_name = 'perks'
+ def lookups(self, request, model_admin):
+ return (
+ ('yes', _('Yes')),
+ ('no', _('No')),
+ )
+ def queryset(self, request, queryset):
+ if self.value() == 'yes':
+ return queryset.exclude(perks=None)
+ elif self.value() == 'no':
+ return queryset.filter(perks=None)
+
+
+class FundingAdmin(admin.ModelAdmin):
+ model = Funding
+ list_display = ['payed_at', 'offer', 'amount', 'name', 'email', 'perk_names']
+ search_fields = ['name', 'email', 'offer__title', 'offer__author']
+ list_filter = [PayedFilter, 'offer', PerksFilter]
+
+
+
+class SpentAdmin(admin.ModelAdmin):
+ model = Spent
+ list_display = ['book', 'amount', 'timestamp']
+ search_fields = ['book__title']
+
+
+admin.site.register(Offer, OfferAdmin)
+admin.site.register(Perk, PerkAdmin)
+admin.site.register(Funding, FundingAdmin)
+admin.site.register(Spent, SpentAdmin)