From c68e21ee5797b3e34d821a33f07bea06e3a74103 Mon Sep 17 00:00:00 2001 From: bkfox Date: Sun, 8 Sep 2019 01:39:40 +0200 Subject: [PATCH] work on logs, timetable, stats --- aircox/admin/article.py | 2 +- aircox/admin/episode.py | 2 +- aircox/admin/page.py | 5 +- aircox/converters.py | 5 +- .../__pycache__/__init__.cpython-37.pyc | Bin 577 -> 577 bytes .../models/__pycache__/episode.cpython-37.pyc | Bin 10052 -> 10052 bytes aircox/models/__pycache__/log.cpython-37.pyc | Bin 8851 -> 8961 bytes aircox/models/__pycache__/page.cpython-37.pyc | Bin 6177 -> 6177 bytes .../models/__pycache__/program.cpython-37.pyc | Bin 16813 -> 16813 bytes .../models/__pycache__/sound.cpython-37.pyc | Bin 8981 -> 8981 bytes .../models/__pycache__/station.cpython-37.pyc | Bin 4691 -> 4691 bytes aircox/models/log.py | 7 + aircox/static/aircox/admin.css | 7240 ++++++++++ aircox/static/aircox/admin.js | 328 +- aircox/static/aircox/fonts/fa-brands-400.eot | Bin 129352 -> 129590 bytes aircox/static/aircox/fonts/fa-brands-400.svg | 47 +- aircox/static/aircox/fonts/fa-brands-400.ttf | Bin 129048 -> 129284 bytes aircox/static/aircox/fonts/fa-brands-400.woff | Bin 87352 -> 87520 bytes .../static/aircox/fonts/fa-brands-400.woff2 | Bin 74508 -> 74524 bytes aircox/static/aircox/fonts/fa-regular-400.eot | Bin 34388 -> 34394 bytes aircox/static/aircox/fonts/fa-regular-400.svg | 6 +- aircox/static/aircox/fonts/fa-regular-400.ttf | Bin 34092 -> 34096 bytes .../static/aircox/fonts/fa-regular-400.woff | Bin 16804 -> 16804 bytes .../static/aircox/fonts/fa-regular-400.woff2 | Bin 13580 -> 13584 bytes aircox/static/aircox/fonts/fa-solid-900.eot | Bin 192116 -> 192122 bytes aircox/static/aircox/fonts/fa-solid-900.svg | 6 +- aircox/static/aircox/fonts/fa-solid-900.ttf | Bin 191832 -> 191836 bytes aircox/static/aircox/fonts/fa-solid-900.woff | Bin 98020 -> 98016 bytes aircox/static/aircox/fonts/fa-solid-900.woff2 | Bin 75440 -> 75408 bytes aircox/static/aircox/main.js | 299 +- aircox/static/aircox/vendor.css | 11497 +++++++++++++++- aircox/static/aircox/vendor.js | 19 +- aircox/templates/admin/aircox/statistics.html | 63 +- aircox/templates/admin/base.html | 9 +- aircox/templates/aircox/base.html | 23 +- aircox/templates/aircox/diffusion_list.html | 44 + .../templates/aircox/diffusion_timetable.html | 62 - aircox/templates/aircox/log_item.html | 9 +- aircox/templates/aircox/log_list.html | 37 +- aircox/templates/aircox/page_detail.html | 9 +- aircox/templates/aircox/player.html | 7 +- aircox/templates/aircox/program_base.html | 2 +- aircox/templates/aircox/track_item.html | 12 + .../templates/aircox/widgets/dates_menu.html | 48 + aircox/templatetags/aircox.py | 25 +- aircox/urls.py | 12 +- aircox/utils.py | 13 + aircox/views/__init__.py | 2 +- aircox/views/admin.py | 15 +- aircox/views/api.py | 37 +- aircox/views/article.py | 3 +- aircox/views/episode.py | 59 +- aircox/views/log.py | 75 +- aircox/views/mixins.py | 67 + aircox/views/page.py | 44 +- assets/admin/index.js | 10 + assets/admin/statistics.vue | 39 + assets/index.js | 10 - assets/js/index.js | 4 - assets/noscript.scss | 6 - assets/{js => public}/app.js | 5 +- assets/public/index.js | 28 + assets/{js => public}/liveInfo.js | 0 assets/{vue => public}/player.vue | 2 +- assets/{ => public}/styles.scss | 0 assets/vue/deck.vue | 28 - assets/vue/index.js | 13 - assets/vue/tab.vue | 31 - assets/vue/tabs.vue | 45 - package.json | 12 +- webpack.config.js | 20 +- 71 files changed, 19683 insertions(+), 710 deletions(-) create mode 100644 aircox/templates/aircox/diffusion_list.html delete mode 100644 aircox/templates/aircox/diffusion_timetable.html create mode 100644 aircox/templates/aircox/track_item.html create mode 100644 aircox/templates/aircox/widgets/dates_menu.html create mode 100644 aircox/views/mixins.py create mode 100644 assets/admin/statistics.vue delete mode 100644 assets/index.js delete mode 100644 assets/js/index.js delete mode 100644 assets/noscript.scss rename assets/{js => public}/app.js (82%) create mode 100644 assets/public/index.js rename assets/{js => public}/liveInfo.js (100%) rename assets/{vue => public}/player.vue (98%) rename assets/{ => public}/styles.scss (100%) delete mode 100644 assets/vue/deck.vue delete mode 100644 assets/vue/index.js delete mode 100644 assets/vue/tab.vue delete mode 100644 assets/vue/tabs.vue diff --git a/aircox/admin/article.py b/aircox/admin/article.py index b429148..b8248d2 100644 --- a/aircox/admin/article.py +++ b/aircox/admin/article.py @@ -12,7 +12,7 @@ __all__ = ['ArticleAdmin'] @admin.register(Article) class ArticleAdmin(PageAdmin): list_display = PageAdmin.list_display + ('program',) - list_filter = ('program',) + list_filter = PageAdmin.list_filter + ('program',) search_fields = PageAdmin.search_fields + ['program__title'] # TODO: readonly field diff --git a/aircox/admin/episode.py b/aircox/admin/episode.py index 08ec4ec..b41ce2f 100644 --- a/aircox/admin/episode.py +++ b/aircox/admin/episode.py @@ -49,7 +49,7 @@ class DiffusionInline(DiffusionBaseAdmin, admin.TabularInline): @admin.register(Episode) class EpisodeAdmin(PageAdmin): list_display = PageAdmin.list_display + ('program',) - list_filter = ('program',) + list_filter = PageAdmin.list_filter + ('program',) search_fields = PageAdmin.search_fields + ['program__title'] readonly_fields = ('program',) diff --git a/aircox/admin/page.py b/aircox/admin/page.py index a96f559..6cb5bc1 100644 --- a/aircox/admin/page.py +++ b/aircox/admin/page.py @@ -24,10 +24,9 @@ class PageAdmin(admin.ModelAdmin): list_display = ('cover_thumb', 'title', 'status', 'category') list_display_links = ('cover_thumb', 'title') list_editable = ('status', 'category') + list_filter = ('status', 'category') prepopulated_fields = {"slug": ("title",)} - change_form_template = 'admin/aircox/page_change_form.html' - search_fields = ['title', 'category__title'] fieldsets = [ ('', { @@ -39,6 +38,8 @@ class PageAdmin(admin.ModelAdmin): }), ] + change_form_template = 'admin/aircox/page_change_form.html' + def cover_thumb(self, obj): return mark_safe(''.format(obj.cover.icons['64'])) \ if obj.cover else '' diff --git a/aircox/converters.py b/aircox/converters.py index b694fd3..6b3d422 100644 --- a/aircox/converters.py +++ b/aircox/converters.py @@ -3,6 +3,8 @@ import datetime from django.utils.safestring import mark_safe from django.urls.converters import StringConverter +from .utils import str_to_date + class PagePathConverter(StringConverter): """ Match path for pages, including surrounding slashes. """ @@ -39,8 +41,7 @@ class DateConverter: regex = r'[0-9]{4}/[0-9]{2}/[0-9]{2}' def to_python(self, value): - value = value.split('/') - return datetime.date(int(value[0]), int(value[1]), int(value[2])) + return str_to_date(value) def to_url(self, value): return '{:04d}/{:02d}/{:02d}'.format(value.year, value.month, diff --git a/aircox/models/__pycache__/__init__.cpython-37.pyc b/aircox/models/__pycache__/__init__.cpython-37.pyc index a6d273795b0d7b28d184ff2b490b1c41e8b2de8b..f6e2bd5eea87e8f353d1dfdf16ebfa4f4bdbf863 100644 GIT binary patch delta 20 acmX@ea*&1FiIpF(nShD)*B!$W&#onOjVpd`RRJaC5c5PlX)fAGJcr6 zTXGHK_sJPjg^XV}-;z4X$jCE!iOd>C@yUU*s~CT7{v$h^kx^;#40%mPoy~{jB^enN aCSO+wU<{e8q3FfR%EQgWvbj`Iju8M{s6jpe delta 164 zcmZp4o9xQx#LLUY00eCrg|SDJHu5bHX3X2XUf7w@AVoPvrG+6%Emb{5HASt3p_wsC z1IX4%(MZv3VFdCtQ?ydFfhx38)Por`bvNsYUSMW?F!{fP`s7B*1&l8zD@mzA@4O diff --git a/aircox/models/__pycache__/page.cpython-37.pyc b/aircox/models/__pycache__/page.cpython-37.pyc index 312883e2baa7c3f5ac6957dcdc6c52c7b4a68868..a02bef35810aa68f68b71cac33d7e55473016b24 100644 GIT binary patch delta 20 acmZ2zu+V_piIJX