From 44a3248c64381605528c2fdcbe3782e3c520e2c0 Mon Sep 17 00:00:00 2001 From: Allen <63997543+aaw3@users.noreply.github.com> Date: Sun, 24 Sep 2023 02:32:50 -0500 Subject: [PATCH] Switch to dockerized postgres --- .gitignore | 1 + backend/django/Dockerfile | 2 +- backend/django/requirements.txt | 9 +- backend/django/seatstock_django/db.sqlite3 | Bin 147456 -> 0 bytes .../seatstock_django/django_mongo/views.py | 88 +++++++++++++++++- .../seatstock_django/settings.py | 52 ++++++++++- .../seatstock_django/seatstock_django/urls.py | 4 +- docker/docker-compose.yml | 27 +++++- 8 files changed, 168 insertions(+), 15 deletions(-) delete mode 100644 backend/django/seatstock_django/db.sqlite3 diff --git a/.gitignore b/.gitignore index e8a710b..b379a32 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ docker/.env backend/django/seatstock_django/db.sqlite3 +docker/volumes/postgresql diff --git a/backend/django/Dockerfile b/backend/django/Dockerfile index 3f6c15f..1deaac1 100644 --- a/backend/django/Dockerfile +++ b/backend/django/Dockerfile @@ -1,5 +1,5 @@ # base image -FROM python:3.8 +FROM python:3.9 # setup environment variable ENV DockerHOME=/home/app/webapp diff --git a/backend/django/requirements.txt b/backend/django/requirements.txt index 8eb58c8..338f3d1 100644 --- a/backend/django/requirements.txt +++ b/backend/django/requirements.txt @@ -2,5 +2,10 @@ django ~= 4.0 authlib ~= 1.0 python-dotenv ~= 0.19 requests ~= 2.27 -pymongo ~= 3.11 -dnspython +psycopg2 +#pymongo ~= 3.6 +#dnspython +#mongoengine +#djongo +#pytz +#django-utils-six diff --git a/backend/django/seatstock_django/db.sqlite3 b/backend/django/seatstock_django/db.sqlite3 deleted file mode 100644 index 1181932f07cc2bdb9a7626783c035c9045809e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147456 zcmeIbYpf($p4fG7)vc`2qi$?l395$AvY@jt)wh&ccMiA-@ivNQ9c6(+u#J;YAlIypT(`HhDU zPfkvR`rr5Je@{P;>z%Ww2le06EBmk76;3|YPj4NB8-M>G^Wgl?tHi;1KmZT`1ONd* z01yBK00BS%5C8-K0YCr{_@gKA{=4^TrSH5kIcfYyjla+^8Xw&Mz59Ree(T;pxc8Ut z?e5`k{{EZ4^QQdf+i(1}H-20Tfe#=62mk_r03ZMe00MvjAOHwFM*w^0*2#B1Zl-3M z+F_8wFpMa6U}v`Kp)iU;Fax33Lxg@zz>hKbQ<|o5g6O?{>*W1KQ_Zt&EsrXymzjx@ zr}f6NlQdHT)i)JiEfvoUHre*&noyiVe&elLQ}?MRM9CvV%}gaq!m?5#Gx64HQ8fN+fA;=^_dhruUM|JB@%Gt+@7z7Q1fDL4 zIIREw=9|BH()jNh|90b_Y-o+gjW_TA_xJzZ`+wnna({gP)BEq-`@?(x`MrPh-jDA| z_da^_@4orFZ~hx^{;19XK7arq00;mAfB+x>2mk_r03ZMeTqE$|H*cMsehl3%Y;&hv zOlsO{@bGZ_@Z$JaAJj6BklTjonf1#GSESC*Jd^vzxtzYOW1i2+ou7Fs_wfB%?xRm` zAJ+6=QC1&5mH6bnS^}bO9j&@Dqk3l9#kq%vwdS9_TMHw2jr09 z!p>_ME^NJ;;Zgnm$LS};t%JeWqz^`475#Sog2(B1f9>pO`C;1k%;dwt!}{foy5wgU zran!-u<NyXQo`9`oW!A@-ynjg*}%E2iXgwE>HfTe*fSgePP*U!a@4Nyvvin zTEAmZx7r&A8!yiuL=T2up7~z=0>Ry1LypEiopnDmwLbCi_+rBM>vsh1enMOrdR6Yi z%uC7o-GEy1!pN(V7bZTF{IGs0;O@tt9SpoGb};Xm%pv~&&HLXyY5bi!`u`u+K7fC| z@#BWySTwo~yzxQft;Xs7zjOa@-v7_;|Hb?N!u=oL5AOeC_q+GeIs^Cs0)PM@00;mA zfB+x>2mk_r03ZMee4Plqb9Vai>2uDTZ@zbS`snnUujaw|$%{GZh0o<1Z=aohbb8eb z^Zqx^PNCBmye{v3^XwEkeTjeN-SdPCwO2eN@4SC@`pM~af63d8v(xXMUb;r!IvQ}* z8PYgEbD{9y(YSyA?DRXQ&zv3i-a0$|;Pi@r2z>ns+^UOsv+=(l3i`dq-*5cg^WCq1xj_j50YCr{00aO5KmZT`1ONd* z01yBK0D-SNfsgLgCH(L(^Z(%Nu>SwG`+wu){{P$PH9o3;1>i5%-~RWL`ULm@0)PM@ z00;mAfB+x>2mk_r03ZMe00LhH0^hsIpH_Qw>qU5oo2G??`!L&Rx?@IY#8{*nVbyB~ zAvib9I0^Q#XVVo{>ie(?C|XU6RK-0f*Y6yJh&Z+j*Q(qiooBP$~|X|*ftqzu%+ zy?qeENZ$(+XP@ko!lTfQMR@+Ey9by-`WoO>agOF40J;wIZ*dezlWoZ?H2&Gf zKhyZ98o$+e()d$#2Jis{00BS%5C8-K0YCr{00aO5KmZT`1OS20CvfZL>FMon9=8vU z+ix7V?;p0e-aBsJJ#ODQZr?s^&)zz28^`VaDgg(^RT&b^XA>VApZaPRRvN30YCr{00aO5KmZT`1ONd*01yBK0D-Rq zfkXWNq7v{|Gz$U2}%M800MvjAOHve0)PM@00;mAfB+x>2)v2_ znE$_u3^)%600MvjAOHve0)PM@00;mAfB+x>2z-4AfcgK|r!GNB00BS%5C8-K0YCr{ z00aO5KmZT`1OS0o5x95f|2}#B?9ZPxzIXq>y8G8}{|EPWZ~pe}_iioD{`?z%@9BRx z{=p65^d~3(#mOJPrsa*lef!7PPJu%}01yBKel7w}{=_?X9=Ooylhh6jvsCkJtK_Mf zD4QhAqx5{=HqH-~dWXR=0@h(&$pbsSF8*$N#x^DP;e6bm&e@0kafe+#{P4Qe7byMk zp)h_i(}xeg|KZUv+xYMY4?jGbSKIU9qbHBwzVl$ioIX)6OK_eVnTcqDDKYBM)HSe6>mBw{zPn{b>_;G1rXc*cm%+ zv*MLY9grUy$-~Yeb#^qQKkiHY=4iCKILUUdwx=(l_z2|7X@2y^ub%!7KUW6@nSZGX z{BZo*od*na`XlPHOPqI@%buRTyu03gN%wdm>qRqru~mLvCwbOmU(EJGFZn4NbKOlY z3w0QKzl8eB3}3Rt)V2Lz{!-WYPix$hx8A+;K&bDq$mI}!Wzc+fGbB|6H4R$3K8n8g zl2QHh@?ROwuZSJ!KOH+CJ#iYZJ$Q1HIsM^Bmo~l7^e*rDmz8+9dBVDZp@arsJ^{Rt z^{oq=U-BIAg6x;N%#}jDpx{un^OJRxe4&j#`r-1;I}e)8(;xl%We+`)IBqVBcHT>0 znsV2mk_KJp%V`c2C|t`9Dt@&i&}#zxU?<^7`+;{*T=K*IxUZ zuf22of2-F4_&5HYo2#4u{*8a)^tW%cYq4LV&&}@XU;dfQdGa1|=Yja>^a*qHGhTRS zQu7#;Q_M256H_^ON)(mQNt7h9=S3b~cy}%$anC2dH2=Ay@Oi<559rFZ>Zlv}*_{WE z9-aR1*RFb*F3fs9@9Qu1FI|Wp6hAGDYgU(DAsoJR8C?x$)$XIG@^z`z4phEmx4|kKaH(z5Rgw?yE9ix}A|{yRSWY z`;$8lKKS7DiGS%kJ-S+tBFDYP^MEcBekRY`^UgJdxXSU|nf&PHKYjAf^NkVv!R-g# z4?eeG=l?s_M4lscEKo;l>WGdK>EiYMo}MN}AWc?eoiPVd!0LWrwq0 zO#101K1cGz_OqSiki3D|%Q5or6rts>nRVG*AntNE1H~zFf-Pzo^lxD*-N3 zU#aCvwBl0w&>yZ{wjPPZ5AHmuJ~{ni<1!F)ndOBG=%HaAO0B?%s$mqNUdCW9bKSl$ z`X#}aOQA2R`b(Fju9T<7)$0U4et72)82HiYWly=h^s&EO9^QIMuenV9nMRT8m|yI9 zSHqwe!{pUW7gzn_WdqO3eA!FkD`Qqo<@rYXTrlC$liqjlJP5JVCx7bd?eVH1N*zy7 zJXJG2#joq$Qz%k1Fay($75@^;&t6*jFA@BF&ClINuNrh9^US70wC!kC-H`jga_0et zo&J!ydP}{U^CdQX=lQCCiNw!T{g?K=vR2NmetGhvCvSb{YQ*-!EYKA%mZQ`{YA3pli|M<6#i-dmbv#TxPnW@(;`jwZqfoI}BQv(P! z$JDa}xQhp@^PA$u>BNlcAnMb*DtfKI9_~qDpje)|`S4-ttDaY{PkNXKslBOhN6+q} z58FMqJv?-VtMdQoAAblxIt+!|I&Ntye*K`UZt5G{^~b#H&@Kn4!}_N`s=?`L>$%ka zbcNN`D?EFAxj_BJgWg4v57Eu5PaYS_A3Yg7s7JNt>67^Ko^~|lxVaqKuP@3&EKMUU zRDWjBc}KgF;g3DvdS5MgZE@aH%~$SbFE!{u;PP_k9gqITod**USA6ed%Ic*ZE}%aFM4TGj{LSt32*DPk;E?m$m)5!Yc@_k{XGjmk$|7-Peor z&5Po^nE!tf zA&?FT00MvjAOHve0)PM@00;mAfB+x>2z>Pk+^dUlyYbs6jlb3S8;$>@@s}IFQy+j2 zAOHve0)PM@00;mAfB+x>2mk_r03ZMe{DKI)d;9FOl zeitgevj67U*~$CwAATm_@RJ7jZq`Q+4oAmt_kZU`efYuQ@bY&E-ab7$dGMX%&zRId z8B_n%R8k%0|0i$#f{Fyx0s?>lAOHve0)PM@00;mAfB+x>2mk_rz%K;>u>Sv-q8fk^ zfB+x>2mk_r03ZMe00MvjAOHve0)W6Tl)z#B|61ejN#n0J{^iDx8~;2mk_r03h&nB=9RYo2Mv@Vh{pDF#Qn5AH&#V6#tZhQ5r^G zyPga`#;L~y{wYE*G=tuGE}43W!jED2F+zVzVgwD-x34E7k8$KNf__S11VWIvt|cSP zW4u;CdSC90*k?o5Znsnktl zcAD{v+~ov3YBeifC^vEk!DwT?@7hDQoh`)Cnzk0$y2!15j~=FB=-AywA8sWRg2j8I zWy;Wtd6n+_U25LWlI}#GSKUg9c1hN$IF=KT-X;}Tyx$SJtj}iKmb6GjZ7)qH^HvgY z3oL2&n|?q}p?0LTgLTJStU5&L8*VnXLt|)&t#G~T8rCAGg=Kf{P9j92{Z_lMs3uqS z_;%*xTsbefJl({!na@^HyYP!N9MGED$VwILw9#tQCc(KP?Qy7W9bIf6lRF8J%*R|NJf-h&Xnj; zM(zirT_(10Z>Uk+kPux*gw(*|^)5p11lyQdV|-w8XSgNllQYFSHOnn9nL=9?Zt$i4(Ym?8t_;@YWN{S4diK z_e7}`bvqCgsYyG>r7@%LJQ*i@YcgGpHc38%%s!;GTO@{{&)JE{19vX-aMyGy0@AJ7 zXteB4A0x3#FYw3ot}AiEpd)NbVwkSib)g1hYa$Vmm7Iv@rXJ7~WooGh@3jcd;PF)gAr*sh*WOt@ zvb|1Zijg$UltU{Ug_@yl0~czMTrEG7v@q;1crj*)xRTp_Jw_9_*TuuW6ijn(w{bXB z;yG!WDbwa)VMpEOBBL$BbRc6Xm|}0gC3;j8<<7`i6#ath${W70@p!|m+I@fG$X39t zwmiipYp*i0;U*3$eCBqHvOgcpLr#=PndR8obhRL+^i0u*%XN)VM z8kOsECl7{8-=U4s0D^Iwr1w~nIi}vV^6knAjjl1N$1*;udvAtU%MldK=O(RgJ3D!c zjpDFtp+$(zXMH7->_BbeoV|r7iw-@rsmYeogqBStxrtGt(RQP5a%>HAn)-?)=yKqyab#pEDYs$vT5Gs6h4|4MH;=6$F5E~j>BOw`r0@xb z$m}#JoE>7U$~U=rDTh05IN)P3f`dURxxS&tPN&)J!TwOFpv!h5FvE6Sha~$n?rr+;o(GnrySf%xG%(oe>8BJSj zS{}3$AsqJ8P)fUw5OUK}Bu8sYaA#ds(K%{s!b8KKjt6#OJF9Ip=;euBBnAzK#hNb5 z48aC|*{fn7Ci-Qvph+*5bgVNl(|D$}*JRZjMN@XL)&~29qhJeI@&~L1Mnr{ zq0;K~O?=X17!=c6Sc~qJP%~(a2g2;w8YKHM+7ZT_R=2+)*`0>%oE$*0+9m>%ZiyHr z?JC2?D!y9asr!6uxH@C}(cK$$Yxtn)RC|xHy)<^nElOEhg>FmOrcoPr%EZ(2XJf-= ze;6B}7L*NykXhTUnVTuH9igb`prqi^Gj%_+#{+Cwc?yP>T9==!ux7y!<2|+a0R0@_tM4p#g;=poNhM2pooZ(K8 zc2*|PE0J|ICs&5+uxy)17d7-i6Qf~7L+rYR>7v(0;<|v4H|t33T;TFKKa9|F!V%d# zQks^~%T@zyN}vSa$>)CEC`{Kj)yaTNvAtv~#l9KrP}vw3zjMeJ-p7&q-*7Z+QU7Mq0POBFPiPes z|G~-aKe)U2;wQ_-?|!k&PbtxO@>6C2;(!1k00;mAKQ)2Z|9|bD`N=!CZt?#T*2GBP z3lnFb?32Qy(2YfSd#u#lZG^{On!v}$9(fT=Vs9fVc51i~F=3QN)kc~6*^0N@&C#%* zrAr-ZH>q~Jp0Z372yYb;R{Ja>k99lAoc1Jn$}9_?!pA<11yq?%Tiu?9C28EIi!o8D zdNkfFH@PT^EpJz{Q%D?n)^J$x!`vOiB`0%hzHF{=(nfuGGZ2JU+vHqZ_vy02HrNV* zwwwJ>HCOYXoowo9_i~53UAJ^QEtHvW2$%FH{r*7f8);t7w~I9&r(&yiGgP{Onw*`N zzSxKNWk#x_`O06y3yy6O8$3e_J4B1gp3fSNVMR_11aq3r z&2WjLqb$O1I)w%UVzcugm2QeKld*7F8P-bU)gDZiohUK3M1;(jd%m~YBZ)m9 z`3PFv3L(& zhUQ@9Z-w4qv#dI8YS)2NWm^^w<=B$DG4O4$Vy8(#a-K&CMU>JZW0LE1K47q})f+^d zEmH_Fkr#A#kO~QfjOP3(nHk-H!*nx6iC)hc7YLQF$#6NJ&wO`C6Re=lM5wc)JDR1( zYsaz|W_$1O6^oNij>NXQ>0?qjg2$CuI|OjDKXLk_v0qACNYjXvRXi+lj5H1X(9Zl} zFa6_nrRMFenwN@U=VK+I=Wam~<+RWI?3!SwxTmMX@klx&KY>6rd(ghA^>!P6p!NE~8? zO&?k+J1Sd`@{TKbINw?l>S|L#J6+u2t=^KITC&qDmh}di%m%}iIM1WFo99c$(0VX| z;Q1&N+QaU=GEHsQ_uyG1IH4pHXtv}$ zDuZ`=OV|`PaO$92KTkgziW==hE zTX#3vr0-c_tQV%Uhw>IeQT*>C$XlR&&GmsoRa`$Mvx^_#P7 zKIf|0NON&|6v%kI@VjxWq4R98S@`|5%g?YPr`P%{ERn@@G*~Ux9+HeKxMk+8B9Bt5 z+}Yl!x1P$#u7dRLa_E@Me8R2hr5)wsgrp-YNF%9?+U+=LPh=vVL(U>kq(ENlgwR}) zQP%ND9wigah3w798cdd>VJWO+Y6KG9gD`u z?`Kd1IXK}haB?@8LbY?Fo_o_1&ZL*-)Mf`bBD6Vcn2Zq=(jkH!j%zPW)9aLMWU_6k zwVIK!!}K}}*{V8}&`wcpx3ou-1?z8@fubWz!hmb9ZCmq7rzGLFYi=oTSA_D20jiQLMg>oO~1x&#E z5st6PNY$6Pf$WWaodxHW-V&WGQmt6&q?_+$vXTbKs6F0y)xBWKUEQfmsUxfg%@$Kq z7ndRm!!1G+^PLX)HYKD;BH_Unsfq%oCYDagA--BNv*ox~^gK724wlt+*hIgYnuY-u2nRVb#mrN>>i+4H@n2Qijo)Z{d_H5>L(&f2sFn_-i8nr)u!wtG}k zJCf!WwISOxj0i2py}66y5Z^VruNWmEi5&5nx+;VMQ_2CUGF2~F?NPs<26U-6sbMD>_AjP-*ua7J6brJfB$E(Ty|rbLyLNjhp!I{Y%tebNLFTX+u;GrKjiPqBE9*H#B<)gr4wgjjjhDx_;FvuEl(cvLwsiR4WU0?Yi*o$xT-Uc zx9U=4n|e{t5wy;7W6q3G%TDGfPCy6>Ydjhm<#^g>tiZ^lCYokrUZZ1}TMJQX2V(uy z#w|5$EOD&onWI%OUGRb*b*4LU?#$+DAEzg)G`A}%=_QjTK3~VX;l>PyNzg?QzU!_R z5V_35na@?;G8I`8CT41C^`KD;a?pa6Hc-28^M2J~NPPfpt8Yl}lXbOT3PF2h1`ox`nD0V*P(5_B!|qrPxUi z#u3UaB6J`Tn`At2R@AcS%}j4)BkKWYTR0`C>z!I)30kfLflk~~LX5)rIZIUfV-r)oscCj7uhJW_asSlBi2aYLCmg-mEyk zXd$gIn?|GkG)J}zolHv>^%+0y5Idy3N+F(9Mw>M~EcKY!%IF}r?6B7%VJ~M0v_rtI zY4Xa{T!|(WD#p;j`J`euD@T|$6b|Y zcldB_t`@Aoih=451ZNnu-Suo_DoKI%)}u~`tC*(T$;WZ8T8>jBZ@MT|hp2ouPNosf z$}zz@2@!AwM21~rB|$X3b;gc5T=n9Gig?-Bm=8RHaddOw?0G(2k0WR@+*mEDJMsHH z%2xEM5994*;PK&5PiSO7DE)f2$mLzHgnN$HaVJ$eNZJ8asoSN*x43*UqL9hPTvu_{ zTfkbrnQr`$^3DDbuLD){7BaA{R=hS>DhHWqz1GELgF$D&N1|o3LwY)Nbd1+p;)n{8 zF1ejC!kC%E!*o22_tl(fQX6}_9oU3JE)8=N=X*^YcgR7#(nFHA8?Kbm5sHTpXLV>x zqz5Frpz{?y3Qfb;q+#ExWA3z%Y6Ep`)lEE}O)_RFHN#yvCT5`~&L&bdUb|^~q%A!j zLL4Dm7l_yw5o~Kscx*-J5VIWA59n&vtXIkOtqRc%0im;$hjT|aaJ=MuZhzE9?bwZF z$uVTVt95;07i<@EYi4+KLacHs?aw?{(*;$?GjYAQ!&Rj zWxc5^)#DV*=;*6W;AA2#X++G73F%(|3bCBw)!> zoC!#VPEFCt)t1n~kcGiwT2ij)H9M6iMdHx%2Bna#!BO@`!!@_4*9du;xbzFJkQW1| znQYKu*;e{vis$>HMs1`06=ZI1g`Mz?L&ZidawwXo(G!SsHX(Nl+7D7k_4dzPOo2)?&qWi>&DSP$n+ zE9k(IH^^lII%uqTYzF0_{ge^WavjkK_{&9p1P z1!*}hrO+HR?&3wgh6Nk&{X`?lC{%pTXroHW+O|g}lZ`Cb-Y{%7nU&H`r6favL~EpV zT2k#ATny`;%d#C-*W5+BGo+=iu^Y`rvc89|y52}G7owunz&O~Pi9Y4|%0AxEJkvsP zeMIb*Om9EssA99g)PTqhW`>r{j)i>8l*uijj zI$z>4zlt*+OdoWb{QBQY_$(3J;IlI1W{rBbb_|h zf?D|aFthp-vRnIs28;I8m!_Poi>o#5wIdlCsB(K0_Ru+lZo3dipC(|Q$;+t9@K zBv;PTK{bnU*J~~|kv@&7xVh}|r57U1sZtNCebsLLND&djKH{=|x?tBvn+--CK2J890->JX zX$DXxO!O(%Ox+H>l2+@E)=NA4a!2g_DQu)lAnm!G$Dhal1NHGTE5dH+Zj0r@wA939 zMkL8q;aovFHEG>d$r zVzsRp<$I5>ogiCNn`3-`9Ckf%>@Qj|g?a_=x5Hi64&gB2kpfRLqZ1KzOmTq8D>zQJ zW26bg4l-HE98bt?1a;<<^`cj=EB3nn4sCCA&EBa*H5o2f<;EPB2IO|Be76q=zEBG5 z%Aeb|UaoudhzjZev%6sCc)Ut5xtVg?oT%fD3nMdnTJHCD=#H%PED`7Xi7=uAwT;60 zcGMFl9ZefKzGK1~*&FUcm0D^enskTcn%)nsdI2`P+IhpJ$sN{HQ=~Mo%kfA^AUVPu zi_J8A$fLsnW;Qd8H|KOjcREtewcujg+Kbyj+n4af?9?kQqxoL#)14#>;Ye&!;yBl| zPB!Za!j|JUt71@lyHZ(}x^uGJjyhHg&6-OavY`PrqG?Yj5pg+f%6oww$NOopg!Tqh zKqJI)&|X=;im_PD5yWdLxT%^+XR&0)ON=gig*V(fS>)L>N?7Xsgkl62SJ`^nN!#71 zpONjAvEo#wrzQDdLs-&8?N}33$9Y`I@bx^#x=RGA;*NzZ$yiw|_%fl`4;jiWz7d$k-6Zpcgp&xaV_05%BBU`GToaGw*ECZD*;VRn@2Z%e0vXBVvMK zm~7Ymf+Ve}*Il_Qx~$g^L`hTH+8sFj?kRIn$tL`7lrUMb=cC!K4l)M?w@r^o@=8RbTI~JztiAL_A z;}V_*9^n^egdmI?#O>?eD=_TAEUG2Dz2 z$J|ZL<+$at9u}f;yyPb7en?>R(OxAx)-)W6$-1he+eOpt!Q3K?$bP8q;JQr@+5>N4 zqw2a|T~fQ5+wrKSqq@ZG?8Hk(ZkqTK!fqBuK#$YJLmW#Uk6g~Ivo0e{M2Q?1)|5Ap z*7)3MO3OLk_WJd*cOmA=NDCZ9XNykGucVey6a#u9%sgqJEzLOS8I!Tu%`w^(;r?LD z7^TgTxZ!LjCKtv{9Gaj??M5twRUu-*KAm3%)W#XL>Q-AaiI>^rlM} z7l)SF&d}|;5SH*{P8B9C2z#nrMO~wn&t?uUM2=9^Z8Dkb;L2h+~~8YS%?3%_MqP!uqaxNW`tuw zIpps4IA!@vVbR?JV^U?Fq*glT40f@@HnUEEkGTGDp!j*UNU)KF1UkDyw_BLEb}Y0S zw)S?}%6IAjMw-^9XSXXI?esND+=mckWlD1iyS2}FC`BVqpDg7GuCJ0+JBM(3x{|7V zTkhcfOrWt;oOXPvsr9v7B082kxa+? zDm;u@Z1v{aQp0h~*mPG~;wx;{%>9;?C}cBog_h=Xov@Nd^Km+D)^7rroOE$6cWEw*WYGVUPjZc59022v)Q zAeJb6-8?vjx+C(j@5N@5?$Wy4N9)Cd94U8q_OAAI8HHN#TW6z9$}BK>sJ>ml@{0}r EKjHALuK)l5 diff --git a/backend/django/seatstock_django/django_mongo/views.py b/backend/django/seatstock_django/django_mongo/views.py index a947aeb..4330f54 100644 --- a/backend/django/seatstock_django/django_mongo/views.py +++ b/backend/django/seatstock_django/django_mongo/views.py @@ -1,6 +1,90 @@ -from django.shortcuts import render +#from django.shortcuts import render +#from django.http import HttpResponse # Create your views here. +#def index(request): +# return HttpResponse("

