From 5cbaca0750d0a7fc01767e35e4f2b372c08d15f3 Mon Sep 17 00:00:00 2001 From: "jieun4510@sju.ac.kr" Date: Wed, 16 Aug 2023 02:36:05 +0900 Subject: [PATCH] 'FEAT:01-01' --- .idea/.idea/.gitignore | 0 .idea/.idea/.idea.iml | 8 ++ .../inspectionProfiles/Project_Default.xml | 13 +++ .../inspectionProfiles/profiles_settings.xml | 6 + .idea/.idea/misc.xml | 4 + .idea/.idea/modules.xml | 8 ++ .idea/.idea/workspace.xml | 75 ++++++++++++ .idea/.vs/.idea/v16/.suo | Bin 0 -> 15360 bytes .idea/.vs/ProjectSettings.json | 3 + .idea/.vs/VSWorkspaceState.json | 6 + .idea/.vs/slnx.sqlite | Bin 0 -> 90112 bytes .idea/main.py | 16 +++ accounts/__pycache__/__init__.cpython-311.pyc | Bin 169 -> 169 bytes accounts/__pycache__/admin.cpython-311.pyc | Bin 224 -> 224 bytes accounts/__pycache__/apps.cpython-311.pyc | Bin 544 -> 544 bytes accounts/__pycache__/models.cpython-311.pyc | Bin 221 -> 2698 bytes .../__pycache__/serializers.cpython-311.pyc | Bin 0 -> 824 bytes accounts/__pycache__/urls.cpython-311.pyc | Bin 0 -> 428 bytes accounts/__pycache__/views.cpython-311.pyc | Bin 0 -> 1912 bytes accounts/migrations/0001_initial.py | 35 ++++++ .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 2320 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 180 -> 180 bytes accounts/models.py | 109 ++++++++++++++---- accounts/serializers.py | 10 ++ accounts/urls.py | 9 ++ accounts/views.py | 36 +++++- broccoli/__pycache__/settings.cpython-311.pyc | Bin 2585 -> 3130 bytes broccoli/__pycache__/urls.cpython-311.pyc | Bin 1166 -> 1257 bytes broccoli/settings.py | 45 +++++++- broccoli/urls.py | 4 +- usebody/__pycache__/__init__.cpython-311.pyc | Bin 168 -> 168 bytes usebody/__pycache__/admin.cpython-311.pyc | Bin 223 -> 223 bytes usebody/__pycache__/apps.cpython-311.pyc | Bin 541 -> 541 bytes usebody/__pycache__/models.cpython-311.pyc | Bin 996 -> 996 bytes .../__pycache__/serializers.cpython-311.pyc | Bin 831 -> 831 bytes usebody/__pycache__/urls.cpython-311.pyc | Bin 552 -> 552 bytes usebody/__pycache__/views.cpython-311.pyc | Bin 1909 -> 1909 bytes .../__pycache__/0001_initial.cpython-311.pyc | Bin 1044 -> 1044 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 179 -> 179 bytes 39 files changed, 359 insertions(+), 28 deletions(-) create mode 100644 .idea/.idea/.gitignore create mode 100644 .idea/.idea/.idea.iml create mode 100644 .idea/.idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/.idea/misc.xml create mode 100644 .idea/.idea/modules.xml create mode 100644 .idea/.idea/workspace.xml create mode 100644 .idea/.vs/.idea/v16/.suo create mode 100644 .idea/.vs/ProjectSettings.json create mode 100644 .idea/.vs/VSWorkspaceState.json create mode 100644 .idea/.vs/slnx.sqlite create mode 100644 .idea/main.py create mode 100644 accounts/__pycache__/serializers.cpython-311.pyc create mode 100644 accounts/__pycache__/urls.cpython-311.pyc create mode 100644 accounts/__pycache__/views.cpython-311.pyc create mode 100644 accounts/migrations/0001_initial.py create mode 100644 accounts/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 accounts/urls.py diff --git a/.idea/.idea/.gitignore b/.idea/.idea/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.idea/.idea.iml b/.idea/.idea/.idea.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/.idea/.idea.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea/inspectionProfiles/Project_Default.xml b/.idea/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..5204d19 --- /dev/null +++ b/.idea/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea/inspectionProfiles/profiles_settings.xml b/.idea/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea/misc.xml b/.idea/.idea/misc.xml new file mode 100644 index 0000000..50dc922 --- /dev/null +++ b/.idea/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea/modules.xml b/.idea/.idea/modules.xml new file mode 100644 index 0000000..08f54a6 --- /dev/null +++ b/.idea/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea/workspace.xml b/.idea/.idea/workspace.xml new file mode 100644 index 0000000..0b98e2e --- /dev/null +++ b/.idea/.idea/workspace.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + 1691050027413 + + + + + + + + + + file://$PROJECT_DIR$/main.py + 8 + + + + + \ No newline at end of file diff --git a/.idea/.vs/.idea/v16/.suo b/.idea/.vs/.idea/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..8208eadd67b263203208d0fcaabe60e8da56958c GIT binary patch literal 15360 zcmeHO+jCPz7~gV{f}&g$1W^JaA~rEeo3;UgLRv0Dxuq18BII(?rp=|Ea{>g%8J~Uh z(Kr7DXZ!;kXMAxS;lXjnH+l0_-yBEq_uF$eS&}wANy??MU*|j7bI$I5`(5|jJ==SC zH~#+hH{0)v8aOOgiU$wZis!WFU0PXe5aLzb^Vx%k4Mmtxc|d%T`#a6jR$ZZ6pLb7oC5U>N+aU7^TOkGi&#;i zPqBMxb{&;qz7np8yvSh`36T;rxK0W~oD;K8kd2+OTE-_IVgqKkAlp@LWXS5ddy z?NISgzGpF#BIIEJ;}}5#Xv|00eGd9f^M4*~zjE7e!|%Tw_#Chn@16&~2HXx@2V4() z5lCHAh8uz8eKYW7;48o_z#Tw#$=I+4W&V<9{w~9_BY`LB{~L}}{r|hIFb06K|0n7H zAA|0)|4Z>#V#jLSG7jkes{H?Tykj2FjQ>-;^Z7dCz_a54|L>7dM{^-#HuXdspx!wT zaNgGAzuu1VpZ6;MQ~#XeIlpl3;2gp^fwuGpa3|0Q+y&eXd=t0__!e+4@NM8e;5)$m zz;}T?KtC`5d=D4|hJayUFR%|70rmq2fP=s&@Br{2@O|JR;9=kq;1KXA@E9-#90ra6 zj{{EtPXcuw&uI7O-0}tdUeunm{&>y3-iKa(7A)_aC?U(pA=@cPoYXRpVLUOxOCwRi z#R2G_bArnEy@-}EP}Lhozx1@c+w*16FTe_m;uc0w1f?wK&A%24!vEE}!>j%;fjDC{ zq1MhFJ~N;=iBZwg6?Lb6?X?H=o7MjqI^o|Kab;v@rp1ExhKKtq+I!$7>NO0a1~k>x-P03ciO2d_!pe(nIm|WKi7+t0il*Y zql*El&tNrNl(s-?(?{a8Q`bK5&)lLJ{<&sV@u!x)Ly2+DS&1LTIA$RgT0bq3Pj%>b z_0K%VEB{=3sQBxw`^mE;h z52^+H8Q}Uj#-Q7s>K*a7Y5tk7EB!a3KQ1}9vn#&H_{)l4a>F++s+myy+l7p zj`XKifqH1CJ^5&-J@vr$)jnp2aO)Y`9ls<@<52@x#loLm@v>zb`9Q3g%NZ#v#G#vRz66Wkhmr#WiAXBaABy(&8NtEmwI0>EK8lkGYsyX}bH?J* zx<;d1POvCIZwRrZ9f&GQfr9>`kmsJNhLXTBK*JK!7tCHze zEIf?-<-+0t|;T# zIG#>u`3U=uyH7*d-3*|86xUwaOD}#W(3U$f+^I=pe&EdhV+U}N!v2>nx%s&RxXHsh zs3Wsu^kczZEy>MN^ci|At;@o1YRT%PmW$hnNqrr|4c8=j$<4hb7y)W^lS1@ooObL^ zh@U!ur!3|l&V!tDe(3;yoNr(=&=gPqIMHn>&ZWxARCMEtKG!i?x(P3$H<{omi`_t4 z->)5DedNoO*&uhgxW7iumSXJVu2~KoWWZ5%j#c-a#FN8mXXvSZ9Rc(60A1S7iHGWS zRn&Kox)&ZFaQ(^iT+X`f65=*@D;d3~;YWt_D6Z$qu*NC5)0uZychh*wFPp5JL>qpG zWMpAnnZPQ``4*l)xe<_lJHYP{|6uQ9Pb8S^PxTuSe`X*N_4kGQqWRH-&88igYoDl<{_fn5ty}e%k!!YXB9$tZ3bxg1`wiE-3~e~iof6^qo_N{GO4P z{}0w^JUoBJGwSS*a_}OzQw`|z{3FjF(jIyKZ=o}|v_F13Vh-q)KEFBd=AlVIE&o;e vWvrojBDir%qU65|eR-v?pTAhn|D+m3tNB;E`5)sD*I%^UR`Snw^T+=H((%Z+ literal 0 HcmV?d00001 diff --git a/.idea/.vs/ProjectSettings.json b/.idea/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.idea/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.idea/.vs/VSWorkspaceState.json b/.idea/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..6b61141 --- /dev/null +++ b/.idea/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.idea/.vs/slnx.sqlite b/.idea/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..fde3847bd9b23f2735063e4a057f53214ff89be7 GIT binary patch literal 90112 zcmeI5e{37qeZcQ@CsL$DKFN~Jq?+fmlgwi6lll8cf?%U5%4RH6GD$fxR6;o3J<3cd z(jh4)!cqjXn_z8*0A0`({i`dAu33r!%YdL5u-_}TcIbd%#k#dY*9;r5Vm~^dE7k_t zfW3D=ct1#*io7Us^Chek@80*l_x*m}_xtYsxRXm)R_a|W)LQLrsVhX8X@+H)UlIg{ zVNQ{sW8}y9%#ts>aYBBxmhZ#9o?;eb!Z;O1?@*Z|=$)xor=}+_d0+OtH1VdJb6w#+ zJ@)okaqO{SMZooYhQI{XbnijGJMg&3?p>)j75r>zce~nZEa6(cS?|_c%}woVb8ETY zznP^3R)>l@}>ZPo; zTQ}P84Y0JYNnXIm?zUyO7(&@rV`sbBFX!_H_s&ha1DhnSHr2RNHI=1i6SuRHd>wE0tFA?vQ*g>2WzOWG zQS`V2=Ys4lq%BXVA=ArbaW5lHH;mk4 zj4PVTj*g_4dKI@jB+&YL{#(q1I}i-Aw;xgc&?rnR-hSq>`=CA1;(6$XX<`3(xV!!$x2vz4)-U$wZLe&x_S?W)w+A?@h!&UG?ZoALU{(KYoFgMNVi2z}X?_8lW9@Bsoq z00;m9AOHk_01yBIKmZ85w*>YkT;oi3uR<1&p2TuD+iKS8TRUxaRk}oGnspifGM&+$ z(gn`%)EkOTs&ndLVWXlh4W24>rFM7chAvBIvewkBHZQdck=#wPJ>c_x{Ny;#WM`Ie zb!V$AwYPA$vrgu^`n;`k3GZ%HKJgSk&OGwTGjt}LH}|kg+FExfq<=*E+i~cnMXIq_ zTB#+(L^Z64;joex(=jYlaU~s%r_vHhi()K?5)oMp#}ZL7mQ002DJm->PQ=4Fl#VA8 zm|U(#BXS~@6eFpyEXL%7B1#b{EJl@7GFGig5hbRG$!fH!#FeO+iY6jrERs}2QbkNm z#v-){jzr=KIU=S)@n|wmlu#1km>3J!;zTGN72~N`w1yK=ETtl1x>`%6t7%!pX@yi5 zN=8X_QL1aQ8cC*V@vxi}5|NL|REzYecA8i>2bR zq!_B=1W{Ze8W2-NIUG@H(YS(fIxQ;cNH`+L6)~NROQa+sDJA1kF;a`C64hF@7D^^X zr6woi>2O+1DH5@+8k5DU5{rxBL|lnf5y2hrK_Y_a7?UL;}J2G3WXw}kerqh39%N5D%E&3A|{nkN^3hQ z8A|JIS54qpR2FN=xSUE>L!zR@3Cvm|B&HLj?PR5Gvd*7vnku!X?DY>$9P7JX4_cmVr8|xenX*Oh(aMk zClrYa;pD@i_`~toF_vde2TEiIW?Rx%Wy6cn#Wf00a)1!0b3DdYlja&hq4<`rwM?$;ugy3wp@nfcki@_R!ee z7$>sM2VCYRS#F-y*Rot*Vvh@5XV7=iub{7?SJ8F!pNDKBR0jlr01yBIKmZ5;0U!Vb zfB+Bx0zlwrhQJ9f%j(af*dAHYA8c{a^gBFnGCt2e!VY=Vgg?riWBVQr;O5BO-}zv` z*fe+AV|xgI?*GsEexE`Afxd;liavurj;iPqdI+)p@A?1S|GNKW|C9bTf6RZ(_rJcs zBZBY&0zd!=00AHX1b_e#00KY&2mpaYCvg9qi#f@9T#H-eFKcZzTWvfw@#ZT({YvH+ ziVx1Zm?TNM(Qeh~s}JOTcl9;<&f>G%4Ihm8XUsM%lp);GI9 zH{)VXlZ0nl?Wa07BpI8jf9-$kBhxPC0h+C)?2xj}v~OJg+I`5yoFHk7qjSjE+))Qxa!T$4e|;I`70?zS~WmZ?Yp0O zV|L2L1egh}0@d7KeB{xilP+eSAsR{b=HiWAdie|g{$To)*Tuv=y(*3OHx{4lw3<}r z`QQ7^@1ODvRg0%GH?MvF_Jb35pxKi;>eiIFDXU0~%=fzpEvlPI%SbvlPWaO#oxgEi z;0Xp|V?PE%;v<}kd5Gk!l9vJGR-;Zy8)^5A5w{>|rdt>(Gpvi5rR;8Y=%wes$~Wl# z|D6Ae4Ek697g5Up4tg7X2mL8JiO!=p{NF@h^8Xup-v7I33wclhea`=#Lw9nh5C{MP zAOHk_01yBIKmZ5;0U!VbJ}dW+z!oMRzt@JE67iC53$zO0nUzb%*D-m$U1;J|3|Md=zq{p(2vMd06#$g zg#H129sL>lEA;p1Z_pp0*U?wdm(b_YE9Cir&wW^&4(tR1KmZ5;0U!VbfB+Bx0zd!= z00AKI9upYnSaxcT9)0BPfAal^dYn;@)9Mk?qtCB?_wgLVPSL|8&v{rcy~umi;{?6x zrUw^2jMD>84;(#=aUA2(_WxfXfB)bA0{W=`U(ip{x6vP>85BpqL-zeY@BdqL)Bo$} zWB#9zCjx%W|0nOU?NB@r00KY&2mk>f00e*l5C8%|00{gn6PV^tvX(9WskwPR$qwG+ z_s#nG<7{u6f9l9Af10&#^iR#q@DC6X^LhKJX~dr(HT2#|K=<=e*4U}HZuk5A_wiwN zz=r>n&&vlGeanA}pJ#e|{`d27k5QC;(|=ecyl1$5{DfM#vGYI8KR{|SEphqyJRl=&<{W827-P-00;m9AOHk_01yBI zKmZ5;0U!VbfWZC;Oq2frfc3DhNsj*g|JS~}{Hxmj|2qtNXMZJt6c7LcKmZ5;0U!Vb zfB+Bx0zd!=00AIyPZ8ib)-$Q?|G&kcx9%z3L0KRG1b_e#00KY&2mk>f00e*l5C8%| zz(U~XSuf)`ew>|P=^s?AH@lnH>&9=-qf00e*l z5C8%|00;nqd!E1~cidyF0l@SB_k44L0YCr<00AHX1b_e#00KY&2mk>f00iztp!fVg zGkqs9NCN^u00;m9AOHk_01yBIKmZ5;0U!Vb?sWq6{eQ2UV^G5X&;HKTt5egHm%J}~ zUYdB*&AF~{pB{UAtT^`Ay>2Dwf0zXL*8`7>?B11nQ^C)ccDJjo#uBd8oAqwJ)!fv+ zHn*1R4V+gt^Miy?wwTM5b3(qblzT$h*jE`9pI0EC)k42~MOfIdS6d109rd{bS)%5J z!D<$yZ9G^x{|M#GoFi1Cf)ydVy0SuTEv#lUrCjiZN2lBYQDi?QcBN_qJ56_<`*dZ> zne!{T0har`3mTU`hG}#J}21;qS)5Y68gw9J8rC{bh2+Nh0 zEYbKZww@VofFYD^HFma}{c=8UaPQotJFrROYEz9XRa04NHgP*E$=C5_zv^0)IR&Te zQRYk@T8<^=oOy`v_19hr-d^{r5%*$6jW}m6=lP^P;+)B(ek0A|?5DdyFib-j?kvfjJ%7&5&~7WXpJ zbi>F!#<-%X?C3~(saJ8kLjtX@=fA~FxC6l;d;1a94~@dK;_YW1yARqEEgonjSQ}{{ zo~L<6Phrg*vzrZ#>}8F5d#3IuGi|bm-R?k6G@8um$eU|Y8jci!a=JVkoGU9;!2M4?`Fe@;vPXAyVn_UJ<(XSNZg zjj-(wMjRct4vYG#rBnth>>8o4nRA44gTM!GU*xq;I%{^)7Ftd{$L#^)OtyrGGwEQV zqUmgU`94M>L)*aY>(qXXj;HA707HVi>*4bq%BCWm&-V`lSENpNwc5e$o0trX%$`>t zEecDy<;?m@S&(= zy@k~>b=~w|W41Cj^s5$^)2|$wr(KmAJER>Q-l^Rr)%id3GJ^_JFHipW=!UYwqD9~H%kmma@a$IsBQ`kK_euHFIbxZ^z6IbY4^9v7Txg4FSOAJ3OB zlDNsP7fbo8xqg{UNgt}w_$rYpMz$>U_Xk3zB%GHzwlR2KIV%hcU@D*0{9Y5$?%*^F z?Ivu=-Rr_~arJUvt!Cts@yKeyJk_)`&#C5Xiv!fNi!7HG-@UqhMX2gO_ndJ0W2Xi3 zYi+S-Cb7e6b@#fNSF_L2lvH}nl*tzgWET1unRoV)ppwfaGOahIi7^9O=~1gbw9_%L zlP<^SHCnf{_|dZty*oX}@Okf~?0%Fast(hwzm154UL@1x!OkM&OX@&&Z(-IQ*a)(F z*BqmYC8;Y7odubEsMs-kS87ijTE@WJG%b#Hv}PFw=1TAr&mK_+u%A5RxJT1WW(In8 z)ZRzh6D?h(J>g(IrddW$Rr40B->^*QI>2rAE@$4xVA*P&G0m~v^$kJIj61EQ+-W9d z-UddG;}0;b(Qh{8+!OYNqq5ZA!rei4p&=_Z*;ccQpWROmI&p~1kX47MZPh^?9u{#8 zlg>cKo4s$;AB=@Z(>Hp_bHjqACo#CFf#K52Lt3l%T~mNe7$Vc7lwQI&a8r?*-4RO9 zj#heLQ6rUh8>ZSh)9?42=0+YJcGFV-{0s3n!3He6A_zUbU;`Udfm&A&f`7oZF(zD_H`+J z&FMkE8#X`kbWg|9wKz8|hR)Pr^8+?N4z$v7mqRdPU*p5K`9a_Rhv)wfeW3#?1Oh++ z2mk>f00e*l5C8%|00;m9AaJMzVE%uoxS=v200e*l5C8%|00;m9AOHk_01yBI?+XF? z{6Fmfzc1*aQXl{XfB+Bx0zd!=00AHX1b_e#00M_b0QUb64K-8*1b_e#00KY&2mk>f Q00e*l5C8%|;C&h($ delta 18 YcmZ37fK6rQzroweg+{gad=CE$?6st=?}66f06m zs>Dh$0Y%U`gvHwkOS-TeMd&f~pq1LVE(W?bUD9LAB50v+YGo`>p+fux6AJ=WKGkgf zvaOSgnx)O@1cqXjD%MTA5TU8lvv!SW<=U1JOO#pVYVPP4h z$KlBLLLEH}r7bJ=hViWhZ68MUT@mV$)yOhfJ`SyKNp(QOF3kWQ?uRb)c zqXqUQyshrz1)Cri7jtYE>|DjMYq@#thMv=`oL*f{0z)9GaQ#mw?UA?K1Ih%?OTOb2zjw7pDpt){Ci=HdYsWfOHH+Z01EmwgjR1NlnVIuhci zg}*Zg-TqHnnNwcol$$)YreyCf-dXfBZ#~cCpJnn7omS?kmpQuD-M`+3QhhIxm`c22 zq$#c^P`u;0-1|)Kz5h;29`xivS041`E#60Z$%qj;1yf7#b`d+$X)Eb`*TyBmy8oo;;2TqR=_vK$kWEkLN5E%OdAdT?19%+{Vp&{u@ zNWJUmKS&Uhg)2i3TUh_|fRHyeGlKN!G8jD$4ND@7Nef%{a8KX}j^fCwxU0fL{RcZX z5pP)f54$+G<2MsC#L?B*&f->T-(?ZmW0Bltu{TBsx9AMk0<%O`+jh;O?6Ht{S)_2h zl*WlUp_IYxfb}F58MjV7FH z7?hmvygW5ASv-AlLOpw7;`4E;Oip}x`NHJHcpy)aAr_G#K0s}rag2Nf-Tni}8`S!p zz0IpXRDP^9&aEZ;n`gab|4R1B_;1eBX*W69N=|yo$;O1Q9B$t5l*23UJ(>PpdWv0T zs-;YM%2eb0S~kD*zL(9fIBxb>D|^h#9&3E=rv{f|UTSb<+)a(PQlnmKv~j^#j<6s{ zR*t#KXiFLOl+ng{KRvwkmX{uWGUld_x6;SG^zp`LTZ1b#H$B!$k9p~_#%F8YhZ{xz zz@a6h@df(@AILtdScubpyr5Zg)sb@5su5#$1QIwuG7Eoa`29jyQKj)s8$25%t8YJ_ z;DREoq!D(!f-}#zaObwZmQMz?<709X>{v;+e+IH16$HUYAG$jqA02deK0dnO?)R*p o5_$wE9ec^ryD!=3t2e5#4k5RW_7b=KZMXmEOQw0XkDBk@zZz$PU;qFB delta 171 zcmeAYy~~)soR^o20SNf5Pp8-b>Bk@r3@||%pM`*o=?p0hDU3M`xr|Yaj0`DE!3>(r zFF^`48E>)W=BK3Q6#Hp1-QrBiO3X{o*Gow%Vg^dCWcUnHGx-dYjnyv>8=$(Y7{{MQmRCeA{t|9W4s&TV|^yOcS50}ph!uV ze-ISqm!wNUaatNAD!Pj<)m6;c=bWr$c6auho$qXTRkI?tjUsC76N9 zTLdQ{K{5?Fix?y9X)osyXW+pWNd6t9uUOBoKR)FE=eR0~0vYT4GPe4J$Bt%|$7sI=}QxExZRT6Q@k>7W##I$!q-r!`j;K@S- zb56x0UoyBq$6yQb)=bYSBTrbyF5XK{ktu#YDg zT-U1m`N;W{k!c~<0xtUq)wi25TDyN7jMg6?hcwI@I?V>EosMs)(`Jd(a(!&tgvzLO zLSd~4*iBS(>aphqPsVUtUD4U~9gd2asHkqMM%jTlFj%`Uh52OY=Wy-%mEE#fwyIov zn<_VNW0hAk*J*3BD*h`&{iNpFeNl7MjN7+T>Jrop;E6RB8Xl@ltQsW2uRE>Z9+cEZlcsvj~>1G4=UoH zX`u(*Q^AwBLT^1eQF9QSoqf!k-S=kMXUnPs#@Xzh83f>?BvsUYi$w>ECt$!x3<+^b zqPZF=xfbgQbtwT2IAJ;>jVcw4Q1x1Q!AL`f`zN}@U178hPVKX7IGUn;Kkq3cOoO;! z+#$+phut(xk6Ndlkl)=K@|*5nIEFG=2vF$vbPi<#nH>P%D TLU*QgXKv69ZD^KDnCSflYbbJk literal 0 HcmV?d00001 diff --git a/accounts/__pycache__/views.cpython-311.pyc b/accounts/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..409ba8bcf059abecd9287f43d1685b21a041a352 GIT binary patch literal 1912 zcmZ`(%}*Og6rcU_`U^Y3c1#KdlAtt}8bVP;o2qF<0i~slp)u*fvbx%M7g)3Ql9@FK zWTYH&uzG3L3sj;Khl)0WYb5@IUhQh7x~rlhRXz0Ph*YX_>YMc!YmxEz?QheD zMuDh+#mV_kztq%qfR`7H6}2$;$dt9hysY7riZxl+HdPG9&_kl0(PW!RoCnifoJIj` zBNe3?1*KVqd5Y4U!a@<8-ILOm3Rn*m#?wyU(4!IBLpuNIBf?s=A+G+r9zb(%6b*#D88KDx_m6tbrI({X-%PP37Ioh2w zy8Jxm#g+y7WIKH-Y{^p+6mFMQ_+8HI?Re!JM$z@5un(Odw7cIDOX6OjCCfk>z6hkV#XLC3OR6oHl%SZNC8lW>AewjCG=aUK}F$7b3% z)p5`?q16vJ$E({@A7tpYBbl7077LmAjqI|F^Yhrqsaca`9$_P!HFPZlJs8CTXx88+ zlhM@;n_o4Ex!LQwbfZ*9DMacZo}lB{wV&gM1C`iBH8x?zCd&R=Aog2e@Yld#H85-i zhU+Nii`OD=Zr}axZZ$GuMMlcge@Aax(f5w{YV?j3y;Gh!9vIpazMtKlE#E)xAKWQg zL+@1k$F2VH^5@6BZ=4KV-<_)s-8#8CTDvw@7r4Pobwq_IUhJ(S5dU64eS=m!QIGf| zp%)0mODf7!^*+>d;hW^w$({H2GDp+pWHmTx1t%-P$yzY%=x^`kj})q(vVv2U;M7Uv zQhD|`9N+O>Y{Q8K~XUP&s*c~z2Zza-@irKnRJl%&T+ zS#MbIRq%a=@HKegD^$>Ja|HcFkQ*SLw10KBPncus=zQ4-Lf=m&0(J-v*_0MB6tHgK zl?K=1ZsjN}ozJsFM?2bOb22;T$){pOM%K-4*gVQT0~#XW22?TUNW(2a_F*3fLlJx|cBihI^Qml?W~ R=gV*Jy>KiqUt@R5{~tez(kB1_ literal 0 HcmV?d00001 diff --git a/accounts/migrations/0001_initial.py b/accounts/migrations/0001_initial.py new file mode 100644 index 0000000..3d97d95 --- /dev/null +++ b/accounts/migrations/0001_initial.py @@ -0,0 +1,35 @@ +# Generated by Django 4.2.3 on 2023-08-15 16:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('email', models.EmailField(blank=True, max_length=100, unique=True)), + ('nickname', models.CharField(blank=True, max_length=20, unique=True)), + ('is_superuser', models.BooleanField(default=False)), + ('is_active', models.BooleanField(default=True)), + ('is_staff', models.BooleanField(default=False)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc b/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c5533a9dfacc3e98b964bfe2c99c6eeb6e71469 GIT binary patch literal 2320 zcmZuzO-vg{6y6`(*v5cOAWi`PHIT-Mf}n|dNYao1fhKLD{1{qUNZZ9THcQsKW_JyN zUO4p7V{YY`6IB(f%8?_-9LLg1wWgOyJ#jNiPC50>tnHAPHT&kxoA3S3^D}?;^@Rm^ z{`vb~6z&m(|JbJe_*=~TTfqDwAOVTGP!{uIS;|YIAPI{Cl717AjKy`it+Wr^>&`AO zBi}P2>px=0S&4?rTFFu!%`|KpD4PiDcA>4w)_804eoSI6v5*&$ke84MhNP01_elcw zuLs&H2+V_|XFb@Fh)6_!6sYy=`ydc_y{9OlAV-GU5)?wgT6iD)yoR@f>g6b26ea^} zB8t@dK2Hm*^>bWrOOfFQkXVa$;bLES717|SxHB9V>DcqvhW15>4PNg7pTl2Z#8WV5 zzrdVkC(bb^a;%-}@^!uoGtz|_<(R&9giwPqlt4+8LZh|xKHSpl&P_q|nJ)BK9DMZy|W-M1f0=8$ug@Idq>T!;k3u6 zoi)u)Gmq(2teZy3PCMpg`mQJ1(sVst!cJO+6(TEZw#~lipsX6;0I+GS7S_^c5e#9? zYFVA6L4H*>cBqeWJ7IR0liX)Ez-vK6Ygn%+4u0X#h=p|?FslX~Z112*aARC1Ii^?C zC^vi}mYoaFD!8B(wZdl+7ES9@Zj(C$-2W%F9d75O1`VpKwqrq|;WB;PX`rZK9oe+U ztnm5vC_6xdir0Dy4J!(ayQ+>Ag+>%*qpIpm3wAx4p*hfCG=gvi8weW(4citQp|p37 zcjQAhC@nV2Xk=C^-GyFVV9sc0ZcVj3wr?J4lGDoA+lKG4cJlbhtZC|4HN4%xL)F;M znT)oeCS>Z(`o4J0lL^5;r%$%EXtQ z_ljI@gGuC!^DQ-@2pI2fn5t+!u8TmS3fNGAw!d7q(z|gDrP_-!sVAecv&s zA2j-)BTadDFtGc8eXQ@=J@5#IZ3wNaM#-E+tGvs3 zV|!h~{?YKTw}JZ@yybmoZd-R?%YF&%Wgtyi6h&wnF-wF?-G9wMLJTy8Zt^nhM#qoY L!G}{$x!?Z*GM<-! literal 0 HcmV?d00001 diff --git a/accounts/migrations/__pycache__/__init__.cpython-311.pyc b/accounts/migrations/__pycache__/__init__.cpython-311.pyc index 33b3d36acd9d85c373fddee4542e441b18614e65..351ad5e5595646126db71563db47754c09fd9ffa 100644 GIT binary patch delta 18 YcmdnOxP_5xIWI340}#CMoXE8b04mJ{wg3PC delta 18 YcmdnOxP_5xIWI340}$|APvlw!047)i&j0`b diff --git a/accounts/models.py b/accounts/models.py index d511048..b4a31e9 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -1,26 +1,87 @@ +from django.contrib.auth.base_user import BaseUserManager from django.db import models +from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin -# Create your models here. -class User(models.Model): - user_id = models.IntegerField(primary_key=True) - nickname = models.CharField(max_length=10, blank=True, null=True) - password = models.CharField(max_length=20, blank=True, null=True) - email = models.CharField(max_length=100, blank=True, null=True) - - class Meta: - managed = False - db_table = 'user' - db_table_comment = '사용자 데이터' - -class Userinfo(models.Model): - user = models.ForeignKey(User, models.DO_NOTHING, blank=True, null=True) - height = models.IntegerField(blank=True, null=True) - weight = models.FloatField(blank=True, null=True) - bmi = models.FloatField(blank=True, null=True) - info = models.CharField(max_length=100, blank=True, null=True) - accvisibility = models.IntegerField(db_column='accVisibility', blank=True, null=True) # Field name made lowercase. - - class Meta: - managed = False - db_table = 'userinfo' - db_table_comment = '사용자 정보' \ No newline at end of file + +# class User(models.Model): +# user_id = models.IntegerField(primary_key=True) +# nickname = models.CharField(max_length=10, blank=True, null=True) +# password = models.CharField(max_length=20, blank=True, null=True) +# email = models.CharField(max_length=100, blank=True, null=True) +# +# # USERNAME_FIELD = 'email' +# # REQUIRED_FIELDS = ['username'] +# +# class Meta: +# managed = False +# db_table = 'user' +# db_table_comment = '사용자 데이터' + +# class User(AbstractBaseUser): +# user_id = models.AutoField(primary_key=True) +# nickname = models.CharField(max_length=10, blank=True, null=True) +# password = models.CharField(max_length=20, blank=True, null=True) +# email = models.CharField(max_length=100, blank=True, null=True, unique=True) +# +# USERNAME_FIELD = 'email' +# REQUIRED_FIELDS = ['username'] +# +# class Meta: +# managed = False +# db_table = 'user' +# db_table_comment = '사용자 데이터' + + +class UserManager(BaseUserManager): + def create_user(self, email, nickname, password, **kwargs): + if not email: + raise ValueError('Users must have an email address') + + user = self.model( + email=self.normalize_email(email), + # email=email, + nickname=nickname + ) + user.set_password(password) + user.save(using=self._db) + return user + + def create_superuser(self, email=None, nickname=None, password=None): + superuser = self.create_user( + email=email, + nickname=nickname, + password=password, + ) + superuser.is_staff = True + superuser.is_superuser = True + superuser.is_active = True + superuser.save(using=self._db) + return superuser + +class User(AbstractBaseUser, PermissionsMixin): + objects = UserManager() + + email = models.EmailField(max_length=100, blank=True, null=False, unique=True) + nickname = models.CharField(max_length=20, blank=True, null=False, unique=True) + + is_superuser = models.BooleanField(default=False) + is_active = models.BooleanField(default=True) + is_staff = models.BooleanField(default=False) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + + USERNAME_FIELD = 'nickname' + REQUIRED_FIELDS = ['email'] + +# class Userinfo(models.Model): +# user = models.ForeignKey(User, models.DO_NOTHING, blank=True, null=True) +# height = models.IntegerField(blank=True, null=True) +# weight = models.FloatField(blank=True, null=True) +# bmi = models.FloatField(blank=True, null=True) +# info = models.CharField(max_length=100, blank=True, null=True) +# accvisibility = models.IntegerField(db_column='accVisibility', blank=True, null=True) # Field name made lowercase. +# +# class Meta: +# managed = False +# db_table = 'userinfo' +# db_table_comment = '사용자 정보' diff --git a/accounts/serializers.py b/accounts/serializers.py index e69de29..b4e7a4c 100644 --- a/accounts/serializers.py +++ b/accounts/serializers.py @@ -0,0 +1,10 @@ +from rest_framework import serializers + +from accounts.models import User + + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = '__all__' + diff --git a/accounts/urls.py b/accounts/urls.py new file mode 100644 index 0000000..cd1cc95 --- /dev/null +++ b/accounts/urls.py @@ -0,0 +1,9 @@ +from django.urls import path, include + +from accounts.views import SigninAPIView + +urlpatterns = [ + # path('', include('dj_rest_auth.urls')), + # path('signin/', include('dj_rest_auth.registration.urls')), + path('signin/', SigninAPIView.as_view()) +] \ No newline at end of file diff --git a/accounts/views.py b/accounts/views.py index 91ea44a..f9e66ea 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -1,3 +1,35 @@ -from django.shortcuts import render +from rest_framework import status +from rest_framework.response import Response +from rest_framework.views import APIView +from rest_framework_simplejwt.serializers import TokenObtainPairSerializer -# Create your views here. +from accounts.serializers import UserSerializer + +#01-01 이메일 회원가입 +#로그인 시 이메일인지 닉네임인지 확인 필요 +class SigninAPIView(APIView): + def post(self, request): + serializer = UserSerializer(data=request.data) + if serializer.is_valid(): + user = serializer.save() + + token = TokenObtainPairSerializer.get_token(user) + refresh_token = str(token) + access_token = str(token.access_token) + res = Response( + { + "user": serializer.data, + "message": "Signin Success", + "token": { + "access": access_token, + "refresh": refresh_token, + }, + }, + status=status.HTTP_200_OK + ) + + res.set_cookie("access", access_token, httponly=True) + res.set_cookie("refresh", refresh_token, httponly=True) + + return res + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) diff --git a/broccoli/__pycache__/settings.cpython-311.pyc b/broccoli/__pycache__/settings.cpython-311.pyc index b6b7875515ab34b19a1becba054c1879126556d9..ab294159e91a243154768df87fee246281333d4c 100644 GIT binary patch delta 973 zcmZ`%TTc@~6rS1cvc1sKaxIsZixSePkRVEUa{~jd^n%?b$h>S;&R7TBB4wN4+3XUk=e`Xrlfc0{IZr0N>qwZvhW@O-zHlfB?Re=IbRIQU6Kc zdK6li7lIJlmuP4QT4^h^F%PtF`w+@ukf4K;cOGIBL)X5T!?X>;w4F=pxROdcpc{I4 zz8iWQ*w?^_iE|?DgedKTej4VoyZP#Y0on_Lv=2lT#fFS~yaC>sHKUj-4OH0aB))@( zJ(gKu!19(6!?w6!SgUDm+i$F_ls1c2WpuH^$}wMcT{xPs!(~>n^yg)xz_v=|b-iL1 zHu7w3%i6w?88tSoRjahlil-sh8@yvjXUMFwnACJ-QHztbmY7zwL?*3IClysCY7B2r z{g1oB#fp}>VpwLWIQn==Q#kwI$VHU*hHIA#W^vPEl?(aO7r}T@v8A{=&K^AEc^AJK zlk5&vqX*GjC+*iTqc{);wjswCg#$K^qf9VmhDje zC3>7FGbF2P%L_z3{U{y?wrh(Jb=wVw#p>NHySO4--r&8>o6pK(738PEmIlG1 z%CDy~GbCC4EJu0+T!N<0W|b6K%4FwlubN0LB#F+YSHH=>?oV-|`X{cu<>wd* ztH4hLQFP?h@^SerGJYNz{~8&uao;?CauyvskB)tfj@3fpT3e*nJ?QwF>SP=^PY?zB UcbgqIYA3iBs^&ZVCEH&Ox!7ytkO delta 397 zcmX|6Jxc>Y5Z&3`t)>99zYcm~htM3G=r~Kt_&8`_SWCX-J zaLAEE+KY}r!CA;dIRwTYb^b*^)7!6KWhb;f?a&BC+nnfVl0++FXh)1P13*XDtgbmS z&?Pf8$hvSCi-07hGtK~7K)E{^0V;AauiXk$w*o23>vu(k6c?%ZOG+(>Bo?WRCGxPW zzw~rgsDf3hVvR(THEN@CSOH6J?3^8}Z#Jy>gAYef;vPmz**>rMV2WtyTrBh4_%e`rqaR$ Ox_08lm(Hu4*G@lVUsQVl diff --git a/broccoli/__pycache__/urls.cpython-311.pyc b/broccoli/__pycache__/urls.cpython-311.pyc index 6a7a49ecc4ef437b7cc852e840e5970d428a83b3..5581181573b016172df20990a2eded7b22632401 100644 GIT binary patch delta 158 zcmeC;=lk0l<|4VMD=nZCWcg&6m}rVn!>S+k%3_~ zR&gdKC+C;ul@#k&@xqvs)0kH?_D&XJ$`5&(y#Tf diff --git a/usebody/__pycache__/apps.cpython-311.pyc b/usebody/__pycache__/apps.cpython-311.pyc index e8f946e4aa71c17aa7402ecfa736a5f4bbf6a5df..c2e398496a262f73b3f8350450b92ee739fb2e76 100644 GIT binary patch delta 20 acmbQsGM9yWIWI340}#CMJiU=yhzS5QQUv7y delta 20 acmbQsGM9yWIWI340}w=9Jg|{lhzS5PTLjVo diff --git a/usebody/__pycache__/models.cpython-311.pyc b/usebody/__pycache__/models.cpython-311.pyc index 8dcfda53d9a6f49a99538e4d0075ff48d42ce481..91745115ea58942f311052fa3cac610b0b0d60d5 100644 GIT binary patch delta 20 acmaFD{)C--IWI340}#CMJiU?oCNls(*9JiV delta 20 acmaFD{)C--IWI340}!ZQIjh8% delta 20 acmdnbwx5lAIWI340}!k>J-CtEgc$%fmIUIK?P<2 diff --git a/usebody/migrations/__pycache__/0001_initial.cpython-311.pyc b/usebody/migrations/__pycache__/0001_initial.cpython-311.pyc index 3b507b26b5364b36c63fdf68257365fb19d67095..5687138be0bd67154b0d3668077be38c7ebe5e47 100644 GIT binary patch delta 19 ZcmbQjF@=L`IWI340}#CM+{nen0st#D1PA~C delta 19 ZcmbQjF@=L`IWI340}%Xj+{nen0st#{1QGxM diff --git a/usebody/migrations/__pycache__/__init__.cpython-311.pyc b/usebody/migrations/__pycache__/__init__.cpython-311.pyc index 3fa9a23b23da4b8c637c8d79fe0b7ddd4b79a066..a8565ddaf701ab21e2c9360c1a25505200c8b694 100644 GIT binary patch delta 19 ZcmdnYxS5fAIWI340}#CMJUx+n1pqNs1%Chl delta 19 ZcmdnYxS5fAIWI340}w=9JTQ@a1pqK{1#AES