From e996d4d5f82ef9fdbaa6d64122346b5a54c97c86 Mon Sep 17 00:00:00 2001 From: charlie Date: Fri, 29 Nov 2024 20:15:48 +0600 Subject: [PATCH] Fly deployment --- .dockerignore | 5 + .github/workflows/fly-deploy.yml | 18 + .gitignore | 3 +- Dockerfile | 30 + articles/admin.py | 10 +- articles/forms.py | 9 + articles/migrations/0002_comment.py | 45 + articles/models.py | 17 +- articles/views.py | 49 +- django_project/settings.py | 28 +- django_project/urls.py | 2 +- fly.toml | 33 + requirements.txt | 24 + static/css/.keep | 0 static/img/.keep | 0 static/js/.keep | 0 staticfiles/admin/css/autocomplete.css | 279 + staticfiles/admin/css/autocomplete.css.gz | Bin 0 -> 1159 bytes .../admin/css/autocomplete.d24f10bdee41.css | 279 + .../css/autocomplete.d24f10bdee41.css.gz | Bin 0 -> 1159 bytes staticfiles/admin/css/base.08e8df8c3104.css | 1179 ++ .../admin/css/base.08e8df8c3104.css.gz | Bin 0 -> 5068 bytes staticfiles/admin/css/base.css | 1179 ++ staticfiles/admin/css/base.css.gz | Bin 0 -> 4939 bytes .../admin/css/changelists.59465e72d1ef.css | 343 + .../admin/css/changelists.59465e72d1ef.css.gz | Bin 0 -> 1633 bytes staticfiles/admin/css/changelists.css | 343 + staticfiles/admin/css/changelists.css.gz | Bin 0 -> 1633 bytes staticfiles/admin/css/dark_mode.css | 130 + staticfiles/admin/css/dark_mode.css.gz | Bin 0 -> 790 bytes .../admin/css/dark_mode.f9ffd47267af.css | 130 + .../admin/css/dark_mode.f9ffd47267af.css.gz | Bin 0 -> 790 bytes staticfiles/admin/css/dashboard.css | 29 + staticfiles/admin/css/dashboard.css.gz | Bin 0 -> 267 bytes .../admin/css/dashboard.e90f2068217b.css | 29 + .../admin/css/dashboard.e90f2068217b.css.gz | Bin 0 -> 267 bytes staticfiles/admin/css/forms.86203f0362cc.css | 512 + .../admin/css/forms.86203f0362cc.css.gz | Bin 0 -> 2252 bytes staticfiles/admin/css/forms.css | 512 + staticfiles/admin/css/forms.css.gz | Bin 0 -> 2216 bytes staticfiles/admin/css/login.a3b47c458e5d.css | 61 + .../admin/css/login.a3b47c458e5d.css.gz | Bin 0 -> 417 bytes staticfiles/admin/css/login.css | 61 + staticfiles/admin/css/login.css.gz | Bin 0 -> 417 bytes staticfiles/admin/css/nav_sidebar.css | 150 + staticfiles/admin/css/nav_sidebar.css.gz | Bin 0 -> 811 bytes .../admin/css/nav_sidebar.dd925738f4cc.css | 150 + .../admin/css/nav_sidebar.dd925738f4cc.css.gz | Bin 0 -> 811 bytes .../admin/css/responsive.ae7b57af01c8.css | 967 ++ .../admin/css/responsive.ae7b57af01c8.css.gz | Bin 0 -> 3444 bytes staticfiles/admin/css/responsive.css | 967 ++ staticfiles/admin/css/responsive.css.gz | Bin 0 -> 3444 bytes .../admin/css/responsive_rtl.a154194876ee.css | 111 + .../css/responsive_rtl.a154194876ee.css.gz | Bin 0 -> 599 bytes staticfiles/admin/css/responsive_rtl.css | 111 + staticfiles/admin/css/responsive_rtl.css.gz | Bin 0 -> 599 bytes staticfiles/admin/css/rtl.7e532512b807.css | 291 + staticfiles/admin/css/rtl.7e532512b807.css.gz | Bin 0 -> 1267 bytes staticfiles/admin/css/rtl.css | 291 + staticfiles/admin/css/rtl.css.gz | Bin 0 -> 1240 bytes .../unusable_password_field.b433f2a95fba.css | 19 + ...nusable_password_field.b433f2a95fba.css.gz | Bin 0 -> 228 bytes .../admin/css/unusable_password_field.css | 19 + .../admin/css/unusable_password_field.css.gz | Bin 0 -> 228 bytes .../select2/LICENSE-SELECT2.f94142512c91.md | 21 + .../LICENSE-SELECT2.f94142512c91.md.gz | Bin 0 -> 685 bytes .../css/vendor/select2/LICENSE-SELECT2.md | 21 + .../css/vendor/select2/LICENSE-SELECT2.md.gz | Bin 0 -> 685 bytes .../vendor/select2/select2.a2194c262648.css | 481 + .../select2/select2.a2194c262648.css.gz | Bin 0 -> 2232 bytes .../admin/css/vendor/select2/select2.css | 481 + .../admin/css/vendor/select2/select2.css.gz | Bin 0 -> 2232 bytes .../select2/select2.min.9f54e6414f87.css | 1 + .../select2/select2.min.9f54e6414f87.css.gz | Bin 0 -> 1978 bytes .../admin/css/vendor/select2/select2.min.css | 1 + .../css/vendor/select2/select2.min.css.gz | Bin 0 -> 1978 bytes .../admin/css/widgets.355d088349f3.css | 593 + .../admin/css/widgets.355d088349f3.css.gz | Bin 0 -> 2511 bytes staticfiles/admin/css/widgets.css | 593 + staticfiles/admin/css/widgets.css.gz | Bin 0 -> 2422 bytes staticfiles/admin/img/LICENSE | 20 + staticfiles/admin/img/LICENSE.2c54f4e1ca1c | 20 + staticfiles/admin/img/LICENSE.2c54f4e1ca1c.gz | Bin 0 -> 656 bytes staticfiles/admin/img/LICENSE.gz | Bin 0 -> 656 bytes staticfiles/admin/img/README.9849248c9207.txt | 7 + .../admin/img/README.9849248c9207.txt.gz | Bin 0 -> 212 bytes staticfiles/admin/img/README.txt | 7 + staticfiles/admin/img/README.txt.gz | Bin 0 -> 212 bytes .../admin/img/calendar-icons.93ab098d1ac1.svg | 63 + .../img/calendar-icons.93ab098d1ac1.svg.gz | Bin 0 -> 910 bytes staticfiles/admin/img/calendar-icons.svg | 63 + staticfiles/admin/img/calendar-icons.svg.gz | Bin 0 -> 910 bytes .../img/gis/move_vertex_off.7a23bf31ef8a.svg | 1 + .../gis/move_vertex_off.7a23bf31ef8a.svg.gz | Bin 0 -> 470 bytes staticfiles/admin/img/gis/move_vertex_off.svg | 1 + .../admin/img/gis/move_vertex_off.svg.gz | Bin 0 -> 470 bytes .../img/gis/move_vertex_on.0047eba25b67.svg | 1 + .../gis/move_vertex_on.0047eba25b67.svg.gz | Bin 0 -> 472 bytes staticfiles/admin/img/gis/move_vertex_on.svg | 1 + .../admin/img/gis/move_vertex_on.svg.gz | Bin 0 -> 472 bytes .../admin/img/icon-addlink.073aeb1feda7.svg | 3 + .../img/icon-addlink.073aeb1feda7.svg.gz | Bin 0 -> 207 bytes staticfiles/admin/img/icon-addlink.svg | 3 + staticfiles/admin/img/icon-addlink.svg.gz | Bin 0 -> 207 bytes .../admin/img/icon-alert.034cc7d8a67f.svg | 3 + .../admin/img/icon-alert.034cc7d8a67f.svg.gz | Bin 0 -> 329 bytes staticfiles/admin/img/icon-alert.svg | 3 + staticfiles/admin/img/icon-alert.svg.gz | Bin 0 -> 329 bytes .../admin/img/icon-calendar.ac7aea671bea.svg | 9 + .../img/icon-calendar.ac7aea671bea.svg.gz | Bin 0 -> 438 bytes staticfiles/admin/img/icon-calendar.svg | 9 + staticfiles/admin/img/icon-calendar.svg.gz | Bin 0 -> 438 bytes .../img/icon-changelink.7eddb320e61f.svg | 3 + .../img/icon-changelink.7eddb320e61f.svg.gz | Bin 0 -> 269 bytes staticfiles/admin/img/icon-changelink.svg | 3 + staticfiles/admin/img/icon-changelink.svg.gz | Bin 0 -> 269 bytes .../admin/img/icon-clock.e1d4dfac3f2b.svg | 9 + .../admin/img/icon-clock.e1d4dfac3f2b.svg.gz | Bin 0 -> 357 bytes staticfiles/admin/img/icon-clock.svg | 9 + staticfiles/admin/img/icon-clock.svg.gz | Bin 0 -> 357 bytes .../img/icon-deletelink.564ef9dc3854.svg | 3 + .../img/icon-deletelink.564ef9dc3854.svg.gz | Bin 0 -> 221 bytes staticfiles/admin/img/icon-deletelink.svg | 3 + staticfiles/admin/img/icon-deletelink.svg.gz | Bin 0 -> 221 bytes .../admin/img/icon-hidelink.8d245a995e18.svg | 3 + .../img/icon-hidelink.8d245a995e18.svg.gz | Bin 0 -> 495 bytes staticfiles/admin/img/icon-hidelink.svg | 3 + staticfiles/admin/img/icon-hidelink.svg.gz | Bin 0 -> 495 bytes .../admin/img/icon-no.439e821418cd.svg | 3 + .../admin/img/icon-no.439e821418cd.svg.gz | Bin 0 -> 297 bytes staticfiles/admin/img/icon-no.svg | 3 + staticfiles/admin/img/icon-no.svg.gz | Bin 0 -> 297 bytes .../img/icon-unknown-alt.81536e128bb6.svg | 3 + .../img/icon-unknown-alt.81536e128bb6.svg.gz | Bin 0 -> 377 bytes staticfiles/admin/img/icon-unknown-alt.svg | 3 + staticfiles/admin/img/icon-unknown-alt.svg.gz | Bin 0 -> 377 bytes .../admin/img/icon-unknown.a18cb4398978.svg | 3 + .../img/icon-unknown.a18cb4398978.svg.gz | Bin 0 -> 377 bytes staticfiles/admin/img/icon-unknown.svg | 3 + staticfiles/admin/img/icon-unknown.svg.gz | Bin 0 -> 377 bytes .../admin/img/icon-viewlink.41eb31f7826e.svg | 3 + .../img/icon-viewlink.41eb31f7826e.svg.gz | Bin 0 -> 346 bytes staticfiles/admin/img/icon-viewlink.svg | 3 + staticfiles/admin/img/icon-viewlink.svg.gz | Bin 0 -> 346 bytes .../admin/img/icon-yes.d2f9f035226a.svg | 3 + .../admin/img/icon-yes.d2f9f035226a.svg.gz | Bin 0 -> 266 bytes staticfiles/admin/img/icon-yes.svg | 3 + staticfiles/admin/img/icon-yes.svg.gz | Bin 0 -> 266 bytes .../admin/img/inline-delete.fec1b761f254.svg | 3 + .../img/inline-delete.fec1b761f254.svg.gz | Bin 0 -> 293 bytes staticfiles/admin/img/inline-delete.svg | 3 + staticfiles/admin/img/inline-delete.svg.gz | Bin 0 -> 293 bytes staticfiles/admin/img/search.7cf54ff789c6.svg | 3 + .../admin/img/search.7cf54ff789c6.svg.gz | Bin 0 -> 264 bytes staticfiles/admin/img/search.svg | 3 + staticfiles/admin/img/search.svg.gz | Bin 0 -> 264 bytes .../admin/img/selector-icons.b4555096cea2.svg | 34 + .../img/selector-icons.b4555096cea2.svg.gz | Bin 0 -> 770 bytes staticfiles/admin/img/selector-icons.svg | 34 + staticfiles/admin/img/selector-icons.svg.gz | Bin 0 -> 770 bytes .../admin/img/sorting-icons.3a097b59f104.svg | 19 + .../img/sorting-icons.3a097b59f104.svg.gz | Bin 0 -> 366 bytes staticfiles/admin/img/sorting-icons.svg | 19 + staticfiles/admin/img/sorting-icons.svg.gz | Bin 0 -> 366 bytes .../admin/img/tooltag-add.e59d620a9742.svg | 3 + .../admin/img/tooltag-add.e59d620a9742.svg.gz | Bin 0 -> 203 bytes staticfiles/admin/img/tooltag-add.svg | 3 + staticfiles/admin/img/tooltag-add.svg.gz | Bin 0 -> 203 bytes .../img/tooltag-arrowright.bbfb788a849e.svg | 3 + .../tooltag-arrowright.bbfb788a849e.svg.gz | Bin 0 -> 194 bytes staticfiles/admin/img/tooltag-arrowright.svg | 3 + .../admin/img/tooltag-arrowright.svg.gz | Bin 0 -> 194 bytes .../admin/js/SelectBox.7d3ce5a98007.js | 116 + .../admin/js/SelectBox.7d3ce5a98007.js.gz | Bin 0 -> 1025 bytes staticfiles/admin/js/SelectBox.js | 116 + staticfiles/admin/js/SelectBox.js.gz | Bin 0 -> 1025 bytes .../admin/js/SelectFilter2.b20260d34877.js | 286 + .../admin/js/SelectFilter2.b20260d34877.js.gz | Bin 0 -> 2985 bytes staticfiles/admin/js/SelectFilter2.js | 286 + staticfiles/admin/js/SelectFilter2.js.gz | Bin 0 -> 2985 bytes staticfiles/admin/js/actions.f1d5653edb59.js | 204 + .../admin/js/actions.f1d5653edb59.js.gz | Bin 0 -> 1941 bytes staticfiles/admin/js/actions.js | 204 + staticfiles/admin/js/actions.js.gz | Bin 0 -> 1941 bytes .../admin/DateTimeShortcuts.9f6e209cebca.js | 408 + .../DateTimeShortcuts.9f6e209cebca.js.gz | Bin 0 -> 3645 bytes .../admin/js/admin/DateTimeShortcuts.js | 408 + .../admin/js/admin/DateTimeShortcuts.js.gz | Bin 0 -> 3645 bytes .../RelatedObjectLookups.874743a87811.js | 240 + .../RelatedObjectLookups.874743a87811.js.gz | Bin 0 -> 2346 bytes .../admin/js/admin/RelatedObjectLookups.js | 240 + .../admin/js/admin/RelatedObjectLookups.js.gz | Bin 0 -> 2346 bytes .../admin/js/autocomplete.01591ab27be7.js | 33 + .../admin/js/autocomplete.01591ab27be7.js.gz | Bin 0 -> 425 bytes staticfiles/admin/js/autocomplete.js | 33 + staticfiles/admin/js/autocomplete.js.gz | Bin 0 -> 425 bytes staticfiles/admin/js/calendar.d64496bbf46d.js | 239 + .../admin/js/calendar.d64496bbf46d.js.gz | Bin 0 -> 2278 bytes staticfiles/admin/js/calendar.js | 239 + staticfiles/admin/js/calendar.js.gz | Bin 0 -> 2278 bytes staticfiles/admin/js/cancel.ecc4c5ca7b32.js | 29 + .../admin/js/cancel.ecc4c5ca7b32.js.gz | Bin 0 -> 430 bytes staticfiles/admin/js/cancel.js | 29 + staticfiles/admin/js/cancel.js.gz | Bin 0 -> 430 bytes .../admin/js/change_form.9d8ca4f96b75.js | 16 + .../admin/js/change_form.9d8ca4f96b75.js.gz | Bin 0 -> 322 bytes staticfiles/admin/js/change_form.js | 16 + staticfiles/admin/js/change_form.js.gz | Bin 0 -> 322 bytes staticfiles/admin/js/core.7e257fdf56dc.js | 184 + staticfiles/admin/js/core.7e257fdf56dc.js.gz | Bin 0 -> 1550 bytes staticfiles/admin/js/core.js | 184 + staticfiles/admin/js/core.js.gz | Bin 0 -> 1550 bytes staticfiles/admin/js/filters.0e360b7a9f80.js | 30 + .../admin/js/filters.0e360b7a9f80.js.gz | Bin 0 -> 502 bytes staticfiles/admin/js/filters.js | 30 + staticfiles/admin/js/filters.js.gz | Bin 0 -> 502 bytes staticfiles/admin/js/inlines.22d4d93c00b4.js | 359 + .../admin/js/inlines.22d4d93c00b4.js.gz | Bin 0 -> 3744 bytes staticfiles/admin/js/inlines.js | 359 + staticfiles/admin/js/inlines.js.gz | Bin 0 -> 3744 bytes .../admin/js/jquery.init.b7781a0897fc.js | 8 + .../admin/js/jquery.init.b7781a0897fc.js.gz | Bin 0 -> 236 bytes staticfiles/admin/js/jquery.init.js | 8 + staticfiles/admin/js/jquery.init.js.gz | Bin 0 -> 236 bytes .../admin/js/nav_sidebar.3b9190d420b1.js | 79 + .../admin/js/nav_sidebar.3b9190d420b1.js.gz | Bin 0 -> 845 bytes staticfiles/admin/js/nav_sidebar.js | 79 + staticfiles/admin/js/nav_sidebar.js.gz | Bin 0 -> 845 bytes .../admin/js/popup_response.96190d343c22.js | 15 + .../js/popup_response.96190d343c22.js.gz | Bin 0 -> 258 bytes staticfiles/admin/js/popup_response.js | 15 + staticfiles/admin/js/popup_response.js.gz | Bin 0 -> 258 bytes .../admin/js/prepopulate.bd2361dfd64d.js | 43 + .../admin/js/prepopulate.bd2361dfd64d.js.gz | Bin 0 -> 536 bytes staticfiles/admin/js/prepopulate.js | 43 + staticfiles/admin/js/prepopulate.js.gz | Bin 0 -> 536 bytes .../admin/js/prepopulate_init.6cac7f3105b8.js | 15 + .../js/prepopulate_init.6cac7f3105b8.js.gz | Bin 0 -> 277 bytes staticfiles/admin/js/prepopulate_init.js | 15 + staticfiles/admin/js/prepopulate_init.js.gz | Bin 0 -> 277 bytes staticfiles/admin/js/theme.91cf832f559e.js | 51 + staticfiles/admin/js/theme.91cf832f559e.js.gz | Bin 0 -> 564 bytes staticfiles/admin/js/theme.js | 51 + staticfiles/admin/js/theme.js.gz | Bin 0 -> 564 bytes .../unusable_password_field.017ea86b6ae4.js | 29 + ...unusable_password_field.017ea86b6ae4.js.gz | Bin 0 -> 580 bytes .../admin/js/unusable_password_field.js | 29 + .../admin/js/unusable_password_field.js.gz | Bin 0 -> 580 bytes staticfiles/admin/js/urlify.ae970a820212.js | 169 + .../admin/js/urlify.ae970a820212.js.gz | Bin 0 -> 2578 bytes staticfiles/admin/js/urlify.js | 169 + staticfiles/admin/js/urlify.js.gz | Bin 0 -> 2578 bytes .../js/vendor/jquery/LICENSE.de877aa6d744.txt | 20 + .../vendor/jquery/LICENSE.de877aa6d744.txt.gz | Bin 0 -> 656 bytes .../admin/js/vendor/jquery/LICENSE.txt | 20 + .../admin/js/vendor/jquery/LICENSE.txt.gz | Bin 0 -> 656 bytes .../js/vendor/jquery/jquery.12e87d2f3a4c.js | 10716 ++++++++++++++++ .../vendor/jquery/jquery.12e87d2f3a4c.js.gz | Bin 0 -> 83619 bytes staticfiles/admin/js/vendor/jquery/jquery.js | 10716 ++++++++++++++++ .../admin/js/vendor/jquery/jquery.js.gz | Bin 0 -> 83619 bytes .../vendor/jquery/jquery.min.2c872dbe60f4.js | 2 + .../jquery/jquery.min.2c872dbe60f4.js.gz | Bin 0 -> 30336 bytes .../admin/js/vendor/jquery/jquery.min.js | 2 + .../admin/js/vendor/jquery/jquery.min.js.gz | Bin 0 -> 30336 bytes .../js/vendor/select2/LICENSE.f94142512c91.md | 21 + .../vendor/select2/LICENSE.f94142512c91.md.gz | Bin 0 -> 685 bytes .../admin/js/vendor/select2/LICENSE.md | 21 + .../admin/js/vendor/select2/LICENSE.md.gz | Bin 0 -> 685 bytes .../js/vendor/select2/i18n/af.4f6fcd73488c.js | 3 + .../vendor/select2/i18n/af.4f6fcd73488c.js.gz | Bin 0 -> 460 bytes .../admin/js/vendor/select2/i18n/af.js | 3 + .../admin/js/vendor/select2/i18n/af.js.gz | Bin 0 -> 460 bytes .../js/vendor/select2/i18n/ar.65aa8e36bf5d.js | 3 + .../vendor/select2/i18n/ar.65aa8e36bf5d.js.gz | Bin 0 -> 498 bytes .../admin/js/vendor/select2/i18n/ar.js | 3 + .../admin/js/vendor/select2/i18n/ar.js.gz | Bin 0 -> 498 bytes .../js/vendor/select2/i18n/az.270c257daf81.js | 3 + .../vendor/select2/i18n/az.270c257daf81.js.gz | Bin 0 -> 413 bytes .../admin/js/vendor/select2/i18n/az.js | 3 + .../admin/js/vendor/select2/i18n/az.js.gz | Bin 0 -> 413 bytes .../js/vendor/select2/i18n/bg.39b8be30d4f0.js | 3 + .../vendor/select2/i18n/bg.39b8be30d4f0.js.gz | Bin 0 -> 541 bytes .../admin/js/vendor/select2/i18n/bg.js | 3 + .../admin/js/vendor/select2/i18n/bg.js.gz | Bin 0 -> 541 bytes .../js/vendor/select2/i18n/bn.6d42b4dd5665.js | 3 + .../vendor/select2/i18n/bn.6d42b4dd5665.js.gz | Bin 0 -> 553 bytes .../admin/js/vendor/select2/i18n/bn.js | 3 + .../admin/js/vendor/select2/i18n/bn.js.gz | Bin 0 -> 553 bytes .../js/vendor/select2/i18n/bs.91624382358e.js | 3 + .../vendor/select2/i18n/bs.91624382358e.js.gz | Bin 0 -> 523 bytes .../admin/js/vendor/select2/i18n/bs.js | 3 + .../admin/js/vendor/select2/i18n/bs.js.gz | Bin 0 -> 523 bytes .../js/vendor/select2/i18n/ca.a166b745933a.js | 3 + .../vendor/select2/i18n/ca.a166b745933a.js.gz | Bin 0 -> 470 bytes .../admin/js/vendor/select2/i18n/ca.js | 3 + .../admin/js/vendor/select2/i18n/ca.js.gz | Bin 0 -> 470 bytes .../js/vendor/select2/i18n/cs.4f43e8e7d33a.js | 3 + .../vendor/select2/i18n/cs.4f43e8e7d33a.js.gz | Bin 0 -> 623 bytes .../admin/js/vendor/select2/i18n/cs.js | 3 + .../admin/js/vendor/select2/i18n/cs.js.gz | Bin 0 -> 623 bytes .../js/vendor/select2/i18n/da.766346afe4dd.js | 3 + .../vendor/select2/i18n/da.766346afe4dd.js.gz | Bin 0 -> 441 bytes .../admin/js/vendor/select2/i18n/da.js | 3 + .../admin/js/vendor/select2/i18n/da.js.gz | Bin 0 -> 441 bytes .../js/vendor/select2/i18n/de.8a1c222b0204.js | 3 + .../vendor/select2/i18n/de.8a1c222b0204.js.gz | Bin 0 -> 467 bytes .../admin/js/vendor/select2/i18n/de.js | 3 + .../admin/js/vendor/select2/i18n/de.js.gz | Bin 0 -> 467 bytes .../vendor/select2/i18n/dsb.56372c92d2f1.js | 3 + .../select2/i18n/dsb.56372c92d2f1.js.gz | Bin 0 -> 551 bytes .../admin/js/vendor/select2/i18n/dsb.js | 3 + .../admin/js/vendor/select2/i18n/dsb.js.gz | Bin 0 -> 551 bytes .../js/vendor/select2/i18n/el.27097f071856.js | 3 + .../vendor/select2/i18n/el.27097f071856.js.gz | Bin 0 -> 644 bytes .../admin/js/vendor/select2/i18n/el.js | 3 + .../admin/js/vendor/select2/i18n/el.js.gz | Bin 0 -> 644 bytes .../js/vendor/select2/i18n/en.cf932ba09a98.js | 3 + .../vendor/select2/i18n/en.cf932ba09a98.js.gz | Bin 0 -> 447 bytes .../admin/js/vendor/select2/i18n/en.js | 3 + .../admin/js/vendor/select2/i18n/en.js.gz | Bin 0 -> 447 bytes .../js/vendor/select2/i18n/es.66dbc2652fb1.js | 3 + .../vendor/select2/i18n/es.66dbc2652fb1.js.gz | Bin 0 -> 474 bytes .../admin/js/vendor/select2/i18n/es.js | 3 + .../admin/js/vendor/select2/i18n/es.js.gz | Bin 0 -> 474 bytes .../js/vendor/select2/i18n/et.2b96fd98289d.js | 3 + .../vendor/select2/i18n/et.2b96fd98289d.js.gz | Bin 0 -> 432 bytes .../admin/js/vendor/select2/i18n/et.js | 3 + .../admin/js/vendor/select2/i18n/et.js.gz | Bin 0 -> 432 bytes .../js/vendor/select2/i18n/eu.adfe5c97b72c.js | 3 + .../vendor/select2/i18n/eu.adfe5c97b72c.js.gz | Bin 0 -> 450 bytes .../admin/js/vendor/select2/i18n/eu.js | 3 + .../admin/js/vendor/select2/i18n/eu.js.gz | Bin 0 -> 450 bytes .../js/vendor/select2/i18n/fa.3b5bd1961cfd.js | 3 + .../vendor/select2/i18n/fa.3b5bd1961cfd.js.gz | Bin 0 -> 538 bytes .../admin/js/vendor/select2/i18n/fa.js | 3 + .../admin/js/vendor/select2/i18n/fa.js.gz | Bin 0 -> 538 bytes .../js/vendor/select2/i18n/fi.614ec42aa9ba.js | 3 + .../vendor/select2/i18n/fi.614ec42aa9ba.js.gz | Bin 0 -> 429 bytes .../admin/js/vendor/select2/i18n/fi.js | 3 + .../admin/js/vendor/select2/i18n/fi.js.gz | Bin 0 -> 429 bytes .../js/vendor/select2/i18n/fr.05e0542fcfe6.js | 3 + .../vendor/select2/i18n/fr.05e0542fcfe6.js.gz | Bin 0 -> 484 bytes .../admin/js/vendor/select2/i18n/fr.js | 3 + .../admin/js/vendor/select2/i18n/fr.js.gz | Bin 0 -> 484 bytes .../js/vendor/select2/i18n/gl.d99b1fedaa86.js | 3 + .../vendor/select2/i18n/gl.d99b1fedaa86.js.gz | Bin 0 -> 465 bytes .../admin/js/vendor/select2/i18n/gl.js | 3 + .../admin/js/vendor/select2/i18n/gl.js.gz | Bin 0 -> 465 bytes .../js/vendor/select2/i18n/he.e420ff6cd3ed.js | 3 + .../vendor/select2/i18n/he.e420ff6cd3ed.js.gz | Bin 0 -> 518 bytes .../admin/js/vendor/select2/i18n/he.js | 3 + .../admin/js/vendor/select2/i18n/he.js.gz | Bin 0 -> 518 bytes .../js/vendor/select2/i18n/hi.70640d41628f.js | 3 + .../vendor/select2/i18n/hi.70640d41628f.js.gz | Bin 0 -> 572 bytes .../admin/js/vendor/select2/i18n/hi.js | 3 + .../admin/js/vendor/select2/i18n/hi.js.gz | Bin 0 -> 572 bytes .../js/vendor/select2/i18n/hr.a2b092cc1147.js | 3 + .../vendor/select2/i18n/hr.a2b092cc1147.js.gz | Bin 0 -> 477 bytes .../admin/js/vendor/select2/i18n/hr.js | 3 + .../admin/js/vendor/select2/i18n/hr.js.gz | Bin 0 -> 477 bytes .../vendor/select2/i18n/hsb.fa3b55265efe.js | 3 + .../select2/i18n/hsb.fa3b55265efe.js.gz | Bin 0 -> 556 bytes .../admin/js/vendor/select2/i18n/hsb.js | 3 + .../admin/js/vendor/select2/i18n/hsb.js.gz | Bin 0 -> 556 bytes .../js/vendor/select2/i18n/hu.6ec6039cb8a3.js | 3 + .../vendor/select2/i18n/hu.6ec6039cb8a3.js.gz | Bin 0 -> 467 bytes .../admin/js/vendor/select2/i18n/hu.js | 3 + .../admin/js/vendor/select2/i18n/hu.js.gz | Bin 0 -> 467 bytes .../js/vendor/select2/i18n/hy.c7babaeef5a6.js | 3 + .../vendor/select2/i18n/hy.c7babaeef5a6.js.gz | Bin 0 -> 530 bytes .../admin/js/vendor/select2/i18n/hy.js | 3 + .../admin/js/vendor/select2/i18n/hy.js.gz | Bin 0 -> 530 bytes .../js/vendor/select2/i18n/id.04debded514d.js | 3 + .../vendor/select2/i18n/id.04debded514d.js.gz | Bin 0 -> 416 bytes .../admin/js/vendor/select2/i18n/id.js | 3 + .../admin/js/vendor/select2/i18n/id.js.gz | Bin 0 -> 416 bytes .../js/vendor/select2/i18n/is.3ddd9a6a97e9.js | 3 + .../vendor/select2/i18n/is.3ddd9a6a97e9.js.gz | Bin 0 -> 465 bytes .../admin/js/vendor/select2/i18n/is.js | 3 + .../admin/js/vendor/select2/i18n/is.js.gz | Bin 0 -> 465 bytes .../js/vendor/select2/i18n/it.be4fe8d365b5.js | 3 + .../vendor/select2/i18n/it.be4fe8d365b5.js.gz | Bin 0 -> 488 bytes .../admin/js/vendor/select2/i18n/it.js | 3 + .../admin/js/vendor/select2/i18n/it.js.gz | Bin 0 -> 488 bytes .../js/vendor/select2/i18n/ja.170ae885d74f.js | 3 + .../vendor/select2/i18n/ja.170ae885d74f.js.gz | Bin 0 -> 511 bytes .../admin/js/vendor/select2/i18n/ja.js | 3 + .../admin/js/vendor/select2/i18n/ja.js.gz | Bin 0 -> 511 bytes .../js/vendor/select2/i18n/ka.2083264a54f0.js | 3 + .../vendor/select2/i18n/ka.2083264a54f0.js.gz | Bin 0 -> 533 bytes .../admin/js/vendor/select2/i18n/ka.js | 3 + .../admin/js/vendor/select2/i18n/ka.js.gz | Bin 0 -> 533 bytes .../js/vendor/select2/i18n/km.c23089cb06ca.js | 3 + .../vendor/select2/i18n/km.c23089cb06ca.js.gz | Bin 0 -> 540 bytes .../admin/js/vendor/select2/i18n/km.js | 3 + .../admin/js/vendor/select2/i18n/km.js.gz | Bin 0 -> 540 bytes .../js/vendor/select2/i18n/ko.e7be6c20e673.js | 3 + .../vendor/select2/i18n/ko.e7be6c20e673.js.gz | Bin 0 -> 506 bytes .../admin/js/vendor/select2/i18n/ko.js | 3 + .../admin/js/vendor/select2/i18n/ko.js.gz | Bin 0 -> 506 bytes .../js/vendor/select2/i18n/lt.23c7ce903300.js | 3 + .../vendor/select2/i18n/lt.23c7ce903300.js.gz | Bin 0 -> 521 bytes .../admin/js/vendor/select2/i18n/lt.js | 3 + .../admin/js/vendor/select2/i18n/lt.js.gz | Bin 0 -> 521 bytes .../js/vendor/select2/i18n/lv.08e62128eac1.js | 3 + .../vendor/select2/i18n/lv.08e62128eac1.js.gz | Bin 0 -> 505 bytes .../admin/js/vendor/select2/i18n/lv.js | 3 + .../admin/js/vendor/select2/i18n/lv.js.gz | Bin 0 -> 505 bytes .../js/vendor/select2/i18n/mk.dabbb9087130.js | 3 + .../vendor/select2/i18n/mk.dabbb9087130.js.gz | Bin 0 -> 557 bytes .../admin/js/vendor/select2/i18n/mk.js | 3 + .../admin/js/vendor/select2/i18n/mk.js.gz | Bin 0 -> 557 bytes .../js/vendor/select2/i18n/ms.4ba82c9a51ce.js | 3 + .../vendor/select2/i18n/ms.4ba82c9a51ce.js.gz | Bin 0 -> 436 bytes .../admin/js/vendor/select2/i18n/ms.js | 3 + .../admin/js/vendor/select2/i18n/ms.js.gz | Bin 0 -> 436 bytes .../js/vendor/select2/i18n/nb.da2fce143f27.js | 3 + .../vendor/select2/i18n/nb.da2fce143f27.js.gz | Bin 0 -> 413 bytes .../admin/js/vendor/select2/i18n/nb.js | 3 + .../admin/js/vendor/select2/i18n/nb.js.gz | Bin 0 -> 413 bytes .../js/vendor/select2/i18n/ne.3d79fd3f08db.js | 3 + .../vendor/select2/i18n/ne.3d79fd3f08db.js.gz | Bin 0 -> 591 bytes .../admin/js/vendor/select2/i18n/ne.js | 3 + .../admin/js/vendor/select2/i18n/ne.js.gz | Bin 0 -> 591 bytes .../js/vendor/select2/i18n/nl.997868a37ed8.js | 3 + .../vendor/select2/i18n/nl.997868a37ed8.js.gz | Bin 0 -> 469 bytes .../admin/js/vendor/select2/i18n/nl.js | 3 + .../admin/js/vendor/select2/i18n/nl.js.gz | Bin 0 -> 469 bytes .../js/vendor/select2/i18n/pl.6031b4f16452.js | 3 + .../vendor/select2/i18n/pl.6031b4f16452.js.gz | Bin 0 -> 524 bytes .../admin/js/vendor/select2/i18n/pl.js | 3 + .../admin/js/vendor/select2/i18n/pl.js.gz | Bin 0 -> 524 bytes .../js/vendor/select2/i18n/ps.38dfa47af9e0.js | 3 + .../vendor/select2/i18n/ps.38dfa47af9e0.js.gz | Bin 0 -> 587 bytes .../admin/js/vendor/select2/i18n/ps.js | 3 + .../admin/js/vendor/select2/i18n/ps.js.gz | Bin 0 -> 587 bytes .../vendor/select2/i18n/pt-BR.e1b294433e7f.js | 3 + .../select2/i18n/pt-BR.e1b294433e7f.js.gz | Bin 0 -> 486 bytes .../admin/js/vendor/select2/i18n/pt-BR.js | 3 + .../admin/js/vendor/select2/i18n/pt-BR.js.gz | Bin 0 -> 486 bytes .../js/vendor/select2/i18n/pt.33b4a3b44d43.js | 3 + .../vendor/select2/i18n/pt.33b4a3b44d43.js.gz | Bin 0 -> 470 bytes .../admin/js/vendor/select2/i18n/pt.js | 3 + .../admin/js/vendor/select2/i18n/pt.js.gz | Bin 0 -> 470 bytes .../js/vendor/select2/i18n/ro.f75cb460ec3b.js | 3 + .../vendor/select2/i18n/ro.f75cb460ec3b.js.gz | Bin 0 -> 511 bytes .../admin/js/vendor/select2/i18n/ro.js | 3 + .../admin/js/vendor/select2/i18n/ro.js.gz | Bin 0 -> 511 bytes .../js/vendor/select2/i18n/ru.934aa95f5b5f.js | 3 + .../vendor/select2/i18n/ru.934aa95f5b5f.js.gz | Bin 0 -> 632 bytes .../admin/js/vendor/select2/i18n/ru.js | 3 + .../admin/js/vendor/select2/i18n/ru.js.gz | Bin 0 -> 632 bytes .../js/vendor/select2/i18n/sk.33d02cef8d11.js | 3 + .../vendor/select2/i18n/sk.33d02cef8d11.js.gz | Bin 0 -> 617 bytes .../admin/js/vendor/select2/i18n/sk.js | 3 + .../admin/js/vendor/select2/i18n/sk.js.gz | Bin 0 -> 617 bytes .../js/vendor/select2/i18n/sl.131a78bc0752.js | 3 + .../vendor/select2/i18n/sl.131a78bc0752.js.gz | Bin 0 -> 487 bytes .../admin/js/vendor/select2/i18n/sl.js | 3 + .../admin/js/vendor/select2/i18n/sl.js.gz | Bin 0 -> 487 bytes .../js/vendor/select2/i18n/sq.5636b60d29c9.js | 3 + .../vendor/select2/i18n/sq.5636b60d29c9.js.gz | Bin 0 -> 490 bytes .../admin/js/vendor/select2/i18n/sq.js | 3 + .../admin/js/vendor/select2/i18n/sq.js.gz | Bin 0 -> 490 bytes .../select2/i18n/sr-Cyrl.f254bb8c4c7c.js | 3 + .../select2/i18n/sr-Cyrl.f254bb8c4c7c.js.gz | Bin 0 -> 608 bytes .../admin/js/vendor/select2/i18n/sr-Cyrl.js | 3 + .../js/vendor/select2/i18n/sr-Cyrl.js.gz | Bin 0 -> 608 bytes .../js/vendor/select2/i18n/sr.5ed85a48f483.js | 3 + .../vendor/select2/i18n/sr.5ed85a48f483.js.gz | Bin 0 -> 552 bytes .../admin/js/vendor/select2/i18n/sr.js | 3 + .../admin/js/vendor/select2/i18n/sr.js.gz | Bin 0 -> 552 bytes .../js/vendor/select2/i18n/sv.7a9c2f71e777.js | 3 + .../vendor/select2/i18n/sv.7a9c2f71e777.js.gz | Bin 0 -> 429 bytes .../admin/js/vendor/select2/i18n/sv.js | 3 + .../admin/js/vendor/select2/i18n/sv.js.gz | Bin 0 -> 429 bytes .../js/vendor/select2/i18n/th.f38c20b0221b.js | 3 + .../vendor/select2/i18n/th.f38c20b0221b.js.gz | Bin 0 -> 515 bytes .../admin/js/vendor/select2/i18n/th.js | 3 + .../admin/js/vendor/select2/i18n/th.js.gz | Bin 0 -> 515 bytes .../js/vendor/select2/i18n/tk.7c572a68c78f.js | 3 + .../vendor/select2/i18n/tk.7c572a68c78f.js.gz | Bin 0 -> 434 bytes .../admin/js/vendor/select2/i18n/tk.js | 3 + .../admin/js/vendor/select2/i18n/tk.js.gz | Bin 0 -> 434 bytes .../js/vendor/select2/i18n/tr.b5a0643d1545.js | 3 + .../vendor/select2/i18n/tr.b5a0643d1545.js.gz | Bin 0 -> 423 bytes .../admin/js/vendor/select2/i18n/tr.js | 3 + .../admin/js/vendor/select2/i18n/tr.js.gz | Bin 0 -> 423 bytes .../js/vendor/select2/i18n/uk.8cede7f4803c.js | 3 + .../vendor/select2/i18n/uk.8cede7f4803c.js.gz | Bin 0 -> 626 bytes .../admin/js/vendor/select2/i18n/uk.js | 3 + .../admin/js/vendor/select2/i18n/uk.js.gz | Bin 0 -> 626 bytes .../js/vendor/select2/i18n/vi.097a5b75b3e1.js | 3 + .../vendor/select2/i18n/vi.097a5b75b3e1.js.gz | Bin 0 -> 479 bytes .../admin/js/vendor/select2/i18n/vi.js | 3 + .../admin/js/vendor/select2/i18n/vi.js.gz | Bin 0 -> 479 bytes .../vendor/select2/i18n/zh-CN.2cff662ec5f9.js | 3 + .../select2/i18n/zh-CN.2cff662ec5f9.js.gz | Bin 0 -> 468 bytes .../admin/js/vendor/select2/i18n/zh-CN.js | 3 + .../admin/js/vendor/select2/i18n/zh-CN.js.gz | Bin 0 -> 468 bytes .../vendor/select2/i18n/zh-TW.04554a227c2b.js | 3 + .../select2/i18n/zh-TW.04554a227c2b.js.gz | Bin 0 -> 451 bytes .../admin/js/vendor/select2/i18n/zh-TW.js | 3 + .../admin/js/vendor/select2/i18n/zh-TW.js.gz | Bin 0 -> 451 bytes .../select2/select2.full.c2afdeda3058.js | 6820 ++++++++++ .../select2/select2.full.c2afdeda3058.js.gz | Bin 0 -> 37925 bytes .../admin/js/vendor/select2/select2.full.js | 6820 ++++++++++ .../js/vendor/select2/select2.full.js.gz | Bin 0 -> 37925 bytes .../select2/select2.full.min.fcd7500d8e13.js | 2 + .../select2.full.min.fcd7500d8e13.js.gz | Bin 0 -> 21986 bytes .../js/vendor/select2/select2.full.min.js | 2 + .../js/vendor/select2/select2.full.min.js.gz | Bin 0 -> 21986 bytes .../vendor/xregexp/LICENSE.b6fd2ceea8d3.txt | 21 + .../xregexp/LICENSE.b6fd2ceea8d3.txt.gz | Bin 0 -> 678 bytes .../admin/js/vendor/xregexp/LICENSE.txt | 21 + .../admin/js/vendor/xregexp/LICENSE.txt.gz | Bin 0 -> 678 bytes .../js/vendor/xregexp/xregexp.a7e08b0ce686.js | 6126 +++++++++ .../vendor/xregexp/xregexp.a7e08b0ce686.js.gz | Bin 0 -> 76137 bytes .../admin/js/vendor/xregexp/xregexp.js | 6126 +++++++++ .../admin/js/vendor/xregexp/xregexp.js.gz | Bin 0 -> 76137 bytes .../xregexp/xregexp.min.f1ae4617847c.js | 17 + .../xregexp/xregexp.min.f1ae4617847c.js.gz | Bin 0 -> 46360 bytes .../admin/js/vendor/xregexp/xregexp.min.js | 17 + .../admin/js/vendor/xregexp/xregexp.min.js.gz | Bin 0 -> 46360 bytes staticfiles/staticfiles.json | 1 + templates/article_detail.html | 12 + templates/article_list.html | 47 +- templates/base.html | 1 + 528 files changed, 63994 insertions(+), 34 deletions(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/fly-deploy.yml create mode 100644 Dockerfile create mode 100644 articles/forms.py create mode 100644 articles/migrations/0002_comment.py create mode 100644 fly.toml create mode 100644 requirements.txt create mode 100644 static/css/.keep create mode 100644 static/img/.keep create mode 100644 static/js/.keep create mode 100644 staticfiles/admin/css/autocomplete.css create mode 100644 staticfiles/admin/css/autocomplete.css.gz create mode 100644 staticfiles/admin/css/autocomplete.d24f10bdee41.css create mode 100644 staticfiles/admin/css/autocomplete.d24f10bdee41.css.gz create mode 100644 staticfiles/admin/css/base.08e8df8c3104.css create mode 100644 staticfiles/admin/css/base.08e8df8c3104.css.gz create mode 100644 staticfiles/admin/css/base.css create mode 100644 staticfiles/admin/css/base.css.gz create mode 100644 staticfiles/admin/css/changelists.59465e72d1ef.css create mode 100644 staticfiles/admin/css/changelists.59465e72d1ef.css.gz create mode 100644 staticfiles/admin/css/changelists.css create mode 100644 staticfiles/admin/css/changelists.css.gz create mode 100644 staticfiles/admin/css/dark_mode.css create mode 100644 staticfiles/admin/css/dark_mode.css.gz create mode 100644 staticfiles/admin/css/dark_mode.f9ffd47267af.css create mode 100644 staticfiles/admin/css/dark_mode.f9ffd47267af.css.gz create mode 100644 staticfiles/admin/css/dashboard.css create mode 100644 staticfiles/admin/css/dashboard.css.gz create mode 100644 staticfiles/admin/css/dashboard.e90f2068217b.css create mode 100644 staticfiles/admin/css/dashboard.e90f2068217b.css.gz create mode 100644 staticfiles/admin/css/forms.86203f0362cc.css create mode 100644 staticfiles/admin/css/forms.86203f0362cc.css.gz create mode 100644 staticfiles/admin/css/forms.css create mode 100644 staticfiles/admin/css/forms.css.gz create mode 100644 staticfiles/admin/css/login.a3b47c458e5d.css create mode 100644 staticfiles/admin/css/login.a3b47c458e5d.css.gz create mode 100644 staticfiles/admin/css/login.css create mode 100644 staticfiles/admin/css/login.css.gz create mode 100644 staticfiles/admin/css/nav_sidebar.css create mode 100644 staticfiles/admin/css/nav_sidebar.css.gz create mode 100644 staticfiles/admin/css/nav_sidebar.dd925738f4cc.css create mode 100644 staticfiles/admin/css/nav_sidebar.dd925738f4cc.css.gz create mode 100644 staticfiles/admin/css/responsive.ae7b57af01c8.css create mode 100644 staticfiles/admin/css/responsive.ae7b57af01c8.css.gz create mode 100644 staticfiles/admin/css/responsive.css create mode 100644 staticfiles/admin/css/responsive.css.gz create mode 100644 staticfiles/admin/css/responsive_rtl.a154194876ee.css create mode 100644 staticfiles/admin/css/responsive_rtl.a154194876ee.css.gz create mode 100644 staticfiles/admin/css/responsive_rtl.css create mode 100644 staticfiles/admin/css/responsive_rtl.css.gz create mode 100644 staticfiles/admin/css/rtl.7e532512b807.css create mode 100644 staticfiles/admin/css/rtl.7e532512b807.css.gz create mode 100644 staticfiles/admin/css/rtl.css create mode 100644 staticfiles/admin/css/rtl.css.gz create mode 100644 staticfiles/admin/css/unusable_password_field.b433f2a95fba.css create mode 100644 staticfiles/admin/css/unusable_password_field.b433f2a95fba.css.gz create mode 100644 staticfiles/admin/css/unusable_password_field.css create mode 100644 staticfiles/admin/css/unusable_password_field.css.gz create mode 100644 staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md create mode 100644 staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md.gz create mode 100644 staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md create mode 100644 staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md.gz create mode 100644 staticfiles/admin/css/vendor/select2/select2.a2194c262648.css create mode 100644 staticfiles/admin/css/vendor/select2/select2.a2194c262648.css.gz create mode 100644 staticfiles/admin/css/vendor/select2/select2.css create mode 100644 staticfiles/admin/css/vendor/select2/select2.css.gz create mode 100644 staticfiles/admin/css/vendor/select2/select2.min.9f54e6414f87.css create mode 100644 staticfiles/admin/css/vendor/select2/select2.min.9f54e6414f87.css.gz create mode 100644 staticfiles/admin/css/vendor/select2/select2.min.css create mode 100644 staticfiles/admin/css/vendor/select2/select2.min.css.gz create mode 100644 staticfiles/admin/css/widgets.355d088349f3.css create mode 100644 staticfiles/admin/css/widgets.355d088349f3.css.gz create mode 100644 staticfiles/admin/css/widgets.css create mode 100644 staticfiles/admin/css/widgets.css.gz create mode 100644 staticfiles/admin/img/LICENSE create mode 100644 staticfiles/admin/img/LICENSE.2c54f4e1ca1c create mode 100644 staticfiles/admin/img/LICENSE.2c54f4e1ca1c.gz create mode 100644 staticfiles/admin/img/LICENSE.gz create mode 100644 staticfiles/admin/img/README.9849248c9207.txt create mode 100644 staticfiles/admin/img/README.9849248c9207.txt.gz create mode 100644 staticfiles/admin/img/README.txt create mode 100644 staticfiles/admin/img/README.txt.gz create mode 100644 staticfiles/admin/img/calendar-icons.93ab098d1ac1.svg create mode 100644 staticfiles/admin/img/calendar-icons.93ab098d1ac1.svg.gz create mode 100644 staticfiles/admin/img/calendar-icons.svg create mode 100644 staticfiles/admin/img/calendar-icons.svg.gz create mode 100644 staticfiles/admin/img/gis/move_vertex_off.7a23bf31ef8a.svg create mode 100644 staticfiles/admin/img/gis/move_vertex_off.7a23bf31ef8a.svg.gz create mode 100644 staticfiles/admin/img/gis/move_vertex_off.svg create mode 100644 staticfiles/admin/img/gis/move_vertex_off.svg.gz create mode 100644 staticfiles/admin/img/gis/move_vertex_on.0047eba25b67.svg create mode 100644 staticfiles/admin/img/gis/move_vertex_on.0047eba25b67.svg.gz create mode 100644 staticfiles/admin/img/gis/move_vertex_on.svg create mode 100644 staticfiles/admin/img/gis/move_vertex_on.svg.gz create mode 100644 staticfiles/admin/img/icon-addlink.073aeb1feda7.svg create mode 100644 staticfiles/admin/img/icon-addlink.073aeb1feda7.svg.gz create mode 100644 staticfiles/admin/img/icon-addlink.svg create mode 100644 staticfiles/admin/img/icon-addlink.svg.gz create mode 100644 staticfiles/admin/img/icon-alert.034cc7d8a67f.svg create mode 100644 staticfiles/admin/img/icon-alert.034cc7d8a67f.svg.gz create mode 100644 staticfiles/admin/img/icon-alert.svg create mode 100644 staticfiles/admin/img/icon-alert.svg.gz create mode 100644 staticfiles/admin/img/icon-calendar.ac7aea671bea.svg create mode 100644 staticfiles/admin/img/icon-calendar.ac7aea671bea.svg.gz create mode 100644 staticfiles/admin/img/icon-calendar.svg create mode 100644 staticfiles/admin/img/icon-calendar.svg.gz create mode 100644 staticfiles/admin/img/icon-changelink.7eddb320e61f.svg create mode 100644 staticfiles/admin/img/icon-changelink.7eddb320e61f.svg.gz create mode 100644 staticfiles/admin/img/icon-changelink.svg create mode 100644 staticfiles/admin/img/icon-changelink.svg.gz create mode 100644 staticfiles/admin/img/icon-clock.e1d4dfac3f2b.svg create mode 100644 staticfiles/admin/img/icon-clock.e1d4dfac3f2b.svg.gz create mode 100644 staticfiles/admin/img/icon-clock.svg create mode 100644 staticfiles/admin/img/icon-clock.svg.gz create mode 100644 staticfiles/admin/img/icon-deletelink.564ef9dc3854.svg create mode 100644 staticfiles/admin/img/icon-deletelink.564ef9dc3854.svg.gz create mode 100644 staticfiles/admin/img/icon-deletelink.svg create mode 100644 staticfiles/admin/img/icon-deletelink.svg.gz create mode 100644 staticfiles/admin/img/icon-hidelink.8d245a995e18.svg create mode 100644 staticfiles/admin/img/icon-hidelink.8d245a995e18.svg.gz create mode 100644 staticfiles/admin/img/icon-hidelink.svg create mode 100644 staticfiles/admin/img/icon-hidelink.svg.gz create mode 100644 staticfiles/admin/img/icon-no.439e821418cd.svg create mode 100644 staticfiles/admin/img/icon-no.439e821418cd.svg.gz create mode 100644 staticfiles/admin/img/icon-no.svg create mode 100644 staticfiles/admin/img/icon-no.svg.gz create mode 100644 staticfiles/admin/img/icon-unknown-alt.81536e128bb6.svg create mode 100644 staticfiles/admin/img/icon-unknown-alt.81536e128bb6.svg.gz create mode 100644 staticfiles/admin/img/icon-unknown-alt.svg create mode 100644 staticfiles/admin/img/icon-unknown-alt.svg.gz create mode 100644 staticfiles/admin/img/icon-unknown.a18cb4398978.svg create mode 100644 staticfiles/admin/img/icon-unknown.a18cb4398978.svg.gz create mode 100644 staticfiles/admin/img/icon-unknown.svg create mode 100644 staticfiles/admin/img/icon-unknown.svg.gz create mode 100644 staticfiles/admin/img/icon-viewlink.41eb31f7826e.svg create mode 100644 staticfiles/admin/img/icon-viewlink.41eb31f7826e.svg.gz create mode 100644 staticfiles/admin/img/icon-viewlink.svg create mode 100644 staticfiles/admin/img/icon-viewlink.svg.gz create mode 100644 staticfiles/admin/img/icon-yes.d2f9f035226a.svg create mode 100644 staticfiles/admin/img/icon-yes.d2f9f035226a.svg.gz create mode 100644 staticfiles/admin/img/icon-yes.svg create mode 100644 staticfiles/admin/img/icon-yes.svg.gz create mode 100644 staticfiles/admin/img/inline-delete.fec1b761f254.svg create mode 100644 staticfiles/admin/img/inline-delete.fec1b761f254.svg.gz create mode 100644 staticfiles/admin/img/inline-delete.svg create mode 100644 staticfiles/admin/img/inline-delete.svg.gz create mode 100644 staticfiles/admin/img/search.7cf54ff789c6.svg create mode 100644 staticfiles/admin/img/search.7cf54ff789c6.svg.gz create mode 100644 staticfiles/admin/img/search.svg create mode 100644 staticfiles/admin/img/search.svg.gz create mode 100644 staticfiles/admin/img/selector-icons.b4555096cea2.svg create mode 100644 staticfiles/admin/img/selector-icons.b4555096cea2.svg.gz create mode 100644 staticfiles/admin/img/selector-icons.svg create mode 100644 staticfiles/admin/img/selector-icons.svg.gz create mode 100644 staticfiles/admin/img/sorting-icons.3a097b59f104.svg create mode 100644 staticfiles/admin/img/sorting-icons.3a097b59f104.svg.gz create mode 100644 staticfiles/admin/img/sorting-icons.svg create mode 100644 staticfiles/admin/img/sorting-icons.svg.gz create mode 100644 staticfiles/admin/img/tooltag-add.e59d620a9742.svg create mode 100644 staticfiles/admin/img/tooltag-add.e59d620a9742.svg.gz create mode 100644 staticfiles/admin/img/tooltag-add.svg create mode 100644 staticfiles/admin/img/tooltag-add.svg.gz create mode 100644 staticfiles/admin/img/tooltag-arrowright.bbfb788a849e.svg create mode 100644 staticfiles/admin/img/tooltag-arrowright.bbfb788a849e.svg.gz create mode 100644 staticfiles/admin/img/tooltag-arrowright.svg create mode 100644 staticfiles/admin/img/tooltag-arrowright.svg.gz create mode 100644 staticfiles/admin/js/SelectBox.7d3ce5a98007.js create mode 100644 staticfiles/admin/js/SelectBox.7d3ce5a98007.js.gz create mode 100644 staticfiles/admin/js/SelectBox.js create mode 100644 staticfiles/admin/js/SelectBox.js.gz create mode 100644 staticfiles/admin/js/SelectFilter2.b20260d34877.js create mode 100644 staticfiles/admin/js/SelectFilter2.b20260d34877.js.gz create mode 100644 staticfiles/admin/js/SelectFilter2.js create mode 100644 staticfiles/admin/js/SelectFilter2.js.gz create mode 100644 staticfiles/admin/js/actions.f1d5653edb59.js create mode 100644 staticfiles/admin/js/actions.f1d5653edb59.js.gz create mode 100644 staticfiles/admin/js/actions.js create mode 100644 staticfiles/admin/js/actions.js.gz create mode 100644 staticfiles/admin/js/admin/DateTimeShortcuts.9f6e209cebca.js create mode 100644 staticfiles/admin/js/admin/DateTimeShortcuts.9f6e209cebca.js.gz create mode 100644 staticfiles/admin/js/admin/DateTimeShortcuts.js create mode 100644 staticfiles/admin/js/admin/DateTimeShortcuts.js.gz create mode 100644 staticfiles/admin/js/admin/RelatedObjectLookups.874743a87811.js create mode 100644 staticfiles/admin/js/admin/RelatedObjectLookups.874743a87811.js.gz create mode 100644 staticfiles/admin/js/admin/RelatedObjectLookups.js create mode 100644 staticfiles/admin/js/admin/RelatedObjectLookups.js.gz create mode 100644 staticfiles/admin/js/autocomplete.01591ab27be7.js create mode 100644 staticfiles/admin/js/autocomplete.01591ab27be7.js.gz create mode 100644 staticfiles/admin/js/autocomplete.js create mode 100644 staticfiles/admin/js/autocomplete.js.gz create mode 100644 staticfiles/admin/js/calendar.d64496bbf46d.js create mode 100644 staticfiles/admin/js/calendar.d64496bbf46d.js.gz create mode 100644 staticfiles/admin/js/calendar.js create mode 100644 staticfiles/admin/js/calendar.js.gz create mode 100644 staticfiles/admin/js/cancel.ecc4c5ca7b32.js create mode 100644 staticfiles/admin/js/cancel.ecc4c5ca7b32.js.gz create mode 100644 staticfiles/admin/js/cancel.js create mode 100644 staticfiles/admin/js/cancel.js.gz create mode 100644 staticfiles/admin/js/change_form.9d8ca4f96b75.js create mode 100644 staticfiles/admin/js/change_form.9d8ca4f96b75.js.gz create mode 100644 staticfiles/admin/js/change_form.js create mode 100644 staticfiles/admin/js/change_form.js.gz create mode 100644 staticfiles/admin/js/core.7e257fdf56dc.js create mode 100644 staticfiles/admin/js/core.7e257fdf56dc.js.gz create mode 100644 staticfiles/admin/js/core.js create mode 100644 staticfiles/admin/js/core.js.gz create mode 100644 staticfiles/admin/js/filters.0e360b7a9f80.js create mode 100644 staticfiles/admin/js/filters.0e360b7a9f80.js.gz create mode 100644 staticfiles/admin/js/filters.js create mode 100644 staticfiles/admin/js/filters.js.gz create mode 100644 staticfiles/admin/js/inlines.22d4d93c00b4.js create mode 100644 staticfiles/admin/js/inlines.22d4d93c00b4.js.gz create mode 100644 staticfiles/admin/js/inlines.js create mode 100644 staticfiles/admin/js/inlines.js.gz create mode 100644 staticfiles/admin/js/jquery.init.b7781a0897fc.js create mode 100644 staticfiles/admin/js/jquery.init.b7781a0897fc.js.gz create mode 100644 staticfiles/admin/js/jquery.init.js create mode 100644 staticfiles/admin/js/jquery.init.js.gz create mode 100644 staticfiles/admin/js/nav_sidebar.3b9190d420b1.js create mode 100644 staticfiles/admin/js/nav_sidebar.3b9190d420b1.js.gz create mode 100644 staticfiles/admin/js/nav_sidebar.js create mode 100644 staticfiles/admin/js/nav_sidebar.js.gz create mode 100644 staticfiles/admin/js/popup_response.96190d343c22.js create mode 100644 staticfiles/admin/js/popup_response.96190d343c22.js.gz create mode 100644 staticfiles/admin/js/popup_response.js create mode 100644 staticfiles/admin/js/popup_response.js.gz create mode 100644 staticfiles/admin/js/prepopulate.bd2361dfd64d.js create mode 100644 staticfiles/admin/js/prepopulate.bd2361dfd64d.js.gz create mode 100644 staticfiles/admin/js/prepopulate.js create mode 100644 staticfiles/admin/js/prepopulate.js.gz create mode 100644 staticfiles/admin/js/prepopulate_init.6cac7f3105b8.js create mode 100644 staticfiles/admin/js/prepopulate_init.6cac7f3105b8.js.gz create mode 100644 staticfiles/admin/js/prepopulate_init.js create mode 100644 staticfiles/admin/js/prepopulate_init.js.gz create mode 100644 staticfiles/admin/js/theme.91cf832f559e.js create mode 100644 staticfiles/admin/js/theme.91cf832f559e.js.gz create mode 100644 staticfiles/admin/js/theme.js create mode 100644 staticfiles/admin/js/theme.js.gz create mode 100644 staticfiles/admin/js/unusable_password_field.017ea86b6ae4.js create mode 100644 staticfiles/admin/js/unusable_password_field.017ea86b6ae4.js.gz create mode 100644 staticfiles/admin/js/unusable_password_field.js create mode 100644 staticfiles/admin/js/unusable_password_field.js.gz create mode 100644 staticfiles/admin/js/urlify.ae970a820212.js create mode 100644 staticfiles/admin/js/urlify.ae970a820212.js.gz create mode 100644 staticfiles/admin/js/urlify.js create mode 100644 staticfiles/admin/js/urlify.js.gz create mode 100644 staticfiles/admin/js/vendor/jquery/LICENSE.de877aa6d744.txt create mode 100644 staticfiles/admin/js/vendor/jquery/LICENSE.de877aa6d744.txt.gz create mode 100644 staticfiles/admin/js/vendor/jquery/LICENSE.txt create mode 100644 staticfiles/admin/js/vendor/jquery/LICENSE.txt.gz create mode 100644 staticfiles/admin/js/vendor/jquery/jquery.12e87d2f3a4c.js create mode 100644 staticfiles/admin/js/vendor/jquery/jquery.12e87d2f3a4c.js.gz create mode 100644 staticfiles/admin/js/vendor/jquery/jquery.js create mode 100644 staticfiles/admin/js/vendor/jquery/jquery.js.gz create mode 100644 staticfiles/admin/js/vendor/jquery/jquery.min.2c872dbe60f4.js create mode 100644 staticfiles/admin/js/vendor/jquery/jquery.min.2c872dbe60f4.js.gz create mode 100644 staticfiles/admin/js/vendor/jquery/jquery.min.js create mode 100644 staticfiles/admin/js/vendor/jquery/jquery.min.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/LICENSE.f94142512c91.md create mode 100644 staticfiles/admin/js/vendor/select2/LICENSE.f94142512c91.md.gz create mode 100644 staticfiles/admin/js/vendor/select2/LICENSE.md create mode 100644 staticfiles/admin/js/vendor/select2/LICENSE.md.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/af.4f6fcd73488c.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/af.4f6fcd73488c.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/af.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/af.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ar.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ar.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/az.270c257daf81.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/az.270c257daf81.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/az.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/az.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bg.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bg.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bn.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bn.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bs.91624382358e.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bs.91624382358e.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bs.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/bs.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ca.a166b745933a.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ca.a166b745933a.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ca.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ca.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/cs.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/cs.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/da.766346afe4dd.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/da.766346afe4dd.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/da.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/da.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/de.8a1c222b0204.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/de.8a1c222b0204.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/de.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/de.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/dsb.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/dsb.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/el.27097f071856.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/el.27097f071856.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/el.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/el.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/en.cf932ba09a98.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/en.cf932ba09a98.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/en.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/en.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/es.66dbc2652fb1.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/es.66dbc2652fb1.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/es.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/es.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/et.2b96fd98289d.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/et.2b96fd98289d.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/et.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/et.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/eu.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/eu.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fa.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fa.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fi.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fi.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fr.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/fr.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/gl.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/gl.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/he.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/he.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hi.70640d41628f.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hi.70640d41628f.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hi.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hi.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hr.a2b092cc1147.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hr.a2b092cc1147.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hr.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hr.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hsb.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hsb.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hu.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hu.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hy.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/hy.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/id.04debded514d.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/id.04debded514d.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/id.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/id.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/is.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/is.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/it.be4fe8d365b5.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/it.be4fe8d365b5.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/it.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/it.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ja.170ae885d74f.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ja.170ae885d74f.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ja.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ja.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ka.2083264a54f0.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ka.2083264a54f0.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ka.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ka.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/km.c23089cb06ca.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/km.c23089cb06ca.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/km.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/km.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ko.e7be6c20e673.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ko.e7be6c20e673.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ko.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ko.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/lt.23c7ce903300.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/lt.23c7ce903300.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/lt.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/lt.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/lv.08e62128eac1.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/lv.08e62128eac1.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/lv.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/lv.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/mk.dabbb9087130.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/mk.dabbb9087130.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/mk.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/mk.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ms.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ms.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/nb.da2fce143f27.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/nb.da2fce143f27.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/nb.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/nb.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ne.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ne.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/nl.997868a37ed8.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/nl.997868a37ed8.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/nl.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/nl.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pl.6031b4f16452.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pl.6031b4f16452.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pl.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pl.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ps.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ps.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt-BR.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt-BR.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ro.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ro.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ru.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/ru.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sk.33d02cef8d11.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sk.33d02cef8d11.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sk.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sk.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sl.131a78bc0752.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sl.131a78bc0752.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sl.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sl.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sq.5636b60d29c9.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sq.5636b60d29c9.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sq.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sq.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr.5ed85a48f483.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr.5ed85a48f483.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sv.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/sv.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/th.f38c20b0221b.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/th.f38c20b0221b.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/th.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/th.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/tk.7c572a68c78f.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/tk.7c572a68c78f.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/tk.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/tk.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/tr.b5a0643d1545.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/tr.b5a0643d1545.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/tr.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/tr.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/uk.8cede7f4803c.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/uk.8cede7f4803c.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/uk.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/uk.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/vi.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/vi.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-CN.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-CN.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-TW.js create mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-TW.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/select2.full.c2afdeda3058.js create mode 100644 staticfiles/admin/js/vendor/select2/select2.full.c2afdeda3058.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/select2.full.js create mode 100644 staticfiles/admin/js/vendor/select2/select2.full.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js create mode 100644 staticfiles/admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js.gz create mode 100644 staticfiles/admin/js/vendor/select2/select2.full.min.js create mode 100644 staticfiles/admin/js/vendor/select2/select2.full.min.js.gz create mode 100644 staticfiles/admin/js/vendor/xregexp/LICENSE.b6fd2ceea8d3.txt create mode 100644 staticfiles/admin/js/vendor/xregexp/LICENSE.b6fd2ceea8d3.txt.gz create mode 100644 staticfiles/admin/js/vendor/xregexp/LICENSE.txt create mode 100644 staticfiles/admin/js/vendor/xregexp/LICENSE.txt.gz create mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.a7e08b0ce686.js create mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.a7e08b0ce686.js.gz create mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.js create mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.js.gz create mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.min.f1ae4617847c.js create mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.min.f1ae4617847c.js.gz create mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.min.js create mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.min.js.gz create mode 100644 staticfiles/staticfiles.json diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7829224 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.venv/ +__pycache__/ +*.sqlite3 +.git +.env \ No newline at end of file diff --git a/.github/workflows/fly-deploy.yml b/.github/workflows/fly-deploy.yml new file mode 100644 index 0000000..b0c246e --- /dev/null +++ b/.github/workflows/fly-deploy.yml @@ -0,0 +1,18 @@ +# See https://fly.io/docs/app-guides/continuous-deployment-with-github-actions/ + +name: Fly Deploy +on: + push: + branches: + - main +jobs: + deploy: + name: Deploy app + runs-on: ubuntu-latest + concurrency: deploy-group # optional: ensure only one action runs at a time + steps: + - uses: actions/checkout@v4 + - uses: superfly/flyctl-actions/setup-flyctl@master + - run: flyctl deploy --remote-only + env: + FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} diff --git a/.gitignore b/.gitignore index 66fcfa1..78183aa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .venv/ __pycache__ -*.sqlite3 \ No newline at end of file +*.sqlite3 +.env \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d74c057 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +ARG PYTHON_VERSION=3.12-slim + +FROM python:${PYTHON_VERSION} + +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +# install psycopg2 dependencies. +RUN apt-get update && apt-get install -y \ + libpq-dev \ + gcc \ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir -p /code + +WORKDIR /code + +COPY requirements.txt /tmp/requirements.txt +RUN set -ex && \ + pip install --upgrade pip && \ + pip install -r /tmp/requirements.txt && \ + rm -rf /root/.cache/ +COPY . /code + +ENV SECRET_KEY "sZMGco5qgqThLmYYHCucA47PLoIPySW2Mo1XEddufGfMjK8gpE" +RUN python manage.py collectstatic --noinput + +EXPOSE 8000 + +CMD ["gunicorn","--bind",":8000","--workers","2","django_project.wsgi"] diff --git a/articles/admin.py b/articles/admin.py index 03fb617..db6d86c 100644 --- a/articles/admin.py +++ b/articles/admin.py @@ -1,9 +1,16 @@ from django.contrib import admin -from .models import Article +from .models import Article, Comment # Register your models here. +class CommentInLine(admin.TabularInline): + model = Comment + extra = 0 + class ArticleAdmin(admin.ModelAdmin): + inlines = [ + CommentInLine, + ] list_display = [ "title", "body", @@ -11,3 +18,4 @@ class ArticleAdmin(admin.ModelAdmin): ] admin.site.register(Article, ArticleAdmin) +admin.site.register(Comment) \ No newline at end of file diff --git a/articles/forms.py b/articles/forms.py new file mode 100644 index 0000000..a11a54e --- /dev/null +++ b/articles/forms.py @@ -0,0 +1,9 @@ +from django import forms + +from .models import Comment + + +class CommentForm(forms.ModelForm): + class Meta: + model = Comment + fields = ("comment",) \ No newline at end of file diff --git a/articles/migrations/0002_comment.py b/articles/migrations/0002_comment.py new file mode 100644 index 0000000..bbf4ff5 --- /dev/null +++ b/articles/migrations/0002_comment.py @@ -0,0 +1,45 @@ +# Generated by Django 5.1.3 on 2024-11-29 12:23 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("articles", "0001_initial"), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="Comment", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("comment", models.CharField(max_length=140)), + ( + "article", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="articles.article", + ), + ), + ( + "author", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + ] diff --git a/articles/models.py b/articles/models.py index 25d7ab0..7c49739 100644 --- a/articles/models.py +++ b/articles/models.py @@ -15,4 +15,19 @@ def __str__(self): return self.title def get_absolute_url(self): - return reverse("article_detail", kwargs={"pk": self.pk}) \ No newline at end of file + return reverse("article_detail", kwargs={"pk": self.pk}) + +class Comment(models.Model): + article = models.ForeignKey(Article, on_delete=models.CASCADE) + comment = models.CharField(max_length=140) + author = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + ) + + def __str__(self): + return self.comment + + def get_absolute_url(self): + return reverse("article_list") + \ No newline at end of file diff --git a/articles/views.py b/articles/views.py index 8cd396b..771933c 100644 --- a/articles/views.py +++ b/articles/views.py @@ -2,19 +2,59 @@ LoginRequiredMixin, UserPassesTestMixin ) -from django.views.generic import ListView, DetailView +from django.views import View +from django.views.generic import ListView, DetailView, FormView +from django.views.generic.detail import SingleObjectMixin from django.views.generic.edit import UpdateView, DeleteView, CreateView -from django.urls import reverse_lazy +from django.urls import reverse_lazy, reverse from .models import Article +from .forms import CommentForm class ArticleListView(LoginRequiredMixin, ListView): model = Article template_name = "article_list.html" -class ArticleDetailView(LoginRequiredMixin, DetailView): +class CommentGet(DetailView): model = Article template_name = "article_detail.html" + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["form"] = CommentForm() + return context + +class CommentPost(SingleObjectMixin, FormView): + model = Article + form_class = CommentForm + template_name = "article_detail.html" + + def post(self, request, *args, **kwargs): + self.object = self.get_object() + return super().post(request, *args, **kwargs) + + def form_valid(self, form): + comment = form.save(commit=False) + comment.article = self.object + comment.author = self.request.user + comment.save() + return super().form_valid(form) + + def get_success_url(self): + article = self.object + return reverse("article_detail", kwargs={"pk": article.pk}) + + + + +class ArticleDetailView(LoginRequiredMixin, View): + def get(self, request, *args, **kwargs): + view = CommentGet.as_view() + return view(request, *args, **kwargs) + + def post(self, request, *args, **kwargs): + view = CommentPost.as_view() + return view(request, *args, **kwargs) class ArticleUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): model = Article @@ -44,4 +84,5 @@ class ArticleCreateView(LoginRequiredMixin, CreateView): def form_valid(self, form): form.instance.author = self.request.user - return super().form_valid(form) \ No newline at end of file + return super().form_valid(form) + diff --git a/django_project/settings.py b/django_project/settings.py index ace401b..692927d 100644 --- a/django_project/settings.py +++ b/django_project/settings.py @@ -11,6 +11,10 @@ """ from pathlib import Path +from environs import Env + +env = Env() +env.read_env() # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -20,12 +24,13 @@ # See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = "django-insecure-_db%h4lujl_8rfgv4)383-l^5g22j=lq5t1wlwbd&132w8+0#8" +SECRET_KEY = env.str("SECRET_KEY") # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = env.bool("DEBUG", default=False) -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ["newsbucket.fly.dev", "localhost", "127.0.0.1"] +CSRF_TRUSTED_ORIGINS = ["https://newsbucket.fly.dev"] # Application definition @@ -36,6 +41,7 @@ "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", + "whitenoise.runserver_nostatic", "django.contrib.staticfiles", # 3rd Party "crispy_forms", @@ -49,6 +55,7 @@ MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", + "whitenoise.middleware.WhiteNoiseMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", @@ -81,10 +88,7 @@ # https://docs.djangoproject.com/en/5.1/ref/settings/#databases DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", - } + "default": env.dj_db_url("DATABASE_URL", default="sqlite:///db.sqlite3"), } @@ -123,6 +127,16 @@ # https://docs.djangoproject.com/en/5.1/howto/static-files/ STATIC_URL = "static/" +STATICFILES_DIRS = [BASE_DIR / "static"] +STATIC_ROOT = BASE_DIR / "staticfiles" +STORAGES = { + "default": { + "BACKEND": "django.core.files.storage.FileSystemStorage", + }, + "staticfiles": { + "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage", + }, +} # Default primary key field type # https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field diff --git a/django_project/urls.py b/django_project/urls.py index 2f67826..c518416 100644 --- a/django_project/urls.py +++ b/django_project/urls.py @@ -17,7 +17,7 @@ from django.contrib import admin from django.urls import path, include -from django.views.generic.base import TemplateView +#from django.views.generic.base import TemplateView urlpatterns = [ path("admin/", admin.site.urls), diff --git a/fly.toml b/fly.toml new file mode 100644 index 0000000..90410e9 --- /dev/null +++ b/fly.toml @@ -0,0 +1,33 @@ +# fly.toml app configuration file generated for newsbucket on 2024-11-29T20:11:32+06:00 +# +# See https://fly.io/docs/reference/configuration/ for information about how to use this file. +# + +app = 'newsbucket' +primary_region = 'sin' +console_command = '/code/manage.py shell' + +[build] + +[deploy] + release_command = 'python manage.py migrate --noinput' + +[env] + PORT = '8000' + +[http_service] + internal_port = 8000 + force_https = true + auto_stop_machines = 'stop' + auto_start_machines = true + min_machines_running = 0 + processes = ['app'] + +[[vm]] + memory = '1gb' + cpu_kind = 'shared' + cpus = 1 + +[[statics]] + guest_path = '/code/static' + url_prefix = '/static/' diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..cab3f3b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,24 @@ +asgiref==3.8.1 +black==24.10.0 +click==8.1.7 +colorama==0.4.6 +crispy-bootstrap5==2024.10 +dj-database-url==2.3.0 +dj-email-url==1.0.6 +Django==5.1.3 +django-cache-url==3.4.5 +django-crispy-forms==2.3 +environs==11.2.1 +gunicorn==23.0.0 +marshmallow==3.23.1 +mypy-extensions==1.0.0 +packaging==24.2 +pathspec==0.12.1 +platformdirs==4.3.6 +psycopg==3.2.3 +psycopg-binary==3.2.3 +python-dotenv==1.0.1 +sqlparse==0.5.2 +typing_extensions==4.12.2 +tzdata==2024.2 +whitenoise==6.8.2 diff --git a/static/css/.keep b/static/css/.keep new file mode 100644 index 0000000..e69de29 diff --git a/static/img/.keep b/static/img/.keep new file mode 100644 index 0000000..e69de29 diff --git a/static/js/.keep b/static/js/.keep new file mode 100644 index 0000000..e69de29 diff --git a/staticfiles/admin/css/autocomplete.css b/staticfiles/admin/css/autocomplete.css new file mode 100644 index 0000000..7478c2c --- /dev/null +++ b/staticfiles/admin/css/autocomplete.css @@ -0,0 +1,279 @@ +select.admin-autocomplete { + width: 20em; +} + +.select2-container--admin-autocomplete.select2-container { + min-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single, +.select2-container--admin-autocomplete .select2-selection--multiple { + min-height: 30px; + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection, +.select2-container--admin-autocomplete.select2-container--open .select2-selection { + border-color: var(--body-quiet-color); + min-height: 30px; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-selection--single { + background-color: var(--body-bg); + border: 1px solid var(--border-color); + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { + color: var(--body-fg); + line-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { + background-color: var(--darkened-bg); + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple { + background-color: var(--body-bg); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: text; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 10px 5px 5px; + width: 100%; + display: flex; + flex-wrap: wrap; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { + list-style: none; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { + color: var(--body-quiet-color); + margin-top: 5px; + float: left; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin: 5px; + position: absolute; + right: 0; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { + background-color: var(--darkened-bg); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { + color: var(--body-quiet-color); + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { + color: var(--body-fg); +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { + border: solid var(--body-quiet-color) 1px; + outline: 0; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { + background-color: var(--darkened-bg); + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--admin-autocomplete .select2-search--dropdown { + background: var(--darkened-bg); +} + +.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { + background: var(--body-bg); + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-search--inline .select2-search__field { + background: transparent; + color: var(--body-fg); + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; +} + +.select2-container--admin-autocomplete .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; + color: var(--body-fg); + background: var(--body-bg); +} + +.select2-container--admin-autocomplete .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { + background-color: var(--selected-bg); + color: var(--body-fg); +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { + background-color: var(--primary); + color: var(--primary-fg); +} + +.select2-container--admin-autocomplete .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} + +.errors .select2-selection { + border: 1px solid var(--error-fg); +} diff --git a/staticfiles/admin/css/autocomplete.css.gz b/staticfiles/admin/css/autocomplete.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8d17217ef8b70caeb106233c9e4b6c3c51425e9a GIT binary patch literal 1159 zcmV;21bF)&iwFP!00002|J_>aZrdOf{@&}hrZ?U*fg zDU(!9cOuM2V}!91qBPt>9^dEz#z0b&wVD z=z+WV020n9Hmgo?T3ZSQ!Zb}h@Guo$Sf196UAfZyQzM&`nW*uTlxC^)6)}>0!2xTRD{Z|ziSDT z$Ri_OkzKV3tA}80thepPVJ#6=jefmM`R?Pj`}$`RlBmZnZmY=%rmjf%du3`sP>DLqOMoUg<={TeK{uRGjDU4-@5pjRW)AUf)xLIAQb;4BBIrR!T4f?bCgqdy% zL(82Nr)yiRY+b{ueZVfpW;a`wNIU+W^ax^W>=-tnQGPD)84upB2%^#~?xNayq52T# zk2sUHL|5Rt1q+C(P}ZFCkO)Eui!i9SnwnUaG;DdBRc+jx891!@oB&)S_i7;BNkI0w zpJ_Ktnjq`s*r0?{56@GXxqSQu(%A<2%BJoQHt`+aow{YWKJ91n&fF`4C1qN}DXVvR zh?{EaJU6HFSg+2{Vl1C9b%t5iSlu%1#`3w8e0R=Xdc|;)wW%8m9%H_bS}A5vt|=rn zX4dNsB@A~0s2|zRTv7gsOV(QbyIQfJIksSk|^nx}OP#;R=*! zzY5OCOSXUfI?YRhrT`=;GS%Znij=(0cVlc7UQ9NGch%8y@x^Q#kFI;7<_O&%-Sv7A zJ3wfAA`c5I7-wlHHN(_zrE|lyA-c=kYY2MRj{g4dL*GlSd%Ic>|Bza}^nI}FyZRsW z?PZ9S-4Kt{7y`mjRaBN$Rf6m6eu>y)K^4-YjnwtjcwVm(ruC}KoQW#8MW)_9mK_)o Zf{WzRe|EH+y!^RRi{G_sd9~pq005t{HG2R6 literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/autocomplete.d24f10bdee41.css b/staticfiles/admin/css/autocomplete.d24f10bdee41.css new file mode 100644 index 0000000..7478c2c --- /dev/null +++ b/staticfiles/admin/css/autocomplete.d24f10bdee41.css @@ -0,0 +1,279 @@ +select.admin-autocomplete { + width: 20em; +} + +.select2-container--admin-autocomplete.select2-container { + min-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single, +.select2-container--admin-autocomplete .select2-selection--multiple { + min-height: 30px; + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection, +.select2-container--admin-autocomplete.select2-container--open .select2-selection { + border-color: var(--body-quiet-color); + min-height: 30px; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-selection--single { + background-color: var(--body-bg); + border: 1px solid var(--border-color); + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { + color: var(--body-fg); + line-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { + background-color: var(--darkened-bg); + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple { + background-color: var(--body-bg); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: text; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 10px 5px 5px; + width: 100%; + display: flex; + flex-wrap: wrap; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { + list-style: none; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { + color: var(--body-quiet-color); + margin-top: 5px; + float: left; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin: 5px; + position: absolute; + right: 0; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { + background-color: var(--darkened-bg); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { + color: var(--body-quiet-color); + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { + color: var(--body-fg); +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { + border: solid var(--body-quiet-color) 1px; + outline: 0; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { + background-color: var(--darkened-bg); + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--admin-autocomplete .select2-search--dropdown { + background: var(--darkened-bg); +} + +.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { + background: var(--body-bg); + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-search--inline .select2-search__field { + background: transparent; + color: var(--body-fg); + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; +} + +.select2-container--admin-autocomplete .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; + color: var(--body-fg); + background: var(--body-bg); +} + +.select2-container--admin-autocomplete .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { + background-color: var(--selected-bg); + color: var(--body-fg); +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { + background-color: var(--primary); + color: var(--primary-fg); +} + +.select2-container--admin-autocomplete .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} + +.errors .select2-selection { + border: 1px solid var(--error-fg); +} diff --git a/staticfiles/admin/css/autocomplete.d24f10bdee41.css.gz b/staticfiles/admin/css/autocomplete.d24f10bdee41.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8d17217ef8b70caeb106233c9e4b6c3c51425e9a GIT binary patch literal 1159 zcmV;21bF)&iwFP!00002|J_>aZrdOf{@&}hrZ?U*fg zDU(!9cOuM2V}!91qBPt>9^dEz#z0b&wVD z=z+WV020n9Hmgo?T3ZSQ!Zb}h@Guo$Sf196UAfZyQzM&`nW*uTlxC^)6)}>0!2xTRD{Z|ziSDT z$Ri_OkzKV3tA}80thepPVJ#6=jefmM`R?Pj`}$`RlBmZnZmY=%rmjf%du3`sP>DLqOMoUg<={TeK{uRGjDU4-@5pjRW)AUf)xLIAQb;4BBIrR!T4f?bCgqdy% zL(82Nr)yiRY+b{ueZVfpW;a`wNIU+W^ax^W>=-tnQGPD)84upB2%^#~?xNayq52T# zk2sUHL|5Rt1q+C(P}ZFCkO)Eui!i9SnwnUaG;DdBRc+jx891!@oB&)S_i7;BNkI0w zpJ_Ktnjq`s*r0?{56@GXxqSQu(%A<2%BJoQHt`+aow{YWKJ91n&fF`4C1qN}DXVvR zh?{EaJU6HFSg+2{Vl1C9b%t5iSlu%1#`3w8e0R=Xdc|;)wW%8m9%H_bS}A5vt|=rn zX4dNsB@A~0s2|zRTv7gsOV(QbyIQfJIksSk|^nx}OP#;R=*! zzY5OCOSXUfI?YRhrT`=;GS%Znij=(0cVlc7UQ9NGch%8y@x^Q#kFI;7<_O&%-Sv7A zJ3wfAA`c5I7-wlHHN(_zrE|lyA-c=kYY2MRj{g4dL*GlSd%Ic>|Bza}^nI}FyZRsW z?PZ9S-4Kt{7y`mjRaBN$Rf6m6eu>y)K^4-YjnwtjcwVm(ruC}KoQW#8MW)_9mK_)o Zf{WzRe|EH+y!^RRi{G_sd9~pq005t{HG2R6 literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/base.08e8df8c3104.css b/staticfiles/admin/css/base.08e8df8c3104.css new file mode 100644 index 0000000..c87bb17 --- /dev/null +++ b/staticfiles/admin/css/base.08e8df8c3104.css @@ -0,0 +1,1179 @@ +/* + DJANGO Admin styles +*/ + +/* VARIABLE DEFINITIONS */ +html[data-theme="light"], +:root { + --primary: #79aec8; + --secondary: #417690; + --accent: #f5dd5d; + --primary-fg: #fff; + + --body-fg: #333; + --body-bg: #fff; + --body-quiet-color: #666; + --body-medium-color: #444; + --body-loud-color: #000; + + --header-color: #ffc; + --header-branding-color: var(--accent); + --header-bg: var(--secondary); + --header-link-color: var(--primary-fg); + + --breadcrumbs-fg: #c4dce8; + --breadcrumbs-link-fg: var(--body-bg); + --breadcrumbs-bg: #264b5d; + + --link-fg: #417893; + --link-hover-color: #036; + --link-selected-fg: var(--secondary); + + --hairline-color: #e8e8e8; + --border-color: #ccc; + + --error-fg: #ba2121; + + --message-success-bg: #dfd; + --message-warning-bg: #ffc; + --message-error-bg: #ffefef; + + --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */ + --selected-bg: #e4e4e4; /* E.g. selected table cells */ + --selected-row: #ffc; + + --button-fg: #fff; + --button-bg: var(--secondary); + --button-hover-bg: #205067; + --default-button-bg: #205067; + --default-button-hover-bg: var(--secondary); + --close-button-bg: #747474; + --close-button-hover-bg: #333; + --delete-button-bg: #ba2121; + --delete-button-hover-bg: #a41515; + + --object-tools-fg: var(--button-fg); + --object-tools-bg: var(--close-button-bg); + --object-tools-hover-bg: var(--close-button-hover-bg); + + --font-family-primary: + "Segoe UI", + system-ui, + Roboto, + "Helvetica Neue", + Arial, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + --font-family-monospace: + ui-monospace, + Menlo, + Monaco, + "Cascadia Mono", + "Segoe UI Mono", + "Roboto Mono", + "Oxygen Mono", + "Ubuntu Monospace", + "Source Code Pro", + "Fira Mono", + "Droid Sans Mono", + "Courier New", + monospace, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + + color-scheme: light; +} + +html, body { + height: 100%; +} + +body { + margin: 0; + padding: 0; + font-size: 0.875rem; + font-family: var(--font-family-primary); + color: var(--body-fg); + background: var(--body-bg); +} + +/* LINKS */ + +a:link, a:visited { + color: var(--link-fg); + text-decoration: none; + transition: color 0.15s, background 0.15s; +} + +a:focus, a:hover { + color: var(--link-hover-color); +} + +a:focus { + text-decoration: underline; +} + +a img { + border: none; +} + +a.section:link, a.section:visited { + color: var(--header-link-color); + text-decoration: none; +} + +a.section:focus, a.section:hover { + text-decoration: underline; +} + +/* GLOBAL DEFAULTS */ + +p, ol, ul, dl { + margin: .2em 0 .8em 0; +} + +p { + padding: 0; + line-height: 140%; +} + +h1,h2,h3,h4,h5 { + font-weight: bold; +} + +h1 { + margin: 0 0 20px; + font-weight: 300; + font-size: 1.25rem; +} + +h2 { + font-size: 1rem; + margin: 1em 0 .5em 0; +} + +h2.subhead { + font-weight: normal; + margin-top: 0; +} + +h3 { + font-size: 0.875rem; + margin: .8em 0 .3em 0; + color: var(--body-medium-color); + font-weight: bold; +} + +h4 { + font-size: 0.75rem; + margin: 1em 0 .8em 0; + padding-bottom: 3px; + color: var(--body-medium-color); +} + +h5 { + font-size: 0.625rem; + margin: 1.5em 0 .5em 0; + color: var(--body-quiet-color); + text-transform: uppercase; + letter-spacing: 1px; +} + +ul > li { + list-style-type: square; + padding: 1px 0; +} + +li ul { + margin-bottom: 0; +} + +li, dt, dd { + font-size: 0.8125rem; + line-height: 1.25rem; +} + +dt { + font-weight: bold; + margin-top: 4px; +} + +dd { + margin-left: 0; +} + +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 0; + min-width: 0; + padding: 0; + border: none; + border-top: 1px solid var(--hairline-color); +} + +details summary { + cursor: pointer; +} + +blockquote { + font-size: 0.6875rem; + color: #777; + margin-left: 2px; + padding-left: 10px; + border-left: 5px solid #ddd; +} + +code, pre { + font-family: var(--font-family-monospace); + color: var(--body-quiet-color); + font-size: 0.75rem; + overflow-x: auto; +} + +pre.literal-block { + margin: 10px; + background: var(--darkened-bg); + padding: 6px 8px; +} + +code strong { + color: #930; +} + +hr { + clear: both; + color: var(--hairline-color); + background-color: var(--hairline-color); + height: 1px; + border: none; + margin: 0; + padding: 0; + line-height: 1px; +} + +/* TEXT STYLES & MODIFIERS */ + +.small { + font-size: 0.6875rem; +} + +.mini { + font-size: 0.625rem; +} + +.help, p.help, form p.help, div.help, form div.help, div.help li { + font-size: 0.6875rem; + color: var(--body-quiet-color); +} + +div.help ul { + margin-bottom: 0; +} + +.help-tooltip { + cursor: help; +} + +p img, h1 img, h2 img, h3 img, h4 img, td img { + vertical-align: middle; +} + +.quiet, a.quiet:link, a.quiet:visited { + color: var(--body-quiet-color); + font-weight: normal; +} + +.clear { + clear: both; +} + +.nowrap { + white-space: nowrap; +} + +.hidden { + display: none !important; +} + +/* TABLES */ + +table { + border-collapse: collapse; + border-color: var(--border-color); +} + +td, th { + font-size: 0.8125rem; + line-height: 1rem; + border-bottom: 1px solid var(--hairline-color); + vertical-align: top; + padding: 8px; +} + +th { + font-weight: 500; + text-align: left; +} + +thead th, +tfoot td { + color: var(--body-quiet-color); + padding: 5px 10px; + font-size: 0.6875rem; + background: var(--body-bg); + border: none; + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); +} + +tfoot td { + border-bottom: none; + border-top: 1px solid var(--hairline-color); +} + +thead th.required { + font-weight: bold; +} + +tr.alt { + background: var(--darkened-bg); +} + +tr:nth-child(odd), .row-form-errors { + background: var(--body-bg); +} + +tr:nth-child(even), +tr:nth-child(even) .errorlist, +tr:nth-child(odd) + .row-form-errors, +tr:nth-child(odd) + .row-form-errors .errorlist { + background: var(--darkened-bg); +} + +/* SORTABLE TABLES */ + +thead th { + padding: 5px 10px; + line-height: normal; + text-transform: uppercase; + background: var(--darkened-bg); +} + +thead th a:link, thead th a:visited { + color: var(--body-quiet-color); +} + +thead th.sorted { + background: var(--selected-bg); +} + +thead th.sorted .text { + padding-right: 42px; +} + +table thead th .text span { + padding: 8px 10px; + display: block; +} + +table thead th .text a { + display: block; + cursor: pointer; + padding: 8px 10px; +} + +table thead th .text a:focus, table thead th .text a:hover { + background: var(--selected-bg); +} + +thead th.sorted a.sortremove { + visibility: hidden; +} + +table thead th.sorted:hover a.sortremove { + visibility: visible; +} + +table thead th.sorted .sortoptions { + display: block; + padding: 9px 5px 0 5px; + float: right; + text-align: right; +} + +table thead th.sorted .sortpriority { + font-size: .8em; + min-width: 12px; + text-align: center; + vertical-align: 3px; + margin-left: 2px; + margin-right: 2px; +} + +table thead th.sorted .sortoptions a { + position: relative; + width: 14px; + height: 14px; + display: inline-block; + background: url("../img/sorting-icons.3a097b59f104.svg") 0 0 no-repeat; + background-size: 14px auto; +} + +table thead th.sorted .sortoptions a.sortremove { + background-position: 0 0; +} + +table thead th.sorted .sortoptions a.sortremove:after { + content: '\\'; + position: absolute; + top: -6px; + left: 3px; + font-weight: 200; + font-size: 1.125rem; + color: var(--body-quiet-color); +} + +table thead th.sorted .sortoptions a.sortremove:focus:after, +table thead th.sorted .sortoptions a.sortremove:hover:after { + color: var(--link-fg); +} + +table thead th.sorted .sortoptions a.sortremove:focus, +table thead th.sorted .sortoptions a.sortremove:hover { + background-position: 0 -14px; +} + +table thead th.sorted .sortoptions a.ascending { + background-position: 0 -28px; +} + +table thead th.sorted .sortoptions a.ascending:focus, +table thead th.sorted .sortoptions a.ascending:hover { + background-position: 0 -42px; +} + +table thead th.sorted .sortoptions a.descending { + top: 1px; + background-position: 0 -56px; +} + +table thead th.sorted .sortoptions a.descending:focus, +table thead th.sorted .sortoptions a.descending:hover { + background-position: 0 -70px; +} + +/* FORM DEFAULTS */ + +input, textarea, select, .form-row p, form .button { + margin: 2px 0; + padding: 2px 3px; + vertical-align: middle; + font-family: var(--font-family-primary); + font-weight: normal; + font-size: 0.8125rem; +} +.form-row div.help { + padding: 2px 3px; +} + +textarea { + vertical-align: top; +} + +/* +Minifiers remove the default (text) "type" attribute from "input" HTML tags. +Add input:not([type]) to make the CSS stylesheet work the same. +*/ +input:not([type]), input[type=text], input[type=password], input[type=email], +input[type=url], input[type=number], input[type=tel], textarea, select, +.vTextField { + border: 1px solid var(--border-color); + border-radius: 4px; + padding: 5px 6px; + margin-top: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} + +/* +Minifiers remove the default (text) "type" attribute from "input" HTML tags. +Add input:not([type]) to make the CSS stylesheet work the same. +*/ +input:not([type]):focus, input[type=text]:focus, input[type=password]:focus, +input[type=email]:focus, input[type=url]:focus, input[type=number]:focus, +input[type=tel]:focus, textarea:focus, select:focus, .vTextField:focus { + border-color: var(--body-quiet-color); +} + +select { + height: 1.875rem; +} + +select[multiple] { + /* Allow HTML size attribute to override the height in the rule above. */ + height: auto; + min-height: 150px; +} + +/* FORM BUTTONS */ + +.button, input[type=submit], input[type=button], .submit-row input, a.button { + background: var(--button-bg); + padding: 10px 15px; + border: none; + border-radius: 4px; + color: var(--button-fg); + cursor: pointer; + transition: background 0.15s; +} + +a.button { + padding: 4px 5px; +} + +.button:active, input[type=submit]:active, input[type=button]:active, +.button:focus, input[type=submit]:focus, input[type=button]:focus, +.button:hover, input[type=submit]:hover, input[type=button]:hover { + background: var(--button-hover-bg); +} + +.button[disabled], input[type=submit][disabled], input[type=button][disabled] { + opacity: 0.4; +} + +.button.default, input[type=submit].default, .submit-row input.default { + border: none; + font-weight: 400; + background: var(--default-button-bg); +} + +.button.default:active, input[type=submit].default:active, +.button.default:focus, input[type=submit].default:focus, +.button.default:hover, input[type=submit].default:hover { + background: var(--default-button-hover-bg); +} + +.button[disabled].default, +input[type=submit][disabled].default, +input[type=button][disabled].default { + opacity: 0.4; +} + + +/* MODULES */ + +.module { + border: none; + margin-bottom: 30px; + background: var(--body-bg); +} + +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { + padding-left: 10px; + padding-right: 10px; +} + +.module blockquote { + margin-left: 12px; +} + +.module ul, .module ol { + margin-left: 1.5em; +} + +.module h3 { + margin-top: .6em; +} + +.module h2, .module caption, .inline-group h2 { + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 0.8125rem; + text-align: left; + background: var(--header-bg); + color: var(--header-link-color); +} + +.module caption, +.inline-group h2 { + font-size: 0.75rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.module table { + border-collapse: collapse; +} + +/* MESSAGES & ERRORS */ + +ul.messagelist { + padding: 0; + margin: 0; +} + +ul.messagelist li { + display: block; + font-weight: 400; + font-size: 0.8125rem; + padding: 10px 10px 10px 65px; + margin: 0 0 10px 0; + background: var(--message-success-bg) url("../img/icon-yes.d2f9f035226a.svg") 40px 12px no-repeat; + background-size: 16px auto; + color: var(--body-fg); + word-break: break-word; +} + +ul.messagelist li.warning { + background: var(--message-warning-bg) url("../img/icon-alert.034cc7d8a67f.svg") 40px 14px no-repeat; + background-size: 14px auto; +} + +ul.messagelist li.error { + background: var(--message-error-bg) url("../img/icon-no.439e821418cd.svg") 40px 12px no-repeat; + background-size: 16px auto; +} + +.errornote { + font-size: 0.875rem; + font-weight: 700; + display: block; + padding: 10px 12px; + margin: 0 0 10px 0; + color: var(--error-fg); + border: 1px solid var(--error-fg); + border-radius: 4px; + background-color: var(--body-bg); + background-position: 5px 12px; + overflow-wrap: break-word; +} + +ul.errorlist { + margin: 0 0 4px; + padding: 0; + color: var(--error-fg); + background: var(--body-bg); +} + +ul.errorlist li { + font-size: 0.8125rem; + display: block; + margin-bottom: 4px; + overflow-wrap: break-word; +} + +ul.errorlist li:first-child { + margin-top: 0; +} + +ul.errorlist li a { + color: inherit; + text-decoration: underline; +} + +td ul.errorlist { + margin: 0; + padding: 0; +} + +td ul.errorlist li { + margin: 0; +} + +.form-row.errors { + margin: 0; + border: none; + border-bottom: 1px solid var(--hairline-color); + background: none; +} + +.form-row.errors ul.errorlist li { + padding-left: 0; +} + +.errors input, .errors select, .errors textarea, +td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea { + border: 1px solid var(--error-fg); +} + +.description { + font-size: 0.75rem; + padding: 5px 0 0 12px; +} + +/* BREADCRUMBS */ + +div.breadcrumbs { + background: var(--breadcrumbs-bg); + padding: 10px 40px; + border: none; + color: var(--breadcrumbs-fg); + text-align: left; +} + +div.breadcrumbs a { + color: var(--breadcrumbs-link-fg); +} + +div.breadcrumbs a:focus, div.breadcrumbs a:hover { + color: var(--breadcrumbs-fg); +} + +/* ACTION ICONS */ + +.viewlink, .inlineviewlink { + padding-left: 16px; + background: url("../img/icon-viewlink.41eb31f7826e.svg") 0 1px no-repeat; +} + +.hidelink { + padding-left: 16px; + background: url("../img/icon-hidelink.8d245a995e18.svg") 0 1px no-repeat; +} + +.addlink { + padding-left: 16px; + background: url("../img/icon-addlink.073aeb1feda7.svg") 0 1px no-repeat; +} + +.changelink, .inlinechangelink { + padding-left: 16px; + background: url("../img/icon-changelink.7eddb320e61f.svg") 0 1px no-repeat; +} + +.deletelink { + padding-left: 16px; + background: url("../img/icon-deletelink.564ef9dc3854.svg") 0 1px no-repeat; +} + +a.deletelink:link, a.deletelink:visited { + color: #CC3434; /* XXX Probably unused? */ +} + +a.deletelink:focus, a.deletelink:hover { + color: #993333; /* XXX Probably unused? */ + text-decoration: none; +} + +/* OBJECT TOOLS */ + +.object-tools { + font-size: 0.625rem; + font-weight: bold; + padding-left: 0; + float: right; + position: relative; + margin-top: -48px; +} + +.object-tools li { + display: block; + float: left; + margin-left: 5px; + height: 1rem; +} + +.object-tools a { + border-radius: 15px; +} + +.object-tools a:link, .object-tools a:visited { + display: block; + float: left; + padding: 3px 12px; + background: var(--object-tools-bg); + color: var(--object-tools-fg); + font-weight: 400; + font-size: 0.6875rem; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.object-tools a:focus, .object-tools a:hover { + background-color: var(--object-tools-hover-bg); +} + +.object-tools a:focus{ + text-decoration: none; +} + +.object-tools a.viewsitelink, .object-tools a.addlink { + background-repeat: no-repeat; + background-position: right 7px center; + padding-right: 26px; +} + +.object-tools a.viewsitelink { + background-image: url("../img/tooltag-arrowright.bbfb788a849e.svg"); +} + +.object-tools a.addlink { + background-image: url("../img/tooltag-add.e59d620a9742.svg"); +} + +/* OBJECT HISTORY */ + +#change-history table { + width: 100%; +} + +#change-history table tbody th { + width: 16em; +} + +#change-history .paginator { + color: var(--body-quiet-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--body-bg); + overflow: hidden; +} + +/* PAGE STRUCTURE */ + +#container { + position: relative; + width: 100%; + min-width: 980px; + padding: 0; + display: flex; + flex-direction: column; + height: 100%; +} + +#container > .main { + display: flex; + flex: 1 0 auto; +} + +.main > .content { + flex: 1 0; + max-width: 100%; +} + +.skip-to-content-link { + position: absolute; + top: -999px; + margin: 5px; + padding: 5px; + background: var(--body-bg); + z-index: 1; +} + +.skip-to-content-link:focus { + left: 0px; + top: 0px; +} + +#content { + padding: 20px 40px; +} + +.dashboard #content { + width: 600px; +} + +#content-main { + float: left; + width: 100%; +} + +#content-related { + float: right; + width: 260px; + position: relative; + margin-right: -300px; +} + +@media (forced-colors: active) { + #content-related { + border: 1px solid; + } +} + +/* COLUMN TYPES */ + +.colMS { + margin-right: 300px; +} + +.colSM { + margin-left: 300px; +} + +.colSM #content-related { + float: left; + margin-right: 0; + margin-left: -300px; +} + +.colSM #content-main { + float: right; +} + +.popup .colM { + width: auto; +} + +/* HEADER */ + +#header { + width: auto; + height: auto; + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 40px; + background: var(--header-bg); + color: var(--header-color); +} + +#header a:link, #header a:visited, #logout-form button { + color: var(--header-link-color); +} + +#header a:focus , #header a:hover { + text-decoration: underline; +} + +@media (forced-colors: active) { + #header { + border-bottom: 1px solid; + } +} + +#branding { + display: flex; +} + +#site-name { + padding: 0; + margin: 0; + margin-inline-end: 20px; + font-weight: 300; + font-size: 1.5rem; + color: var(--header-branding-color); +} + +#site-name a:link, #site-name a:visited { + color: var(--accent); +} + +#branding h2 { + padding: 0 10px; + font-size: 0.875rem; + margin: -8px 0 8px 0; + font-weight: normal; + color: var(--header-color); +} + +#branding a:hover { + text-decoration: none; +} + +#logout-form { + display: inline; +} + +#logout-form button { + background: none; + border: 0; + cursor: pointer; + font-family: var(--font-family-primary); +} + +#user-tools { + float: right; + margin: 0 0 0 20px; + text-align: right; +} + +#user-tools, #logout-form button{ + padding: 0; + font-weight: 300; + font-size: 0.6875rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +#user-tools a, #logout-form button { + border-bottom: 1px solid rgba(255, 255, 255, 0.25); +} + +#user-tools a:focus, #user-tools a:hover, +#logout-form button:active, #logout-form button:hover { + text-decoration: none; + border-bottom: 0; +} + +#logout-form button:active, #logout-form button:hover { + margin-bottom: 1px; +} + +/* SIDEBAR */ + +#content-related { + background: var(--darkened-bg); +} + +#content-related .module { + background: none; +} + +#content-related h3 { + color: var(--body-quiet-color); + padding: 0 16px; + margin: 0 0 16px; +} + +#content-related h4 { + font-size: 0.8125rem; +} + +#content-related p { + padding-left: 16px; + padding-right: 16px; +} + +#content-related .actionlist { + padding: 0; + margin: 16px; +} + +#content-related .actionlist li { + line-height: 1.2; + margin-bottom: 10px; + padding-left: 18px; +} + +#content-related .module h2 { + background: none; + padding: 16px; + margin-bottom: 16px; + border-bottom: 1px solid var(--hairline-color); + font-size: 1.125rem; + color: var(--body-fg); +} + +.delete-confirmation form input[type="submit"] { + background: var(--delete-button-bg); + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); +} + +.delete-confirmation form input[type="submit"]:active, +.delete-confirmation form input[type="submit"]:focus, +.delete-confirmation form input[type="submit"]:hover { + background: var(--delete-button-hover-bg); +} + +.delete-confirmation form .cancel-link { + display: inline-block; + vertical-align: middle; + height: 0.9375rem; + line-height: 0.9375rem; + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); + background: var(--close-button-bg); + margin: 0 0 0 10px; +} + +.delete-confirmation form .cancel-link:active, +.delete-confirmation form .cancel-link:focus, +.delete-confirmation form .cancel-link:hover { + background: var(--close-button-hover-bg); +} + +/* POPUP */ +.popup #content { + padding: 20px; +} + +.popup #container { + min-width: 0; +} + +.popup #header { + padding: 10px 20px; +} + +/* PAGINATOR */ + +.paginator { + display: flex; + align-items: center; + gap: 4px; + font-size: 0.8125rem; + padding-top: 10px; + padding-bottom: 10px; + line-height: 22px; + margin: 0; + border-top: 1px solid var(--hairline-color); + width: 100%; +} + +.paginator a:link, .paginator a:visited { + padding: 2px 6px; + background: var(--button-bg); + text-decoration: none; + color: var(--button-fg); +} + +.paginator a.showall { + border: none; + background: none; + color: var(--link-fg); +} + +.paginator a.showall:focus, .paginator a.showall:hover { + background: none; + color: var(--link-hover-color); +} + +.paginator .end { + margin-right: 6px; +} + +.paginator .this-page { + padding: 2px 6px; + font-weight: bold; + font-size: 0.8125rem; + vertical-align: top; +} + +.paginator a:focus, .paginator a:hover { + color: white; + background: var(--link-hover-color); +} + +.paginator input { + margin-left: auto; +} + +.base-svgs { + display: none; +} + +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + white-space: nowrap; + border: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} diff --git a/staticfiles/admin/css/base.08e8df8c3104.css.gz b/staticfiles/admin/css/base.08e8df8c3104.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7b1ec883ccb993f52cedea9dee5b1b1a2de30053 GIT binary patch literal 5068 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 literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/base.css b/staticfiles/admin/css/base.css new file mode 100644 index 0000000..ac28326 --- /dev/null +++ b/staticfiles/admin/css/base.css @@ -0,0 +1,1179 @@ +/* + DJANGO Admin styles +*/ + +/* VARIABLE DEFINITIONS */ +html[data-theme="light"], +:root { + --primary: #79aec8; + --secondary: #417690; + --accent: #f5dd5d; + --primary-fg: #fff; + + --body-fg: #333; + --body-bg: #fff; + --body-quiet-color: #666; + --body-medium-color: #444; + --body-loud-color: #000; + + --header-color: #ffc; + --header-branding-color: var(--accent); + --header-bg: var(--secondary); + --header-link-color: var(--primary-fg); + + --breadcrumbs-fg: #c4dce8; + --breadcrumbs-link-fg: var(--body-bg); + --breadcrumbs-bg: #264b5d; + + --link-fg: #417893; + --link-hover-color: #036; + --link-selected-fg: var(--secondary); + + --hairline-color: #e8e8e8; + --border-color: #ccc; + + --error-fg: #ba2121; + + --message-success-bg: #dfd; + --message-warning-bg: #ffc; + --message-error-bg: #ffefef; + + --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */ + --selected-bg: #e4e4e4; /* E.g. selected table cells */ + --selected-row: #ffc; + + --button-fg: #fff; + --button-bg: var(--secondary); + --button-hover-bg: #205067; + --default-button-bg: #205067; + --default-button-hover-bg: var(--secondary); + --close-button-bg: #747474; + --close-button-hover-bg: #333; + --delete-button-bg: #ba2121; + --delete-button-hover-bg: #a41515; + + --object-tools-fg: var(--button-fg); + --object-tools-bg: var(--close-button-bg); + --object-tools-hover-bg: var(--close-button-hover-bg); + + --font-family-primary: + "Segoe UI", + system-ui, + Roboto, + "Helvetica Neue", + Arial, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + --font-family-monospace: + ui-monospace, + Menlo, + Monaco, + "Cascadia Mono", + "Segoe UI Mono", + "Roboto Mono", + "Oxygen Mono", + "Ubuntu Monospace", + "Source Code Pro", + "Fira Mono", + "Droid Sans Mono", + "Courier New", + monospace, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + + color-scheme: light; +} + +html, body { + height: 100%; +} + +body { + margin: 0; + padding: 0; + font-size: 0.875rem; + font-family: var(--font-family-primary); + color: var(--body-fg); + background: var(--body-bg); +} + +/* LINKS */ + +a:link, a:visited { + color: var(--link-fg); + text-decoration: none; + transition: color 0.15s, background 0.15s; +} + +a:focus, a:hover { + color: var(--link-hover-color); +} + +a:focus { + text-decoration: underline; +} + +a img { + border: none; +} + +a.section:link, a.section:visited { + color: var(--header-link-color); + text-decoration: none; +} + +a.section:focus, a.section:hover { + text-decoration: underline; +} + +/* GLOBAL DEFAULTS */ + +p, ol, ul, dl { + margin: .2em 0 .8em 0; +} + +p { + padding: 0; + line-height: 140%; +} + +h1,h2,h3,h4,h5 { + font-weight: bold; +} + +h1 { + margin: 0 0 20px; + font-weight: 300; + font-size: 1.25rem; +} + +h2 { + font-size: 1rem; + margin: 1em 0 .5em 0; +} + +h2.subhead { + font-weight: normal; + margin-top: 0; +} + +h3 { + font-size: 0.875rem; + margin: .8em 0 .3em 0; + color: var(--body-medium-color); + font-weight: bold; +} + +h4 { + font-size: 0.75rem; + margin: 1em 0 .8em 0; + padding-bottom: 3px; + color: var(--body-medium-color); +} + +h5 { + font-size: 0.625rem; + margin: 1.5em 0 .5em 0; + color: var(--body-quiet-color); + text-transform: uppercase; + letter-spacing: 1px; +} + +ul > li { + list-style-type: square; + padding: 1px 0; +} + +li ul { + margin-bottom: 0; +} + +li, dt, dd { + font-size: 0.8125rem; + line-height: 1.25rem; +} + +dt { + font-weight: bold; + margin-top: 4px; +} + +dd { + margin-left: 0; +} + +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 0; + min-width: 0; + padding: 0; + border: none; + border-top: 1px solid var(--hairline-color); +} + +details summary { + cursor: pointer; +} + +blockquote { + font-size: 0.6875rem; + color: #777; + margin-left: 2px; + padding-left: 10px; + border-left: 5px solid #ddd; +} + +code, pre { + font-family: var(--font-family-monospace); + color: var(--body-quiet-color); + font-size: 0.75rem; + overflow-x: auto; +} + +pre.literal-block { + margin: 10px; + background: var(--darkened-bg); + padding: 6px 8px; +} + +code strong { + color: #930; +} + +hr { + clear: both; + color: var(--hairline-color); + background-color: var(--hairline-color); + height: 1px; + border: none; + margin: 0; + padding: 0; + line-height: 1px; +} + +/* TEXT STYLES & MODIFIERS */ + +.small { + font-size: 0.6875rem; +} + +.mini { + font-size: 0.625rem; +} + +.help, p.help, form p.help, div.help, form div.help, div.help li { + font-size: 0.6875rem; + color: var(--body-quiet-color); +} + +div.help ul { + margin-bottom: 0; +} + +.help-tooltip { + cursor: help; +} + +p img, h1 img, h2 img, h3 img, h4 img, td img { + vertical-align: middle; +} + +.quiet, a.quiet:link, a.quiet:visited { + color: var(--body-quiet-color); + font-weight: normal; +} + +.clear { + clear: both; +} + +.nowrap { + white-space: nowrap; +} + +.hidden { + display: none !important; +} + +/* TABLES */ + +table { + border-collapse: collapse; + border-color: var(--border-color); +} + +td, th { + font-size: 0.8125rem; + line-height: 1rem; + border-bottom: 1px solid var(--hairline-color); + vertical-align: top; + padding: 8px; +} + +th { + font-weight: 500; + text-align: left; +} + +thead th, +tfoot td { + color: var(--body-quiet-color); + padding: 5px 10px; + font-size: 0.6875rem; + background: var(--body-bg); + border: none; + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); +} + +tfoot td { + border-bottom: none; + border-top: 1px solid var(--hairline-color); +} + +thead th.required { + font-weight: bold; +} + +tr.alt { + background: var(--darkened-bg); +} + +tr:nth-child(odd), .row-form-errors { + background: var(--body-bg); +} + +tr:nth-child(even), +tr:nth-child(even) .errorlist, +tr:nth-child(odd) + .row-form-errors, +tr:nth-child(odd) + .row-form-errors .errorlist { + background: var(--darkened-bg); +} + +/* SORTABLE TABLES */ + +thead th { + padding: 5px 10px; + line-height: normal; + text-transform: uppercase; + background: var(--darkened-bg); +} + +thead th a:link, thead th a:visited { + color: var(--body-quiet-color); +} + +thead th.sorted { + background: var(--selected-bg); +} + +thead th.sorted .text { + padding-right: 42px; +} + +table thead th .text span { + padding: 8px 10px; + display: block; +} + +table thead th .text a { + display: block; + cursor: pointer; + padding: 8px 10px; +} + +table thead th .text a:focus, table thead th .text a:hover { + background: var(--selected-bg); +} + +thead th.sorted a.sortremove { + visibility: hidden; +} + +table thead th.sorted:hover a.sortremove { + visibility: visible; +} + +table thead th.sorted .sortoptions { + display: block; + padding: 9px 5px 0 5px; + float: right; + text-align: right; +} + +table thead th.sorted .sortpriority { + font-size: .8em; + min-width: 12px; + text-align: center; + vertical-align: 3px; + margin-left: 2px; + margin-right: 2px; +} + +table thead th.sorted .sortoptions a { + position: relative; + width: 14px; + height: 14px; + display: inline-block; + background: url(../img/sorting-icons.svg) 0 0 no-repeat; + background-size: 14px auto; +} + +table thead th.sorted .sortoptions a.sortremove { + background-position: 0 0; +} + +table thead th.sorted .sortoptions a.sortremove:after { + content: '\\'; + position: absolute; + top: -6px; + left: 3px; + font-weight: 200; + font-size: 1.125rem; + color: var(--body-quiet-color); +} + +table thead th.sorted .sortoptions a.sortremove:focus:after, +table thead th.sorted .sortoptions a.sortremove:hover:after { + color: var(--link-fg); +} + +table thead th.sorted .sortoptions a.sortremove:focus, +table thead th.sorted .sortoptions a.sortremove:hover { + background-position: 0 -14px; +} + +table thead th.sorted .sortoptions a.ascending { + background-position: 0 -28px; +} + +table thead th.sorted .sortoptions a.ascending:focus, +table thead th.sorted .sortoptions a.ascending:hover { + background-position: 0 -42px; +} + +table thead th.sorted .sortoptions a.descending { + top: 1px; + background-position: 0 -56px; +} + +table thead th.sorted .sortoptions a.descending:focus, +table thead th.sorted .sortoptions a.descending:hover { + background-position: 0 -70px; +} + +/* FORM DEFAULTS */ + +input, textarea, select, .form-row p, form .button { + margin: 2px 0; + padding: 2px 3px; + vertical-align: middle; + font-family: var(--font-family-primary); + font-weight: normal; + font-size: 0.8125rem; +} +.form-row div.help { + padding: 2px 3px; +} + +textarea { + vertical-align: top; +} + +/* +Minifiers remove the default (text) "type" attribute from "input" HTML tags. +Add input:not([type]) to make the CSS stylesheet work the same. +*/ +input:not([type]), input[type=text], input[type=password], input[type=email], +input[type=url], input[type=number], input[type=tel], textarea, select, +.vTextField { + border: 1px solid var(--border-color); + border-radius: 4px; + padding: 5px 6px; + margin-top: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} + +/* +Minifiers remove the default (text) "type" attribute from "input" HTML tags. +Add input:not([type]) to make the CSS stylesheet work the same. +*/ +input:not([type]):focus, input[type=text]:focus, input[type=password]:focus, +input[type=email]:focus, input[type=url]:focus, input[type=number]:focus, +input[type=tel]:focus, textarea:focus, select:focus, .vTextField:focus { + border-color: var(--body-quiet-color); +} + +select { + height: 1.875rem; +} + +select[multiple] { + /* Allow HTML size attribute to override the height in the rule above. */ + height: auto; + min-height: 150px; +} + +/* FORM BUTTONS */ + +.button, input[type=submit], input[type=button], .submit-row input, a.button { + background: var(--button-bg); + padding: 10px 15px; + border: none; + border-radius: 4px; + color: var(--button-fg); + cursor: pointer; + transition: background 0.15s; +} + +a.button { + padding: 4px 5px; +} + +.button:active, input[type=submit]:active, input[type=button]:active, +.button:focus, input[type=submit]:focus, input[type=button]:focus, +.button:hover, input[type=submit]:hover, input[type=button]:hover { + background: var(--button-hover-bg); +} + +.button[disabled], input[type=submit][disabled], input[type=button][disabled] { + opacity: 0.4; +} + +.button.default, input[type=submit].default, .submit-row input.default { + border: none; + font-weight: 400; + background: var(--default-button-bg); +} + +.button.default:active, input[type=submit].default:active, +.button.default:focus, input[type=submit].default:focus, +.button.default:hover, input[type=submit].default:hover { + background: var(--default-button-hover-bg); +} + +.button[disabled].default, +input[type=submit][disabled].default, +input[type=button][disabled].default { + opacity: 0.4; +} + + +/* MODULES */ + +.module { + border: none; + margin-bottom: 30px; + background: var(--body-bg); +} + +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { + padding-left: 10px; + padding-right: 10px; +} + +.module blockquote { + margin-left: 12px; +} + +.module ul, .module ol { + margin-left: 1.5em; +} + +.module h3 { + margin-top: .6em; +} + +.module h2, .module caption, .inline-group h2 { + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 0.8125rem; + text-align: left; + background: var(--header-bg); + color: var(--header-link-color); +} + +.module caption, +.inline-group h2 { + font-size: 0.75rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.module table { + border-collapse: collapse; +} + +/* MESSAGES & ERRORS */ + +ul.messagelist { + padding: 0; + margin: 0; +} + +ul.messagelist li { + display: block; + font-weight: 400; + font-size: 0.8125rem; + padding: 10px 10px 10px 65px; + margin: 0 0 10px 0; + background: var(--message-success-bg) url(../img/icon-yes.svg) 40px 12px no-repeat; + background-size: 16px auto; + color: var(--body-fg); + word-break: break-word; +} + +ul.messagelist li.warning { + background: var(--message-warning-bg) url(../img/icon-alert.svg) 40px 14px no-repeat; + background-size: 14px auto; +} + +ul.messagelist li.error { + background: var(--message-error-bg) url(../img/icon-no.svg) 40px 12px no-repeat; + background-size: 16px auto; +} + +.errornote { + font-size: 0.875rem; + font-weight: 700; + display: block; + padding: 10px 12px; + margin: 0 0 10px 0; + color: var(--error-fg); + border: 1px solid var(--error-fg); + border-radius: 4px; + background-color: var(--body-bg); + background-position: 5px 12px; + overflow-wrap: break-word; +} + +ul.errorlist { + margin: 0 0 4px; + padding: 0; + color: var(--error-fg); + background: var(--body-bg); +} + +ul.errorlist li { + font-size: 0.8125rem; + display: block; + margin-bottom: 4px; + overflow-wrap: break-word; +} + +ul.errorlist li:first-child { + margin-top: 0; +} + +ul.errorlist li a { + color: inherit; + text-decoration: underline; +} + +td ul.errorlist { + margin: 0; + padding: 0; +} + +td ul.errorlist li { + margin: 0; +} + +.form-row.errors { + margin: 0; + border: none; + border-bottom: 1px solid var(--hairline-color); + background: none; +} + +.form-row.errors ul.errorlist li { + padding-left: 0; +} + +.errors input, .errors select, .errors textarea, +td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea { + border: 1px solid var(--error-fg); +} + +.description { + font-size: 0.75rem; + padding: 5px 0 0 12px; +} + +/* BREADCRUMBS */ + +div.breadcrumbs { + background: var(--breadcrumbs-bg); + padding: 10px 40px; + border: none; + color: var(--breadcrumbs-fg); + text-align: left; +} + +div.breadcrumbs a { + color: var(--breadcrumbs-link-fg); +} + +div.breadcrumbs a:focus, div.breadcrumbs a:hover { + color: var(--breadcrumbs-fg); +} + +/* ACTION ICONS */ + +.viewlink, .inlineviewlink { + padding-left: 16px; + background: url(../img/icon-viewlink.svg) 0 1px no-repeat; +} + +.hidelink { + padding-left: 16px; + background: url(../img/icon-hidelink.svg) 0 1px no-repeat; +} + +.addlink { + padding-left: 16px; + background: url(../img/icon-addlink.svg) 0 1px no-repeat; +} + +.changelink, .inlinechangelink { + padding-left: 16px; + background: url(../img/icon-changelink.svg) 0 1px no-repeat; +} + +.deletelink { + padding-left: 16px; + background: url(../img/icon-deletelink.svg) 0 1px no-repeat; +} + +a.deletelink:link, a.deletelink:visited { + color: #CC3434; /* XXX Probably unused? */ +} + +a.deletelink:focus, a.deletelink:hover { + color: #993333; /* XXX Probably unused? */ + text-decoration: none; +} + +/* OBJECT TOOLS */ + +.object-tools { + font-size: 0.625rem; + font-weight: bold; + padding-left: 0; + float: right; + position: relative; + margin-top: -48px; +} + +.object-tools li { + display: block; + float: left; + margin-left: 5px; + height: 1rem; +} + +.object-tools a { + border-radius: 15px; +} + +.object-tools a:link, .object-tools a:visited { + display: block; + float: left; + padding: 3px 12px; + background: var(--object-tools-bg); + color: var(--object-tools-fg); + font-weight: 400; + font-size: 0.6875rem; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.object-tools a:focus, .object-tools a:hover { + background-color: var(--object-tools-hover-bg); +} + +.object-tools a:focus{ + text-decoration: none; +} + +.object-tools a.viewsitelink, .object-tools a.addlink { + background-repeat: no-repeat; + background-position: right 7px center; + padding-right: 26px; +} + +.object-tools a.viewsitelink { + background-image: url(../img/tooltag-arrowright.svg); +} + +.object-tools a.addlink { + background-image: url(../img/tooltag-add.svg); +} + +/* OBJECT HISTORY */ + +#change-history table { + width: 100%; +} + +#change-history table tbody th { + width: 16em; +} + +#change-history .paginator { + color: var(--body-quiet-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--body-bg); + overflow: hidden; +} + +/* PAGE STRUCTURE */ + +#container { + position: relative; + width: 100%; + min-width: 980px; + padding: 0; + display: flex; + flex-direction: column; + height: 100%; +} + +#container > .main { + display: flex; + flex: 1 0 auto; +} + +.main > .content { + flex: 1 0; + max-width: 100%; +} + +.skip-to-content-link { + position: absolute; + top: -999px; + margin: 5px; + padding: 5px; + background: var(--body-bg); + z-index: 1; +} + +.skip-to-content-link:focus { + left: 0px; + top: 0px; +} + +#content { + padding: 20px 40px; +} + +.dashboard #content { + width: 600px; +} + +#content-main { + float: left; + width: 100%; +} + +#content-related { + float: right; + width: 260px; + position: relative; + margin-right: -300px; +} + +@media (forced-colors: active) { + #content-related { + border: 1px solid; + } +} + +/* COLUMN TYPES */ + +.colMS { + margin-right: 300px; +} + +.colSM { + margin-left: 300px; +} + +.colSM #content-related { + float: left; + margin-right: 0; + margin-left: -300px; +} + +.colSM #content-main { + float: right; +} + +.popup .colM { + width: auto; +} + +/* HEADER */ + +#header { + width: auto; + height: auto; + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 40px; + background: var(--header-bg); + color: var(--header-color); +} + +#header a:link, #header a:visited, #logout-form button { + color: var(--header-link-color); +} + +#header a:focus , #header a:hover { + text-decoration: underline; +} + +@media (forced-colors: active) { + #header { + border-bottom: 1px solid; + } +} + +#branding { + display: flex; +} + +#site-name { + padding: 0; + margin: 0; + margin-inline-end: 20px; + font-weight: 300; + font-size: 1.5rem; + color: var(--header-branding-color); +} + +#site-name a:link, #site-name a:visited { + color: var(--accent); +} + +#branding h2 { + padding: 0 10px; + font-size: 0.875rem; + margin: -8px 0 8px 0; + font-weight: normal; + color: var(--header-color); +} + +#branding a:hover { + text-decoration: none; +} + +#logout-form { + display: inline; +} + +#logout-form button { + background: none; + border: 0; + cursor: pointer; + font-family: var(--font-family-primary); +} + +#user-tools { + float: right; + margin: 0 0 0 20px; + text-align: right; +} + +#user-tools, #logout-form button{ + padding: 0; + font-weight: 300; + font-size: 0.6875rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +#user-tools a, #logout-form button { + border-bottom: 1px solid rgba(255, 255, 255, 0.25); +} + +#user-tools a:focus, #user-tools a:hover, +#logout-form button:active, #logout-form button:hover { + text-decoration: none; + border-bottom: 0; +} + +#logout-form button:active, #logout-form button:hover { + margin-bottom: 1px; +} + +/* SIDEBAR */ + +#content-related { + background: var(--darkened-bg); +} + +#content-related .module { + background: none; +} + +#content-related h3 { + color: var(--body-quiet-color); + padding: 0 16px; + margin: 0 0 16px; +} + +#content-related h4 { + font-size: 0.8125rem; +} + +#content-related p { + padding-left: 16px; + padding-right: 16px; +} + +#content-related .actionlist { + padding: 0; + margin: 16px; +} + +#content-related .actionlist li { + line-height: 1.2; + margin-bottom: 10px; + padding-left: 18px; +} + +#content-related .module h2 { + background: none; + padding: 16px; + margin-bottom: 16px; + border-bottom: 1px solid var(--hairline-color); + font-size: 1.125rem; + color: var(--body-fg); +} + +.delete-confirmation form input[type="submit"] { + background: var(--delete-button-bg); + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); +} + +.delete-confirmation form input[type="submit"]:active, +.delete-confirmation form input[type="submit"]:focus, +.delete-confirmation form input[type="submit"]:hover { + background: var(--delete-button-hover-bg); +} + +.delete-confirmation form .cancel-link { + display: inline-block; + vertical-align: middle; + height: 0.9375rem; + line-height: 0.9375rem; + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); + background: var(--close-button-bg); + margin: 0 0 0 10px; +} + +.delete-confirmation form .cancel-link:active, +.delete-confirmation form .cancel-link:focus, +.delete-confirmation form .cancel-link:hover { + background: var(--close-button-hover-bg); +} + +/* POPUP */ +.popup #content { + padding: 20px; +} + +.popup #container { + min-width: 0; +} + +.popup #header { + padding: 10px 20px; +} + +/* PAGINATOR */ + +.paginator { + display: flex; + align-items: center; + gap: 4px; + font-size: 0.8125rem; + padding-top: 10px; + padding-bottom: 10px; + line-height: 22px; + margin: 0; + border-top: 1px solid var(--hairline-color); + width: 100%; +} + +.paginator a:link, .paginator a:visited { + padding: 2px 6px; + background: var(--button-bg); + text-decoration: none; + color: var(--button-fg); +} + +.paginator a.showall { + border: none; + background: none; + color: var(--link-fg); +} + +.paginator a.showall:focus, .paginator a.showall:hover { + background: none; + color: var(--link-hover-color); +} + +.paginator .end { + margin-right: 6px; +} + +.paginator .this-page { + padding: 2px 6px; + font-weight: bold; + font-size: 0.8125rem; + vertical-align: top; +} + +.paginator a:focus, .paginator a:hover { + color: white; + background: var(--link-hover-color); +} + +.paginator input { + margin-left: auto; +} + +.base-svgs { + display: none; +} + +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + white-space: nowrap; + border: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} diff --git a/staticfiles/admin/css/base.css.gz b/staticfiles/admin/css/base.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a878cc8922c46d6849e3a1a86fc594b2a12544d9 GIT binary patch literal 4939 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 * { + display: inline; +} + +#changelist-filter details > summary { + list-style-type: none; +} + +#changelist-filter details > summary::-webkit-details-marker { + display: none; +} + +#changelist-filter details > summary::before { + content: '→'; + font-weight: bold; + color: var(--link-hover-color); +} + +#changelist-filter details[open] > summary::before { + content: '↓'; +} + +#changelist-filter ul { + margin: 5px 0; + padding: 0 15px 15px; + border-bottom: 1px solid var(--hairline-color); +} + +#changelist-filter ul:last-child { + border-bottom: none; +} + +#changelist-filter li { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +#changelist-filter a { + display: block; + color: var(--body-quiet-color); + word-break: break-word; +} + +#changelist-filter li.selected { + border-left: 5px solid var(--hairline-color); + padding-left: 10px; + margin-left: -15px; +} + +#changelist-filter li.selected a { + color: var(--link-selected-fg); +} + +#changelist-filter a:focus, #changelist-filter a:hover, +#changelist-filter li.selected a:focus, +#changelist-filter li.selected a:hover { + color: var(--link-hover-color); +} + +#changelist-filter #changelist-filter-extra-actions { + font-size: 0.8125rem; + margin-bottom: 10px; + border-bottom: 1px solid var(--hairline-color); +} + +/* DATE DRILLDOWN */ + +.change-list .toplinks { + display: flex; + padding-bottom: 5px; + flex-wrap: wrap; + gap: 3px 17px; + font-weight: bold; +} + +.change-list .toplinks a { + font-size: 0.8125rem; +} + +.change-list .toplinks .date-back { + color: var(--body-quiet-color); +} + +.change-list .toplinks .date-back:focus, +.change-list .toplinks .date-back:hover { + color: var(--link-hover-color); +} + +/* ACTIONS */ + +.filtered .actions { + border-right: none; +} + +#changelist table input { + margin: 0; + vertical-align: baseline; +} + +/* Once the :has() pseudo-class is supported by all browsers, the tr.selected + selector and the JS adding the class can be removed. */ +#changelist tbody tr.selected { + background-color: var(--selected-row); +} + +#changelist tbody tr:has(.action-select:checked) { + background-color: var(--selected-row); +} + +@media (forced-colors: active) { + #changelist tbody tr.selected { + background-color: SelectedItem; + } + #changelist tbody tr:has(.action-select:checked) { + background-color: SelectedItem; + } +} + +#changelist .actions { + padding: 10px; + background: var(--body-bg); + border-top: none; + border-bottom: none; + line-height: 1.5rem; + color: var(--body-quiet-color); + width: 100%; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 0.8125rem; + margin: 0 0.5em; +} + +#changelist .actions:last-child { + border-bottom: none; +} + +#changelist .actions select { + vertical-align: top; + height: 1.5rem; + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; + font-size: 0.875rem; + padding: 0 0 0 4px; + margin: 0; + margin-left: 10px; +} + +#changelist .actions select:focus { + border-color: var(--body-quiet-color); +} + +#changelist .actions label { + display: inline-block; + vertical-align: middle; + font-size: 0.8125rem; +} + +#changelist .actions .button { + font-size: 0.8125rem; + border: 1px solid var(--border-color); + border-radius: 4px; + background: var(--body-bg); + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + height: 1.5rem; + line-height: 1; + padding: 4px 8px; + margin: 0; + color: var(--body-fg); +} + +#changelist .actions .button:focus, #changelist .actions .button:hover { + border-color: var(--body-quiet-color); +} diff --git a/staticfiles/admin/css/changelists.59465e72d1ef.css.gz b/staticfiles/admin/css/changelists.59465e72d1ef.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4bb4eef7065581f2c8b591c5ecc6941cc28f9375 GIT binary patch literal 1633 zcmV-n2A=sJiwFP!00002|HW9_Zre5(zRyz-Eruq6soH6R77A7@ZL=+d*8oX|T@<~b zMB3s^iz-Pa_KMu@0k${XlZ*$QPgaZqtBcl_$p85L$Ct<8{m&O4f4ZDs-QL}TrA}zJ6v$Fw)YT?iOBdH`aYQH4@wnxJk~UZ4-~7&2h$csg#t#h z%h{pXbo!k=mvMuRbwn{H@q!YDCHPus8uOT(gVyN-ss8Cf^|V7*z0pIzhkL@XG8fE&N!&Zd`Y_)t7yG+xQN!2_-o zU+X)`21w2*2KPuDLKq<`^l_qL#JD(WlPj#1(X;3L?6%Pnen}}&#r=JF+B+y*Ed@_w zTq7PVv-i0reBe-MC4E^9NN{)YZhqMg%gi4ULAd1)8xPi`kq%F2L(jnSL7>FF&}t?~ywB;M^=$VaA8@5Pj=#(fp%U@*h&_ErFjc1ecf^p?RUIjZPXTscK|0glVeN`f0A+Lg!;B>7N=$Q}4~|Gm$&FFjHZOHvh%4 z!S=Z%NQ6;o>^u?9yjhjFlcsH(Ovn*|WO0ig;+kUOTHxz1c}A!WwO0D>JqA z@E1Hx8`)_;M|@J-gna)@roo!3XP;{%M_Hm@m%>Kctp?VkY?P;lG3m@C1sNf16513% z6CB_~hmQVg{uRpr9Zn}8`|Hilj6?KL& zDgT}vS;=|@?!dp{_1J1Q+@s57HzdB1AG%ff1$Y*uv?`saIr_ zYQC#v|7KY@X_SThMbR5}iT!HQ^%xV~2{Q>~y4GB_Rn;EK{;?t5bU?Og2i$siy#>e3 z0f5G)D(xchwjr*=wAwNPP2>$5qD92_wW`62Dww^3YlBA7ldnM9fm{&u`aXJ)hZu$lSfTV1dNBP^U+=YK$7iL#*>7RP?3fuoRnu{ zdb+w|txnTDhR%z-r9fT%uf=G7q%5Ev*2_vJ=zM2UKG`WjQFeEos}|k;VygWJ>dY<> zbd!YatOND-t|K?@87sO7f4I221Rrj$=JOBNzq=}2pQjshY{yz9heOV}h+ey5F(aH0 z%0X^ve!enM{<_wx*OS&`uNY|1LjCtVjPzt_x`grb)=pA6aCRSjB6756F5cf=U4L|Q zbY*Q)$4So~r#)#_N2VS9bD+D5qGD=6uH(>-)WDCBJUjx4Bq`=F)HziGYD#aCaA5)@ z*aF0u&O-b_5}||A+)|>5Aj8gm=Q=uLY~TNK3mky#FGn>*F$f6IF4cy?p0PnqB{zPH zRw^rczq)Jl5LBUY)wx-e!lcRGt?ednu04 zYdn+YUaAhqqLNqA(#{F2+(MM~w6i?B8mv=TIeeFSaa5@sTG-{9=pH)uG>j)hud}s} zR!cPsOygw8^jI`>;7dxR`8hK2+bP9uta=pKtJkRrWu4wL5fU^C zjc=ztTY_41(lt>uO|b8Rq>Ca$0b$*939PhxLj!nkz3XJ?1*vxSZcu##$NUc~mM-+w f6T=hMM+5ts0n2u@o$WJw?P&f3y * { + display: inline; +} + +#changelist-filter details > summary { + list-style-type: none; +} + +#changelist-filter details > summary::-webkit-details-marker { + display: none; +} + +#changelist-filter details > summary::before { + content: '→'; + font-weight: bold; + color: var(--link-hover-color); +} + +#changelist-filter details[open] > summary::before { + content: '↓'; +} + +#changelist-filter ul { + margin: 5px 0; + padding: 0 15px 15px; + border-bottom: 1px solid var(--hairline-color); +} + +#changelist-filter ul:last-child { + border-bottom: none; +} + +#changelist-filter li { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +#changelist-filter a { + display: block; + color: var(--body-quiet-color); + word-break: break-word; +} + +#changelist-filter li.selected { + border-left: 5px solid var(--hairline-color); + padding-left: 10px; + margin-left: -15px; +} + +#changelist-filter li.selected a { + color: var(--link-selected-fg); +} + +#changelist-filter a:focus, #changelist-filter a:hover, +#changelist-filter li.selected a:focus, +#changelist-filter li.selected a:hover { + color: var(--link-hover-color); +} + +#changelist-filter #changelist-filter-extra-actions { + font-size: 0.8125rem; + margin-bottom: 10px; + border-bottom: 1px solid var(--hairline-color); +} + +/* DATE DRILLDOWN */ + +.change-list .toplinks { + display: flex; + padding-bottom: 5px; + flex-wrap: wrap; + gap: 3px 17px; + font-weight: bold; +} + +.change-list .toplinks a { + font-size: 0.8125rem; +} + +.change-list .toplinks .date-back { + color: var(--body-quiet-color); +} + +.change-list .toplinks .date-back:focus, +.change-list .toplinks .date-back:hover { + color: var(--link-hover-color); +} + +/* ACTIONS */ + +.filtered .actions { + border-right: none; +} + +#changelist table input { + margin: 0; + vertical-align: baseline; +} + +/* Once the :has() pseudo-class is supported by all browsers, the tr.selected + selector and the JS adding the class can be removed. */ +#changelist tbody tr.selected { + background-color: var(--selected-row); +} + +#changelist tbody tr:has(.action-select:checked) { + background-color: var(--selected-row); +} + +@media (forced-colors: active) { + #changelist tbody tr.selected { + background-color: SelectedItem; + } + #changelist tbody tr:has(.action-select:checked) { + background-color: SelectedItem; + } +} + +#changelist .actions { + padding: 10px; + background: var(--body-bg); + border-top: none; + border-bottom: none; + line-height: 1.5rem; + color: var(--body-quiet-color); + width: 100%; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 0.8125rem; + margin: 0 0.5em; +} + +#changelist .actions:last-child { + border-bottom: none; +} + +#changelist .actions select { + vertical-align: top; + height: 1.5rem; + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; + font-size: 0.875rem; + padding: 0 0 0 4px; + margin: 0; + margin-left: 10px; +} + +#changelist .actions select:focus { + border-color: var(--body-quiet-color); +} + +#changelist .actions label { + display: inline-block; + vertical-align: middle; + font-size: 0.8125rem; +} + +#changelist .actions .button { + font-size: 0.8125rem; + border: 1px solid var(--border-color); + border-radius: 4px; + background: var(--body-bg); + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + height: 1.5rem; + line-height: 1; + padding: 4px 8px; + margin: 0; + color: var(--body-fg); +} + +#changelist .actions .button:focus, #changelist .actions .button:hover { + border-color: var(--body-quiet-color); +} diff --git a/staticfiles/admin/css/changelists.css.gz b/staticfiles/admin/css/changelists.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4bb4eef7065581f2c8b591c5ecc6941cc28f9375 GIT binary patch literal 1633 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 Rb&lMW@dMe)7Ztey007?gfr div { + padding-bottom: 10px; +} + +/* FORM LABELS */ + +label { + font-weight: normal; + color: var(--body-quiet-color); + font-size: 0.8125rem; +} + +.required label, label.required { + font-weight: bold; +} + +/* RADIO BUTTONS */ + +form div.radiolist div { + padding-right: 7px; +} + +form div.radiolist.inline div { + display: inline-block; +} + +form div.radiolist label { + width: auto; +} + +form div.radiolist input[type="radio"] { + margin: -2px 4px 0 0; + padding: 0; +} + +form ul.inline { + margin-left: 0; + padding: 0; +} + +form ul.inline li { + float: left; + padding-right: 7px; +} + +/* FIELDSETS */ + +fieldset .fieldset-heading, +fieldset .inline-heading, +:not(.inline-related) .collapse summary { + border: 1px solid var(--header-bg); + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 0.8125rem; + background: var(--header-bg); + color: var(--header-link-color); +} + +/* ALIGNED FIELDSETS */ + +.aligned label { + display: block; + padding: 4px 10px 0 0; + min-width: 160px; + width: 160px; + word-wrap: break-word; +} + +.aligned label:not(.vCheckboxLabel):after { + content: ''; + display: inline-block; + vertical-align: middle; +} + +.aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly { + padding: 6px 0; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + overflow-wrap: break-word; +} + +.aligned ul label { + display: inline; + float: none; + width: auto; +} + +.aligned .form-row input { + margin-bottom: 0; +} + +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { + width: 350px; +} + +form .aligned ul { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned div.radiolist { + display: inline-block; + margin: 0; + padding: 0; +} + +form .aligned p.help, +form .aligned div.help { + margin-top: 0; + margin-left: 160px; + padding-left: 10px; +} + +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-left: 0; + padding-left: 0; + font-weight: normal; +} + +form .aligned p.help:last-child, +form .aligned div.help:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +form .aligned input + p.help, +form .aligned textarea + p.help, +form .aligned select + p.help, +form .aligned input + div.help, +form .aligned textarea + div.help, +form .aligned select + div.help { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned select option:checked { + background-color: var(--selected-row); +} + +form .aligned ul li { + list-style: none; +} + +form .aligned table p { + margin-left: 0; + padding-left: 0; +} + +.aligned .vCheckboxLabel { + padding: 1px 0 0 5px; +} + +.aligned .vCheckboxLabel + p.help, +.aligned .vCheckboxLabel + div.help { + margin-top: -4px; +} + +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { + width: 610px; +} + +fieldset .fieldBox { + margin-right: 20px; +} + +/* WIDE FIELDSETS */ + +.wide label { + width: 200px; +} + +form .wide p.help, +form .wide ul.errorlist, +form .wide div.help { + padding-left: 50px; +} + +form div.help ul { + padding-left: 0; + margin-left: 0; +} + +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { + width: 450px; +} + +/* COLLAPSIBLE FIELDSETS */ + +.collapse summary .fieldset-heading, +.collapse summary .inline-heading { + background: transparent; + border: none; + color: currentColor; + display: inline; + margin: 0; + padding: 0; +} + +/* MONOSPACE TEXTAREAS */ + +fieldset.monospace textarea { + font-family: var(--font-family-monospace); +} + +/* SUBMIT ROW */ + +.submit-row { + padding: 12px 14px 12px; + margin: 0 0 20px; + background: var(--darkened-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + display: flex; + gap: 10px; + flex-wrap: wrap; +} + +body.popup .submit-row { + overflow: auto; +} + +.submit-row input { + height: 2.1875rem; + line-height: 0.9375rem; +} + +.submit-row input, .submit-row a { + margin: 0; +} + +.submit-row input.default { + text-transform: uppercase; +} + +.submit-row a.deletelink { + margin-left: auto; +} + +.submit-row a.deletelink { + display: block; + background: var(--delete-button-bg); + border-radius: 4px; + padding: 0.625rem 0.9375rem; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.closelink { + display: inline-block; + background: var(--close-button-bg); + border-radius: 4px; + padding: 10px 15px; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.deletelink:focus, +.submit-row a.deletelink:hover, +.submit-row a.deletelink:active { + background: var(--delete-button-hover-bg); + text-decoration: none; +} + +.submit-row a.closelink:focus, +.submit-row a.closelink:hover, +.submit-row a.closelink:active { + background: var(--close-button-hover-bg); + text-decoration: none; +} + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { + vertical-align: top; +} + +.vCheckboxField { + border: none; +} + +.vDateField, .vTimeField { + margin-right: 2px; + margin-bottom: 4px; +} + +.vDateField { + min-width: 6.85em; +} + +.vTimeField { + min-width: 4.7em; +} + +.vURLField { + width: 30em; +} + +.vLargeTextField, .vXMLLargeTextField { + width: 48em; +} + +.flatpages-flatpage #id_content { + height: 40.2em; +} + +.module table .vPositiveSmallIntegerField { + width: 2.2em; +} + +.vIntegerField { + width: 5em; +} + +.vBigIntegerField { + width: 10em; +} + +.vForeignKeyRawIdAdminField { + width: 5em; +} + +.vTextField, .vUUIDField { + width: 20em; +} + +/* INLINES */ + +.inline-group { + padding: 0; + margin: 0 0 30px; +} + +.inline-group thead th { + padding: 8px 10px; +} + +.inline-group .aligned label { + width: 160px; +} + +.inline-related { + position: relative; +} + +.inline-related h4, +.inline-related:not(.tabular) .collapse summary { + margin: 0; + color: var(--body-medium-color); + padding: 5px; + font-size: 0.8125rem; + background: var(--darkened-bg); + border: 1px solid var(--hairline-color); + border-left-color: var(--darkened-bg); + border-right-color: var(--darkened-bg); +} + +.inline-related h3 span.delete { + float: right; +} + +.inline-related h3 span.delete label { + margin-left: 2px; + font-size: 0.6875rem; +} + +.inline-related fieldset { + margin: 0; + background: var(--body-bg); + border: none; + width: 100%; +} + +.inline-group .tabular fieldset.module { + border: none; +} + +.inline-related.tabular fieldset.module table { + width: 100%; + overflow-x: scroll; +} + +.last-related fieldset { + border: none; +} + +.inline-group .tabular tr.has_original td { + padding-top: 2em; +} + +.inline-group .tabular tr td.original { + padding: 2px 0 0 0; + width: 0; + _position: relative; +} + +.inline-group .tabular th.original { + width: 0px; + padding: 0; +} + +.inline-group .tabular td.original p { + position: absolute; + left: 0; + height: 1.1em; + padding: 2px 9px; + overflow: hidden; + font-size: 0.5625rem; + font-weight: bold; + color: var(--body-quiet-color); + _width: 700px; +} + +.inline-group ul.tools { + padding: 0; + margin: 0; + list-style: none; +} + +.inline-group ul.tools li { + display: inline; + padding: 0 5px; +} + +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: var(--body-quiet-color); + background: var(--darkened-bg); + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group .tabular tr.add-row td { + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { + background: url("../img/icon-addlink.073aeb1feda7.svg") 0 1px no-repeat; + padding-left: 16px; + font-size: 0.75rem; +} + +.empty-form { + display: none; +} + +/* RELATED FIELD ADD ONE / LOOKUP */ + +.related-lookup { + margin-left: 5px; + display: inline-block; + vertical-align: middle; + background-repeat: no-repeat; + background-size: 14px; +} + +.related-lookup { + width: 1rem; + height: 1rem; + background-image: url("../img/search.7cf54ff789c6.svg"); +} + +form .related-widget-wrapper ul { + display: inline-block; + margin-left: 0; + padding-left: 0; +} + +.clearable-file-input input { + margin-top: 0; +} diff --git a/staticfiles/admin/css/forms.86203f0362cc.css.gz b/staticfiles/admin/css/forms.86203f0362cc.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d5db91d2f182a5f0129d442f35599239085124d0 GIT binary patch literal 2252 zcmV;-2s8H|iwFP!00002|Fv3eZ`(K${+?e!c-T}a5yu3=0*8e6sIJkpvdsM)8{DMBAUCG zgF)zx$Cp^#~^5`$*1J51z`hyI`;>nt1AU>Cx+QJN*qd3ruxJx+AF1Up_(qK9FxpT>>TWQ4 zVJAu`WJk*+Wf?i~s6X z%ie2(L#6Qj^k%*U*N>~!@=mB++MS)&&0rX@$jPbY?3s`>k|%HTxKUCXu4b*=A)YvE zOoFElZlK$ZT`9Wr0W2u#BG)6XTy2D#51c-`2v_W%r=qU9Ra&?eSm|v9YZYt9`EXQ4 z6@iS2vrZ0~jt9+rwzzqit)%@Ugu@(B7W?uiXNMqXJ=dN|BUVrRgwS_tHA5Iu6rKT> zg%E~mjzC_->@crVIRO$DbYS8*cx+|VDeElB%$B2rEwYL zLw2Yq9k7_qri=N%?`Ag*+qorzsJqY%JQ;DuNq9)`3tY!V%p5L5t~aaz*RsNFC}Crr zA^7C*1#u+}Ere(GA0-ej_}ZBdH?#sO4qPZ<2K?oh$)T%q42I3azXvJ9a<%3vATGi5 zeR+R&2|x`0i(HUTq2d|ju^1Oc25esO!SME5Vg?6 zi`oX(#MV}t^RQ^UebCIeUobMXLND|azk}zXP4UO=!Xz^B>vG`fXsMsk0ybKpnHjHV zmtx}K*JEMSb+J8*=u`xXWkbH+o!0-a^Q3ObAgtQOrBRIjVlIA$St6j&Le7c4gXJLk z@eE)tTC;nHEqx4gmfm*}3#1OSY9yU;YAZ%;4iwS;zQd7}g)3zDuah807zN$@N_vGT z-SWFgsvYb>^5j-g5AaQ2Dt5t&M7tP7(D@F=@TI3Y2 zF#_rLgpz?*X3}V4aZh9|Fp$UZ6JxiU!hrb685)WVO+aX4q^6$ z*tM!_<<2s`+2m`30bV2&d0F^Q4$K@H%`;!x@=8q`L0H;m-n_agNsAP;jZkk?mu4D~ zUX$%)9__om@u=<|WQ>Vtp8Mf)RJXxRN#}+Ju+a{Bb|yDO8_1e|NzLQJDI=F(Y#$V9 zin0LasKpH#Cq@+UPQ?cI))QNpY`uyl5=u5_U9g;=G{d3o;red4!?G9CZKs>NvD{_u z_RK;kve}+l&KO{lTaVbTO4}zbnZN&_Wk=T=sP&(EzS@WWh6F`^-u-;XufT!lFrd*M zS3tD7IE;Z$kD0I#8Z;pu--u>*Zqq10Xlu705MU!s=KQasTQXA z>v_V^9S;;Y_ISUrHIrUN&?*m(mI7nNyTOpAaEo$B{RI9Ng2keq75a1B4&7hZnm5PZ3d2=*e%6ki!?r)>2=v(bJ9BXA! zLvqz-S-sXaa_PF3fm^e-p6C7D7O^sHfL3#tz|n=orna5z0(ZW)H84htFFweFjD@R^ zT@F+_?9i!6;~X?|cQF4#nCqehVnD-2hgbH?{f6;dLKvT0$!GvTUv~ALVPN^~%aMEB z+-cX`Mu}^eh6m+n>ZUD3fopcz3MwPQ=y6r<=(#<0k&T0XINXF7VLcdXaA0|#_0~6O zU!)C2o*iZj>{3E-ehk|u-BX|rfz{~9+R)Y;)e{{<4xcM98eWN=9|%xMQpe_7jPe$E zwdANDec}9e<$uXxt*UPAq=BZ1gUk>IkW=42KOjV>8n$Yp&Fs4*Vy;7#dM`!o`LDj4OrgI zzy(+=m%lxJ7G;h^N(U42R9HutRo4E2*Hw)ntT?jYJiSIC&f2TWY^!=I7qlANo~4d( zqL>xDrjK$2vtZ|rg3aJ+vl)#)1ViB+ZFH!17Qg9HPC!zW)x*A{Z(ZIn0S+)zgeN&? a6R{658nL{zQm div { + padding-bottom: 10px; +} + +/* FORM LABELS */ + +label { + font-weight: normal; + color: var(--body-quiet-color); + font-size: 0.8125rem; +} + +.required label, label.required { + font-weight: bold; +} + +/* RADIO BUTTONS */ + +form div.radiolist div { + padding-right: 7px; +} + +form div.radiolist.inline div { + display: inline-block; +} + +form div.radiolist label { + width: auto; +} + +form div.radiolist input[type="radio"] { + margin: -2px 4px 0 0; + padding: 0; +} + +form ul.inline { + margin-left: 0; + padding: 0; +} + +form ul.inline li { + float: left; + padding-right: 7px; +} + +/* FIELDSETS */ + +fieldset .fieldset-heading, +fieldset .inline-heading, +:not(.inline-related) .collapse summary { + border: 1px solid var(--header-bg); + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 0.8125rem; + background: var(--header-bg); + color: var(--header-link-color); +} + +/* ALIGNED FIELDSETS */ + +.aligned label { + display: block; + padding: 4px 10px 0 0; + min-width: 160px; + width: 160px; + word-wrap: break-word; +} + +.aligned label:not(.vCheckboxLabel):after { + content: ''; + display: inline-block; + vertical-align: middle; +} + +.aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly { + padding: 6px 0; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + overflow-wrap: break-word; +} + +.aligned ul label { + display: inline; + float: none; + width: auto; +} + +.aligned .form-row input { + margin-bottom: 0; +} + +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { + width: 350px; +} + +form .aligned ul { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned div.radiolist { + display: inline-block; + margin: 0; + padding: 0; +} + +form .aligned p.help, +form .aligned div.help { + margin-top: 0; + margin-left: 160px; + padding-left: 10px; +} + +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-left: 0; + padding-left: 0; + font-weight: normal; +} + +form .aligned p.help:last-child, +form .aligned div.help:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +form .aligned input + p.help, +form .aligned textarea + p.help, +form .aligned select + p.help, +form .aligned input + div.help, +form .aligned textarea + div.help, +form .aligned select + div.help { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned select option:checked { + background-color: var(--selected-row); +} + +form .aligned ul li { + list-style: none; +} + +form .aligned table p { + margin-left: 0; + padding-left: 0; +} + +.aligned .vCheckboxLabel { + padding: 1px 0 0 5px; +} + +.aligned .vCheckboxLabel + p.help, +.aligned .vCheckboxLabel + div.help { + margin-top: -4px; +} + +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { + width: 610px; +} + +fieldset .fieldBox { + margin-right: 20px; +} + +/* WIDE FIELDSETS */ + +.wide label { + width: 200px; +} + +form .wide p.help, +form .wide ul.errorlist, +form .wide div.help { + padding-left: 50px; +} + +form div.help ul { + padding-left: 0; + margin-left: 0; +} + +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { + width: 450px; +} + +/* COLLAPSIBLE FIELDSETS */ + +.collapse summary .fieldset-heading, +.collapse summary .inline-heading { + background: transparent; + border: none; + color: currentColor; + display: inline; + margin: 0; + padding: 0; +} + +/* MONOSPACE TEXTAREAS */ + +fieldset.monospace textarea { + font-family: var(--font-family-monospace); +} + +/* SUBMIT ROW */ + +.submit-row { + padding: 12px 14px 12px; + margin: 0 0 20px; + background: var(--darkened-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + display: flex; + gap: 10px; + flex-wrap: wrap; +} + +body.popup .submit-row { + overflow: auto; +} + +.submit-row input { + height: 2.1875rem; + line-height: 0.9375rem; +} + +.submit-row input, .submit-row a { + margin: 0; +} + +.submit-row input.default { + text-transform: uppercase; +} + +.submit-row a.deletelink { + margin-left: auto; +} + +.submit-row a.deletelink { + display: block; + background: var(--delete-button-bg); + border-radius: 4px; + padding: 0.625rem 0.9375rem; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.closelink { + display: inline-block; + background: var(--close-button-bg); + border-radius: 4px; + padding: 10px 15px; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.deletelink:focus, +.submit-row a.deletelink:hover, +.submit-row a.deletelink:active { + background: var(--delete-button-hover-bg); + text-decoration: none; +} + +.submit-row a.closelink:focus, +.submit-row a.closelink:hover, +.submit-row a.closelink:active { + background: var(--close-button-hover-bg); + text-decoration: none; +} + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { + vertical-align: top; +} + +.vCheckboxField { + border: none; +} + +.vDateField, .vTimeField { + margin-right: 2px; + margin-bottom: 4px; +} + +.vDateField { + min-width: 6.85em; +} + +.vTimeField { + min-width: 4.7em; +} + +.vURLField { + width: 30em; +} + +.vLargeTextField, .vXMLLargeTextField { + width: 48em; +} + +.flatpages-flatpage #id_content { + height: 40.2em; +} + +.module table .vPositiveSmallIntegerField { + width: 2.2em; +} + +.vIntegerField { + width: 5em; +} + +.vBigIntegerField { + width: 10em; +} + +.vForeignKeyRawIdAdminField { + width: 5em; +} + +.vTextField, .vUUIDField { + width: 20em; +} + +/* INLINES */ + +.inline-group { + padding: 0; + margin: 0 0 30px; +} + +.inline-group thead th { + padding: 8px 10px; +} + +.inline-group .aligned label { + width: 160px; +} + +.inline-related { + position: relative; +} + +.inline-related h4, +.inline-related:not(.tabular) .collapse summary { + margin: 0; + color: var(--body-medium-color); + padding: 5px; + font-size: 0.8125rem; + background: var(--darkened-bg); + border: 1px solid var(--hairline-color); + border-left-color: var(--darkened-bg); + border-right-color: var(--darkened-bg); +} + +.inline-related h3 span.delete { + float: right; +} + +.inline-related h3 span.delete label { + margin-left: 2px; + font-size: 0.6875rem; +} + +.inline-related fieldset { + margin: 0; + background: var(--body-bg); + border: none; + width: 100%; +} + +.inline-group .tabular fieldset.module { + border: none; +} + +.inline-related.tabular fieldset.module table { + width: 100%; + overflow-x: scroll; +} + +.last-related fieldset { + border: none; +} + +.inline-group .tabular tr.has_original td { + padding-top: 2em; +} + +.inline-group .tabular tr td.original { + padding: 2px 0 0 0; + width: 0; + _position: relative; +} + +.inline-group .tabular th.original { + width: 0px; + padding: 0; +} + +.inline-group .tabular td.original p { + position: absolute; + left: 0; + height: 1.1em; + padding: 2px 9px; + overflow: hidden; + font-size: 0.5625rem; + font-weight: bold; + color: var(--body-quiet-color); + _width: 700px; +} + +.inline-group ul.tools { + padding: 0; + margin: 0; + list-style: none; +} + +.inline-group ul.tools li { + display: inline; + padding: 0 5px; +} + +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: var(--body-quiet-color); + background: var(--darkened-bg); + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group .tabular tr.add-row td { + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { + background: url(../img/icon-addlink.svg) 0 1px no-repeat; + padding-left: 16px; + font-size: 0.75rem; +} + +.empty-form { + display: none; +} + +/* RELATED FIELD ADD ONE / LOOKUP */ + +.related-lookup { + margin-left: 5px; + display: inline-block; + vertical-align: middle; + background-repeat: no-repeat; + background-size: 14px; +} + +.related-lookup { + width: 1rem; + height: 1rem; + background-image: url(../img/search.svg); +} + +form .related-widget-wrapper ul { + display: inline-block; + margin-left: 0; + padding-left: 0; +} + +.clearable-file-input input { + margin-top: 0; +} diff --git a/staticfiles/admin/css/forms.css.gz b/staticfiles/admin/css/forms.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..42ec51f16a5bb90d3834c37701141e2a44ca781a GIT binary patch literal 2216 zcmV;Z2v_$XiwFP!00002|Fv3eZ`(K${+?e!>|xPn8!5J%x0P{+a~k(xtP>ZBgI(Zo zC}@keg;1haqMUe({`VbnQO!OF{LaQ*^JCDuf!kq>5h|!=q%yHL1U%%Lxb(``+P%}!^>`{BEDiFd_SrLu z)*Dbf0r{B9^Ovp&l!F#5+;~*_~9mv^$*E&u|z)CMAyU?5m%=4Z(u-#CWERSUm|6#^37Ij8M!;c#M1qA&S$SpuC9TFgvB3 z1PKQ^fH(mjYZZ0cdd;I>SvaKQ>a5p0h)#IEu6m z$r%);VR_%7Zu<-R=|b|HWnGdPo7wiDQRgTJ+u9w zfN(0-jsv{n6;KJ_A_*Aq&70xAR5=90_Tk^56tG;c`5K5zFnw3%&xTNwM6;Et1%_t{ z-Pvg$pbKHCVHc3AB@K-Bs+C0gqB~%~g1S8^?J_hIEn#}0i5ImEoEKYLX~6^0cKcwM zZ#xAtGAA$mqsYM%)Ta33c4`yZ`1St0XQHKfMhDm!fo9)$eYX@F55F7=qprm6IYg&2 zP#hbI_3mr^|2j|VhX7&KEX^)=*K_l@Ksp#X_vcdk|!yht=J=Q~O?__WA5UQmM4ZwVy}uk1^siN$?+ zYoT*>{7$~wb9+ek+75qZAiZ?ItLofs*}LqL4|ScN;$;Y6M?j%)IB=z`&XBB_n=}- zKI{3vzQ3&7;HIP#O9R|!2YYTNKO`#*O~0ZRap9GbD-t_EMVgXqiF4B8#=uDlC!$kv z!M*du4klNx;)sNj&07?3=O@i@XnVNM4gaF-#Z23o=58!^nY%r+kczC<$Br{DDa)Nl zY*(f2la|cie$cX`>!0iOA9}vphrx<1i~OYf`9`F`p67VUqb+fur_1f7u-YbNtcGOC zGF%osbxqRY4!5@TW2dt9;{&={j(fGL;%<6;n9pwIAWhy)5>vMiWo>pVMsg`7<`viM ziJ@qb2d|18liI#`O0pa19rWe8okJgB(l-ha8?~#tyDE`tVVb|5CtUbf=Nhlt`_y!2 z{$)k>ct3SDlf80M@ZpkyM91f5mH!A5;#B z>)GxByW~m)*hlL!=z9dEVxmCa9u1fBUc+Vj+o~!CPP<)P8D&vJa@A%zz1B8z>AIGI zTeG%)ulKVnVpZ56qvkGwqYH^`Z9CZ|?tE!$V2u`E0+cT^2v;e)9H?~Ip;ME_Ie6x8 zaQ>Nr>!Jix#KT61SN6+;hVffMfX}aFGyq_ry851FVD;_ufjn;Rv}tam#kEVry>bk7 z(-xxO1teR+RYX`luD(0^eqSfDbDJ$|DEO(;F1>to^F4cB-erztze19fgAz#Zci|PRR+*mYdQY#&A$?C4YURoN++k qUyt(+zE^q0jCV<4YjKTvs|Y^i@Wb(1O21I~dh|D!G^1}?A^-pwHeGT6 literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/login.a3b47c458e5d.css b/staticfiles/admin/css/login.a3b47c458e5d.css new file mode 100644 index 0000000..805a34b --- /dev/null +++ b/staticfiles/admin/css/login.a3b47c458e5d.css @@ -0,0 +1,61 @@ +/* LOGIN FORM */ + +.login { + background: var(--darkened-bg); + height: auto; +} + +.login #header { + height: auto; + padding: 15px 16px; + justify-content: center; +} + +.login #header h1 { + font-size: 1.125rem; + margin: 0; +} + +.login #header h1 a { + color: var(--header-link-color); +} + +.login #content { + padding: 20px; +} + +.login #container { + background: var(--body-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + width: 28em; + min-width: 300px; + margin: 100px auto; + height: auto; +} + +.login .form-row { + padding: 4px 0; +} + +.login .form-row label { + display: block; + line-height: 2em; +} + +.login .form-row #id_username, .login .form-row #id_password { + padding: 8px; + width: 100%; + box-sizing: border-box; +} + +.login .submit-row { + padding: 1em 0 0 0; + margin: 0; + text-align: center; +} + +.login .password-reset-link { + text-align: center; +} diff --git a/staticfiles/admin/css/login.a3b47c458e5d.css.gz b/staticfiles/admin/css/login.a3b47c458e5d.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..489424627865306dfa66d6262fbb34544ee8c0b1 GIT binary patch literal 417 zcmV;S0bc$eiwFP!00002|8-LBO2aS|{lBLO48aXE+xfxh{wsny@C77o?%M0pq$H`^ z6yM#nO**&L77D#N_uO+%?)8*BuO6RX$;0aHg-owUqnS`SO7cA-?nzm;$+fB_Psk_J zmy~j*Hz0x2G@mS6OaYh|HX*FGYB~Dp8O8-L4%#yvqnb*^I7gW$B)+S5B)+e9UHzjr z7T0^4DQQ8vmdt%Y4^bDfXJ0!kHTVUNZ5Ge(G?X1#$+T-oNc2xT^8}d^N(YbKF%>8` zv^|&{b$emHv$rvi8V4shhO&>~Jj_(_{UOLyX*bq6aB&zVkOw&owbKH|Mw&`ZIPQ$=?qj!j9jQqVepd~BeiVPlC%$Ti9=~UYyxb^;> z*^7|ru34fM<@0r=BLSvPOSD6lV<<_~yl0Eo{94#q$^_8` zv^|&{b$emHv$rvi8V4shhO&>~Jj_(_{UOLyX*bq6aB&zVkOw&owbKH|Mw&`ZIPQ$=?qj!j9jQqVepd~BeiVPlC%$Ti9=~UYyxb^;> z*^7|ru34fM<@0r=BLSvPOSD6lV<<_~yl0Eo{94#q$^_ #nav-sidebar { + visibility: hidden; +} + +.main.shifted > #nav-sidebar { + margin-left: 0; + visibility: visible; +} + +[dir="rtl"] .main.shifted > #nav-sidebar { + margin-right: 0; +} + +#nav-sidebar .module th { + width: 100%; + overflow-wrap: anywhere; +} + +#nav-sidebar .module th, +#nav-sidebar .module caption { + padding-left: 16px; +} + +#nav-sidebar .module td { + white-space: nowrap; +} + +[dir="rtl"] #nav-sidebar .module th, +[dir="rtl"] #nav-sidebar .module caption { + padding-left: 8px; + padding-right: 16px; +} + +#nav-sidebar .current-app .section:link, +#nav-sidebar .current-app .section:visited { + color: var(--header-color); + font-weight: bold; +} + +#nav-sidebar .current-model { + background: var(--selected-row); +} + +@media (forced-colors: active) { + #nav-sidebar .current-model { + background-color: SelectedItem; + } +} + +.main > #nav-sidebar + .content { + max-width: calc(100% - 23px); +} + +.main.shifted > #nav-sidebar + .content { + max-width: calc(100% - 299px); +} + +@media (max-width: 767px) { + #nav-sidebar, #toggle-nav-sidebar { + display: none; + } + + .main > #nav-sidebar + .content, + .main.shifted > #nav-sidebar + .content { + max-width: 100%; + } +} + +#nav-filter { + width: 100%; + box-sizing: border-box; + padding: 2px 5px; + margin: 5px 0; + border: 1px solid var(--border-color); + background-color: var(--darkened-bg); + color: var(--body-fg); +} + +#nav-filter:focus { + border-color: var(--body-quiet-color); +} + +#nav-filter.no-results { + background: var(--message-error-bg); +} + +#nav-sidebar table { + width: 100%; +} diff --git a/staticfiles/admin/css/nav_sidebar.css.gz b/staticfiles/admin/css/nav_sidebar.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..bb01234e006e350f22de0922d7711683a052f578 GIT binary patch literal 811 zcmV+`1JwKD^zLGkf2V`FV&e)Eo zAd=Jt1j>P_5B?PBQ@p2mS?#ZEf3Lc%*`X9 zso7#_AoI#?95lG5af6dH&V@=UhcU@NxiFvK87JTUCgTbBQPpWaFQ`r)=3@m7QoR8) z9XyJ4RM^IWksNVm)}Vmbc|sc(N4n)^*{kbn+0?O)jV@NVjU;0x5sLN?d~8(*za+yM zrfkj(HqaZlLYcBy>TN(+;dHNz7jII(-k5dL<7HlbAd9a~M!F#gA=U=G*N36J{579H zJY3e-GA7i_rXqI0$$x@;YlDz4L#f&bD?%ZKLjp+!=b#464&EF}NE@yCEulYlXG3?U zsiQW_G%q9&m--u?r;ttGcbkT84a2@=YQIgvz%i)l@Il1#lFl1;ulc0ut){xeki79O zMJ}c|EfF%8(xpqs+qmu2Nu^^Bero!%5jW#G>^QP+Inb2lIhk3Asy$W`>hv7Nvf^b; zpZcVn0xRdMJ#rP9Z~Yn!wd6&xUm7ZAkhP4MWeShEq={_3r4PRFe32ef~%0B zpBuRLK&MR&bJP!S?z?OD&-3VzeL&!PA`h*-qrO=qCZnseV+pMm?Dgr%I~(rquEA?k z(b8PquJCjq3sZ72x)VE34W$({p;uogf}g%9ogLb%@Lopy`Oqh^koYzjqkvHF%Ev;r z{XM^<=+(1ef!kr(CGVgVbRRhVE#d*s*=F6P-5ZT+*~RUBUWe6v5VXv7F8(b9xPu#A pgqhORfGwo6qqCENwJZS&#%MGAtZ)ozd??A!lYiFlY #nav-sidebar { + visibility: hidden; +} + +.main.shifted > #nav-sidebar { + margin-left: 0; + visibility: visible; +} + +[dir="rtl"] .main.shifted > #nav-sidebar { + margin-right: 0; +} + +#nav-sidebar .module th { + width: 100%; + overflow-wrap: anywhere; +} + +#nav-sidebar .module th, +#nav-sidebar .module caption { + padding-left: 16px; +} + +#nav-sidebar .module td { + white-space: nowrap; +} + +[dir="rtl"] #nav-sidebar .module th, +[dir="rtl"] #nav-sidebar .module caption { + padding-left: 8px; + padding-right: 16px; +} + +#nav-sidebar .current-app .section:link, +#nav-sidebar .current-app .section:visited { + color: var(--header-color); + font-weight: bold; +} + +#nav-sidebar .current-model { + background: var(--selected-row); +} + +@media (forced-colors: active) { + #nav-sidebar .current-model { + background-color: SelectedItem; + } +} + +.main > #nav-sidebar + .content { + max-width: calc(100% - 23px); +} + +.main.shifted > #nav-sidebar + .content { + max-width: calc(100% - 299px); +} + +@media (max-width: 767px) { + #nav-sidebar, #toggle-nav-sidebar { + display: none; + } + + .main > #nav-sidebar + .content, + .main.shifted > #nav-sidebar + .content { + max-width: 100%; + } +} + +#nav-filter { + width: 100%; + box-sizing: border-box; + padding: 2px 5px; + margin: 5px 0; + border: 1px solid var(--border-color); + background-color: var(--darkened-bg); + color: var(--body-fg); +} + +#nav-filter:focus { + border-color: var(--body-quiet-color); +} + +#nav-filter.no-results { + background: var(--message-error-bg); +} + +#nav-sidebar table { + width: 100%; +} diff --git a/staticfiles/admin/css/nav_sidebar.dd925738f4cc.css.gz b/staticfiles/admin/css/nav_sidebar.dd925738f4cc.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..bb01234e006e350f22de0922d7711683a052f578 GIT binary patch literal 811 zcmV+`1JwKD^zLGkf2V`FV&e)Eo zAd=Jt1j>P_5B?PBQ@p2mS?#ZEf3Lc%*`X9 zso7#_AoI#?95lG5af6dH&V@=UhcU@NxiFvK87JTUCgTbBQPpWaFQ`r)=3@m7QoR8) z9XyJ4RM^IWksNVm)}Vmbc|sc(N4n)^*{kbn+0?O)jV@NVjU;0x5sLN?d~8(*za+yM zrfkj(HqaZlLYcBy>TN(+;dHNz7jII(-k5dL<7HlbAd9a~M!F#gA=U=G*N36J{579H zJY3e-GA7i_rXqI0$$x@;YlDz4L#f&bD?%ZKLjp+!=b#464&EF}NE@yCEulYlXG3?U zsiQW_G%q9&m--u?r;ttGcbkT84a2@=YQIgvz%i)l@Il1#lFl1;ulc0ut){xeki79O zMJ}c|EfF%8(xpqs+qmu2Nu^^Bero!%5jW#G>^QP+Inb2lIhk3Asy$W`>hv7Nvf^b; zpZcVn0xRdMJ#rP9Z~Yn!wd6&xUm7ZAkhP4MWeShEq={_3r4PRFe32ef~%0B zpBuRLK&MR&bJP!S?z?OD&-3VzeL&!PA`h*-qrO=qCZnseV+pMm?Dgr%I~(rquEA?k z(b8PquJCjq3sZ72x)VE34W$({p;uogf}g%9ogLb%@Lopy`Oqh^koYzjqkvHF%Ev;r z{XM^<=+(1ef!kr(CGVgVbRRhVE#d*s*=F6P-5ZT+*~RUBUWe6v5VXv7F8(b9xPu#A pgqhORfGwo6qqCENwJZS&#%MGAtZ)ozd??A!lYiFlY div { + display: flex; + flex-wrap: nowrap; + max-width: 480px; + } + + #changelist-search label { + line-height: 1.375rem; + } + + #toolbar form #searchbar { + flex: 1 0 auto; + width: 0; + height: 1.375rem; + margin: 0 10px 0 6px; + } + + #toolbar form input[type=submit] { + flex: 0 1 auto; + } + + #changelist-search .quiet { + width: 0; + flex: 1 0 auto; + margin: 5px 0 0 25px; + } + + #changelist .actions { + display: flex; + flex-wrap: wrap; + padding: 15px 0; + } + + #changelist .actions label { + display: flex; + } + + #changelist .actions select { + background: var(--body-bg); + } + + #changelist .actions .button { + min-width: 48px; + margin: 0 10px; + } + + #changelist .actions span.all, + #changelist .actions span.clear, + #changelist .actions span.question, + #changelist .actions span.action-counter { + font-size: 0.6875rem; + margin: 0 10px 0 0; + } + + #changelist-filter { + flex-basis: 200px; + } + + .change-list .filtered .results, + .change-list .filtered .paginator, + .filtered #toolbar, + .filtered .actions, + + #changelist .paginator { + border-top-color: var(--hairline-color); /* XXX Is this used at all? */ + } + + #changelist .results + .paginator { + border-top: none; + } + + /* Forms */ + + label { + font-size: 1rem; + } + + /* + Minifiers remove the default (text) "type" attribute from "input" HTML + tags. Add input:not([type]) to make the CSS stylesheet work the same. + */ + .form-row input:not([type]), + .form-row input[type=text], + .form-row input[type=password], + .form-row input[type=email], + .form-row input[type=url], + .form-row input[type=tel], + .form-row input[type=number], + .form-row textarea, + .form-row select, + .form-row .vTextField { + box-sizing: border-box; + margin: 0; + padding: 6px 8px; + min-height: 2.25rem; + font-size: 1rem; + } + + .form-row select { + height: 2.25rem; + } + + .form-row select[multiple] { + height: auto; + min-height: 0; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 10px; + padding-top: 10px; + border-top: 1px solid var(--hairline-color); + } + + textarea { + max-width: 100%; + max-height: 120px; + } + + .aligned label { + padding-top: 6px; + } + + .aligned .related-lookup, + .aligned .datetimeshortcuts, + .aligned .related-lookup + strong { + align-self: center; + margin-left: 15px; + } + + form .aligned div.radiolist { + margin-left: 2px; + } + + .submit-row { + padding: 8px; + } + + .submit-row a.deletelink { + padding: 10px 7px; + } + + .button, input[type=submit], input[type=button], .submit-row input, a.button { + padding: 7px; + } + + /* Selector */ + + .selector { + display: flex; + width: 100%; + } + + .selector .selector-filter { + display: flex; + align-items: center; + } + + .selector .selector-filter label { + margin: 0 8px 0 0; + } + + .selector .selector-filter input { + width: 100%; + min-height: 0; + flex: 1 1; + } + + .selector-available, .selector-chosen { + width: auto; + flex: 1 1; + display: flex; + flex-direction: column; + } + + .selector select { + width: 100%; + flex: 1 0 auto; + margin-bottom: 5px; + } + + .selector ul.selector-chooser { + width: 26px; + height: 52px; + padding: 2px 0; + border-radius: 20px; + transform: translateY(-10px); + } + + .selector-add, .selector-remove { + width: 20px; + height: 20px; + background-size: 20px auto; + } + + .selector-add { + background-position: 0 -120px; + } + + .selector-remove { + background-position: 0 -80px; + } + + a.selector-chooseall, a.selector-clearall { + align-self: center; + } + + .stacked { + flex-direction: column; + max-width: 480px; + } + + .stacked > * { + flex: 0 1 auto; + } + + .stacked select { + margin-bottom: 0; + } + + .stacked .selector-available, .stacked .selector-chosen { + width: auto; + } + + .stacked ul.selector-chooser { + width: 52px; + height: 26px; + padding: 0 2px; + transform: none; + } + + .stacked .selector-chooser li { + padding: 3px; + } + + .stacked .selector-add, .stacked .selector-remove { + background-size: 20px auto; + } + + .stacked .selector-add { + background-position: 0 -40px; + } + + .stacked .active.selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -140px; + } + + .stacked .active.selector-add:focus, .stacked .active.selector-add:hover { + background-position: 0 -60px; + } + + .stacked .selector-remove { + background-position: 0 0; + } + + .stacked .active.selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -100px; + } + + .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { + background-position: 0 -20px; + } + + .help-tooltip, .selector .help-icon { + display: none; + } + + .datetime input { + width: 50%; + max-width: 120px; + } + + .datetime span { + font-size: 0.8125rem; + } + + .datetime .timezonewarning { + display: block; + font-size: 0.6875rem; + color: var(--body-quiet-color); + } + + .datetimeshortcuts { + color: var(--border-color); /* XXX Redundant, .datetime span also sets #ccc */ + } + + .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + width: 75%; + } + + .inline-group { + overflow: auto; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 55px; + background-position: 30px 12px; + } + + ul.messagelist li.error { + background-position: 30px 12px; + } + + ul.messagelist li.warning { + background-position: 30px 14px; + } + + /* Login */ + + .login #header { + padding: 15px 20px; + } + + .login #site-name { + margin: 0; + } + + /* GIS */ + + div.olMap { + max-width: calc(100vw - 30px); + max-height: 300px; + } + + .olMap + .clear_features { + display: block; + margin-top: 10px; + } + + /* Docs */ + + .module table.xfull { + width: 100%; + } + + pre.literal-block { + overflow: auto; + } +} + +/* Mobile */ + +@media (max-width: 767px) { + /* Layout */ + + #header, #content { + padding: 15px; + } + + div.breadcrumbs { + padding: 10px 15px; + } + + /* Dashboard */ + + .colMS, .colSM { + margin: 0; + } + + #content-related, .colSM #content-related { + width: 100%; + margin: 0; + } + + #content-related .module { + margin-bottom: 0; + } + + #content-related .module h2 { + padding: 10px 15px; + font-size: 1rem; + } + + /* Changelist */ + + #changelist { + align-items: stretch; + flex-direction: column; + } + + #toolbar { + padding: 10px; + } + + #changelist-filter { + margin-left: 0; + } + + #changelist .actions label { + flex: 1 1; + } + + #changelist .actions select { + flex: 1 0; + width: 100%; + } + + #changelist .actions span { + flex: 1 0 100%; + } + + #changelist-filter { + position: static; + width: auto; + margin-top: 30px; + } + + .object-tools { + float: none; + margin: 0 0 15px; + padding: 0; + overflow: hidden; + } + + .object-tools li { + height: auto; + margin-left: 0; + } + + .object-tools li + li { + margin-left: 15px; + } + + /* Forms */ + + .form-row { + padding: 15px 0; + } + + .aligned .form-row, + .aligned .form-row > div { + max-width: 100vw; + } + + .aligned .form-row > div { + width: calc(100vw - 30px); + } + + .flex-container { + flex-flow: column; + } + + .flex-container.checkbox-row { + flex-flow: row; + } + + textarea { + max-width: none; + } + + .vURLField { + width: auto; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 15px; + padding-top: 15px; + } + + .aligned label { + width: 100%; + min-width: auto; + padding: 0 0 10px; + } + + .aligned label:after { + max-height: 0; + } + + .aligned .form-row input, + .aligned .form-row select, + .aligned .form-row textarea { + flex: 1 1 auto; + max-width: 100%; + } + + .aligned .checkbox-row input { + flex: 0 1 auto; + margin: 0; + } + + .aligned .vCheckboxLabel { + flex: 1 0; + padding: 1px 0 0 5px; + } + + .aligned label + p, + .aligned label + div.help, + .aligned label + div.readonly { + padding: 0; + margin-left: 0; + } + + .aligned p.file-upload { + font-size: 0.8125rem; + } + + span.clearable-file-input { + margin-left: 15px; + } + + span.clearable-file-input label { + font-size: 0.8125rem; + padding-bottom: 0; + } + + .aligned .timezonewarning { + flex: 1 0 100%; + margin-top: 5px; + } + + form .aligned .form-row div.help { + width: 100%; + margin: 5px 0 0; + padding: 0; + } + + form .aligned ul, + form .aligned ul.errorlist { + margin-left: 0; + padding-left: 0; + } + + form .aligned div.radiolist { + margin-top: 5px; + margin-right: 15px; + margin-bottom: -3px; + } + + form .aligned div.radiolist:not(.inline) div + div { + margin-top: 5px; + } + + /* Related widget */ + + .related-widget-wrapper { + width: 100%; + display: flex; + align-items: flex-start; + } + + .related-widget-wrapper .selector { + order: 1; + } + + .related-widget-wrapper > a { + order: 2; + } + + .related-widget-wrapper .radiolist ~ a { + align-self: flex-end; + } + + .related-widget-wrapper > select ~ a { + align-self: center; + } + + /* Selector */ + + .selector { + flex-direction: column; + gap: 10px 0; + } + + .selector-available, .selector-chosen { + flex: 1 1 auto; + } + + .selector select { + max-height: 96px; + } + + .selector ul.selector-chooser { + display: block; + width: 52px; + height: 26px; + padding: 0 2px; + transform: none; + } + + .selector ul.selector-chooser li { + float: left; + } + + .selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -20px; + } + + .selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -60px; + } + + /* Inlines */ + + .inline-group[data-inline-type="stacked"] .inline-related { + border: 1px solid var(--hairline-color); + border-radius: 4px; + margin-top: 15px; + overflow: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related > * { + box-sizing: border-box; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module { + padding: 0 10px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row { + border-top: 1px solid var(--hairline-color); + border-bottom: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:first-child { + border-top: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 { + padding: 10px; + border-top-width: 0; + border-bottom-width: 2px; + display: flex; + flex-wrap: wrap; + align-items: center; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { + margin-right: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { + float: none; + flex: 1 1 100%; + margin-top: 5px; + } + + .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] .aligned label { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] div.add-row { + margin-top: 15px; + border: 1px solid var(--hairline-color); + border-radius: 4px; + } + + .inline-group div.add-row, + .inline-group .tabular tr.add-row td { + padding: 0; + } + + .inline-group div.add-row a, + .inline-group .tabular tr.add-row td a { + display: block; + padding: 8px 10px 8px 26px; + background-position: 8px 9px; + } + + /* Submit row */ + + .submit-row { + padding: 10px; + margin: 0 0 15px; + flex-direction: column; + gap: 8px; + } + + .submit-row input, .submit-row input.default, .submit-row a { + text-align: center; + } + + .submit-row a.closelink { + padding: 10px 0; + text-align: center; + } + + .submit-row a.deletelink { + margin: 0; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 40px; + background-position: 15px 12px; + } + + ul.messagelist li.error { + background-position: 15px 12px; + } + + ul.messagelist li.warning { + background-position: 15px 14px; + } + + /* Paginator */ + + .paginator .this-page, .paginator a:link, .paginator a:visited { + padding: 4px 10px; + } + + /* Login */ + + body.login { + padding: 0 15px; + } + + .login #container { + width: auto; + max-width: 480px; + margin: 50px auto; + } + + .login #header, + .login #content { + padding: 15px; + } + + .login #content-main { + float: none; + } + + .login .form-row { + padding: 0; + } + + .login .form-row + .form-row { + margin-top: 15px; + } + + .login .form-row label { + margin: 0 0 5px; + line-height: 1.2; + } + + .login .submit-row { + padding: 15px 0 0; + } + + .login br { + display: none; + } + + .login .submit-row input { + margin: 0; + text-transform: uppercase; + } + + .errornote { + margin: 0 0 20px; + padding: 8px 12px; + font-size: 0.8125rem; + } + + /* Calendar and clock */ + + .calendarbox, .clockbox { + position: fixed !important; + top: 50% !important; + left: 50% !important; + transform: translate(-50%, -50%); + margin: 0; + border: none; + overflow: visible; + } + + .calendarbox:before, .clockbox:before { + content: ''; + position: fixed; + top: 50%; + left: 50%; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.75); + transform: translate(-50%, -50%); + } + + .calendarbox > *, .clockbox > * { + position: relative; + z-index: 1; + } + + .calendarbox > div:first-child { + z-index: 2; + } + + .calendarbox .calendar, .clockbox h2 { + border-radius: 4px 4px 0 0; + overflow: hidden; + } + + .calendarbox .calendar-cancel, .clockbox .calendar-cancel { + border-radius: 0 0 4px 4px; + overflow: hidden; + } + + .calendar-shortcuts { + padding: 10px 0; + font-size: 0.75rem; + line-height: 0.75rem; + } + + .calendar-shortcuts a { + margin: 0 4px; + } + + .timelist a { + background: var(--body-bg); + padding: 4px; + } + + .calendar-cancel { + padding: 8px 10px; + } + + .clockbox h2 { + padding: 8px 15px; + } + + .calendar caption { + padding: 10px; + } + + .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + z-index: 1; + top: 10px; + } + + /* History */ + + table#change-history tbody th, table#change-history tbody td { + font-size: 0.8125rem; + word-break: break-word; + } + + table#change-history tbody th { + width: auto; + } + + /* Docs */ + + table.model tbody th, table.model tbody td { + font-size: 0.8125rem; + word-break: break-word; + } +} diff --git a/staticfiles/admin/css/responsive.ae7b57af01c8.css.gz b/staticfiles/admin/css/responsive.ae7b57af01c8.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..aaf14756d239bb29dc50f9329f1eccad83811fdf GIT binary patch literal 3444 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 WH@BmYeyLr2diFo_osUB_MgRb=Q_4F4 literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/responsive.css b/staticfiles/admin/css/responsive.css new file mode 100644 index 0000000..932e824 --- /dev/null +++ b/staticfiles/admin/css/responsive.css @@ -0,0 +1,967 @@ +/* Tablets */ + +input[type="submit"], button { + -webkit-appearance: none; + appearance: none; +} + +@media (max-width: 1024px) { + /* Basic */ + + html { + -webkit-text-size-adjust: 100%; + } + + td, th { + padding: 10px; + font-size: 0.875rem; + } + + .small { + font-size: 0.75rem; + } + + /* Layout */ + + #container { + min-width: 0; + } + + #content { + padding: 15px 20px 20px; + } + + div.breadcrumbs { + padding: 10px 30px; + } + + /* Header */ + + #header { + flex-direction: column; + padding: 15px 30px; + justify-content: flex-start; + } + + #site-name { + margin: 0 0 8px; + line-height: 1.2; + } + + #user-tools { + margin: 0; + font-weight: 400; + line-height: 1.85; + text-align: left; + } + + #user-tools a { + display: inline-block; + line-height: 1.4; + } + + /* Dashboard */ + + .dashboard #content { + width: auto; + } + + #content-related { + margin-right: -290px; + } + + .colSM #content-related { + margin-left: -290px; + } + + .colMS { + margin-right: 290px; + } + + .colSM { + margin-left: 290px; + } + + .dashboard .module table td a { + padding-right: 0; + } + + td .changelink, td .addlink { + font-size: 0.8125rem; + } + + /* Changelist */ + + #toolbar { + border: none; + padding: 15px; + } + + #changelist-search > div { + display: flex; + flex-wrap: nowrap; + max-width: 480px; + } + + #changelist-search label { + line-height: 1.375rem; + } + + #toolbar form #searchbar { + flex: 1 0 auto; + width: 0; + height: 1.375rem; + margin: 0 10px 0 6px; + } + + #toolbar form input[type=submit] { + flex: 0 1 auto; + } + + #changelist-search .quiet { + width: 0; + flex: 1 0 auto; + margin: 5px 0 0 25px; + } + + #changelist .actions { + display: flex; + flex-wrap: wrap; + padding: 15px 0; + } + + #changelist .actions label { + display: flex; + } + + #changelist .actions select { + background: var(--body-bg); + } + + #changelist .actions .button { + min-width: 48px; + margin: 0 10px; + } + + #changelist .actions span.all, + #changelist .actions span.clear, + #changelist .actions span.question, + #changelist .actions span.action-counter { + font-size: 0.6875rem; + margin: 0 10px 0 0; + } + + #changelist-filter { + flex-basis: 200px; + } + + .change-list .filtered .results, + .change-list .filtered .paginator, + .filtered #toolbar, + .filtered .actions, + + #changelist .paginator { + border-top-color: var(--hairline-color); /* XXX Is this used at all? */ + } + + #changelist .results + .paginator { + border-top: none; + } + + /* Forms */ + + label { + font-size: 1rem; + } + + /* + Minifiers remove the default (text) "type" attribute from "input" HTML + tags. Add input:not([type]) to make the CSS stylesheet work the same. + */ + .form-row input:not([type]), + .form-row input[type=text], + .form-row input[type=password], + .form-row input[type=email], + .form-row input[type=url], + .form-row input[type=tel], + .form-row input[type=number], + .form-row textarea, + .form-row select, + .form-row .vTextField { + box-sizing: border-box; + margin: 0; + padding: 6px 8px; + min-height: 2.25rem; + font-size: 1rem; + } + + .form-row select { + height: 2.25rem; + } + + .form-row select[multiple] { + height: auto; + min-height: 0; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 10px; + padding-top: 10px; + border-top: 1px solid var(--hairline-color); + } + + textarea { + max-width: 100%; + max-height: 120px; + } + + .aligned label { + padding-top: 6px; + } + + .aligned .related-lookup, + .aligned .datetimeshortcuts, + .aligned .related-lookup + strong { + align-self: center; + margin-left: 15px; + } + + form .aligned div.radiolist { + margin-left: 2px; + } + + .submit-row { + padding: 8px; + } + + .submit-row a.deletelink { + padding: 10px 7px; + } + + .button, input[type=submit], input[type=button], .submit-row input, a.button { + padding: 7px; + } + + /* Selector */ + + .selector { + display: flex; + width: 100%; + } + + .selector .selector-filter { + display: flex; + align-items: center; + } + + .selector .selector-filter label { + margin: 0 8px 0 0; + } + + .selector .selector-filter input { + width: 100%; + min-height: 0; + flex: 1 1; + } + + .selector-available, .selector-chosen { + width: auto; + flex: 1 1; + display: flex; + flex-direction: column; + } + + .selector select { + width: 100%; + flex: 1 0 auto; + margin-bottom: 5px; + } + + .selector ul.selector-chooser { + width: 26px; + height: 52px; + padding: 2px 0; + border-radius: 20px; + transform: translateY(-10px); + } + + .selector-add, .selector-remove { + width: 20px; + height: 20px; + background-size: 20px auto; + } + + .selector-add { + background-position: 0 -120px; + } + + .selector-remove { + background-position: 0 -80px; + } + + a.selector-chooseall, a.selector-clearall { + align-self: center; + } + + .stacked { + flex-direction: column; + max-width: 480px; + } + + .stacked > * { + flex: 0 1 auto; + } + + .stacked select { + margin-bottom: 0; + } + + .stacked .selector-available, .stacked .selector-chosen { + width: auto; + } + + .stacked ul.selector-chooser { + width: 52px; + height: 26px; + padding: 0 2px; + transform: none; + } + + .stacked .selector-chooser li { + padding: 3px; + } + + .stacked .selector-add, .stacked .selector-remove { + background-size: 20px auto; + } + + .stacked .selector-add { + background-position: 0 -40px; + } + + .stacked .active.selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -140px; + } + + .stacked .active.selector-add:focus, .stacked .active.selector-add:hover { + background-position: 0 -60px; + } + + .stacked .selector-remove { + background-position: 0 0; + } + + .stacked .active.selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -100px; + } + + .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { + background-position: 0 -20px; + } + + .help-tooltip, .selector .help-icon { + display: none; + } + + .datetime input { + width: 50%; + max-width: 120px; + } + + .datetime span { + font-size: 0.8125rem; + } + + .datetime .timezonewarning { + display: block; + font-size: 0.6875rem; + color: var(--body-quiet-color); + } + + .datetimeshortcuts { + color: var(--border-color); /* XXX Redundant, .datetime span also sets #ccc */ + } + + .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + width: 75%; + } + + .inline-group { + overflow: auto; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 55px; + background-position: 30px 12px; + } + + ul.messagelist li.error { + background-position: 30px 12px; + } + + ul.messagelist li.warning { + background-position: 30px 14px; + } + + /* Login */ + + .login #header { + padding: 15px 20px; + } + + .login #site-name { + margin: 0; + } + + /* GIS */ + + div.olMap { + max-width: calc(100vw - 30px); + max-height: 300px; + } + + .olMap + .clear_features { + display: block; + margin-top: 10px; + } + + /* Docs */ + + .module table.xfull { + width: 100%; + } + + pre.literal-block { + overflow: auto; + } +} + +/* Mobile */ + +@media (max-width: 767px) { + /* Layout */ + + #header, #content { + padding: 15px; + } + + div.breadcrumbs { + padding: 10px 15px; + } + + /* Dashboard */ + + .colMS, .colSM { + margin: 0; + } + + #content-related, .colSM #content-related { + width: 100%; + margin: 0; + } + + #content-related .module { + margin-bottom: 0; + } + + #content-related .module h2 { + padding: 10px 15px; + font-size: 1rem; + } + + /* Changelist */ + + #changelist { + align-items: stretch; + flex-direction: column; + } + + #toolbar { + padding: 10px; + } + + #changelist-filter { + margin-left: 0; + } + + #changelist .actions label { + flex: 1 1; + } + + #changelist .actions select { + flex: 1 0; + width: 100%; + } + + #changelist .actions span { + flex: 1 0 100%; + } + + #changelist-filter { + position: static; + width: auto; + margin-top: 30px; + } + + .object-tools { + float: none; + margin: 0 0 15px; + padding: 0; + overflow: hidden; + } + + .object-tools li { + height: auto; + margin-left: 0; + } + + .object-tools li + li { + margin-left: 15px; + } + + /* Forms */ + + .form-row { + padding: 15px 0; + } + + .aligned .form-row, + .aligned .form-row > div { + max-width: 100vw; + } + + .aligned .form-row > div { + width: calc(100vw - 30px); + } + + .flex-container { + flex-flow: column; + } + + .flex-container.checkbox-row { + flex-flow: row; + } + + textarea { + max-width: none; + } + + .vURLField { + width: auto; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 15px; + padding-top: 15px; + } + + .aligned label { + width: 100%; + min-width: auto; + padding: 0 0 10px; + } + + .aligned label:after { + max-height: 0; + } + + .aligned .form-row input, + .aligned .form-row select, + .aligned .form-row textarea { + flex: 1 1 auto; + max-width: 100%; + } + + .aligned .checkbox-row input { + flex: 0 1 auto; + margin: 0; + } + + .aligned .vCheckboxLabel { + flex: 1 0; + padding: 1px 0 0 5px; + } + + .aligned label + p, + .aligned label + div.help, + .aligned label + div.readonly { + padding: 0; + margin-left: 0; + } + + .aligned p.file-upload { + font-size: 0.8125rem; + } + + span.clearable-file-input { + margin-left: 15px; + } + + span.clearable-file-input label { + font-size: 0.8125rem; + padding-bottom: 0; + } + + .aligned .timezonewarning { + flex: 1 0 100%; + margin-top: 5px; + } + + form .aligned .form-row div.help { + width: 100%; + margin: 5px 0 0; + padding: 0; + } + + form .aligned ul, + form .aligned ul.errorlist { + margin-left: 0; + padding-left: 0; + } + + form .aligned div.radiolist { + margin-top: 5px; + margin-right: 15px; + margin-bottom: -3px; + } + + form .aligned div.radiolist:not(.inline) div + div { + margin-top: 5px; + } + + /* Related widget */ + + .related-widget-wrapper { + width: 100%; + display: flex; + align-items: flex-start; + } + + .related-widget-wrapper .selector { + order: 1; + } + + .related-widget-wrapper > a { + order: 2; + } + + .related-widget-wrapper .radiolist ~ a { + align-self: flex-end; + } + + .related-widget-wrapper > select ~ a { + align-self: center; + } + + /* Selector */ + + .selector { + flex-direction: column; + gap: 10px 0; + } + + .selector-available, .selector-chosen { + flex: 1 1 auto; + } + + .selector select { + max-height: 96px; + } + + .selector ul.selector-chooser { + display: block; + width: 52px; + height: 26px; + padding: 0 2px; + transform: none; + } + + .selector ul.selector-chooser li { + float: left; + } + + .selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -20px; + } + + .selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -60px; + } + + /* Inlines */ + + .inline-group[data-inline-type="stacked"] .inline-related { + border: 1px solid var(--hairline-color); + border-radius: 4px; + margin-top: 15px; + overflow: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related > * { + box-sizing: border-box; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module { + padding: 0 10px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row { + border-top: 1px solid var(--hairline-color); + border-bottom: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:first-child { + border-top: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 { + padding: 10px; + border-top-width: 0; + border-bottom-width: 2px; + display: flex; + flex-wrap: wrap; + align-items: center; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { + margin-right: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { + float: none; + flex: 1 1 100%; + margin-top: 5px; + } + + .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] .aligned label { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] div.add-row { + margin-top: 15px; + border: 1px solid var(--hairline-color); + border-radius: 4px; + } + + .inline-group div.add-row, + .inline-group .tabular tr.add-row td { + padding: 0; + } + + .inline-group div.add-row a, + .inline-group .tabular tr.add-row td a { + display: block; + padding: 8px 10px 8px 26px; + background-position: 8px 9px; + } + + /* Submit row */ + + .submit-row { + padding: 10px; + margin: 0 0 15px; + flex-direction: column; + gap: 8px; + } + + .submit-row input, .submit-row input.default, .submit-row a { + text-align: center; + } + + .submit-row a.closelink { + padding: 10px 0; + text-align: center; + } + + .submit-row a.deletelink { + margin: 0; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 40px; + background-position: 15px 12px; + } + + ul.messagelist li.error { + background-position: 15px 12px; + } + + ul.messagelist li.warning { + background-position: 15px 14px; + } + + /* Paginator */ + + .paginator .this-page, .paginator a:link, .paginator a:visited { + padding: 4px 10px; + } + + /* Login */ + + body.login { + padding: 0 15px; + } + + .login #container { + width: auto; + max-width: 480px; + margin: 50px auto; + } + + .login #header, + .login #content { + padding: 15px; + } + + .login #content-main { + float: none; + } + + .login .form-row { + padding: 0; + } + + .login .form-row + .form-row { + margin-top: 15px; + } + + .login .form-row label { + margin: 0 0 5px; + line-height: 1.2; + } + + .login .submit-row { + padding: 15px 0 0; + } + + .login br { + display: none; + } + + .login .submit-row input { + margin: 0; + text-transform: uppercase; + } + + .errornote { + margin: 0 0 20px; + padding: 8px 12px; + font-size: 0.8125rem; + } + + /* Calendar and clock */ + + .calendarbox, .clockbox { + position: fixed !important; + top: 50% !important; + left: 50% !important; + transform: translate(-50%, -50%); + margin: 0; + border: none; + overflow: visible; + } + + .calendarbox:before, .clockbox:before { + content: ''; + position: fixed; + top: 50%; + left: 50%; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.75); + transform: translate(-50%, -50%); + } + + .calendarbox > *, .clockbox > * { + position: relative; + z-index: 1; + } + + .calendarbox > div:first-child { + z-index: 2; + } + + .calendarbox .calendar, .clockbox h2 { + border-radius: 4px 4px 0 0; + overflow: hidden; + } + + .calendarbox .calendar-cancel, .clockbox .calendar-cancel { + border-radius: 0 0 4px 4px; + overflow: hidden; + } + + .calendar-shortcuts { + padding: 10px 0; + font-size: 0.75rem; + line-height: 0.75rem; + } + + .calendar-shortcuts a { + margin: 0 4px; + } + + .timelist a { + background: var(--body-bg); + padding: 4px; + } + + .calendar-cancel { + padding: 8px 10px; + } + + .clockbox h2 { + padding: 8px 15px; + } + + .calendar caption { + padding: 10px; + } + + .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + z-index: 1; + top: 10px; + } + + /* History */ + + table#change-history tbody th, table#change-history tbody td { + font-size: 0.8125rem; + word-break: break-word; + } + + table#change-history tbody th { + width: auto; + } + + /* Docs */ + + table.model tbody th, table.model tbody td { + font-size: 0.8125rem; + word-break: break-word; + } +} diff --git a/staticfiles/admin/css/responsive.css.gz b/staticfiles/admin/css/responsive.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..aaf14756d239bb29dc50f9329f1eccad83811fdf GIT binary patch literal 3444 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 WH@BmYeyLr2diFo_osUB_MgRb=Q_4F4 literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/responsive_rtl.a154194876ee.css b/staticfiles/admin/css/responsive_rtl.a154194876ee.css new file mode 100644 index 0000000..33b5784 --- /dev/null +++ b/staticfiles/admin/css/responsive_rtl.a154194876ee.css @@ -0,0 +1,111 @@ +/* TABLETS */ + +@media (max-width: 1024px) { + [dir="rtl"] .colMS { + margin-right: 0; + } + + [dir="rtl"] #user-tools { + text-align: right; + } + + [dir="rtl"] #changelist .actions label { + padding-left: 10px; + padding-right: 0; + } + + [dir="rtl"] #changelist .actions select { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .change-list .filtered .results, + [dir="rtl"] .change-list .filtered .paginator, + [dir="rtl"] .filtered #toolbar, + [dir="rtl"] .filtered div.xfull, + [dir="rtl"] .filtered .actions, + [dir="rtl"] #changelist-filter { + margin-left: 0; + } + + [dir="rtl"] .inline-group ul.tools a.add, + [dir="rtl"] .inline-group div.add-row a, + [dir="rtl"] .inline-group .tabular tr.add-row td a { + padding: 8px 26px 8px 10px; + background-position: calc(100% - 8px) 9px; + } + + [dir="rtl"] .selector .selector-filter label { + margin-right: 0; + margin-left: 8px; + } + + [dir="rtl"] .object-tools li { + float: right; + } + + [dir="rtl"] .object-tools li + li { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .dashboard .module table td a { + padding-left: 0; + padding-right: 16px; + } + + [dir="rtl"] .selector-add { + background-position: 0 -80px; + } + + [dir="rtl"] .selector-remove { + background-position: 0 -120px; + } + + [dir="rtl"] .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -100px; + } + + [dir="rtl"] .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -140px; + } +} + +/* MOBILE */ + +@media (max-width: 767px) { + [dir="rtl"] .aligned .related-lookup, + [dir="rtl"] .aligned .datetimeshortcuts { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .aligned ul, + [dir="rtl"] form .aligned ul.errorlist { + margin-right: 0; + } + + [dir="rtl"] #changelist-filter { + margin-left: 0; + margin-right: 0; + } + [dir="rtl"] .aligned .vCheckboxLabel { + padding: 1px 5px 0 0; + } + + [dir="rtl"] .selector-remove { + background-position: 0 0; + } + + [dir="rtl"] .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -20px; + } + + [dir="rtl"] .selector-add { + background-position: 0 -40px; + } + + [dir="rtl"] .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -60px; + } +} diff --git a/staticfiles/admin/css/responsive_rtl.a154194876ee.css.gz b/staticfiles/admin/css/responsive_rtl.a154194876ee.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dacbf7c3c8343ab50d4f288395cef74cfd93c3e7 GIT binary patch literal 599 zcmV-d0;v5TiwFP!00002|HV~XYuhjse$THsv<%uTa-5K*nZsb~=))jo5AEC7gKWvR z7TGeoq=vEoJ~>W0r@nRs>IY#s=X{^^o!fK_k6&&#caIM+o{mPJ6G|9{s|4rhi4h%p zFmvaNEWd`|Be35O!sMq5srkiEa00>a9}b4%OR$VsiX@9-?SZ@A8~%)HftN;6iL?-0 zRiZV`HNu=lsRw(A_V^&iX+$|w8XO#GCQ=0)`;=GUGE4|dBgAQ_i&td%x@POYX%my8 zoCdo7?vlw}x9BnZaJ)hTky8?(k||_dQ%MOpk}AWsnhXxeu%*OW$cB(-uggMvA9wl? zwsZ2(aNgx~)MV1794g&=1Zxt7rJSV{MN*gy40pWwg5~C%7kKtG9Cn&2Uj!KeFvxrxrUEjWl+|Z zkpKRU>bcD7q=IT8XnT8=63Yk<*+l+ lDq=J1p0P9Bx2n#$J9u0SKwG>?doNEK>@R=5J5KNk007sBBrgB} literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/responsive_rtl.css b/staticfiles/admin/css/responsive_rtl.css new file mode 100644 index 0000000..33b5784 --- /dev/null +++ b/staticfiles/admin/css/responsive_rtl.css @@ -0,0 +1,111 @@ +/* TABLETS */ + +@media (max-width: 1024px) { + [dir="rtl"] .colMS { + margin-right: 0; + } + + [dir="rtl"] #user-tools { + text-align: right; + } + + [dir="rtl"] #changelist .actions label { + padding-left: 10px; + padding-right: 0; + } + + [dir="rtl"] #changelist .actions select { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .change-list .filtered .results, + [dir="rtl"] .change-list .filtered .paginator, + [dir="rtl"] .filtered #toolbar, + [dir="rtl"] .filtered div.xfull, + [dir="rtl"] .filtered .actions, + [dir="rtl"] #changelist-filter { + margin-left: 0; + } + + [dir="rtl"] .inline-group ul.tools a.add, + [dir="rtl"] .inline-group div.add-row a, + [dir="rtl"] .inline-group .tabular tr.add-row td a { + padding: 8px 26px 8px 10px; + background-position: calc(100% - 8px) 9px; + } + + [dir="rtl"] .selector .selector-filter label { + margin-right: 0; + margin-left: 8px; + } + + [dir="rtl"] .object-tools li { + float: right; + } + + [dir="rtl"] .object-tools li + li { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .dashboard .module table td a { + padding-left: 0; + padding-right: 16px; + } + + [dir="rtl"] .selector-add { + background-position: 0 -80px; + } + + [dir="rtl"] .selector-remove { + background-position: 0 -120px; + } + + [dir="rtl"] .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -100px; + } + + [dir="rtl"] .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -140px; + } +} + +/* MOBILE */ + +@media (max-width: 767px) { + [dir="rtl"] .aligned .related-lookup, + [dir="rtl"] .aligned .datetimeshortcuts { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .aligned ul, + [dir="rtl"] form .aligned ul.errorlist { + margin-right: 0; + } + + [dir="rtl"] #changelist-filter { + margin-left: 0; + margin-right: 0; + } + [dir="rtl"] .aligned .vCheckboxLabel { + padding: 1px 5px 0 0; + } + + [dir="rtl"] .selector-remove { + background-position: 0 0; + } + + [dir="rtl"] .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -20px; + } + + [dir="rtl"] .selector-add { + background-position: 0 -40px; + } + + [dir="rtl"] .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -60px; + } +} diff --git a/staticfiles/admin/css/responsive_rtl.css.gz b/staticfiles/admin/css/responsive_rtl.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dacbf7c3c8343ab50d4f288395cef74cfd93c3e7 GIT binary patch literal 599 zcmV-d0;v5TiwFP!00002|HV~XYuhjse$THsv<%uTa-5K*nZsb~=))jo5AEC7gKWvR z7TGeoq=vEoJ~>W0r@nRs>IY#s=X{^^o!fK_k6&&#caIM+o{mPJ6G|9{s|4rhi4h%p zFmvaNEWd`|Be35O!sMq5srkiEa00>a9}b4%OR$VsiX@9-?SZ@A8~%)HftN;6iL?-0 zRiZV`HNu=lsRw(A_V^&iX+$|w8XO#GCQ=0)`;=GUGE4|dBgAQ_i&td%x@POYX%my8 zoCdo7?vlw}x9BnZaJ)hTky8?(k||_dQ%MOpk}AWsnhXxeu%*OW$cB(-uggMvA9wl? zwsZ2(aNgx~)MV1794g&=1Zxt7rJSV{MN*gy40pWwg5~C%7kKtG9Cn&2Uj!KeFvxrxrUEjWl+|Z zkpKRU>bcD7q=IT8XnT8=63Yk<*+l+ lDq=J1p0P9Bx2n#$J9u0SKwG>?doNEK>@R=5J5KNk007sBBrgB} literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/rtl.7e532512b807.css b/staticfiles/admin/css/rtl.7e532512b807.css new file mode 100644 index 0000000..8d22f80 --- /dev/null +++ b/staticfiles/admin/css/rtl.7e532512b807.css @@ -0,0 +1,291 @@ +/* GLOBAL */ + +th { + text-align: right; +} + +.module h2, .module caption { + text-align: right; +} + +.module ul, .module ol { + margin-left: 0; + margin-right: 1.5em; +} + +.viewlink, .addlink, .changelink, .hidelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.deletelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.object-tools { + float: left; +} + +thead th:first-child, +tfoot td:first-child { + border-left: none; +} + +/* LAYOUT */ + +#user-tools { + right: auto; + left: 0; + text-align: left; +} + +div.breadcrumbs { + text-align: right; +} + +#content-main { + float: right; +} + +#content-related { + float: left; + margin-left: -300px; + margin-right: auto; +} + +.colMS { + margin-left: 300px; + margin-right: 0; +} + +/* SORTABLE TABLES */ + +table thead th.sorted .sortoptions { + float: left; +} + +thead th.sorted .text { + padding-right: 0; + padding-left: 42px; +} + +/* dashboard styles */ + +.dashboard .module table td a { + padding-left: .6em; + padding-right: 16px; +} + +/* changelists styles */ + +.change-list .filtered table { + border-left: none; + border-right: 0px none; +} + +#changelist-filter { + border-left: none; + border-right: none; + margin-left: 0; + margin-right: 30px; +} + +#changelist-filter li.selected { + border-left: none; + padding-left: 10px; + margin-left: 0; + border-right: 5px solid var(--hairline-color); + padding-right: 10px; + margin-right: -15px; +} + +#changelist table tbody td:first-child, #changelist table tbody th:first-child { + border-right: none; + border-left: none; +} + +.paginator .end { + margin-left: 6px; + margin-right: 0; +} + +.paginator input { + margin-left: 0; + margin-right: auto; +} + +/* FORMS */ + +.aligned label { + padding: 0 0 3px 1em; +} + +.submit-row a.deletelink { + margin-left: 0; + margin-right: auto; +} + +.vDateField, .vTimeField { + margin-left: 2px; +} + +.aligned .form-row input { + margin-left: 5px; +} + +form .aligned ul { + margin-right: 163px; + padding-right: 10px; + margin-left: 0; + padding-left: 0; +} + +form ul.inline li { + float: right; + padding-right: 0; + padding-left: 7px; +} + +form .aligned p.help, +form .aligned div.help { + margin-left: 0; + margin-right: 160px; + padding-right: 10px; +} + +form div.help ul, +form .aligned .checkbox-row + .help, +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-right: 0; + padding-right: 0; +} + +form .wide p.help, +form .wide ul.errorlist, +form .wide div.help { + padding-left: 0; + padding-right: 50px; +} + +.submit-row { + text-align: right; +} + +fieldset .fieldBox { + margin-left: 20px; + margin-right: 0; +} + +.errorlist li { + background-position: 100% 12px; + padding: 0; +} + +.errornote { + background-position: 100% 12px; + padding: 10px 12px; +} + +/* WIDGETS */ + +.calendarnav-previous { + top: 0; + left: auto; + right: 10px; + background: url("../img/calendar-icons.93ab098d1ac1.svg") 0 -15px no-repeat; +} + +.calendarnav-next { + top: 0; + right: auto; + left: 10px; + background: url("../img/calendar-icons.93ab098d1ac1.svg") 0 0 no-repeat; +} + +.calendar caption, .calendarbox h2 { + text-align: center; +} + +.selector { + float: right; +} + +.selector .selector-filter { + text-align: right; +} + +.selector-add { + background: url("../img/selector-icons.b4555096cea2.svg") 0 -64px no-repeat; +} + +.active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -80px; +} + +.selector-remove { + background: url("../img/selector-icons.b4555096cea2.svg") 0 -96px no-repeat; +} + +.active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -112px; +} + +a.selector-chooseall { + background: url("../img/selector-icons.b4555096cea2.svg") right -128px no-repeat; +} + +a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { + background-position: 100% -144px; +} + +a.selector-clearall { + background: url("../img/selector-icons.b4555096cea2.svg") 0 -160px no-repeat; +} + +a.active.selector-clearall:focus, a.active.selector-clearall:hover { + background-position: 0 -176px; +} + +.inline-deletelink { + float: left; +} + +form .form-row p.datetime { + overflow: hidden; +} + +.related-widget-wrapper { + float: right; +} + +/* MISC */ + +.inline-related h2, .inline-group h2 { + text-align: right +} + +.inline-related h3 span.delete { + padding-right: 20px; + padding-left: inherit; + left: 10px; + right: inherit; + float:left; +} + +.inline-related h3 span.delete label { + margin-left: inherit; + margin-right: 2px; +} + +.inline-group .tabular td.original p { + right: 0; +} + +.selector .selector-chooser { + margin: 0; +} diff --git a/staticfiles/admin/css/rtl.7e532512b807.css.gz b/staticfiles/admin/css/rtl.7e532512b807.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7831fc9541b538e269720298e8dbabeba5786c28 GIT binary patch literal 1267 zcmV`8sP28tsy`VsX08NHrkCa4P zTxe0CDBInz|GqP&QuNmd!H=Rl6%fu= z*#b$nO4Wza-=h&;i=^ZfrIQQfo@0_LCbEdux>O4kerTUn5*BET zXLM}@Z5Z8hmc4)+k|g#iPD!?+_Cv~&>d{KifsAFVu6TFoH6zMk_Iw=ji_S_s3tKtKgrN1(3AWTI)%vgt5MZu^sE$vV?7L zB*D5^mg}fEm=~uqG_)BJ~hS%88x{PHgCYL zgcNBch)htSzH?eshT-Pa)t+5&}wJ^$tvVKe^3UpH5kwOSX}5Mk$m6l6c=caE*r-HkWTY;8XHB)Ph-ZN*C=*Od{2E^raol&EGb_eO19%~R*{ zV=3jGZS|p3SaQrVovu(S-gbU!PkZl$k>ix|{9^A^4;+1d`Zh5S55jhOYr(L!?CFFi zN8^`B?5b$|jJ$^B(0CQC#b5=&{uAn9OJoL0{p6bH6)XqIy+IF$qENeg3k%equd5@7 zE|pS9-5xqG_9Ae~J~VTlZkN`fRbi>Cq@dMEfu}pM^OnrP!QGhO7hwcdBBby+Xbi+hhuTUbdy=l-kYgw;s8F@* zj4#=Gb?M{>47REQ-%Lpq-drbR5|44QS-p7&ov)f3(79pZ$|uA1aR4y~OHLH*QSJqB(%H8BLdq8vh96B^Xf z)oeBkZ{{&2lO`1Nt9~d*tk{Nj6fKq_E(?7p^1MsM#v1KSRM2wWRHI{*bPa6(9l*`} zH~^z-5QBYv9LBgVE7EYssSpJvocD_LwP>m!gO+cez6b^wpvphvSW#*{|6Sv6(zC~001B;asL1S literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/rtl.css b/staticfiles/admin/css/rtl.css new file mode 100644 index 0000000..b8f60e0 --- /dev/null +++ b/staticfiles/admin/css/rtl.css @@ -0,0 +1,291 @@ +/* GLOBAL */ + +th { + text-align: right; +} + +.module h2, .module caption { + text-align: right; +} + +.module ul, .module ol { + margin-left: 0; + margin-right: 1.5em; +} + +.viewlink, .addlink, .changelink, .hidelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.deletelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.object-tools { + float: left; +} + +thead th:first-child, +tfoot td:first-child { + border-left: none; +} + +/* LAYOUT */ + +#user-tools { + right: auto; + left: 0; + text-align: left; +} + +div.breadcrumbs { + text-align: right; +} + +#content-main { + float: right; +} + +#content-related { + float: left; + margin-left: -300px; + margin-right: auto; +} + +.colMS { + margin-left: 300px; + margin-right: 0; +} + +/* SORTABLE TABLES */ + +table thead th.sorted .sortoptions { + float: left; +} + +thead th.sorted .text { + padding-right: 0; + padding-left: 42px; +} + +/* dashboard styles */ + +.dashboard .module table td a { + padding-left: .6em; + padding-right: 16px; +} + +/* changelists styles */ + +.change-list .filtered table { + border-left: none; + border-right: 0px none; +} + +#changelist-filter { + border-left: none; + border-right: none; + margin-left: 0; + margin-right: 30px; +} + +#changelist-filter li.selected { + border-left: none; + padding-left: 10px; + margin-left: 0; + border-right: 5px solid var(--hairline-color); + padding-right: 10px; + margin-right: -15px; +} + +#changelist table tbody td:first-child, #changelist table tbody th:first-child { + border-right: none; + border-left: none; +} + +.paginator .end { + margin-left: 6px; + margin-right: 0; +} + +.paginator input { + margin-left: 0; + margin-right: auto; +} + +/* FORMS */ + +.aligned label { + padding: 0 0 3px 1em; +} + +.submit-row a.deletelink { + margin-left: 0; + margin-right: auto; +} + +.vDateField, .vTimeField { + margin-left: 2px; +} + +.aligned .form-row input { + margin-left: 5px; +} + +form .aligned ul { + margin-right: 163px; + padding-right: 10px; + margin-left: 0; + padding-left: 0; +} + +form ul.inline li { + float: right; + padding-right: 0; + padding-left: 7px; +} + +form .aligned p.help, +form .aligned div.help { + margin-left: 0; + margin-right: 160px; + padding-right: 10px; +} + +form div.help ul, +form .aligned .checkbox-row + .help, +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-right: 0; + padding-right: 0; +} + +form .wide p.help, +form .wide ul.errorlist, +form .wide div.help { + padding-left: 0; + padding-right: 50px; +} + +.submit-row { + text-align: right; +} + +fieldset .fieldBox { + margin-left: 20px; + margin-right: 0; +} + +.errorlist li { + background-position: 100% 12px; + padding: 0; +} + +.errornote { + background-position: 100% 12px; + padding: 10px 12px; +} + +/* WIDGETS */ + +.calendarnav-previous { + top: 0; + left: auto; + right: 10px; + background: url(../img/calendar-icons.svg) 0 -15px no-repeat; +} + +.calendarnav-next { + top: 0; + right: auto; + left: 10px; + background: url(../img/calendar-icons.svg) 0 0 no-repeat; +} + +.calendar caption, .calendarbox h2 { + text-align: center; +} + +.selector { + float: right; +} + +.selector .selector-filter { + text-align: right; +} + +.selector-add { + background: url(../img/selector-icons.svg) 0 -64px no-repeat; +} + +.active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -80px; +} + +.selector-remove { + background: url(../img/selector-icons.svg) 0 -96px no-repeat; +} + +.active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -112px; +} + +a.selector-chooseall { + background: url(../img/selector-icons.svg) right -128px no-repeat; +} + +a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { + background-position: 100% -144px; +} + +a.selector-clearall { + background: url(../img/selector-icons.svg) 0 -160px no-repeat; +} + +a.active.selector-clearall:focus, a.active.selector-clearall:hover { + background-position: 0 -176px; +} + +.inline-deletelink { + float: left; +} + +form .form-row p.datetime { + overflow: hidden; +} + +.related-widget-wrapper { + float: right; +} + +/* MISC */ + +.inline-related h2, .inline-group h2 { + text-align: right +} + +.inline-related h3 span.delete { + padding-right: 20px; + padding-left: inherit; + left: 10px; + right: inherit; + float:left; +} + +.inline-related h3 span.delete label { + margin-left: inherit; + margin-right: 2px; +} + +.inline-group .tabular td.original p { + right: 0; +} + +.selector .selector-chooser { + margin: 0; +} diff --git a/staticfiles/admin/css/rtl.css.gz b/staticfiles/admin/css/rtl.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e36d2e34f38ddc649762a5b6d32369a35c4fcdcf GIT binary patch literal 1240 zcmV;}1Sk6+iwFP!00002|Fu|KZ`(E$e)q2+5DaM3h>`8Y?cAqiy`VsX08NHrkCa4P zTxe0CDBJC@|K3B9)RnTG084;arq1O%_rqMCqpx=lw>Nj_{Bkl;Df)MU;78HD3J7QG zY>6aWr|RS6zsUq|L{f5!(%A)a&oRjr6WK|8C2#lyw=5eX*DMP-U8yAsKeo>*2}?A^ z*K}h9Z5iEhmOXd{KifsAGAu6TFok^dOwmjQ8^W@#r5++lIZ-t6d1R1A!8{C|$Gf>?Y|(Cx1;2mv<=`l9 z=$!WW@crrL_U<#P{yv)0ArWM?3k)uV)L^SmQB{cb#aJk74(+R6YBl}l- zQlya}GC_sbcHH9+RS;NUm(0!Ss4)iwk`uk{`WJae+qZ((#Tm@Ug$s;G6(7qJ%`4 zW{I!t7Ke(i#m}<5R431ly51pWzdU@uH^qvpUIcOEB%-`q1Rw~0=Maghn>s}qZ5VVQ zu|s4y0A2tBZ$Ci~`@*PpH{L$6jrrn}&GNI^e zWau2T=cXzB_3hKw&rh~3#e_q5gz%AVkW0E{qO4aak=Ncd);4R|pllmROH@k!2IEV% zSzkKw0fVKgz{Pg`7Fu03D47OUcbDURZ(C0glwxBA-= z9}L!@{>8>jhiQvkf(9B4;x4Zx*%bKcSCrO^u(He&SdH?P457Rs? zFn3R^{z+lav`M+YWmLl2hSmIYROBSH`=0+sHXE!GrU$YtrIIOsTeQ3#8e>`QyCYcI zTWeT2H8Pk>3;zqBA!855&!@k C(p=C0 literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/unusable_password_field.b433f2a95fba.css b/staticfiles/admin/css/unusable_password_field.b433f2a95fba.css new file mode 100644 index 0000000..d46eb03 --- /dev/null +++ b/staticfiles/admin/css/unusable_password_field.b433f2a95fba.css @@ -0,0 +1,19 @@ +/* Hide warnings fields if usable password is selected */ +form:has(#id_usable_password input[value="true"]:checked) .messagelist { + display: none; +} + +/* Hide password fields if unusable password is selected */ +form:has(#id_usable_password input[value="false"]:checked) .field-password1, +form:has(#id_usable_password input[value="false"]:checked) .field-password2 { + display: none; +} + +/* Select appropriate submit button */ +form:has(#id_usable_password input[value="true"]:checked) input[type="submit"].unset-password { + display: none; +} + +form:has(#id_usable_password input[value="false"]:checked) input[type="submit"].set-password { + display: none; +} diff --git a/staticfiles/admin/css/unusable_password_field.b433f2a95fba.css.gz b/staticfiles/admin/css/unusable_password_field.b433f2a95fba.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5947237e3893f647022ab00bff5a68fa6e57e84b GIT binary patch literal 228 zcmVsi>=VL+u;cN0{~`f@^Xt3LgdzXIY}dT?IaPdNH5I zlwV+{$RA+-ZfG4k`OS8$dHQzGCU*>bzVz(!$PXA}3NbM%f#jxVg(j;8f7|4PsJnR3 ehS;K>W-p{Cx_{wr7~s#^YfAUfiw&KZ0ssK2;B6lO literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/unusable_password_field.css b/staticfiles/admin/css/unusable_password_field.css new file mode 100644 index 0000000..d46eb03 --- /dev/null +++ b/staticfiles/admin/css/unusable_password_field.css @@ -0,0 +1,19 @@ +/* Hide warnings fields if usable password is selected */ +form:has(#id_usable_password input[value="true"]:checked) .messagelist { + display: none; +} + +/* Hide password fields if unusable password is selected */ +form:has(#id_usable_password input[value="false"]:checked) .field-password1, +form:has(#id_usable_password input[value="false"]:checked) .field-password2 { + display: none; +} + +/* Select appropriate submit button */ +form:has(#id_usable_password input[value="true"]:checked) input[type="submit"].unset-password { + display: none; +} + +form:has(#id_usable_password input[value="false"]:checked) input[type="submit"].set-password { + display: none; +} diff --git a/staticfiles/admin/css/unusable_password_field.css.gz b/staticfiles/admin/css/unusable_password_field.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5947237e3893f647022ab00bff5a68fa6e57e84b GIT binary patch literal 228 zcmVsi>=VL+u;cN0{~`f@^Xt3LgdzXIY}dT?IaPdNH5I zlwV+{$RA+-ZfG4k`OS8$dHQzGCU*>bzVz(!$PXA}3NbM%f#jxVg(j;8f7|4PsJnR3 ehS;K>W-p{Cx_{wr7~s#^YfAUfiw&KZ0ssK2;B6lO literal 0 HcmV?d00001 diff --git a/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md b/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md new file mode 100644 index 0000000..8cb8a2b --- /dev/null +++ b/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md.gz b/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md.gz new file mode 100644 index 0000000000000000000000000000000000000000..1b839219b605ae2f5f7e57a797521d30b9e72785 GIT binary patch literal 685 zcmV;e0#f}SiwFP!00002|6Ni|Z{jczz57>;dTOO?cej_7_GS`OtcEypOj(X0F~qB2 zBij`5?{^$%tFDBC=IgzAZ>$ClORk_aowh;4Jq8bihVIbGY$w7+%BG5uP5F%1lO4s z@t}9z>7Z?FW8&MHQ3tq>DD$qlP24?9B)x7&f@)Ijy#!|y2X~6#bwB}K!pOkbZanpA zhxhVm4(7&?#wV)+LC{k`1!>O=4z4%5^sgsb$J2H+VaT92;pz=0LrPB0PyT&JLxUbi zf(Qopp0s{$cl8)qj>*t?vnZs@d2olXN=zWTleb8zr!f!$pmfEd*)039#ORz5Ds@E0L0gj(ny_Leyjw5XK%`oIOmZa3X9G~bz#KW6* zgroBl-~Tcnk$=IU5p%Vsk^yg^mg1EctbjY(V0@RsnyZCaDZma%E42YJ2U>05g;zxe z>`yIO(}0kKFYA&s%<(EOR|T)0VTN;+z(>#VwIiq!kO*&3oHYq-$z;C3kj{9?)g~iz zuBwDN7ZNDcR4SgYN-CjV$yziF=?jFdcr};E!j`O3kI0HSV6PZJv!G>}s0dx*_A>1U zxu`diKQ9z4L|HIQ&KPb+XC=E*p{Ts1e3?N(m-LxUQvy*WNp08dV7*`|mG~(Ba>YfJ zWaOe!62lBtO7$_i<_*h$O5P+x=29#(lI+9@F@fM*#jYsHYWQ*yY)SE|VIP1{Fj^uO To~Qb9zDM#8M89D%WCQ>J;dTOO?cej_7_GS`OtcEypOj(X0F~qB2 zBij`5?{^$%tFDBC=IgzAZ>$ClORk_aowh;4Jq8bihVIbGY$w7+%BG5uP5F%1lO4s z@t}9z>7Z?FW8&MHQ3tq>DD$qlP24?9B)x7&f@)Ijy#!|y2X~6#bwB}K!pOkbZanpA zhxhVm4(7&?#wV)+LC{k`1!>O=4z4%5^sgsb$J2H+VaT92;pz=0LrPB0PyT&JLxUbi zf(Qopp0s{$cl8)qj>*t?vnZs@d2olXN=zWTleb8zr!f!$pmfEd*)039#ORz5Ds@E0L0gj(ny_Leyjw5XK%`oIOmZa3X9G~bz#KW6* zgroBl-~Tcnk$=IU5p%Vsk^yg^mg1EctbjY(V0@RsnyZCaDZma%E42YJ2U>05g;zxe z>`yIO(}0kKFYA&s%<(EOR|T)0VTN;+z(>#VwIiq!kO*&3oHYq-$z;C3kj{9?)g~iz zuBwDN7ZNDcR4SgYN-CjV$yziF=?jFdcr};E!j`O3kI0HSV6PZJv!G>}s0dx*_A>1U zxu`diKQ9z4L|HIQ&KPb+XC=E*p{Ts1e3?N(m-LxUQvy*WNp08dV7*`|mG~(Ba>YfJ zWaOe!62lBtO7$_i<_*h$O5P+x=29#(lI+9@F@fM*#jYsHYWQ*yY)SE|VIP1{Fj^uO To~Qb9zDM#8M89D%WCQ>J