From 6722bba792ff9198ec8c29a9dfb80f205a20ff16 Mon Sep 17 00:00:00 2001 From: CPABONG Date: Sun, 3 Aug 2025 13:13:13 +0900 Subject: [PATCH] Fix media file serving in production and update ALLOWED_HOSTS --- A_core/__pycache__/__init__.cpython-313.pyc | Bin 154 -> 168 bytes A_core/__pycache__/__init__.cpython-38.pyc | Bin 148 -> 168 bytes A_core/__pycache__/settings.cpython-313.pyc | Bin 3366 -> 3458 bytes A_core/__pycache__/settings.cpython-38.pyc | Bin 3104 -> 3208 bytes A_core/__pycache__/urls.cpython-38.pyc | Bin 1249 -> 1509 bytes A_core/__pycache__/wsgi.cpython-38.pyc | Bin 549 -> 563 bytes A_core/settings.py | 4 +- A_core/urls.py | 10 + B_main/__pycache__/__init__.cpython-313.pyc | Bin 154 -> 168 bytes B_main/__pycache__/__init__.cpython-38.pyc | Bin 148 -> 168 bytes B_main/__pycache__/admin.cpython-38.pyc | Bin 3733 -> 3747 bytes B_main/__pycache__/apps.cpython-38.pyc | Bin 424 -> 438 bytes B_main/__pycache__/forms.cpython-38.pyc | Bin 7950 -> 7964 bytes B_main/__pycache__/models.cpython-38.pyc | Bin 2289 -> 2303 bytes B_main/__pycache__/peopleinfo.cpython-38.pyc | Bin 30496 -> 30510 bytes B_main/__pycache__/urls.cpython-38.pyc | Bin 893 -> 907 bytes B_main/__pycache__/views.cpython-313.pyc | Bin 16828 -> 16828 bytes B_main/__pycache__/views.cpython-38.pyc | Bin 9176 -> 9190 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 159 -> 173 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 158 -> 172 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 152 -> 172 bytes C_accounts/__pycache__/admin.cpython-38.pyc | Bin 193 -> 207 bytes C_accounts/__pycache__/apps.cpython-38.pyc | Bin 592 -> 606 bytes C_accounts/__pycache__/forms.cpython-38.pyc | Bin 7303 -> 7317 bytes .../__pycache__/middleware.cpython-38.pyc | Bin 1117 -> 1131 bytes C_accounts/__pycache__/models.cpython-38.pyc | Bin 190 -> 204 bytes C_accounts/__pycache__/signals.cpython-38.pyc | Bin 970 -> 984 bytes C_accounts/__pycache__/urls.cpython-38.pyc | Bin 590 -> 604 bytes C_accounts/__pycache__/views.cpython-38.pyc | Bin 5809 -> 5823 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 163 -> 177 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 165 -> 185 bytes .../__pycache__/form_filters.cpython-38.pyc | Bin 416 -> 430 bytes db.sqlite3 | Bin 331776 -> 331776 bytes run | 9 + staticfiles/admin/css/autocomplete.css | 4 + staticfiles/admin/css/base.css | 91 +++++++--- staticfiles/admin/css/changelists.css | 19 +- staticfiles/admin/css/dark_mode.css | 27 +-- staticfiles/admin/css/forms.css | 102 ++++------- staticfiles/admin/css/login.css | 2 +- staticfiles/admin/css/nav_sidebar.css | 6 + staticfiles/admin/css/responsive.css | 139 +++----------- staticfiles/admin/css/responsive_rtl.css | 27 +-- staticfiles/admin/css/rtl.css | 57 +++--- .../admin/css/unusable_password_field.css | 19 ++ staticfiles/admin/css/widgets.css | 171 +++++++++--------- staticfiles/admin/img/README.txt | 2 +- staticfiles/admin/img/calendar-icons.svg | 69 ++++++- staticfiles/admin/img/icon-addlink.svg | 2 +- staticfiles/admin/img/icon-changelink.svg | 2 +- staticfiles/admin/img/icon-hidelink.svg | 3 + staticfiles/admin/img/inline-delete.svg | 2 +- staticfiles/admin/img/search.svg | 3 - 53 files changed, 394 insertions(+), 376 deletions(-) create mode 100644 run create mode 100644 staticfiles/admin/css/unusable_password_field.css create mode 100644 staticfiles/admin/img/icon-hidelink.svg delete mode 100644 staticfiles/admin/img/search.svg diff --git a/A_core/__pycache__/__init__.cpython-313.pyc b/A_core/__pycache__/__init__.cpython-313.pyc index 44b917638492badfb57dac00cd2212773b18d3a0..89aee53576ee7a9e359f40abde642bb0bd4c6bc4 100644 GIT binary patch delta 76 zcmbQmxPp=UGcPX}0}!O%=$puGZ0a6m6_b*moSj+}6Hr-_k)Icnl%JPgoLQ0@pOTfB em!2O}oSBo8=;#{|pPZjpl9*f)A7(T$)f528$r|_o delta 62 zcmZ3%IE#_{GcPX}0}#A+=$^=JtZwOS6%$&VT2vh49N_5W@8=%ll3JWyl3x%LoSBo8 P=;#{|Uka3-SZoRaL;(~@ diff --git a/A_core/__pycache__/__init__.cpython-38.pyc b/A_core/__pycache__/__init__.cpython-38.pyc index 4e52d853043318a3ad249bb5780e619499254e28..3ba44938ab150444de9911db4973b5c2df32e496 100644 GIT binary patch delta 90 zcmbQjxPp;8l$V!_0SHoW^iAZparV_O%g-szO*Pa{$xqHsEz%FDEXl~v(@)CJOE1nW rNsUj*O3X{o*Dub@$w_qd4Tw+9&nrnxE{P8_(su-Mic<9_mdODC8KWM; delta 70 zcmZ3%IE9frl$V!_0SI0@bWh~A(YJKAiU}=FEh>(24sdkx_j8YNNiEJU$uEcr&dkY4 Xbo32~F9k}+IL0UE7p2Bb?2-cj%vlz< diff --git a/A_core/__pycache__/settings.cpython-313.pyc b/A_core/__pycache__/settings.cpython-313.pyc index 9c81245397ae38900e8b925628c3bd813b1a6769..96d2ba0515da74d3f5063368a664441832292d66 100644 GIT binary patch delta 438 zcmY*V-Acl66!&jyHs|J2OViZsQ-d}q*f&8C8HAJ^DTslrDO$}fjswXq3LhW{?|Oh< zU=PxLcXiWcL@&@kyXqXy_wSq^oacByA$|*j-$P~l?V)uPdK6=1?{TSf2cs2&oZdL?K2|QJ5O~_|PZvL}4%l(-?-+Bt}5Q32Kv&!YDnE{yl&(n$7$X;uK^sPV3p> zBmr|c4f7a<1x&&sreF!vbbkgI%+P$cna$-~lk~~qeva))-ELRzT$rY=x36WxZubKJ zDnZ>S$m;64tjemo@yeODp_?tc1x7PQ-?+yn8(a}Z)RX7g}1!B_4}e5E&oKF*q?w41sJa zv4Is*l@(GK{DZgr0e_Gkzrl*z?3mGF?*=$-8cJSwW`&s@>tFZO6 zYV{PCAtQw;C`fxUDNvC?78<6J!wmA6#T@3b;AJR{0;wpXLq=Ko%5u}Xd2fk2LoK_PHVaZ^E}}*nt_EILS*6Q z1aD1n*Joam^4OzU?9&`JXkNqu>QoTpw{?k%BHy`KMtiJd9Xn`;{b;C|)}B!lZjRY@{5xS^VlUzy`3YlM{3&Iz{8;WscH}$56z{n3Z9X3T zntB?mN;%Q2iHGzq;BS+E41*6H*W?JDcW#fLe2&^-m%jsC&t1+rxygNuy+yq>kH;yA_$)o0{rI1~2^M|M<+@xV1^uwYfdMFR z!UZ=x@WO{d?j|Sv3i*KNd{JWeQ-9f|#ceWEv6~#sWoz zeNmMtD(ceTIf`MK;$m76TNSI6z#2tRq+yh31nZO(&J;E%E&5Sx9!uFRJ*p5|K;y2j1(0cE#43m3bu9sg8 CuV{(@ diff --git a/A_core/__pycache__/urls.cpython-38.pyc b/A_core/__pycache__/urls.cpython-38.pyc index a321963da3865251024a0e54e2458abe8e1ca750..127001a8a837ac930c1d456c1131fd3adcedbfc9 100644 GIT binary patch delta 473 zcmZvYJ4?e*6vuPZJepTqHLW7zAUG7Yf{Wl*A4tJkAE`qOgqVA68`A`m>)_G{B^r}5QGjM3X7SvJ-DaRuCL5VJ2ciFpf&Skp*3X%G_4VbIt<_Olj0vTK zpcexRF?Hy`O)d-1I+Pj?-P<7vs2znNJ+4<1kvm;iu;&E5u;GTmbtJ$qnDc*>#%<)s zjoc>^6N6j5Px<|W-R@y3wGZ}NO}l$`l*&1tbvi~WpBqi1wKvt3AI=)jOtc8@(=^#L zcP!ZEhD6rM9qosKbrr(S14``taVsA9zSC@<*svFMTxwrzSxqRSZe*H#mU$(! zpC-@bE|$Q_+^mWjD;bIefp&w5U#8AhF`>n&Ma41B0gg`oe(o_Ysm0kP`2{h-nK?O$ zj=ll$r9kNz$N1#@qSTnuqMTyAg34PQHo5sJr8%i~j6jo$g@6Q$01u-8BM%D?lNcip H2>t>9X9YYK diff --git a/A_core/__pycache__/wsgi.cpython-38.pyc b/A_core/__pycache__/wsgi.cpython-38.pyc index e7acbed1548a345f65571237a55fdd7f971514dd..280c9b68bbaf3c62a30adb0306c41821f47a75da 100644 GIT binary patch delta 65 zcmZ3=vYBPW6-HC%D65#1{N(J^qL_fnl8pSkn56u?^y18t)cBOF#Ju$UnBvTwoJ2?8 UfcWJ6ypqJ^lK3#A$-f!307U*7X8-^I delta 51 zcmdnYvXo`R6-ISaXRDad;?$zz80P>-Cx1Wp7?;%I?2`O~nBdHuoJ2?8fcR3N^khyZ FEdbZ35zYVr diff --git a/A_core/settings.py b/A_core/settings.py index 165b793..043d922 100644 --- a/A_core/settings.py +++ b/A_core/settings.py @@ -23,9 +23,9 @@ BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = 'django-insecure-kst@+h&50%!m$(d!l*qbb0l7f@z#@#me__yye^$5kg%0m%1=im' # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = False -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ['www.sillaamp.com', 'sillaamp.com', '192.168.1.119', 'localhost', '127.0.0.1', '*'] # Application definition diff --git a/A_core/urls.py b/A_core/urls.py index e50d00a..9f72b90 100644 --- a/A_core/urls.py +++ b/A_core/urls.py @@ -17,6 +17,8 @@ Including another URLconf from django.contrib import admin from django.urls import path, include from django.views.generic import RedirectView +from django.conf import settings +from django.conf.urls.static import static urlpatterns = [ @@ -27,3 +29,11 @@ urlpatterns = [ path('accounts/', include('C_accounts.urls')), # 커스텀 계정 URL path('', include('B_main.urls')), ] + +# 미디어 파일 서빙 (개발 환경에서만) +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) +else: + # 프로덕션 환경에서도 미디어 파일 서빙 (임시 해결책) + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/B_main/__pycache__/__init__.cpython-313.pyc b/B_main/__pycache__/__init__.cpython-313.pyc index beb35f5e6540386a88d1f1c05e3faf497ed9d4e9..052797b99c5338da5b37ab54aab21832c2fa60d3 100644 GIT binary patch delta 76 zcmbQmxPp=UGcPX}0}!O$=$puGZ0a6m6_b*moSj+}6Hr-_k)Icnl%JPgoLQ0@pOTfB em!2O}oSBo8=;#{|pPZjpl9*f)A7(T$)f5292pahS delta 62 zcmZ3%IE#_{GcPX}0}y<5=$^=JtZwOS6%$&VT2vh49N_5W@8=%ll3JWyl3x%LoSBo8 P=;#{|Uka3-SZoRaMe7t( diff --git a/B_main/__pycache__/__init__.cpython-38.pyc b/B_main/__pycache__/__init__.cpython-38.pyc index a77d467cde196189d595a2ba2f01d20b18229f62..4c943338e3f2e78f6920ef8f6ce1128164f0cebd 100644 GIT binary patch delta 90 zcmbQjxPp;8l$V!_0SMA=^iAZparV_O%g-szO*Pa{$xqHsEz%FDEXl~v(@)CJOE1nW sNsUj*O3X{o*Dub@$w_qd4Tw+9&nrnxE{P8_(szo_P0Y;GpI9ab02$vNzyJUM delta 70 zcmZ3%IE9frl$V!_0SLZ2bWh~A(YJKAiU}=FEh>(24sdkx_j8YNNiEJU$uEcr&dkY4 Xbo32~F9k}+IK}5CX6D6A?2-cj&Vm-c diff --git a/B_main/__pycache__/admin.cpython-38.pyc b/B_main/__pycache__/admin.cpython-38.pyc index ff21fd54a343e78652cea5d81493a4b17738038a..dd743e54d46bbfa00990a07b7c0fe5c3c2fa58e8 100644 GIT binary patch delta 66 zcmbO#yI6LE0h6gqlvPYhesXqdQA|K(Nk)ENOj3ScdU0k+YJ5soVqSWFOmSvTPNJi4 VKzwq3UP)qdNqm^m=5QuE9soLS7<2#t delta 52 zcmZ21J5_dr0h79!vsFxJacWU-DSQ0b< diff --git a/B_main/__pycache__/models.cpython-38.pyc b/B_main/__pycache__/models.cpython-38.pyc index 102cc08d7d278a8767beb1e43fce56a267a89ca3..dbd10fe534cdc14b79f81184de37abfb20b75dfc 100644 GIT binary patch delta 66 zcmew;_+M~C2BWEKlvPYhesXqdQA|K(Nk)ENOj3ScdU0k+YJ5soVqSWFOmSvTPNJi4 VKzwq3UP)qdNqm^m=6=Q`b^vjl8KM9H delta 52 zcmew__)%~}2BW&UvsFxJacWUP#tkz|O+BNmVp8&xvr~&=0xC-~^7CSn^7GP*GfPtAQ?e5C((_}AGjnnh Y9eo4hlk@XR5|c~f!;Cf`C{17l0Ok-J0ssI2 delta 54 zcmZ4Yj&Z>|#tkz|)vcYaVnT~ki;82M100?F{oG?*Qj4=o@(W^uGjnnh9eo4hOM%jx J&y^-H0svT{6=(ne diff --git a/B_main/__pycache__/urls.cpython-38.pyc b/B_main/__pycache__/urls.cpython-38.pyc index e579fc2f4fc02811d772b7a15bbe6713ffe19c77..20793bb94e5ad0f60d35e7259070098552685719 100644 GIT binary patch delta 65 zcmey%*3G^_gxS`${5uN}5 diff --git a/B_main/__pycache__/views.cpython-313.pyc b/B_main/__pycache__/views.cpython-313.pyc index 5b9333251a49b7e1e4a8cdd1c55765d8cd651703..153cebfc8bdab2e0a48e6a50afd143fc3d010611 100644 GIT binary patch delta 21 bcmdnf%($nSk?S)rFBbz4SlrpjwaF0xNr47r delta 21 bcmdnf%($nSk?S)rFBbz4{JFi6Ym*}YP80_x diff --git a/B_main/__pycache__/views.cpython-38.pyc b/B_main/__pycache__/views.cpython-38.pyc index b674b0157522d857163b87531bbce38297a39d12..8c28a99580898b3cd9b5303b9689900950560395 100644 GIT binary patch delta 78 zcmccN{>+^#l$V!_0SGMaY~(t~V(JoQ6_b*moSj+}6Hr-_k)Icnl%JPgoLQ0@pOTfB gm!2O}oSBo8=;#{|pPZjpl9*f)A7-@q6U#F>03oX!+5i9m delta 63 zcmaFne#4zBl$V!_0SNxw-pF;3McvHVDkiizwWv78Il$4$-_Je9CAB!aB)=dgI5Q_F Q(a|>`z7#0EiS?Nr0Gp*20{{R3 diff --git a/B_main/migrations/__pycache__/__init__.cpython-38.pyc b/B_main/migrations/__pycache__/__init__.cpython-38.pyc index e53da87192f00a8c56317e0240fba9bb6a1d50f8..52822069d542a250bc09200fde1542e021a9d61a 100644 GIT binary patch delta 76 zcmbQwxR#MSl$V!_0SMA>^iAZpF%62cib=^&&Q2|g38*Z|$j^&O%FjzL&MZldPsvKm eOV5uf&dkY4bo32~PtMOPNlY$@4>OvWX9xhK;~IYe delta 62 zcmZ3>IG>R_l$V!_0SLZ2bWh~AQFn2+iU}=FEh>(24sdkx_j8YNNiEJU$uEcr&dkY4 Pbo32~F9k|ZtT6-tD2Ef+ diff --git a/C_accounts/__pycache__/__init__.cpython-313.pyc b/C_accounts/__pycache__/__init__.cpython-313.pyc index 39244e813864c11de07bfc9fcf1f52d8e5edb405..e23d5eb2ca017b8a6011514939071bbe67e6c15d 100644 GIT binary patch delta 76 zcmbQoxQ3DYGcPX}0}y21=$puGZ0a3l6_b*moSj+}6Hr-_k)Icnl%JPgoLQ0@pOTfB em!2O}oSBo8=;#{|pPZjpl9*f)A7(T$)e->B0UHbe delta 62 zcmZ3(IFFJ0GcPX}0}w2B@1DqQtZwUU6%$&VT2vh49N_5W@8=%ll3JWyl3x%LoSBo8 P=;#{|Uka3-SZoOZIvo@k diff --git a/C_accounts/__pycache__/__init__.cpython-38.pyc b/C_accounts/__pycache__/__init__.cpython-38.pyc index fb84964eb7db84f969f80c5d3676acdaed02ab77..3d966f1676c475eaca46f395f43d757127a0cf47 100644 GIT binary patch delta 94 zcmbQixQ3BCl$V!_0SGd0^iAZpaSzll%g-szO*Pa{$xqHsEz%FDEXl~v(@)CJOE1nW wNsUj*O3X{o*Dub@$w_qd4Tw+9&nrnxE{P8_(szzeOis=(%_}L^pI9Xa0HDYqlK=n! delta 74 zcmZ3(ID?Tpl$V!_0SFemcTeQDF}8KKiU}=FEh>(24sdkx_j8YNNiEJU$uEcr&dkY4 bbo32~F9k}+IL9X@C+C;ul@!NJ?2`ikAXOMc diff --git a/C_accounts/__pycache__/admin.cpython-38.pyc b/C_accounts/__pycache__/admin.cpython-38.pyc index 0c2e6b110598b72c0ab43801b5cee842bf718941..0a523b44aa770a1334e24355f070f00abc47595e 100644 GIT binary patch delta 63 zcmX@ec%E@Wv8hLtRZL2La&~G_Oh9ExMt)vQQhr`~ab`(sd`ebgUV45^ab`|VqN8s> Sd~$wXNn&zIe3;S1S?T~6wivYl delta 49 zcmX@lc#v^IvAUJBRZM7cYEf~FbAY3hzn^=IOKNd;Nq#|0aArd?`?R;tF*D DxDpZ@ diff --git a/C_accounts/__pycache__/apps.cpython-38.pyc b/C_accounts/__pycache__/apps.cpython-38.pyc index 36cc13a3eb2bb3524b3dd77815639709ee74e26d..94309494e3bccce891e69d42ab6b6ec1ca04b0dd 100644 GIT binary patch delta 65 zcmcb>a*t($Iisn2lvPYhesXqdQA|K(Nk)ENOj3ScdU0k+YJ5soVqSWFOmSvTPNJi4 UKzwq3UP)qdNqm^m1UE2BW%_vsFxJacWUq7^DCI delta 52 zcmaFOahGF*38T8bvsFxJacWU Sd~$wXNn&zIe3;S1X&L|(ix{Z@ delta 49 zcmX@ZxQ}r{zPh!uRZM7cYEf~FbAY3hzn^=IOKNd;Nq#|0aArd?`?R;t~x2 Dwq+6z diff --git a/C_accounts/__pycache__/signals.cpython-38.pyc b/C_accounts/__pycache__/signals.cpython-38.pyc index c321f9ecfdf89ff5803f1a43d358806c5c73c1b6..ee11afa70d31e15f9ebc00ab32e123f14a89001a 100644 GIT binary patch delta 66 zcmX@beuI5OH-Cx1Wp7?;%I?2`O~nBdHuoJ2?8fcR3N^kg+A FGXU-J5^4Yd diff --git a/C_accounts/__pycache__/views.cpython-38.pyc b/C_accounts/__pycache__/views.cpython-38.pyc index 0e9b0fb43dfc2b0a2d21f3918373d21d8ac9136c..2fd20c616a133db12e9501cd92e33d7752117265 100644 GIT binary patch delta 66 zcmdm}yI*(1Yi3iAD65#1{N(J^qL_fnl8pSkn56u?^y18t)cBOF#Ju$UnBvTwoJ2?8 VfcWJ6ypqJ^lK3#A%|a~mg#dmN8L$8V delta 52 zcmdn5yHR(;Yi4yTXRDad;?$zz80P>-Cx1Wp7?;%I?2`O~nBdHuoJ2?8fcR3N^kxN? G`9c5%z!Me# diff --git a/C_accounts/migrations/__pycache__/__init__.cpython-38.pyc b/C_accounts/migrations/__pycache__/__init__.cpython-38.pyc index 29e6a1212994c35309b6fcc014581d30b61c0472..bc49dbf7080c66d03502d14be3c9a03430f89604 100644 GIT binary patch delta 76 zcmZ3?xRH@Nl$V!_0SK~g^iAZpF%65dib=^&&Q2|g38*Z|$j^&O%FjzL&MZldPsvKm eOV5uf&dkY4bo32~PtMOPNlY$@4>OvWX9@tQ+!~Sq delta 62 zcmdnUxR{YUl$V!_0SK13cTeQDQTK4RiU}=FEh>(24sdkx_j8YNNiEJU$uEcr&dkY4 Pbo32~F9k|ZtT6=u9O@IE diff --git a/C_accounts/templatetags/__pycache__/__init__.cpython-38.pyc b/C_accounts/templatetags/__pycache__/__init__.cpython-38.pyc index c5be934e956b354d9d07b8869d43e31e61588d72..acd89fbd154fcce6edc72a4ad94cec6410af8763 100644 GIT binary patch delta 107 zcmZ3=xRa4Pl$V!_0SK~h^iAZp35nA$%g-szO*Pa{$xqHsEz%FDEXl~v(@)CJOE1nW zNsUj*O3X{o*Dub@$w_qd4Tw+9&nrnxE{P8_(szzeOis=(%_}L^FG?oN_>`=~y!8B-;>?_!L`UC% T_~iV&lEmba_%Nf%+>BEJK1dke delta 50 zcmZ3-ynuPa6LmjltC-N@)S}`T=Kx11e?Rvam(=3ylKg_0;LMzyL`UC%_)?(sWJ$)U E0MsZFL;wH) diff --git a/db.sqlite3 b/db.sqlite3 index 16377e387298b0a432d8435dbe76e6601dac4d46..169d31088ad03219d643ff09560d991b9aec14ad 100644 GIT binary patch delta 3281 zcmai$>#O8;8OP7rJ+|0SmDM-bf>DhLBk$n-!@Oy^IxF-hKHO^9v{KdzWASYxSvvgTv{;YcJI= z-MI3#OPA_jz7wpTy>n&#K?TEW5Oxa%NgPM-1nU>>yy#zk>NWDP`q}F5pNtTa%?TvqYczEUY_dh(m|Ne&; zZo-c}QD%dGy#ijmUjdK)_1)*nkCzXR51#np@gJ(qFa7p0;0U?!){}QH-#9$J6F&9N z-RgQOr~-_Lm6l&}A^_E|-^io3gu{1`MY;FAPEDXNxVl@swdB6gm-W zP5H4;wFOt_ZI)?n6*UH%ra>|?(q$sC17T`ozRkKD%n+qvHxZm|GSEjl&@%W9I>nqg znRfe8Cn2WNU?ds?3)>PLXo^0&3Oud$lyk+jodW86x~Zi9v9 z8I`G=%Zi@vCmTl&S|hE^*jfENZdZV_ynPz^{USVi?eX31lWQdzp#G?=pOcCEX;B}J z49bN9+J#8U$(NX6@_|3Eo3Pm3wrw*Efn?qW+YsU-+honLUL&zoSmu}NG|Dipe8ui0 zH|l6iyF1F#H%McirW3i_nl2!RYIW*8E?l@uv$qzlzD>31?m%r!Q*4v5gC#7@hcQpK z`)Z5qk*sDCYpai_vdJ$8{=n%bX_vB%)wbv5xW2be3X-C8G-#IMHnQ79$oOxfl-?zdZT4mM2LT{!I`ciaBP$z{lGY~~<~Zo>)G z$Y=OGoenjxo$c9pP^}O8L^xSDRCn1~=%k@pJ&BAW)bU+&4S3sO%jA5AGU_b4XY*{? zmCxBc4ck0EnhNpcUwX ztBv$lfI&2s(RpKzY9tg{n`8`gVwvbx=5va%N&%zWnMclww(YsRaa?-a=XMiGOqz|+ zBv}aojdr&ao|ao{i>Jx8vTzrpJalJ@Jzh*>cHw7wLX4T|I$}{HQDX~Ga2=EfMr=;a zGhRbR;y>xvlZj*+Z)>48sM2kHpXR117ra@Aw@ElNl^jr)l%siN3-o9RZf1k}ejvdCx2$Och7k2P*;hl#lgTxP-Lup2aN zjo!G_Y`6eO)8OV4$`p$7d748fGv#!T1@UV=B;G(MpzEVh9S-g0xFrK_o!^D(TmoU(nw**(;s%CI>b z?@UaZiUv;kD(EG6f|bLUmOD&T$Vu1)KnS46b}$Nxse=PnlJW&l$$&tnDdzHtKIsjI znyBbyLPL}d)CJH`hkYvHkx^5dTLjPyL6_?$4VdV+23ul;uSA4Kb=S*T0)^_E9WqIr zm?{?Q#E~aGd^C@FaX#y-b2%d-CvOa!h5>arGaas4lL;LTtY#SlHS4Kvh;>3HirabQ z7b9Ua?6rDa+99SBA?=QJXr;v4U;@{-6lKTJpy(HH87NF?M*G&5(6xX037d`TfWc9Q33HwhLKvTb=W}P@+R)m=i^}ce8+#@XuW4VjrJXZ@_DrlE z+jZgRxv^s4f&I0*uC@M{o)lxdo_& zkuv1LvkqoUf+}!}0v3Bhy$*ZAsKLXGJ77$YSm0>632b6UAwdT#XKOPT^$xf6$X#pR zf)%~U*T_mXQ@M1dyzQ`=X{_dgOBK^{(6Dd|jtO3D1M3ioQj$I!IGc=Vx$&kDjRwst zA~0rjL0k++i3B)pG~yCC5jlp{R-K?50S!NvB*xn?vJ{5U5^TyM6wH;r#3M4QE|jsd zhZ4v&)*6xy&9*bgu#>_J>eLFB@UbFH@(#z%jI~9ILX6gpb?0FwpWY7NdHX2%A0L7X AmjD0& delta 1582 zcmY+DZ%i9y9LMjj$J#Qk$0)FMV{5z7lu6p$^?xxq+j6uFuDsh;FwC&S6+S5|UgA`*hk!+M^#FNI2ZyTxTktbC1WH zhdiV{PE0v07Uyullo%U|WbB!#l*wz>`7XzYa?uIrrKHbCIfpat8bYI25hfL(l@Z!D zQqxA5)dnqL)*14(QT4qzDigr?4oHR^n>9;MaLp<3vr}A+KZNQqD}-6G0Cp4G5#18~ zB%<(hco8dz{=pq08TJGI79JIaMW1exvPKMT=JmqtXS1km-hZd)zXPvYd3D(LEdO^{ z!M;zR#OCv|G{&CTg=-hKcj4mpE~3y>2|?J!g&KlatRc|9E}RzZKms@i@%^G7F@korhB5y^$!q{`tByyOU)r;P(? zSI81gn(Tf4-drTC^`(N@;ZUcstKUb2B4b3<fmBXWBFph_n4|&1TT94CbnOQL;mC7Ybnnz&}B$NV=fE_KMH`v_` zRM<#MnOq$tl>_1$2WTpwYSyUb4M-o~-THN7uC)3ZEn%|zq>qwRRLl3!SI!(lDrN>i zgFxq|K-OL!+apHuvO{K+$$(OBxmHP&oXqcZystQMb|wudvRqw!K?1=-g%X0;uj`T9 z>fheIS$c2jzgnevx^&|WS!sQx#C}Y-GSeVl0bWW{tq1Y1HXzF!v5`puv860NT8U>{ z8j;%^=s1%EqVnQm6-K~r-A7;MK>P z_R1EjU|at{g$?w1CJtO?;2Jq>e)j}&i?dt_6WgC|q+()S66E^n%5sy;BtW!ssS>MH zVjoG6Ax>=*69tXh%L_Pm2=$yqRybJ%69J-D0L@Ygc>f}IP9pDcMl&-LKvZUEMMWfF z3(xXaIC1q%7?@O`l7|C1zCg2_I5`snkR7PH4o7>`ge-7GO-v9lM!P;IhQ|K|g&gE! diff --git a/run b/run new file mode 100644 index 0000000..6633c13 --- /dev/null +++ b/run @@ -0,0 +1,9 @@ +rm -rf /volume1/docker/Python/bongsite_django/sillaAMP_contact_V2/staticfiles +python /volume1/docker/Python/bongsite_django/sillaAMP_contact_V2/manage.py collectstatic +gunicorn A_core.wsgi:application --chdir /volume1/docker/Python/bongsite_django/sillaAMP_contact_V2 --bind=192.168.1.119:4271 --daemon + + + + +ssh qhdtn6412@kmobsk.synology.me -p 6422 +ps aux |grep 192.168.1.119:4271 \ No newline at end of file diff --git a/staticfiles/admin/css/autocomplete.css b/staticfiles/admin/css/autocomplete.css index 69c94e7..7478c2c 100644 --- a/staticfiles/admin/css/autocomplete.css +++ b/staticfiles/admin/css/autocomplete.css @@ -273,3 +273,7 @@ select.admin-autocomplete { display: block; padding: 6px; } + +.errors .select2-selection { + border: 1px solid var(--error-fg); +} diff --git a/staticfiles/admin/css/base.css b/staticfiles/admin/css/base.css index 93db7d0..3791043 100644 --- a/staticfiles/admin/css/base.css +++ b/staticfiles/admin/css/base.css @@ -13,6 +13,7 @@ html[data-theme="light"], --body-fg: #333; --body-bg: #fff; --body-quiet-color: #666; + --body-medium-color: #444; --body-loud-color: #000; --header-color: #ffc; @@ -22,11 +23,11 @@ html[data-theme="light"], --breadcrumbs-fg: #c4dce8; --breadcrumbs-link-fg: var(--body-bg); - --breadcrumbs-bg: var(--primary); + --breadcrumbs-bg: #264b5d; --link-fg: #417893; --link-hover-color: #036; - --link-selected-fg: #5b80b2; + --link-selected-fg: var(--secondary); --hairline-color: #e8e8e8; --border-color: #ccc; @@ -42,10 +43,10 @@ html[data-theme="light"], --selected-row: #ffc; --button-fg: #fff; - --button-bg: var(--primary); - --button-hover-bg: #609ab6; - --default-button-bg: var(--secondary); - --default-button-hover-bg: #205067; + --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; @@ -56,8 +57,6 @@ html[data-theme="light"], --object-tools-hover-bg: var(--close-button-hover-bg); --font-family-primary: - -apple-system, - BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, @@ -86,6 +85,8 @@ html[data-theme="light"], "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + + color-scheme: light; } html, body { @@ -149,7 +150,6 @@ h1 { margin: 0 0 20px; font-weight: 300; font-size: 1.25rem; - color: var(--body-quiet-color); } h2 { @@ -165,7 +165,7 @@ h2.subhead { h3 { font-size: 0.875rem; margin: .8em 0 .3em 0; - color: var(--body-quiet-color); + color: var(--body-medium-color); font-weight: bold; } @@ -173,6 +173,7 @@ h4 { font-size: 0.75rem; margin: 1em 0 .8em 0; padding-bottom: 3px; + color: var(--body-medium-color); } h5 { @@ -219,6 +220,10 @@ fieldset { border-top: 1px solid var(--hairline-color); } +details summary { + cursor: pointer; +} + blockquote { font-size: 0.6875rem; color: #777; @@ -315,7 +320,7 @@ td, th { } th { - font-weight: 600; + font-weight: 500; text-align: left; } @@ -336,7 +341,7 @@ tfoot td { } thead th.required { - color: var(--body-loud-color); + font-weight: bold; } tr.alt { @@ -484,8 +489,13 @@ textarea { vertical-align: top; } -input[type=text], input[type=password], input[type=email], input[type=url], -input[type=number], input[type=tel], textarea, select, .vTextField { +/* +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; @@ -494,9 +504,13 @@ input[type=number], input[type=tel], textarea, select, .vTextField { background-color: var(--body-bg); } -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 { +/* +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); } @@ -586,7 +600,7 @@ input[type=button][disabled].default { font-weight: 400; font-size: 0.8125rem; text-align: left; - background: var(--primary); + background: var(--header-bg); color: var(--header-link-color); } @@ -722,6 +736,11 @@ div.breadcrumbs a:focus, div.breadcrumbs a:hover { 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; @@ -831,10 +850,6 @@ a.deletelink:focus, a.deletelink:hover { height: 100%; } -#container > div { - flex-shrink: 0; -} - #container > .main { display: flex; flex: 1 0 auto; @@ -879,9 +894,10 @@ a.deletelink:focus, a.deletelink:hover { margin-right: -300px; } -#footer { - clear: both; - padding: 10px; +@media (forced-colors: active) { + #content-related { + border: 1px solid; + } } /* COLUMN TYPES */ @@ -919,7 +935,6 @@ a.deletelink:focus, a.deletelink:hover { padding: 10px 40px; background: var(--header-bg); color: var(--header-color); - overflow: hidden; } #header a:link, #header a:visited, #logout-form button { @@ -930,11 +945,17 @@ a.deletelink:focus, a.deletelink:hover { text-decoration: underline; } +@media (forced-colors: active) { + #header { + border-bottom: 1px solid; + } +} + #branding { display: flex; } -#branding h1 { +#site-name { padding: 0; margin: 0; margin-inline-end: 20px; @@ -943,7 +964,7 @@ a.deletelink:focus, a.deletelink:hover { color: var(--header-branding-color); } -#branding h1 a:link, #branding h1 a:visited { +#site-name a:link, #site-name a:visited { color: var(--accent); } @@ -1100,6 +1121,7 @@ a.deletelink:focus, a.deletelink:hover { margin: 0; border-top: 1px solid var(--hairline-color); width: 100%; + box-sizing: border-box; } .paginator a:link, .paginator a:visited { @@ -1143,3 +1165,16 @@ a.deletelink:focus, a.deletelink:hover { .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/changelists.css b/staticfiles/admin/css/changelists.css index a754513..005b776 100644 --- a/staticfiles/admin/css/changelists.css +++ b/staticfiles/admin/css/changelists.css @@ -139,6 +139,12 @@ margin: 0 0 0 30px; } +@media (forced-colors: active) { + #changelist-filter { + border: 1px solid; + } +} + #changelist-filter h2 { font-size: 0.875rem; text-transform: uppercase; @@ -215,9 +221,9 @@ color: var(--link-hover-color); } -#changelist-filter #changelist-filter-clear a { +#changelist-filter #changelist-filter-extra-actions { font-size: 0.8125rem; - padding-bottom: 10px; + margin-bottom: 10px; border-bottom: 1px solid var(--hairline-color); } @@ -265,6 +271,15 @@ 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); diff --git a/staticfiles/admin/css/dark_mode.css b/staticfiles/admin/css/dark_mode.css index 6d08233..65b58d0 100644 --- a/staticfiles/admin/css/dark_mode.css +++ b/staticfiles/admin/css/dark_mode.css @@ -5,7 +5,8 @@ --body-fg: #eeeeee; --body-bg: #121212; - --body-quiet-color: #e0e0e0; + --body-quiet-color: #d0d0d0; + --body-medium-color: #e0e0e0; --body-loud-color: #ffffff; --breadcrumbs-link-fg: #e0e0e0; @@ -29,6 +30,8 @@ --close-button-bg: #333333; --close-button-hover-bg: #666666; + + color-scheme: dark; } } @@ -39,7 +42,8 @@ html[data-theme="dark"] { --body-fg: #eeeeee; --body-bg: #121212; - --body-quiet-color: #e0e0e0; + --body-quiet-color: #d0d0d0; + --body-medium-color: #e0e0e0; --body-loud-color: #ffffff; --breadcrumbs-link-fg: #e0e0e0; @@ -63,6 +67,8 @@ html[data-theme="dark"] { --close-button-bg: #333333; --close-button-hover-bg: #666666; + + color-scheme: dark; } /* THEME SWITCH */ @@ -78,8 +84,8 @@ html[data-theme="dark"] { .theme-toggle svg { vertical-align: middle; - height: 1rem; - width: 1rem; + height: 1.5rem; + width: 1.5rem; display: none; } @@ -122,16 +128,3 @@ html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark { html[data-theme="light"] .theme-toggle svg.theme-icon-when-light { display: block; } - -.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/forms.css b/staticfiles/admin/css/forms.css index 9a8dad0..c6ce788 100644 --- a/staticfiles/admin/css/forms.css +++ b/staticfiles/admin/css/forms.css @@ -44,7 +44,6 @@ label { .required label, label.required { font-weight: bold; - color: var(--body-fg); } /* RADIO BUTTONS */ @@ -76,6 +75,20 @@ form ul.inline li { 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 { @@ -84,14 +97,12 @@ form ul.inline li { min-width: 160px; width: 160px; word-wrap: break-word; - line-height: 1; } .aligned label:not(.vCheckboxLabel):after { content: ''; display: inline-block; vertical-align: middle; - height: 1.625rem; } .aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly { @@ -158,6 +169,10 @@ form .aligned select + div.help { padding-left: 10px; } +form .aligned select option:checked { + background-color: var(--selected-row); +} + form .aligned ul li { list-style: none; } @@ -168,11 +183,7 @@ form .aligned table p { } .aligned .vCheckboxLabel { - float: none; - width: auto; - display: inline-block; - vertical-align: -3px; - padding: 0 0 5px 5px; + padding: 1px 0 0 5px; } .aligned .vCheckboxLabel + p.help, @@ -194,14 +205,8 @@ fieldset .fieldBox { width: 200px; } -form .wide p, -form .wide ul.errorlist, -form .wide input + p.help, -form .wide input + div.help { - margin-left: 200px; -} - form .wide p.help, +form .wide ul.errorlist, form .wide div.help { padding-left: 50px; } @@ -215,35 +220,16 @@ form div.help ul { width: 450px; } -/* COLLAPSED FIELDSETS */ +/* COLLAPSIBLE FIELDSETS */ -fieldset.collapsed * { - display: none; -} - -fieldset.collapsed h2, fieldset.collapsed { - display: block; -} - -fieldset.collapsed { - border: 1px solid var(--hairline-color); - border-radius: 4px; - overflow: hidden; -} - -fieldset.collapsed h2 { - background: var(--darkened-bg); - color: var(--body-quiet-color); -} - -fieldset .collapse-toggle { - color: var(--header-link-color); -} - -fieldset.collapsed .collapse-toggle { +.collapse summary .fieldset-heading, +.collapse summary .inline-heading { background: transparent; + border: none; + color: currentColor; display: inline; - color: var(--link-fg); + margin: 0; + padding: 0; } /* MONOSPACE TEXTAREAS */ @@ -395,14 +381,16 @@ body.popup .submit-row { position: relative; } -.inline-related h3 { +.inline-related h4, +.inline-related:not(.tabular) .collapse summary { margin: 0; - color: var(--body-quiet-color); + color: var(--body-medium-color); padding: 5px; font-size: 0.8125rem; background: var(--darkened-bg); - border-top: 1px solid var(--hairline-color); - border-bottom: 1px solid var(--hairline-color); + border: 1px solid var(--hairline-color); + border-left-color: var(--darkened-bg); + border-right-color: var(--darkened-bg); } .inline-related h3 span.delete { @@ -421,16 +409,6 @@ body.popup .submit-row { width: 100%; } -.inline-related fieldset.module h3 { - margin: 0; - padding: 2px 5px 3px 5px; - font-size: 0.6875rem; - text-align: left; - font-weight: bold; - background: #bcd; - color: var(--body-bg); -} - .inline-group .tabular fieldset.module { border: none; } @@ -471,17 +449,6 @@ body.popup .submit-row { _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); @@ -495,11 +462,8 @@ body.popup .submit-row { 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; } diff --git a/staticfiles/admin/css/login.css b/staticfiles/admin/css/login.css index 389772f..805a34b 100644 --- a/staticfiles/admin/css/login.css +++ b/staticfiles/admin/css/login.css @@ -21,7 +21,7 @@ } .login #content { - padding: 20px 20px 0; + padding: 20px; } .login #container { diff --git a/staticfiles/admin/css/nav_sidebar.css b/staticfiles/admin/css/nav_sidebar.css index f76e6ce..7eb0de9 100644 --- a/staticfiles/admin/css/nav_sidebar.css +++ b/staticfiles/admin/css/nav_sidebar.css @@ -102,6 +102,12 @@ background: var(--selected-row); } +@media (forced-colors: active) { + #nav-sidebar .current-model { + background-color: SelectedItem; + } +} + .main > #nav-sidebar + .content { max-width: calc(100% - 23px); } diff --git a/staticfiles/admin/css/responsive.css b/staticfiles/admin/css/responsive.css index 1d0a188..f0fcade 100644 --- a/staticfiles/admin/css/responsive.css +++ b/staticfiles/admin/css/responsive.css @@ -43,7 +43,7 @@ input[type="submit"], button { justify-content: flex-start; } - #branding h1 { + #site-name { margin: 0 0 8px; line-height: 1.2; } @@ -171,9 +171,14 @@ input[type="submit"], button { /* Forms */ label { - font-size: 0.875rem; + 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], @@ -187,7 +192,7 @@ input[type="submit"], button { margin: 0; padding: 6px 8px; min-height: 2.25rem; - font-size: 0.875rem; + font-size: 1rem; } .form-row select { @@ -237,22 +242,6 @@ input[type="submit"], button { padding: 7px; } - /* Related widget */ - - .related-widget-wrapper { - float: none; - } - - .related-widget-wrapper-link + .selector { - max-width: calc(100% - 30px); - margin-right: 15px; - } - - select + .related-widget-wrapper-link, - .related-widget-wrapper-link + .related-widget-wrapper-link { - margin-left: 10px; - } - /* Selector */ .selector { @@ -265,12 +254,8 @@ input[type="submit"], button { align-items: center; } - .selector .selector-filter label { - margin: 0 8px 0 0; - } - .selector .selector-filter input { - width: auto; + width: 100%; min-height: 0; flex: 1 1; } @@ -288,30 +273,7 @@ input[type="submit"], button { margin-bottom: 5px; } - .selector ul.selector-chooser { - width: 26px; - height: 52px; - padding: 2px 0; - margin: auto 15px; - 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 { + .selector-chooseall, .selector-clearall { align-self: center; } @@ -333,10 +295,7 @@ input[type="submit"], button { } .stacked ul.selector-chooser { - width: 52px; - height: 26px; padding: 0 2px; - margin: 15px auto; transform: none; } @@ -344,42 +303,6 @@ input[type="submit"], button { 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; } @@ -432,7 +355,7 @@ input[type="submit"], button { padding: 15px 20px; } - .login #branding h1 { + .login #site-name { margin: 0; } @@ -464,14 +387,10 @@ input[type="submit"], button { @media (max-width: 767px) { /* Layout */ - #header, #content, #footer { + #header, #content { padding: 15px; } - #footer:empty { - padding: 0; - } - div.breadcrumbs { padding: 10px 15px; } @@ -582,10 +501,6 @@ input[type="submit"], button { padding-top: 15px; } - fieldset.collapsed .form-row { - display: none; - } - .aligned label { width: 100%; min-width: auto; @@ -670,6 +585,7 @@ input[type="submit"], button { .related-widget-wrapper .selector { order: 1; + flex: 1 0 auto; } .related-widget-wrapper > a { @@ -684,23 +600,14 @@ input[type="submit"], button { align-self: center; } - select + .related-widget-wrapper-link, - .related-widget-wrapper-link + .related-widget-wrapper-link { - margin-left: 15px; - } - /* Selector */ .selector { flex-direction: column; - } - - .selector > * { - float: none; + gap: 10px 0; } .selector-available, .selector-chosen { - margin-bottom: 0; flex: 1 1 auto; } @@ -709,12 +616,10 @@ input[type="submit"], button { } .selector ul.selector-chooser { - display: block; - float: none; - width: 52px; - height: 26px; + display: flex; + width: 60px; + height: 30px; padding: 0 2px; - margin: 15px auto 20px; transform: none; } @@ -726,16 +631,16 @@ input[type="submit"], button { background-position: 0 0; } - .active.selector-remove:focus, .active.selector-remove:hover { - background-position: 0 -20px; + :enabled.selector-remove:focus, :enabled.selector-remove:hover { + background-position: 0 -24px; } .selector-add { - background-position: 0 -40px; + background-position: 0 -48px; } - .active.selector-add:focus, .active.selector-add:hover { - background-position: 0 -60px; + :enabled.selector-add:focus, :enabled.selector-add:hover { + background-position: 0 -72px; } /* Inlines */ diff --git a/staticfiles/admin/css/responsive_rtl.css b/staticfiles/admin/css/responsive_rtl.css index 31dc8ff..5e8f5c5 100644 --- a/staticfiles/admin/css/responsive_rtl.css +++ b/staticfiles/admin/css/responsive_rtl.css @@ -28,23 +28,12 @@ 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"] .related-widget-wrapper-link + .selector { - margin-right: 0; - margin-left: 15px; - } - - [dir="rtl"] .selector .selector-filter label { - margin-right: 0; - margin-left: 8px; - } - [dir="rtl"] .object-tools li { float: right; } @@ -81,4 +70,20 @@ [dir="rtl"] .aligned .vCheckboxLabel { padding: 1px 5px 0 0; } + + [dir="rtl"] .selector-remove { + background-position: 0 0; + } + + [dir="rtl"] :enabled.selector-remove:focus, :enabled.selector-remove:hover { + background-position: 0 -24px; + } + + [dir="rtl"] .selector-add { + background-position: 0 -48px; + } + + [dir="rtl"] :enabled.selector-add:focus, :enabled.selector-add:hover { + background-position: 0 -72px; + } } diff --git a/staticfiles/admin/css/rtl.css b/staticfiles/admin/css/rtl.css index c349a93..a2556d0 100644 --- a/staticfiles/admin/css/rtl.css +++ b/staticfiles/admin/css/rtl.css @@ -13,7 +13,7 @@ th { margin-right: 1.5em; } -.viewlink, .addlink, .changelink { +.viewlink, .addlink, .changelink, .hidelink { padding-left: 0; padding-right: 16px; background-position: 100% 1px; @@ -151,6 +151,7 @@ form ul.inline li { form .aligned p.help, form .aligned div.help { + margin-left: 0; margin-right: 160px; padding-right: 10px; } @@ -164,19 +165,13 @@ form .aligned p.time div.help.timezonewarning { padding-right: 0; } -form .wide p.help, form .wide div.help { +form .wide p.help, +form .wide ul.errorlist, +form .wide div.help { padding-left: 0; padding-right: 50px; } -form .wide p, -form .wide ul.errorlist, -form .wide input + p.help, -form .wide input + div.help { - margin-right: 200px; - margin-left: 0px; -} - .submit-row { text-align: right; } @@ -202,12 +197,7 @@ fieldset .fieldBox { top: 0; left: auto; right: 10px; - background: url(../img/calendar-icons.svg) 0 -30px no-repeat; -} - -.calendarbox .calendarnav-previous:focus, -.calendarbox .calendarnav-previous:hover { - background-position: 0 -45px; + background: url(../img/calendar-icons.svg) 0 -15px no-repeat; } .calendarnav-next { @@ -217,11 +207,6 @@ fieldset .fieldBox { background: url(../img/calendar-icons.svg) 0 0 no-repeat; } -.calendarbox .calendarnav-next:focus, -.calendarbox .calendarnav-next:hover { - background-position: 0 -15px; -} - .calendar caption, .calendarbox h2 { text-align: center; } @@ -235,34 +220,36 @@ fieldset .fieldBox { } .selector-add { - background: url(../img/selector-icons.svg) 0 -64px no-repeat; + background: url(../img/selector-icons.svg) 0 -96px no-repeat; + background-size: 24px auto; } -.active.selector-add:focus, .active.selector-add:hover { - background-position: 0 -80px; +:enabled.selector-add:focus, :enabled.selector-add:hover { + background-position: 0 -120px; } .selector-remove { - background: url(../img/selector-icons.svg) 0 -96px no-repeat; + background: url(../img/selector-icons.svg) 0 -144px no-repeat; + background-size: 24px auto; } -.active.selector-remove:focus, .active.selector-remove:hover { - background-position: 0 -112px; +:enabled.selector-remove:focus, :enabled.selector-remove:hover { + background-position: 0 -168px; } -a.selector-chooseall { +.selector-chooseall { background: url(../img/selector-icons.svg) right -128px no-repeat; } -a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { +:enabled.selector-chooseall:focus, :enabled.selector-chooseall:hover { background-position: 100% -144px; } -a.selector-clearall { +.selector-clearall { background: url(../img/selector-icons.svg) 0 -160px no-repeat; } -a.active.selector-clearall:focus, a.active.selector-clearall:hover { +:enabled.selector-clearall:focus, :enabled.selector-clearall:hover { background-position: 0 -176px; } @@ -296,3 +283,11 @@ form .form-row p.datetime { 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/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/widgets.css b/staticfiles/admin/css/widgets.css index 1104e8b..538af2e 100644 --- a/staticfiles/admin/css/widgets.css +++ b/staticfiles/admin/css/widgets.css @@ -1,30 +1,33 @@ /* SELECTOR (FILTER INTERFACE) */ .selector { - width: 800px; - float: left; display: flex; + flex: 1; + gap: 0 10px; } .selector select { - width: 380px; height: 17.2em; flex: 1 0 auto; + overflow: scroll; + width: 100%; } .selector-available, .selector-chosen { - width: 380px; - text-align: center; - margin-bottom: 5px; display: flex; flex-direction: column; + flex: 1 1; } -.selector-available h2, .selector-chosen h2 { +.selector-available-title, .selector-chosen-title { border: 1px solid var(--border-color); border-radius: 4px 4px 0 0; } +.selector .helptext { + font-size: 0.6875rem; +} + .selector-chosen .list-footer-display { border: 1px solid var(--border-color); border-top: none; @@ -40,14 +43,25 @@ color: var(--breadcrumbs-fg); } -.selector-chosen h2 { - background: var(--primary); +.selector-chosen-title { + background: var(--secondary); color: var(--header-link-color); + padding: 8px; } -.selector .selector-available h2 { +.aligned .selector-chosen-title label { + color: var(--header-link-color); + width: 100%; +} + +.selector-available-title { background: var(--darkened-bg); color: var(--body-quiet-color); + padding: 8px; +} + +.aligned .selector-available-title label { + width: 100%; } .selector .selector-filter { @@ -58,6 +72,8 @@ font-size: 0.625rem; margin: 0; text-align: left; + display: flex; + gap: 8px; } .selector .selector-filter label, @@ -72,18 +88,16 @@ min-width: auto; } -.selector .selector-available input, -.selector .selector-chosen input { - width: 320px; - margin-left: 8px; +.selector-filter input { + flex-grow: 1; } .selector ul.selector-chooser { align-self: center; - width: 22px; + width: 30px; background-color: var(--selected-bg); border-radius: 10px; - margin: 0 5px; + margin: 0; padding: 0; transform: translateY(-17px); } @@ -110,82 +124,86 @@ } .selector-add, .selector-remove { - width: 16px; - height: 16px; + width: 24px; + height: 24px; display: block; text-indent: -3000px; overflow: hidden; cursor: default; opacity: 0.55; + border: none; } -.active.selector-add, .active.selector-remove { +:enabled.selector-add, :enabled.selector-remove { opacity: 1; } -.active.selector-add:hover, .active.selector-remove:hover { +:enabled.selector-add:hover, :enabled.selector-remove:hover { cursor: pointer; } .selector-add { - background: url(../img/selector-icons.svg) 0 -96px no-repeat; + background: url(../img/selector-icons.svg) 0 -144px no-repeat; + background-size: 24px auto; } -.active.selector-add:focus, .active.selector-add:hover { - background-position: 0 -112px; +:enabled.selector-add:focus, :enabled.selector-add:hover { + background-position: 0 -168px; } .selector-remove { - background: url(../img/selector-icons.svg) 0 -64px no-repeat; + background: url(../img/selector-icons.svg) 0 -96px no-repeat; + background-size: 24px auto; } -.active.selector-remove:focus, .active.selector-remove:hover { - background-position: 0 -80px; +:enabled.selector-remove:focus, :enabled.selector-remove:hover { + background-position: 0 -120px; } -a.selector-chooseall, a.selector-clearall { +.selector-chooseall, .selector-clearall { display: inline-block; height: 16px; text-align: left; - margin: 1px auto 3px; + margin: 0 auto; overflow: hidden; font-weight: bold; line-height: 16px; color: var(--body-quiet-color); text-decoration: none; opacity: 0.55; + border: none; } -a.active.selector-chooseall:focus, a.active.selector-clearall:focus, -a.active.selector-chooseall:hover, a.active.selector-clearall:hover { +:enabled.selector-chooseall:focus, :enabled.selector-clearall:focus, +:enabled.selector-chooseall:hover, :enabled.selector-clearall:hover { color: var(--link-fg); } -a.active.selector-chooseall, a.active.selector-clearall { +:enabled.selector-chooseall, :enabled.selector-clearall { opacity: 1; } -a.active.selector-chooseall:hover, a.active.selector-clearall:hover { +:enabled.selector-chooseall:hover, :enabled.selector-clearall:hover { cursor: pointer; } -a.selector-chooseall { +.selector-chooseall { padding: 0 18px 0 0; background: url(../img/selector-icons.svg) right -160px no-repeat; cursor: default; } -a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { +:enabled.selector-chooseall:focus, :enabled.selector-chooseall:hover { background-position: 100% -176px; } -a.selector-clearall { +.selector-clearall { padding: 0 0 0 18px; background: url(../img/selector-icons.svg) 0 -128px no-repeat; cursor: default; } -a.active.selector-clearall:focus, a.active.selector-clearall:hover { +:enabled.selector-clearall:focus, :enabled.selector-clearall:hover { background-position: 0 -144px; } @@ -215,8 +233,9 @@ a.active.selector-clearall:focus, a.active.selector-clearall:hover { } .stacked ul.selector-chooser { - height: 22px; - width: 50px; + display: flex; + height: 30px; + width: 64px; margin: 0 0 10px 40%; background-color: #eee; border-radius: 10px; @@ -233,32 +252,34 @@ a.active.selector-clearall:focus, a.active.selector-clearall:hover { } .stacked .selector-add { - background: url(../img/selector-icons.svg) 0 -32px no-repeat; + background: url(../img/selector-icons.svg) 0 -48px no-repeat; + background-size: 24px auto; cursor: default; } -.stacked .active.selector-add { - background-position: 0 -32px; +.stacked :enabled.selector-add { + background-position: 0 -48px; cursor: pointer; } -.stacked .active.selector-add:focus, .stacked .active.selector-add:hover { - background-position: 0 -48px; +.stacked :enabled.selector-add:focus, .stacked :enabled.selector-add:hover { + background-position: 0 -72px; cursor: pointer; } .stacked .selector-remove { background: url(../img/selector-icons.svg) 0 0 no-repeat; + background-size: 24px auto; cursor: default; } -.stacked .active.selector-remove { +.stacked :enabled.selector-remove { background-position: 0 0px; cursor: pointer; } -.stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { - background-position: 0 -16px; +.stacked :enabled.selector-remove:focus, .stacked :enabled.selector-remove:hover { + background-position: 0 -24px; cursor: pointer; } @@ -314,28 +335,30 @@ table p.datetime { position: relative; display: inline-block; vertical-align: middle; - height: 16px; - width: 16px; + height: 24px; + width: 24px; overflow: hidden; } .datetimeshortcuts .clock-icon { background: url(../img/icon-clock.svg) 0 0 no-repeat; + background-size: 24px auto; } .datetimeshortcuts a:focus .clock-icon, .datetimeshortcuts a:hover .clock-icon { - background-position: 0 -16px; + background-position: 0 -24px; } .datetimeshortcuts .date-icon { background: url(../img/icon-calendar.svg) 0 0 no-repeat; + background-size: 24px auto; top: -1px; } .datetimeshortcuts a:focus .date-icon, .datetimeshortcuts a:hover .date-icon { - background-position: 0 -16px; + background-position: 0 -24px; } .timezonewarning { @@ -447,7 +470,7 @@ span.clearable-file-input label { } .calendar td.selected a { - background: var(--primary); + background: var(--secondary); color: var(--button-fg); } @@ -515,36 +538,26 @@ span.clearable-file-input label { background: url(../img/calendar-icons.svg) 0 0 no-repeat; } -.calendarbox .calendarnav-previous:focus, -.calendarbox .calendarnav-previous:hover { - background-position: 0 -15px; -} - .calendarnav-next { right: 10px; - background: url(../img/calendar-icons.svg) 0 -30px no-repeat; -} - -.calendarbox .calendarnav-next:focus, -.calendarbox .calendarnav-next:hover { - background-position: 0 -45px; + background: url(../img/calendar-icons.svg) 0 -15px no-repeat; } .calendar-cancel { margin: 0; padding: 4px 0; font-size: 0.75rem; - background: #eee; + background: var(--close-button-bg); border-top: 1px solid var(--border-color); - color: var(--body-fg); + color: var(--button-fg); } .calendar-cancel:focus, .calendar-cancel:hover { - background: #ddd; + background: var(--close-button-hover-bg); } .calendar-cancel a { - color: black; + color: var(--button-fg); display: block; } @@ -564,9 +577,10 @@ ul.timelist, .timelist li { float: right; text-indent: -9999px; background: url(../img/inline-delete.svg) 0 0 no-repeat; - width: 16px; - height: 16px; + width: 1.5rem; + height: 1.5rem; border: 0px none; + margin-bottom: .25rem; } .inline-deletelink:focus, .inline-deletelink:hover { @@ -575,26 +589,21 @@ ul.timelist, .timelist li { /* RELATED WIDGET WRAPPER */ .related-widget-wrapper { - float: left; /* display properly in form rows with multiple fields */ - overflow: hidden; /* clear floated contents */ + display: flex; + gap: 0 10px; + flex-grow: 1; + flex-wrap: wrap; + margin-bottom: 5px; } .related-widget-wrapper-link { - opacity: 0.3; + opacity: .6; + filter: grayscale(1); } .related-widget-wrapper-link:link { - opacity: .8; -} - -.related-widget-wrapper-link:link:focus, -.related-widget-wrapper-link:link:hover { opacity: 1; -} - -select + .related-widget-wrapper-link, -.related-widget-wrapper-link + .related-widget-wrapper-link { - margin-left: 7px; + filter: grayscale(0); } /* GIS MAPS */ diff --git a/staticfiles/admin/img/README.txt b/staticfiles/admin/img/README.txt index 4eb2e49..bf81f35 100644 --- a/staticfiles/admin/img/README.txt +++ b/staticfiles/admin/img/README.txt @@ -1,4 +1,4 @@ -All icons are taken from Font Awesome (http://fontawesome.io/) project. +All icons are taken from Font Awesome (https://fontawesome.com/) project. The Font Awesome font is licensed under the SIL OFL 1.1: - https://scripts.sil.org/OFL diff --git a/staticfiles/admin/img/calendar-icons.svg b/staticfiles/admin/img/calendar-icons.svg index dbf21c3..04c0274 100644 --- a/staticfiles/admin/img/calendar-icons.svg +++ b/staticfiles/admin/img/calendar-icons.svg @@ -1,14 +1,63 @@ - - - - + + + + + + - - + + - - - - + + diff --git a/staticfiles/admin/img/icon-addlink.svg b/staticfiles/admin/img/icon-addlink.svg index e004fb1..8d5c6a3 100644 --- a/staticfiles/admin/img/icon-addlink.svg +++ b/staticfiles/admin/img/icon-addlink.svg @@ -1,3 +1,3 @@ - + diff --git a/staticfiles/admin/img/icon-changelink.svg b/staticfiles/admin/img/icon-changelink.svg index bbb137a..592b093 100644 --- a/staticfiles/admin/img/icon-changelink.svg +++ b/staticfiles/admin/img/icon-changelink.svg @@ -1,3 +1,3 @@ - + diff --git a/staticfiles/admin/img/icon-hidelink.svg b/staticfiles/admin/img/icon-hidelink.svg new file mode 100644 index 0000000..2a8b404 --- /dev/null +++ b/staticfiles/admin/img/icon-hidelink.svg @@ -0,0 +1,3 @@ + + + diff --git a/staticfiles/admin/img/inline-delete.svg b/staticfiles/admin/img/inline-delete.svg index 17d1ad6..8751150 100644 --- a/staticfiles/admin/img/inline-delete.svg +++ b/staticfiles/admin/img/inline-delete.svg @@ -1,3 +1,3 @@ - + diff --git a/staticfiles/admin/img/search.svg b/staticfiles/admin/img/search.svg deleted file mode 100644 index c8c69b2..0000000 --- a/staticfiles/admin/img/search.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -