move progress to campaigns
[wolnelektury.git] / src / annoy / admin.py
1 from django.db.models import Q
2 from django.contrib import admin
3 from django import forms
4 from django.utils.timezone import now
5 from admin_ordering.admin import OrderableAdmin
6 from modeltranslation.admin import TranslationAdmin
7 from wolnelektury.utils import YesNoFilter
8 from . import models
9
10
11
12 admin.site.register(models.Campaign)
13
14
15 class IsCurrentFilter(YesNoFilter):
16     title = 'Aktualny'
17     parameter_name = 'current'
18
19     @property
20     def q(self):
21         n = now()
22         return ~(Q(since__gt=n) | Q(until__lt=n) | Q(campaign__start__gt=n) | Q(campaign__end__lt=n))
23
24
25 class BannerAdmin(TranslationAdmin):
26     list_display = [
27             'place', 'text',
28             'campaign',
29             'since', 'until',
30             'show_members', 'staff_preview', 'only_authenticated']
31     list_filter = [
32         'campaign',
33         IsCurrentFilter,
34     ]
35     autocomplete_fields = ['books']
36
37
38 admin.site.register(models.Banner, BannerAdmin)
39
40
41 class DTITForm(forms.ModelForm):
42     class Meta:
43         model = models.DynamicTextInsertText
44         fields = '__all__'
45         widgets = {
46             'background_color': forms.TextInput(attrs={"type": "color"}),
47             'text_color': forms.TextInput(attrs={"type": "color"}),
48         }
49
50
51 class DynamicTextInsertTextInline(admin.TabularInline):
52     model = models.DynamicTextInsertText
53     form = DTITForm
54     fields = ['text', 'image', 'own_colors', 'background_color', 'text_color']
55     extra = 0
56     min_num = 1
57
58
59
60 class DynamicTextInsertAdmin(admin.ModelAdmin):
61     list_display = ['paragraphs']
62     inlines = [DynamicTextInsertTextInline]
63
64
65 admin.site.register(models.DynamicTextInsert, DynamicTextInsertAdmin)
66
67
68 class MediaInsertTextInline(OrderableAdmin, admin.TabularInline):
69     model = models.MediaInsertText
70     extra = 0
71     min_num = 1
72
73
74 @admin.register(models.MediaInsertSet)
75 class MediaInsertSetAdmin(admin.ModelAdmin):
76     list_display = ['file_format', 'etag']
77     inlines = [MediaInsertTextInline]
78     readonly_fields = ['etag']