From 0761716ef5e24b190f4aec97f69fac7d57508283 Mon Sep 17 00:00:00 2001 From: CPABONG Date: Sat, 23 Aug 2025 19:00:21 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=EB=93=B1=20=EC=B6=94=EA=B0=80=EC=9E=91=EC=97=85=20-=2020250825?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 18 + A_core/__pycache__/settings.cpython-313.pyc | Bin 3458 -> 4972 bytes A_core/__pycache__/settings.cpython-38.pyc | Bin 3425 -> 4794 bytes A_core/__pycache__/sms_utils.cpython-313.pyc | Bin 0 -> 5740 bytes A_core/__pycache__/sms_utils.cpython-38.pyc | Bin 0 -> 5138 bytes A_core/__pycache__/urls.cpython-38.pyc | Bin 1576 -> 1699 bytes A_core/__pycache__/views.cpython-38.pyc | Bin 0 -> 666 bytes A_core/__pycache__/wsgi.cpython-313.pyc | Bin 640 -> 654 bytes A_core/settings.py | 65 +++- A_core/sms_utils.py | 166 +++++++++ A_core/urls.py | 13 +- A_core/views.py | 10 + B_main/__pycache__/admin.cpython-313.pyc | Bin 4839 -> 4881 bytes B_main/__pycache__/admin.cpython-38.pyc | Bin 3753 -> 10237 bytes B_main/__pycache__/apps.cpython-313.pyc | Bin 517 -> 531 bytes B_main/__pycache__/apps.cpython-38.pyc | Bin 444 -> 586 bytes B_main/__pycache__/email_utils.cpython-38.pyc | Bin 0 -> 7138 bytes B_main/__pycache__/forms.cpython-313.pyc | Bin 12034 -> 12299 bytes B_main/__pycache__/forms.cpython-38.pyc | Bin 7970 -> 8154 bytes B_main/__pycache__/log_utils.cpython-38.pyc | Bin 0 -> 5490 bytes B_main/__pycache__/models.cpython-313.pyc | Bin 3090 -> 3483 bytes B_main/__pycache__/models.cpython-38.pyc | Bin 2309 -> 5896 bytes B_main/__pycache__/peopleinfo.cpython-313.pyc | Bin 38905 -> 38919 bytes B_main/__pycache__/signals.cpython-38.pyc | Bin 0 -> 826 bytes B_main/__pycache__/urls.cpython-313.pyc | Bin 1112 -> 1112 bytes B_main/__pycache__/urls.cpython-38.pyc | Bin 732 -> 780 bytes B_main/__pycache__/views.cpython-313.pyc | Bin 16828 -> 18726 bytes B_main/__pycache__/views.cpython-38.pyc | Bin 9493 -> 8405 bytes .../withdrawal_utils.cpython-38.pyc | Bin 0 -> 7152 bytes B_main/admin.py | 208 ++++++++++- B_main/apps.py | 3 + B_main/email_utils.py | 252 +++++++++++++ B_main/forms.py | 20 +- B_main/log_utils.py | 232 ++++++++++++ B_main/manual_populate.py | 6 +- B_main/migrations/0011_person_가입일시.py | 18 + .../migrations/0012_alter_person_가입일시.py | 18 + .../migrations/0013_add_database_indexes.py | 38 ++ B_main/migrations/0014_person_소개글.py | 18 + B_main/migrations/0015_accesslog.py | 37 ++ B_main/migrations/0016_withdrawalrequest.py | 37 ++ .../0017_alter_withdrawalrequest_user.py | 21 ++ .../__pycache__/0001_initial.cpython-313.pyc | Bin 1506 -> 1520 bytes .../0002_person_user.cpython-313.pyc | Bin 1171 -> 1185 bytes ...일지여부_alter_person_사진.cpython-313.pyc | Bin 1084 -> 1098 bytes ...가입상태_alter_person_사진.cpython-313.pyc | Bin 1239 -> 1253 bytes ...n_keyword2_person_keyword3.cpython-313.pyc | Bin 1432 -> 1446 bytes ...06_person_모든사람보기권한.cpython-313.pyc | Bin 1043 -> 1057 bytes ...7_remove_person_보일지여부.cpython-313.pyc | Bin 728 -> 742 bytes ...remove_person_회원가입상태.cpython-313.pyc | Bin 732 -> 746 bytes ...e_person_keyword3_and_more.cpython-313.pyc | Bin 1198 -> 1212 bytes ...ns_person_비밀번호설정필요.cpython-313.pyc | Bin 1225 -> 1239 bytes .../0011_person_가입일시.cpython-313.pyc | Bin 0 -> 953 bytes .../0011_person_가입일시.cpython-38.pyc | Bin 0 -> 745 bytes ...0012_alter_person_가입일시.cpython-313.pyc | Bin 0 -> 920 bytes .../0012_alter_person_가입일시.cpython-38.pyc | Bin 0 -> 713 bytes .../0013_add_database_indexes.cpython-38.pyc | Bin 0 -> 1348 bytes .../0014_person_소개글.cpython-38.pyc | Bin 0 -> 741 bytes .../__pycache__/0015_accesslog.cpython-38.pyc | Bin 0 -> 2230 bytes .../0016_withdrawalrequest.cpython-38.pyc | Bin 0 -> 1941 bytes ...lter_withdrawalrequest_user.cpython-38.pyc | Bin 0 -> 860 bytes B_main/models.py | 84 +++++ B_main/signals.py | 19 + B_main/templates/B_main/main.htm | 129 ++++++- B_main/templates/B_main/partials/card.htm | 48 +-- B_main/urls.py | 1 + B_main/views.py | 128 ++++--- B_main/withdrawal_utils.py | 277 ++++++++++++++ C_accounts/__pycache__/adapter.cpython-38.pyc | Bin 0 -> 888 bytes C_accounts/__pycache__/admin.cpython-313.pyc | Bin 202 -> 216 bytes C_accounts/__pycache__/apps.cpython-313.pyc | Bin 687 -> 701 bytes C_accounts/__pycache__/forms.cpython-313.pyc | Bin 11556 -> 11570 bytes C_accounts/__pycache__/forms.cpython-38.pyc | Bin 7323 -> 9053 bytes .../__pycache__/middleware.cpython-313.pyc | Bin 1640 -> 1654 bytes C_accounts/__pycache__/models.cpython-313.pyc | Bin 199 -> 213 bytes .../__pycache__/signals.cpython-313.pyc | Bin 1246 -> 1260 bytes C_accounts/__pycache__/urls.cpython-313.pyc | Bin 799 -> 813 bytes C_accounts/__pycache__/urls.cpython-38.pyc | Bin 610 -> 666 bytes C_accounts/__pycache__/views.cpython-313.pyc | Bin 11571 -> 13841 bytes C_accounts/__pycache__/views.cpython-38.pyc | Bin 5829 -> 8649 bytes C_accounts/forms.py | 127 +++++-- .../C_accounts/force_password_set.html | 2 +- .../C_accounts/password_change_logged_in.html | 2 +- .../templates/C_accounts/profile_edit.html | 345 +++++++++--------- .../C_accounts/withdrawal_request.html | 98 +++++ .../__pycache__/form_filters.cpython-313.pyc | Bin 554 -> 568 bytes C_accounts/urls.py | 1 + C_accounts/views.py | 190 +++++++++- db.sqlite3 | Bin 331776 -> 512000 bytes media/profile_photos/Bongsu_TwLuh2Z.jpg | Bin 0 -> 188323 bytes naver_cloud_sms_config.txt | 82 +++++ run | 6 +- staticfiles/account/js/account.js | 20 - staticfiles/account/js/onload.js | 12 - 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 + templates/404.html | 117 ++++++ templates/500.html | 116 ++++++ templates/account/login.html | 10 +- templates/privacy_policy.html | 131 +++++-- templates/privacy_policy_backup.html | 212 +++++++++++ 118 files changed, 3292 insertions(+), 792 deletions(-) create mode 100644 .env create mode 100644 A_core/__pycache__/sms_utils.cpython-313.pyc create mode 100644 A_core/__pycache__/sms_utils.cpython-38.pyc create mode 100644 A_core/__pycache__/views.cpython-38.pyc create mode 100644 A_core/sms_utils.py create mode 100644 A_core/views.py create mode 100644 B_main/__pycache__/email_utils.cpython-38.pyc create mode 100644 B_main/__pycache__/log_utils.cpython-38.pyc create mode 100644 B_main/__pycache__/signals.cpython-38.pyc create mode 100644 B_main/__pycache__/withdrawal_utils.cpython-38.pyc create mode 100644 B_main/email_utils.py create mode 100644 B_main/log_utils.py create mode 100644 B_main/migrations/0011_person_가입일시.py create mode 100644 B_main/migrations/0012_alter_person_가입일시.py create mode 100644 B_main/migrations/0013_add_database_indexes.py create mode 100644 B_main/migrations/0014_person_소개글.py create mode 100644 B_main/migrations/0015_accesslog.py create mode 100644 B_main/migrations/0016_withdrawalrequest.py create mode 100644 B_main/migrations/0017_alter_withdrawalrequest_user.py create mode 100644 B_main/migrations/__pycache__/0011_person_가입일시.cpython-313.pyc create mode 100644 B_main/migrations/__pycache__/0011_person_가입일시.cpython-38.pyc create mode 100644 B_main/migrations/__pycache__/0012_alter_person_가입일시.cpython-313.pyc create mode 100644 B_main/migrations/__pycache__/0012_alter_person_가입일시.cpython-38.pyc create mode 100644 B_main/migrations/__pycache__/0013_add_database_indexes.cpython-38.pyc create mode 100644 B_main/migrations/__pycache__/0014_person_소개글.cpython-38.pyc create mode 100644 B_main/migrations/__pycache__/0015_accesslog.cpython-38.pyc create mode 100644 B_main/migrations/__pycache__/0016_withdrawalrequest.cpython-38.pyc create mode 100644 B_main/migrations/__pycache__/0017_alter_withdrawalrequest_user.cpython-38.pyc create mode 100644 B_main/signals.py create mode 100644 B_main/withdrawal_utils.py create mode 100644 C_accounts/__pycache__/adapter.cpython-38.pyc create mode 100644 C_accounts/templates/C_accounts/withdrawal_request.html create mode 100644 media/profile_photos/Bongsu_TwLuh2Z.jpg create mode 100644 naver_cloud_sms_config.txt delete mode 100644 staticfiles/account/js/account.js delete mode 100644 staticfiles/account/js/onload.js delete mode 100644 staticfiles/admin/css/unusable_password_field.css delete mode 100644 staticfiles/admin/img/icon-hidelink.svg create mode 100644 staticfiles/admin/img/search.svg create mode 100644 templates/404.html create mode 100644 templates/500.html create mode 100644 templates/privacy_policy_backup.html diff --git a/.env b/.env new file mode 100644 index 0000000..bd96598 --- /dev/null +++ b/.env @@ -0,0 +1,18 @@ +# 네이버 클라우드 플랫폼 SMS 설정 +# 승인받은 발신번호로 설정 + +# Access Key ID +NAVER_CLOUD_ACCESS_KEY=ncp_iam_BPAMKR1m30ZhNpesC6mm + +# Secret Key +NAVER_CLOUD_SECRET_KEY=ncp_iam_BPKMKREe9zWcD1Z0Pp9B4OIZSWZmo51Sdu + +# SMS 서비스 ID +NAVER_CLOUD_SMS_SERVICE_ID=ncp:sms:kr:335843392196:silla_amp + +# 승인받은 발신번호 (여기에 실제 승인된 번호 입력) +NAVER_CLOUD_SMS_SENDER_PHONE=01033433319 + +# SMS 인증 설정 +SMS_VERIFICATION_TIMEOUT=180 +SMS_MAX_RETRY_COUNT=3 \ No newline at end of file diff --git a/A_core/__pycache__/settings.cpython-313.pyc b/A_core/__pycache__/settings.cpython-313.pyc index deef499a22ae3463eaf2acf4ec0830b7be100758..4eb94e9e8d3d26ac862d317e05eb3bfe503be2cf 100644 GIT binary patch delta 2158 zcmZ`)%}*Ow5P!Qi#$T8Z8^>Q@a0t{%ytYY50x7h_EZ_h(@z`l-khaF&VmHQ1-kKn| zn6{T5TUk{jE>!BNQq>DR^w>XPBP!M1s#4Wl8mR|J)O%+E^PwbbdER*DH@}%T^Y-~O z@4x*Yy=rMO6MRJf_k~^$AoodG#$z$kzl2CBOhX!`x*l+oS2a86DN(s-Mx{ zZK6#*WRVS!MZ*wt6q#!MYSvqAYw(?}sW;fDX|V}|P0$pw5YnK)GzMyhW@-r&Fy3RR z6;~6kEx4L-wSk4Uf)!fAENw%Z4Q=hvN;{wpx!OaPDj{J8nxO-o_Ipf(0SBiKGt>^9 z)B#SofH0Sq65JdcVQ43Kz>6pk_zq>)q3n(@VLf$%pI(3->cWED`1L?9^E%+ zE@~RGcR?TR#^0AhRn6sxe%b>Av=`o?0SHDJdJ)UHjJ5V5%_X=(`yogN7Imrl(=Ii% z0D-Fz8p0uH4-LK*#Xg@$2> zMzC);;3nLHVHkni91HJqdhA_vaS%s%eiNBvW~3a2u?A&hzVzA~LQW&zgOS%Ft}p9? z@9(ZMV~jHqWK>H@%I1ZPR@ezP`@M#ZoDo zU0LOF(#obwbI5P<*pEZb!5t0wIjj2^8XX?wqBm}FQ7#%C9=SevGrHM{uAr7VI(U8+uZ#P(E^=Tky# zHkp|a#$z!aK$zhdRL6$2Mg?RQWm$M6ZU_aDis#Y5$5MQ{dIm0wIVx68;hwYPFb4wg zsr&I5FT^K~6JU`~iaAjz=8qEiUXMsjV14t`$po)D4~vq;a$cmuYC$TCLZOOv6^(e) zZC*a^V@@hpXmN>?vGk%;mbs;D?h(ewM?=7)wzS!pP)<6T%?S$Ux+1P{vr=wOJZk-B z+giE!cufq+WoiB6QudKpyoxtu@gE%_)fXs8kX0>n;|~Nrkxs>VP;Ify?5r@E;_qen zL~J3br!CqLjI+tucsia;sLkp49G}djsdka7F0DB@hxlat$S)kbU;L!G?V4Mo$9|_4 zgjh0@NC$`1W&z(Ce@+n8=GAPaP%17_trnG)WYuu=K2d#b+ce{F#2_^(q*ED4^Akcc z6`zVHcAuMKOsErQuF(mzNwf)be0n-L0qThv;!}ytyf7K(XD6UGVYy#b4a=hTs!|{3 zqTQP4(L?}++5vcgaDP~1awg6T<5RrqZ`k+;^YIkg(!!lo@&h~z+OY#(^)vv0XHnp> z4-2?c>>Q+3Tf@gEus&WjbjHSG)7W8M5vLr~5??`4+qOImETW?Qamg9HY4>#u!yK?? zM*p9SFz!Ey=}*#KYq$1<4h)2`elh*!lV{ehUrG1Ajo4DmmU-VmOf6eYf4AkgT3)h7 z7poA*OIK~m+GVs_Z7c$OwUYG*##M8-+^Cv~)2)z>dUr%2UJUj0J+&&NQ+17@towQt z;;y^972>S-aSG|x5WXGvwp+P)TN#BtcUp6~y|0 zY;P#RDJ7oW^DimHw{Lh%oE|NGpkE>WdRIWhwU2Ju_Kl>;R=3}&JNoN(=U-lbz1x4# zq;r@LOvX0DzRqlBw+sg!;`2YHN35}5V9y`l^WIg6>vyO7X<#R~9aQ>;e~#{XM)#a! L&xoCVh)w+;z=k_# delta 645 zcmZuu&uTB%q_8EQ0=RHH^sJWYG5hZ3(Q zCg#P1|AO(xKj6tz4|pM5)q@vJuubnisJ%JK`)20*=6mlY^K1Ea>dvuc86bmxzJ1m32#{p6~ z=mGh+kad|gnGFiCNkP&*g+r1vBxjMyHidc`S(i)z56Pym)FNA0L5h}D4>?Q@M`-SV zVsdPLI!5ubQbCSVf?PS4pyUh}W|*p=r?Nw7o}&!M$mV%@;*{lt^yj92c4d`6eUOt> z;04(iXG)3|IZaEPpmUs|WzNzH=cGSRrpg7`6rY_hl?I2(DvG>X$93^kZ4U1H?;+~q zn-&vaw6qunBI0*QA6y9RqZkDn*d1i`O+;t#(#RkN#2d3|><7Kwy+?a59(!VB=6tQv zqByi%abn#XbnGf-Gu2wHz1`~WRJXg0wN`hdR_$)ITRWR;-A21EK8Np$kC6xIRk@4l zns#4FocIv&k7A&D;sPecN;H3CVuRhmzA@22xBLF@ktcoY$Z#E{Z%?j(8R`e5;;)R= z>l42(r3@i)WEi$04X*eQ{e%gz?p(X9f$d7lfOv8U&Ny2cLQ47y7l)7;r}INdj+5CT P#K%kJuTbEd@<)FGjoXQG diff --git a/A_core/__pycache__/settings.cpython-38.pyc b/A_core/__pycache__/settings.cpython-38.pyc index d0a8b7463670c31334f0a834c259253d8816821c..7c1b3c8067c410a54fbaf1602be76c37414e3ca2 100644 GIT binary patch delta 1904 zcma)6NpIUm6y{LWVoR1CZ*goVcJ?@l<;2<7MwTd>wIn*Cn0iPegd{h2<{Hy4A>pc+!5U2nI#0sg3R3t9#tN5r7cc~&({nSqcF7m(&@+$aR zSP!j-XczbMF7S^DF9_lTv>Spn3?b-(ZU{pJdP)HrfhhDs9~^*w7=Xc2koLe348uVf zfkQ9~V=xY_!*B#9V6qgUQ8-F_;TRk*iL?(+z)3g-r{N4t!C5#5=V2ORr7%4JGqfKr zVDO7$LW#gET!PDR1+K!il4KCLz9p3i9e^8j5N^UP#N8ef;Let45IO{R;Sc)6_((B$wyD3r&Cy))1cBb-1lkf^6Rwy=3}7~R?O9Wb;kx~; z_*OhI4eP~P$&6JEfC}F%T0Eu~^)inY>QHR(giCL0{%^?X3;%^o@rGVbS!T5Z{w45| z1bT5Cn+xrqq`~c%A&Im?Gj^lcF!UKG+#%MC3b$#X!!$4L_}0x@!!lN5`!KOJqXyiv zV=1)Ip4$yxO?i^$wf|uhuh)}?#e4LIX&Kz^Shj!YnrZ*pHPND7^`dQWnigFANX|OL z+4!=YV~Mm{NV0e$A!{02lvn8BbMvXiin`8in{DvttjsO`PqZc{a&mqj+UB~&8z0f5 z`+To5Eu%3_&MhkmnJLMg05-Rt89HYMbOMa;Gug4oCh>er3u;!T!``86?iPvF%Vv#x zRz@g@9XQ)&{*l&dQQttl-RUe&!D@52?Ygn86gRkW9{(`LuRcL|ho3MdI^j(GA(ONDoFZ#ZG*L*WSt=*rFUZ+eVr5FQx)A1s z(rO}}SJbQ%%qtmLE#$3;D<5$Sfi+iBN=MIj)bGA`)dQ~D^^dj9t+0ez$mW~p_S%mr zREtI>wwHljZPa73E1SdA4a~h6^<*Uvr<+w{QN;2L==I{NSu0(;ac@u49N2tfRwg&? zN@enyZB-`M`4c{M#|bjLJvw7fuwHDGE5@pY9t1};af&Q;ui93aO%LHDxd&%ybzaG`jGSLklN#L{XoQ8};%YLf9Gp(YM<|Jjn8i=+gDL>fWV)fStd>tzTPL-kW=JPI69ea_`aN@4VTK#Uhd@C?9q=(jU#j!739< zA_)xgfW44OW>R17hu*WV{F}6=>?x!oL>f4Sp+JR(Fmyy*m2^a5AO;h0B#?A9iXeqF zCXm4-vdCcyc~~f*=o%D7i406*#+50CSapMGUp5QHyxt!9d&;&Lq zgC&|2lf`YyiFDPHDl{d?o#SGedGlQRckrlQ5(ay;0+2iObdFBoJ`=p)<|7FyUybas` zJpPyHbhcGq7;BD$S3SoWYp-`ky94j(P!0;_HuK-apOlK#TCLq}b)0Iq)2O#P&04k7 zY`2^T^-iO`^(pa4|1J$}@!p~B_mYqGAA)kj2qpYq$+e6sv;X=JH~dnno#vc{6&~UW JX9C%A{{@d9hl&6I diff --git a/A_core/__pycache__/sms_utils.cpython-313.pyc b/A_core/__pycache__/sms_utils.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7c47dd6c0dde7934651bf3f0d1e847943434175 GIT binary patch literal 5740 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