From 1c44be4814b5acb6c192aad5d5526dee95484ab0 Mon Sep 17 00:00:00 2001 From: bkfox Date: Fri, 29 May 2020 14:23:00 +0200 Subject: [PATCH] fix bugs --- aircox/admin/episode.py | 8 +++++--- aircox/admin/page.py | 9 ++++----- aircox/admin/program.py | 21 ++++++++++++--------- aircox/admin/sound.py | 9 ++++++--- aircox/locale/fr/LC_MESSAGES/django.mo | Bin 12305 -> 12290 bytes aircox/locale/fr/LC_MESSAGES/django.po | 5 ++--- aircox/urls.py | 2 +- aircox/views/article.py | 4 ---- 8 files changed, 30 insertions(+), 28 deletions(-) diff --git a/aircox/admin/episode.py b/aircox/admin/episode.py index 2f459e0..526768e 100644 --- a/aircox/admin/episode.py +++ b/aircox/admin/episode.py @@ -1,3 +1,5 @@ +from copy import copy + from django import forms from django.contrib import admin from django.utils.translation import gettext as _ @@ -5,7 +7,7 @@ from django.utils.translation import gettext as _ from ..models import Episode, Diffusion from .page import PageAdmin -from .sound import SoundInline, TracksInline +from .sound import SoundInline, TrackInline class DiffusionBaseAdmin: @@ -14,7 +16,7 @@ class DiffusionBaseAdmin: def get_readonly_fields(self, request, obj=None): fields = super().get_readonly_fields(request, obj) if not request.user.has_perm('aircox_program.scheduling'): - fields += ('program', 'start', 'end') + fields = fields + ('program', 'start', 'end') return [field for field in fields if field in self.fields] @@ -59,6 +61,6 @@ class EpisodeAdmin(PageAdmin): search_fields = PageAdmin.search_fields + ('parent__title',) # readonly_fields = ('parent',) - inlines = [TracksInline, SoundInline, DiffusionInline] + inlines = [TrackInline, SoundInline, DiffusionInline] diff --git a/aircox/admin/page.py b/aircox/admin/page.py index c605ee4..5335603 100644 --- a/aircox/admin/page.py +++ b/aircox/admin/page.py @@ -33,13 +33,13 @@ class BasePageAdmin(admin.ModelAdmin): prepopulated_filters = ('parent',) search_fields = ('title',) + fieldsets = [ ('', { 'fields': ['title', 'slug', 'cover', 'content'], }), (_('Publication Settings'), { 'fields': ['status', 'parent'], - # 'classes': ('collapse',), }), ] @@ -55,12 +55,11 @@ class BasePageAdmin(admin.ModelAdmin): data['parent'] = filters.get('parent', None) return data - def get_common_context(self, query, extra_context=None): + def _get_common_context(self, query, extra_context=None): extra_context = extra_context or {} parent = query.get('parent', None) extra_context['parent'] = None if parent is None else \ Page.objects.get_subclass(id=parent) - return extra_context def render_change_form(self, request, context, *args, **kwargs): @@ -70,11 +69,11 @@ class BasePageAdmin(admin.ModelAdmin): def add_view(self, request, form_url='', extra_context=None): filters = QueryDict(request.GET.get('_changelist_filters', '')) - extra_context = self.get_common_context(filters, extra_context) + extra_context = self._get_common_context(filters, extra_context) return super().add_view(request, form_url, extra_context) def changelist_view(self, request, extra_context=None): - extra_context = self.get_common_context(request.GET, extra_context) + extra_context = self._get_common_context(request.GET, extra_context) return super().changelist_view(request, extra_context) diff --git a/aircox/admin/program.py b/aircox/admin/program.py index e7f1710..057dad3 100644 --- a/aircox/admin/program.py +++ b/aircox/admin/program.py @@ -1,4 +1,4 @@ -from copy import deepcopy +from copy import copy from django.contrib import admin from django.utils.translation import gettext_lazy as _ @@ -28,18 +28,21 @@ class ProgramAdmin(PageAdmin): list_display = PageAdmin.list_display + ('schedule', 'station', 'active') list_filter = PageAdmin.list_filter + ('station', 'active') - fieldsets = deepcopy(PageAdmin.fieldsets) + [ - (_('Program Settings'), { - 'fields': ['active', 'station', 'sync'], - 'classes': ('collapse',), - }) - ] - prepopulated_fields = {'slug': ('title',)} - search_fields = ['title'] + search_fields = ('title',) inlines = [ScheduleInline, StreamInline] + def get_fieldsets(self, request, obj=None): + fields = super().get_fieldsets(request, obj) + if request.user.has_perm('aircox.program.scheduling'): + fields = fields + [ + (_('Program Settings'), { + 'fields': ['active', 'station', 'sync'], + }) + ] + return fields + @admin.register(Schedule) class ScheduleAdmin(admin.ModelAdmin): diff --git a/aircox/admin/sound.py b/aircox/admin/sound.py index 9a03f53..cba8a8e 100644 --- a/aircox/admin/sound.py +++ b/aircox/admin/sound.py @@ -6,15 +6,18 @@ from adminsortable2.admin import SortableInlineAdminMixin from ..models import Sound, Track -class TracksInline(SortableInlineAdminMixin, admin.TabularInline): +class TrackInline(SortableInlineAdminMixin, admin.TabularInline): template = 'admin/aircox/playlist_inline.html' model = Track extra = 0 - fields = ('position', 'artist', 'title', 'info', 'timestamp', 'tags') + fields = ('position', 'artist', 'title', 'info', 'tags') list_display = ['artist', 'title', 'tags', 'related'] list_filter = ['artist', 'title', 'tags'] +class SoundTrackInline(TrackInline): + fields = TrackInline.fields + ('timestamp',) + class SoundInline(admin.TabularInline): model = Sound @@ -44,7 +47,7 @@ class SoundAdmin(admin.ModelAdmin): (None, {'fields': ['is_good_quality']}) ] readonly_fields = ('path', 'duration',) - inlines = [TracksInline] + inlines = [SoundTrackInline] @admin.register(Track) diff --git a/aircox/locale/fr/LC_MESSAGES/django.mo b/aircox/locale/fr/LC_MESSAGES/django.mo index 49c8a7355b585a05b4e3e68e438c7cbc97a7f59f..a2642efed7622ea5a8ce0898a733d955ee58cfe0 100644 GIT binary patch delta 2702 zcmXZd4NR3)9LMoC~m^1|hmNY!lnf)O^WlX*Pr{Us_9P%_-Hi<)k*!tncqWXJdYzbDnel=YRgsIoGX~ z?^hnY72!l1WA08dMoyp?|HD}Hrn>D!TtPb(Ct)l4a3gBmW=z44Q1cJi{zI5R`zuuZ z3%36v#?Zc&YMgMOn{=en@dqlfkA@~p#;KTslQG}+KZ{zp1oN=W_OC|;Zbv2b0nWs| z_WfDw5JuAfeVXGgc!drH97Rq1731&$Dk1+PZs25$qCFKgK7jF|H@=|WX#H|h+0Vm*vn@EmG~BdF3|MkV@} z?SFs)+EMIEiDsh4KaGCYH;Z^spi)#Kuc9jPMtFcRD{Z?0AELj-wmVRXcB2;DfmGdm zj9TDJ>nZD5)H*|0fR}Iv>l^=cV;;vm)b*-B1*k`zfo9ay|eU&Yz9Z(ugY&vM5Vq7o}c-L9n$58Mn>h1z)=DsTs?)V-)344@{Q zM19-uP$eHjRb(7B{yr+6FVo#f2C7mEQ1cg~Hc*b5=QQ%59kg0E;On%zkOOM2V-|YY zj@sE6z!Fr&YB3VmU=*%HCFYcHk4j_=y$myVd5EUtA5=zKO$o)I0wtl| zPscW#g*xs1=))7J%6)?>?TGEafm-M`D$WG5pz+Re=OtkH{-^MufdOQU$+H8Nga;V2 z9Jz6(26ZSmq5|zkExZSx!B1`bmVN&>szU!FeWO zWEtw)HK7kTpvHCD_Eyw4--Q~t4|6eO{Tb)cj>~a3ScHo6Jo0B=;-B#SUu$1%!JWL= ziOMucG~I#%%)}DZ;d}@6&D&9x=tS*w3#!yTsCoNQagJM0qsD)09m(bU>j&ow9e(`H zz8FV-Bg{S2y-v?_GoOd5Kq2Z=6r&P)1$F&aVJx;|05@YC4x&EoG3#|Cw27Nb{dM2x z&vgTrqIU8cs#I^GO51=+unlz`J5h=CpcXuUTIdMs|NXB~^Ttt?isU;`RO3V4iYHK& zD0O(y4@^0R7ql-LP}gZS#^XBM?m(5c8&%p~>ps-D{m5^QIc)oXvi^cfbPTo59efJ& zCwS25EF|rhaRn-&gQ!xULhblGD)8v`*o0iqp-@4>UXRCwew=jA<5?EEoS5MaO-%77 zdg?=-tlp@IGku}H+=|F;!L-1czQCI5hPviJePeS=)9UI#eO7H_b5&h)bzo&}RYT48 I=Yqrk16)TD%>V!Z delta 2720 zcmXZd4@}f$9LMqJIQ|@ePEZP{ln&4{Jo%$#xJAXt~f9j%QH6$ zndBH-%xuuYTEjJ2H%d*T<{DN5Y)RUdx|$36r^})_(b4;J_iW79^E|)j&-eL0&vWkH z(z|8k&$w`+G3K8vV-oN>s&2B4Nrog;eKBsv99)F$n1pYj`t8G8aX+g6VcY%*x~YGG znt#%^pFtP(3)vT5e8RSeQ4@Ef0(ukk z@u2-aZk<3U?ce8wV+)?8K@(m?4g3vLaRC)j>TR)!Gclg}QdIvuOhX?kkoD-r0G8lh z)I7&g8#;w|;v}+Hb2&^w6C~blOe1EZI)-sEcH#=`xAhaK0H#noJ%dW|c~t8Ezzn>K zn#W1{WHRb|x-|=zP!BJokV2spHSvA83@cEPZ$b@x0kz;us0Cj^WvUBFk{Li{>Qmc3 zhRV=1Y6BOo2}_MBr0zq;ht1Ozv_KwO~Jz zb@MK2fzPa8TE|iAOyD}4#yr+Hskx*di%`#N6KaC(s5=lsU9L{_IgI%jd8y_C+f~Nq zPzyUfvHrQprcEg-;K!_W);3gT_h49O_%;RYWCV37j^X_{fsbQqUhFQ^qV7rq>h`vx z#_dHN(OcFbR0c;-&uLL$fJ%Ke>eAKQdOK<- z-KZlNLIr*ddCBIat)E9P^_7#!3l(S&azD*5YWz2-KxQ#f@BiOe!OWu~ieohel!BTl z6BE#buc8-q+Ye$Aj-fI)j!Nx!wtWV*&=u4?^T>k6bysX$I!51rHU)LeNBWpz+o3wz zf#-<4IMaZ-lwGKa-a#!qgcbOatzWj^uc0!ufczOZ7eO1j7d5UNo!me3Fa;M@*$+>m zc2bKvyAUSfZdAW+Tkk`i`2keF5739B)}OJMx_eb@gXO4sDv>|q=bz~N@30?wv7Zn7 zQIW1;Hobx}ux5H;=)YMv9;lc@e*TTlBqfBoQ`r6C1> zw;$$^-w1O9^{#VQ$09F5WuOdo6cwm|oL#28Owc~TBiT~4i&{ykpwzdTNZWQPELTwE@>Y7^vAx|jK6m0f1QF^|/'), views.ArticleDetailView.as_view(), diff --git a/aircox/views/article.py b/aircox/views/article.py index 65d1ace..a2161a0 100644 --- a/aircox/views/article.py +++ b/aircox/views/article.py @@ -19,11 +19,7 @@ class ArticleDetailView(PageDetailView): class ArticleListView(PageListView): model = Article has_headline = True - is_static = False parent_model = Program attach_to_value = StaticPage.ATTACH_TO_ARTICLES - def get_queryset(self): - return super().get_queryset().filter(is_static=self.is_static) -