Hello and welcome to my first Django App project!

") + + +import json +from authlib.integrations.django_client import OAuth +from django.conf import settings +from django.shortcuts import redirect, render, redirect +from django.urls import reverse +from urllib.parse import quote_plus, urlencode +import os + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +from dotenv import load_dotenv, find_dotenv + + + +# Password validation +# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators + +ENV_FILE = find_dotenv() +if ENV_FILE: + load_dotenv(ENV_FILE) + +MONGO_DB_USERNAME = os.environ.get("MONGO_DB_USERNAME") +MONGO_DB_PASSWORD = os.environ.get("MONGO_DB_PASSWORD") +MONGO_DB_HOST = os.environ.get("MONGO_DB_HOST") + +#uri = 'mongodb+srv://'+MONGO_DB_USERNAME+':'+MONGO_DB_PASSWORD+'@'+MONGO_DB_HOST+'/?retryWrites=true&w=majority' +#client = MongoClient(uri) + +# Send a ping to confirm a successful connection +#try: +# client.admin.command('ping') +# print("Pinged your deployment. You successfully connected to MongoDB!") +#except Exception as e: +# print(e) + +# AUTH0 +oauth = OAuth() + +oauth.register( + "auth0", + client_id=settings.AUTH0_CLIENT_ID, + client_secret=settings.AUTH0_CLIENT_SECRET, + client_kwargs={ + "scope": "openid profile email", + }, + server_metadata_url=f"https://{settings.AUTH0_DOMAIN}/.well-known/openid-configuration", +) + +def login(request): + return oauth.auth0.authorize_redirect( + request, request.build_absolute_uri(reverse("callback")) + ) + +def callback(request): + token = oauth.auth0.authorize_access_token(request) + request.session["user"] = token + return redirect(request.build_absolute_uri(reverse("index"))) + +def logout(request): + request.session.clear() + + return redirect( + f"https://{settings.AUTH0_DOMAIN}/v2/logout?" + + urlencode( + { + "returnTo": request.build_absolute_uri(reverse("index")), + "client_id": settings.AUTH0_CLIENT_ID, + }, + quote_via=quote_plus, + ), + ) + def index(request): - return HttpResponse("

Hello and welcome to my first Django App project!

") + return render( + request, + "index.html", + context={ + "session": request.session.get("user"), + "pretty": json.dumps(request.session.get("user"), indent=4), + }, + ) diff --git a/backend/django/seatstock_django/seatstock_django/settings.py b/backend/django/seatstock_django/seatstock_django/settings.py index 8a1563a..00525d2 100644 --- a/backend/django/seatstock_django/seatstock_django/settings.py +++ b/backend/django/seatstock_django/seatstock_django/settings.py @@ -14,6 +14,24 @@ import os from pathlib import Path from dotenv import load_dotenv, find_dotenv +# Needed to use mongodb as default 'DATABASES' +#import mongoengine, djongo +#from pymongo.mongo_client import MongoClient +#from pymongo.server_api import ServerApi + +ENV_FILE = find_dotenv() +if ENV_FILE: + load_dotenv(ENV_FILE) + +#MONGO_DB_USERNAME = os.environ.get("MONGO_DB_USERNAME") +#MONGO_DB_PASSWORD = os.environ.get("MONGO_DB_PASSWORD") +#MONGO_DB_HOST = os.environ.get("MONGO_DB_HOST") + +#uri = 'mongodb+srv://'+MONGO_DB_USERNAME+':'+MONGO_DB_PASSWORD+'@'+MONGO_DB_HOST+'/?retryWrites=true&w=majority' +#mongoengine.connect(db="default", host=uri) +#client = MongoClient(uri) + + # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -33,7 +51,7 @@ ALLOWED_HOSTS = ['docker-django', 'localhost', 'seatstock.duckdns.org'] # Application definition INSTALLED_APPS = [ - 'djangoapp', + 'django_mongo', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', @@ -88,9 +106,35 @@ WSGI_APPLICATION = 'seatstock_django.wsgi.application' #} -ENV_FILE = find_dotenv() -if ENV_FILE: - load_dotenv(ENV_FILE) +#DATABASES = { +# 'default': { +# 'ENGINE' : 'djongo', +# 'NAME' : 'seatstock', +# 'ENFORCE_SCHEMA': False, +# 'CLIENT': { +# 'host': "mongodb+srv://seatstock:3MSiYdBhf43gPvBa@cluster0.7s1vitu.mongodb.net/?retryWrites=true&w=majority" +# } +# } +#} + +DB_NAME = os.environ.get("DB_NAME") +DB_USER = os.environ.get("DB_USER") +DB_PASSWORD = os.environ.get("DB_PASSWORD") +DB_HOST = os.environ.get("DB_HOST") +DB_PORT = os.environ.get("DB_PORT") + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': DB_NAME, + 'USER': DB_USER, + 'PASSWORD': DB_PASSWORD, + 'HOST': DB_HOST, + 'PORT': DB_PORT + } +} + + # Password validation # https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators diff --git a/backend/django/seatstock_django/seatstock_django/urls.py b/backend/django/seatstock_django/seatstock_django/urls.py index 9515160..05a1f6f 100644 --- a/backend/django/seatstock_django/seatstock_django/urls.py +++ b/backend/django/seatstock_django/seatstock_django/urls.py @@ -21,8 +21,8 @@ from . import views urlpatterns = [ path('admin/', admin.site.urls), - path("",include('django_mongo.urls')), -# path("", views.index, name="index"), +# path("",include('django_mongo.urls')), + path("", views.index, name="index"), path("login", views.login, name="login"), path("logout", views.logout, name="logout"), path("callback", views.callback, name="callback"), diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 7a7790b..441fb5e 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -15,15 +15,34 @@ services: image: docker-django container_name: seatstock-django restart: unless-stopped - ports: - - "8000:8000" +# ports: +# - "8000:8000" volumes: - ../backend/django:/home/app/webapp -# - ../frontend/templates:/home/app/webapp/seatstock_django/seatstock_django/templates -# - ../frontend/static:/home/app/webapp/seatstock_django/seatstock_django/static + - ../frontend/templates:/home/app/webapp/seatstock_django/seatstock_django/templates + - ../frontend/static:/home/app/webapp/seatstock_django/seatstock_django/static - ../frontend/templates:/home/app/webapp/seatstock_django/django_mongo/templates - ../frontend/static:/home/app/webapp/seatstock_django/django_mongo/static environment: - AUTH0_DOMAIN=${AUTH0_DOMAIN} - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID} - AUTH0_CLIENT_SECRET=${AUTH0_CLIENT_SECRET} + - MONGO_DB_USERNAME=${MONGO_DB_USERNAME} + - MONGO_DB_PASSWORD=${MONGO_DB_PASSWORD} + - MONGO_DB_HOST=${MONGO_DB_HOST} + - DB_NAME=${DB_NAME} + - DB_USER=${DB_USER} + - DB_PASSWORD=${DB_PASSWORD} + - DB_HOST=${DB_HOST} + - DB_PORT=${DB_PORT} + + postgres: + image: postgres:latest + container_name: seatstock-postgres + restart: unless-stopped + volumes: + - ./volumes/postgresql:/var/lib/postgresql/data + environment: + - POSTGRES_PASSWORD=${DB_PASSWORD} + - POSTGRES_USER=${DB_USER} + - POSTGRES_DB=${DB_NAME}