From 5c7cab815d4a4ee46b746a4ef43f0a29ebf13e14 Mon Sep 17 00:00:00 2001 From: Songyi Huang Date: Fri, 18 Dec 2020 11:10:48 -0800 Subject: [PATCH] clean code / reorganize doc structure --- README.md | 8 +- {imgs => docs/imgs}/doudizhu-replay.png | Bin {imgs => docs/imgs}/leaderboards.png | Bin {imgs => docs/imgs}/leduc-replay.png | Bin {imgs => docs/imgs}/upload.png | Bin leaderboard/README | 13 -- leaderboard/db.sqlite3 | Bin 172032 -> 0 bytes leaderboard/leaderboard/__init__.py | 0 leaderboard/leaderboard/admin.py | 3 - leaderboard/leaderboard/apps.py | 5 - .../leaderboard/migrations/0001_initial.py | 42 ------ .../migrations/0002_remove_agent_game.py | 17 --- .../migrations/0003_auto_20200219_2352.py | 18 --- .../migrations/0004_auto_20200220_0006.py | 35 ----- .../leaderboard/migrations/0005_agent_game.py | 34 ----- .../migrations/0006_auto_20200220_2208.py | 26 ---- .../leaderboard/migrations/0007_agent_rank.py | 18 --- .../migrations/0008_auto_20200221_2307.py | 18 --- .../migrations/0009_auto_20200224_0216.py | 67 --------- .../migrations/0010_auto_20200224_2034.py | 38 ----- .../migrations/0011_auto_20200225_0146.py | 34 ----- .../leaderboard/migrations/__init__.py | 0 leaderboard/leaderboard/models.py | 30 ---- .../leaderboard/static/leaderboard/main.css | 84 ----------- .../templates/leaderboard/about.html | 22 --- .../templates/leaderboard/base.html | 85 ------------ .../templates/leaderboard/blackjack.html | 36 ----- .../templates/leaderboard/cfr.html | 33 ----- .../templates/leaderboard/doudizhu.html | 36 ----- .../templates/leaderboard/dqn.html | 33 ----- .../leaderboard/getting_started.html | 22 --- .../templates/leaderboard/home.html | 22 --- .../templates/leaderboard/leducholdem.html | 31 ----- .../templates/leaderboard/limitholdem.html | 36 ----- .../templates/leaderboard/mahjong.html | 36 ----- .../templates/leaderboard/nfsp.html | 33 ----- .../templates/leaderboard/nolimitholdem.html | 36 ----- .../templates/leaderboard/uno.html | 36 ----- leaderboard/leaderboard/tests.py | 3 - leaderboard/leaderboard/urls.py | 18 --- leaderboard/leaderboard/views.py | 69 ---------- leaderboard/manage.py | 21 --- leaderboard/media/RLCard.jpg | Bin 111816 -> 0 bytes leaderboard/media/RLCard.png | Bin 7446 -> 0 bytes leaderboard/media/default.jpg | Bin 4687 -> 0 bytes leaderboard/media/profile_pics/default.jpg | Bin 17165 -> 0 bytes .../media/profile_pics/default_cqLOpRI.jpg | Bin 4687 -> 0 bytes leaderboard/research_env/__init__.py | 0 leaderboard/research_env/settings.py | 130 ------------------ leaderboard/research_env/urls.py | 35 ----- leaderboard/research_env/wsgi.py | 16 --- leaderboard/tests.py | 118 ---------------- leaderboard/updateDataBase.py | 126 ----------------- leaderboard/users/__init__.py | 0 leaderboard/users/admin.py | 4 - leaderboard/users/apps.py | 8 -- leaderboard/users/forms.py | 26 ---- leaderboard/users/migrations/0001_initial.py | 25 ---- leaderboard/users/migrations/__init__.py | 0 leaderboard/users/models.py | 21 --- leaderboard/users/signals.py | 15 -- leaderboard/users/templates/users/login.html | 25 ---- leaderboard/users/templates/users/logout.html | 13 -- .../users/templates/users/profile.html | 28 ---- .../users/templates/users/register.html | 25 ---- leaderboard/users/tests.py | 3 - leaderboard/users/views.py | 42 ------ 67 files changed, 4 insertions(+), 1754 deletions(-) rename {imgs => docs/imgs}/doudizhu-replay.png (100%) rename {imgs => docs/imgs}/leaderboards.png (100%) rename {imgs => docs/imgs}/leduc-replay.png (100%) rename {imgs => docs/imgs}/upload.png (100%) delete mode 100644 leaderboard/README delete mode 100644 leaderboard/db.sqlite3 delete mode 100644 leaderboard/leaderboard/__init__.py delete mode 100644 leaderboard/leaderboard/admin.py delete mode 100644 leaderboard/leaderboard/apps.py delete mode 100644 leaderboard/leaderboard/migrations/0001_initial.py delete mode 100644 leaderboard/leaderboard/migrations/0002_remove_agent_game.py delete mode 100644 leaderboard/leaderboard/migrations/0003_auto_20200219_2352.py delete mode 100644 leaderboard/leaderboard/migrations/0004_auto_20200220_0006.py delete mode 100644 leaderboard/leaderboard/migrations/0005_agent_game.py delete mode 100644 leaderboard/leaderboard/migrations/0006_auto_20200220_2208.py delete mode 100644 leaderboard/leaderboard/migrations/0007_agent_rank.py delete mode 100644 leaderboard/leaderboard/migrations/0008_auto_20200221_2307.py delete mode 100644 leaderboard/leaderboard/migrations/0009_auto_20200224_0216.py delete mode 100644 leaderboard/leaderboard/migrations/0010_auto_20200224_2034.py delete mode 100644 leaderboard/leaderboard/migrations/0011_auto_20200225_0146.py delete mode 100644 leaderboard/leaderboard/migrations/__init__.py delete mode 100644 leaderboard/leaderboard/models.py delete mode 100644 leaderboard/leaderboard/static/leaderboard/main.css delete mode 100644 leaderboard/leaderboard/templates/leaderboard/about.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/base.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/blackjack.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/cfr.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/doudizhu.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/dqn.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/getting_started.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/home.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/leducholdem.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/limitholdem.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/mahjong.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/nfsp.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/nolimitholdem.html delete mode 100644 leaderboard/leaderboard/templates/leaderboard/uno.html delete mode 100644 leaderboard/leaderboard/tests.py delete mode 100644 leaderboard/leaderboard/urls.py delete mode 100644 leaderboard/leaderboard/views.py delete mode 100755 leaderboard/manage.py delete mode 100644 leaderboard/media/RLCard.jpg delete mode 100644 leaderboard/media/RLCard.png delete mode 100644 leaderboard/media/default.jpg delete mode 100644 leaderboard/media/profile_pics/default.jpg delete mode 100644 leaderboard/media/profile_pics/default_cqLOpRI.jpg delete mode 100644 leaderboard/research_env/__init__.py delete mode 100644 leaderboard/research_env/settings.py delete mode 100644 leaderboard/research_env/urls.py delete mode 100644 leaderboard/research_env/wsgi.py delete mode 100644 leaderboard/tests.py delete mode 100644 leaderboard/updateDataBase.py delete mode 100644 leaderboard/users/__init__.py delete mode 100644 leaderboard/users/admin.py delete mode 100644 leaderboard/users/apps.py delete mode 100644 leaderboard/users/forms.py delete mode 100644 leaderboard/users/migrations/0001_initial.py delete mode 100644 leaderboard/users/migrations/__init__.py delete mode 100644 leaderboard/users/models.py delete mode 100644 leaderboard/users/signals.py delete mode 100644 leaderboard/users/templates/users/login.html delete mode 100644 leaderboard/users/templates/users/logout.html delete mode 100644 leaderboard/users/templates/users/profile.html delete mode 100644 leaderboard/users/templates/users/register.html delete mode 100644 leaderboard/users/tests.py delete mode 100644 leaderboard/users/views.py diff --git a/README.md b/README.md index eaa1e0b..858f0a2 100644 --- a/README.md +++ b/README.md @@ -67,10 +67,10 @@ The frontend will be started in port 3000 in localhost by default. You can view More documentation can be found [here](docs/api.md). ### Demos -![leaderboards](https://github.com/datamllab/rlcard-showdown/blob/master/imgs/leaderboards.png?raw=true) -![upload](https://github.com/datamllab/rlcard-showdown/blob/master/imgs/upload.png?raw=true) -![doudizhu-replay](https://github.com/datamllab/rlcard-showdown/blob/master/imgs/doudizhu-replay.png?raw=true) -![leduc-replay](https://github.com/datamllab/rlcard-showdown/blob/master/imgs/leduc-replay.png?raw=true) +![leaderboards](https://github.com/datamllab/rlcard-showdown/blob/master/docs/imgs/leaderboards.png?raw=true) +![upload](https://github.com/datamllab/rlcard-showdown/blob/master/docs/imgs/upload.png?raw=true) +![doudizhu-replay](https://github.com/datamllab/rlcard-showdown/blob/master/docs/imgs/doudizhu-replay.png?raw=true) +![leduc-replay](https://github.com/datamllab/rlcard-showdown/blob/master/docs/imgs/leduc-replay.png?raw=true) ### Contact Us If you have any questions or feedback, feel free to drop an email to [Songyi Huang](mailto:songyih@sfu.ca) for the frontend or [Daochen Zha](http://dczha.com/) for backend. diff --git a/imgs/doudizhu-replay.png b/docs/imgs/doudizhu-replay.png similarity index 100% rename from imgs/doudizhu-replay.png rename to docs/imgs/doudizhu-replay.png diff --git a/imgs/leaderboards.png b/docs/imgs/leaderboards.png similarity index 100% rename from imgs/leaderboards.png rename to docs/imgs/leaderboards.png diff --git a/imgs/leduc-replay.png b/docs/imgs/leduc-replay.png similarity index 100% rename from imgs/leduc-replay.png rename to docs/imgs/leduc-replay.png diff --git a/imgs/upload.png b/docs/imgs/upload.png similarity index 100% rename from imgs/upload.png rename to docs/imgs/upload.png diff --git a/leaderboard/README b/leaderboard/README deleted file mode 100644 index 1475a87..0000000 --- a/leaderboard/README +++ /dev/null @@ -1,13 +0,0 @@ -To run the leaderboard server: - -Make sure Django is installed: -- pip install django - -Make sure rlcard is installed: -- git clone https://github.com/datamllab/rlcard.git -- cd rlcard -- pip install -e . - -Run server: -(Make sure you are in the same folder as manage.py) -- python3 manage.py runserver diff --git a/leaderboard/db.sqlite3 b/leaderboard/db.sqlite3 deleted file mode 100644 index 1a9fb87ef80396647aa808fd7e92362f75ad6f77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172032 zcmeI532!fP`Zae@F2PKVWG@2U!n3})Q-GBf6_t)Kz>VA#)E}T1^uj%2Xa;2!%!m_2$!f}=- z!eNWW@&f$-CgXn_guey<^YDM;!!^F#A$-9yb@&B4C~)M*R4r5w?oa}=kN^@u0!RP} zAOR$R1dsp{Kmter2_S)2nLse?2a9`MZ?TX+AnzqPG936?;GYMc^#7y()BX*=;`^5G z1HMbXe(&?%_j^~og6BogZ+KQblkV@hf6HBPM_hmF`nOORKS%%xAOR$R1dsp{FcC=Z zwOd9XOBQr3r&ls%t&$T2QA%s;wQ^b#BteKmOi(3-Mka;mq$q_2bw*NVWMwKYDbaW| zIn=|1Xfh#5YFZGLXx)S~DXC#WoKd1PVtgtgL?ua1?&)DdXfvUJJF?*gm{7u!04~g^ z(v%ukVzQjv-EBfhbeIq%vE_vl7Ni+5I-^FXL^&!&qsd2mn25KT5Yv(@#F`B;nGh0+ zBnpW~z{Es5P9c`omi1CCUC~O{dKQf<2|-Hk>QQ^Nt#%XaH) zVlgE;02anNEQslRDPPNLh4z}|=!_&!DX}<=AYq5y5*kacSM^F2nrSK_CMHF3QiL%p z%&4&$1xm?Qvw3f@I^-85&Nf!Y)%%^J4*1i7(gN;UC3ow^jHkxe8Yqg#YiNzCfRXpMX3yr=OU@EmN=tV7GxJzHhVxkz0pKyYa z%Z;YMrJWgRjkSB}?3k)3s&c|%w~QT6nlVy}jp=Emrzu}%v=^F~0#{&l&JME;e99H` zB`_hUfhY7#Ws~)@maV~zN-q_(<#cwXoX_^|?3kzsikRfV6i_xyNi9>2s|Nj32E(V9 zH_-%4eMzvfx!*9+J@-wMFsjDXcw*WLOvf5b?_59;RV5MQ0Nq$8x;qyX6)B$ZllNOZ zWWY+kO`ag1CO623$2_OL^fCP{L5{@-DR=rE18*8lw+R65kQ{-^i<5BWY}A>V_$|6d>AcmQJmtl-0?W-plrdZNm)({sp#NtCt#mUSV>&iXM0jFWeNZegdG)x(Zk20^E z)R>X-2s7tk=8To;E>_ZEm@^VX^+dy*k+_qYb5L_eN^mF7O>%Z-&a{pl+{JSuXE#im zG6w1yhFMd_jv&uXaCU0il-kc=@XS125%)0%c*8DDA@vl)AWaFdUgfDJwuolkU}GlO zGTO%o*bEyi$y-k{jIbmRtJy}ausGcF2mh?hOl$e=3h~@DXEkiK(w+5m!(c1j!KhlP z)mEZ?2k#!|nB~Sje14F3PjH6WMxu=+8a5k=);``n#)e%Zh2HuWqi#b>+rtp{fb$ zdiG{sT3Vx#%;K%wYDzj*SX@o5E*6g!t}ZMq^Tn&H^9#AcnT0tyb#zfp6;lPs73UY` zg+=Ln{>;&}*jyp8lDl%gd_}%=>*|%0OWNgg`7`-Bc`m<^zakwIbH`Vfa#vD?Y$1_f zyqv0By{ulFTP^3W9$#C@6mvID7gIMfrSqHG<+=66E0+ZAh}zW4ZmOw_biR<8J-MG&CFnD0rNoRtAF3+H zq6vEc-%37dA>SaMB){;W1_;_k0!RP}AOR$R1dsp{Kmter2_OL^fCRb-jCG}SChWJ( zb9dWq;YV%r?z`Iy2_OL^fCP{L5#LR36UUUKb}d=F4hO+6T)Y{pZpDgvkpl6$9K^4^a$#t!C3)wTL^t0!Tqx#~c zB!(pzPQr{For*`rcp|P9^qchml8_Ju^H7q6Nx@V=NKA=|gc6mv_HuPcL;h*ETkbvd zZxx>`ZI+5hGgq(2_h(Net}p2)d%~sc^k^?ew_| zvnMLm*3ggAp|8egBzY<(#$+j$q^}}m;)$GA(+XOqZOF6VAgEFJC4h&#WU-MKEaY$C z`TsAHFOx672Hl5MAOR$R1dsp{Kmter2_OL^fCP{L5wMV=*ZCF`U_mdRV70Dh1F z5aAZQ9>C|w@4{OF zew+LT`S-93@ILa3liegp2yqh| z7{(70Kmter2_OL^fCP{L5ZLkYKg^dcU&E|IF`TvJK2(f-7fCP{L5qY`d00|%gB!C2v01`j~NB{{S0VMF+5Ww~SYr`39K>|ns2_OL^ zfCP{L5_m-&C`eaU^;HS7H; z+aGd&!0iE*FInE);i>mU$2&Tb?mN2G7j}luOmbUdzLe8%=2o@RayhN#iuqEyP+m^2 zSM^FdpG#-esG?`IXs5!SBj;z63$x+5)X~{1;gQbluJR+{GpTO1k?_G0qo$F_*1>(w zP#Ro1*W0CRxm43jwRCNBO=qqtnXDeyGo5wszKd(y+1cL3juIo0XWzcp8Je8retNp5 zWeR$y2c7XD!=r`dlc#5UQ^@B=!g*-lvR(={IZ4Vk^0#uT@6E zH?&H2MXMZ?1R-KB3yGy=JzdnRRc#sU*9{nMfssxiE!U~r=Vy=2o}Wz}nZ3|#tGNK} zbnq$?K1%h@GbVGXxrMpp>C=lw;_OkVr7<#E)*E2VHE8R#6*k=N*{*?Zsh};7gsVlZ zPyq7b^-?vzT+(w*4&fswW{;c#XWR52e{)!fM7BcYDQcEZ0Zz_QfcrHlJYP9p2##U4w~N?P$z$rM$jY zZO&yDrL9OPvMOYSY5pAjV?n^{Wq_PhU{{O&S#HSF(urfaUCc|DoH%2LPt?JT|PE;G4Pzd5H{9A_ss&OoQXbv^23qb`^dDVH;pNN~@^T2rE)+j76k zJn2ex_n01CO7}HMn(n>2gBdQntwynbTy*`brE9LV3f$v_fib_cd)#lucRE8^_?x@f z(fOTYs5uU`gsN*fG1D3aovM#)Hy%0_yKHt2jLrh)fgIWD8!-QCyX6n-rPg2As3uB! zE^czTt}wWro7WO}BHg=t2$I+4z4A)AvWH6ygHAYDcK z44-@aJD^LqHF57yjj2&x258gjiSRGWt}z<9eZ}VtC6nB9kF{nf>#)vVYxPWLj=#rD z?P1 ztd(n8;W*W}gLUTjT{=Xg1EPm#tn6Jo>hRlN)&!Ew)M@)7i5W*|etf&0rgtmg5JaWC zlrO;aYm1I-RTIw8_&E3M80+D-%(lpId(XDz-B+(dPthYrjiX4NgPc~-`#z&_W2x&F z1}$NDa<@D4TZ3_D=t6|sO0bKRac7|l$DZifD*fhKzM`k;E`C~5vr#D;mD^Rq28{Mo zaCa(Szlqgug*t1hYb5em%n>>h*{&bk3#Y~QxN9pKb%r7l?)JF(_KD$ByRNgnFWWPz zSB;ij(>Gf^q?pc%nUAQ!ENkckGOhd6n7NHT?v2Q*BXoRtyH>M1bM;$%V(a_9t$xKB z8Xo4himbJ*oYpte-pW?SeGS+4TR);|hEX4p5m9!8X7}B(A#7CF+d;p2pN&Y)(7t`# zKO1f}gJv*i=@(CrM$q*8YQvgVt!|Vna20LNIw{_EgR7ubYxEpw9xj-zyI63z4>~zt zO;^|9#$vttOu5{4p{1#JX9Q-J@)f9~T~#*G1Qorg*dJS{&6_3HPLon%XFXBeAJQNDwmd&SX5W) z_w-wO0i#2WO9$)dR&IJbE2f*^Ep0joItsv9nF|M;q0I^IHfi18Zx!jPAY0DqwAE=r z)G~5R)mpdqTcsR^)5fLu9)0g^`kq??ebTT1XKlvDob-P4b6jhpwEXL!xVOioX(`{= z)ak_B_1FGYJN?>hb8C{C|1kc+ZQjFe>U2TN=!J9< z`o55kMKd`$Cudm48-EMT1^Aww-$OBdN6T%00nPSle>6+dLmbR47|3&@&X6o~w-e?+ zXy%eVe6Y87eGiTM>i(90+xAM`>)zSy{{Jp=)k1zu{xA71`CIark@WchAR5+<{P+_Nn zr@}^s)n;p~|0{I;|3mV9@*VQmu=@XV@)h#Oa0cK%!OH(%llPK;LEZ(Y z0Nze+lFG|(AeKM^NB{{S0VIF~kN^@u0!RP}AOR%slSII7qsIcM427uNxs%FZkjlY9 zDhCFr+_8ho{(dU^`luv?%0Pfhzn@BxBLfuFZuq^ z_dZ|Vm+<~IsNe?)AOR$R1dsp{Kmter2_S)2lfcD(w=YJo_^cgp5~p_ z3w_jVsE1i`Mv70x6gjHK#AL3RFWtM*DMF17`8hZEDkdgHaZ*&n;HVs*Q4&+}r~)r1 zQBwNGMR@;$%-f~{ch*-EF(ED+`Vw!O^fMOQ+E*o6R3$?n)P38iONkj-nG#hc5mi+K z9jJS$dZ@p{dvQjVW&~j>8c)RH4J1$V*7F{w{#3WRIHSr_vMeVQ>23s@FQQ=GVm;!f zHsQ?yZnqhrI3q@9#Mo3qh>3C&VEAnPEjiFXS}s@ba_C%V(nXDo_ckI-Nl_8{LDp#3 zZf8PvG83Jk!4GvtrK2M%iHg`}!f8_-%=v8#$#EebZS+o~W~c3leVaDZ0WM9&)fkL| z&SG6{=C^6HAkHZ9DLE!7YKOy}CMIpvM0@uuVM(MDO%kU>IWDX4+6guzp!;uFJyd;b z*xdhhedzz_lp-slEE)RSPD|7KMcUr#0TDVh(ybRkR7dJVMB|v7o4u-)#VJ8jWI1-f z)z+(^>;FUU-?Wf#kdKjfk_?$4zQ8vFp9s7+Pzj_0Q-K}+@B9DM|55)t{0sh3-w%CX z^?lg)obN5Z$9+4!FM7Y|{jm3)-kkTSci8hI&-0!SdEVnGcusl_dHUQhy8jpq;|B>K z0VIF~kN^@u0!ZK$5ZH6bZsGQgdvE0RjdTTG19?O%g=r*ABjE|i9i8yPyR&q7Lu4br z9<6JX2W-ux91?M-NS09@AquhP9x!QX4_-b-pDs< zXBr3U8b<964Wo7%eRPb~?xD3evT5z~`{;hi8=H2s+TqQrjpniDL!7xdJ_G3%ro|8)g~Ag8`%f>W0Nk! zsiubEQe9_nUB~dJsbhG<;(LZbXWzJsy3$mjj?^veVHTXs3*)7#O+SqIf!&}J5uJu7 zCN0C4hTfxfJ;NK5p5c#?5`F~qMkk!qBa;&K$%u~ZVqQ6zSH{~on_e0510hzM!|=+a zWq8%l+gaB$yfWz-UKuIjAoI#Wy)r3LuZ-x#AZSd+?940U#cj3Cwbp<((!w-xdH|Hg z$LxlC9qNXQZ3TAJ3mATO6fk@>7l`yjfeF=49q!PkPMcNt^nvQWah`cjmyJ!BG!iC| zJ37G|t~T-wADKp=u3`Ar&@h~$(MSEDF*L?gXByem3;KPp5Aud1HdZ@(_i3|w78~(G z{@A3=sK2RUI8fK|)O8FGnmUFHEWXDLI{U_L)Q6@5b%I3>x*&H#wlXhTtLCOFt)xRv z(43B04S!l0RM&8-m3YWe*ET$BWl(Lyy;kA@J7`BlEA_FJN>!<&t(5(|-Qpe>nX~W$ zQ+Nk=WwYrjB!pSYK^tgIsD`6vJ;TkGrj=#_hEwjh_oilLGuIq4{&6s3NH{KV(Zbe_$dd z=r45OCouy2z(kZ|(S)CT&|)LcTFA5HMfeTCi+898vycE1Kmter2_OL^fCP{L5xEi6d;Rp8wexdRt82?(Uw)Z&^f`IUC}-HB zHk^HqjueN7{212%-{#2o;az_}Am4tORiHW&Kmter2_OL^fCP{L5E2V$+?lXV+*pXxBZK5oSkHT9I>RF+~-&7C3^}9d6a`arv zD$4MFh6KFMfaV3=7Y~1n=2SkKI(Ff#vZO4Da#Whsq?|CR$QgAq9*-_fDoY9aa*mu9 z(-gY?cLd&PA)h5@$xz@sflomMKS%%xAOR$R1dsp{Kmter2_OL^fCL^80m0$21jm8{ zRLCard Leaderboard: About -{% endblock title %} - -{% block header %} -About RLCard -{% endblock header %} - -{% block content %} -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nunc lobortis mattis aliquam faucibus purus. Pretium aenean pharetra magna ac placerat vestibulum lectus mauris. Lacus laoreet non curabitur gravida arcu ac tortor. Pulvinar elementum integer enim neque volutpat ac. Enim sit amet venenatis urna. Amet risus nullam eget felis. Eu consequat ac felis donec et odio pellentesque diam. Congue nisi vitae suscipit tellus mauris a diam. Tellus elementum sagittis vitae et leo duis ut diam. Id leo in vitae turpis. Metus dictum at tempor commodo ullamcorper. Turpis cursus in hac habitasse platea dictumst. Lacus viverra vitae congue eu consequat ac felis. Justo donec enim diam vulputate ut. Donec pretium vulputate sapien nec sagittis.

- -

Sit amet risus nullam eget felis eget nunc lobortis. Quam vulputate dignissim suspendisse in. Tortor posuere ac ut consequat semper. Pretium aenean pharetra magna ac placerat vestibulum. Vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt. Iaculis urna id volutpat lacus laoreet non curabitur gravida. Odio facilisis mauris sit amet massa vitae tortor condimentum. Viverra adipiscing at in tellus integer. Et egestas quis ipsum suspendisse ultrices gravida dictum fusce. Sapien pellentesque habitant morbi tristique senectus et netus et. Orci porta non pulvinar neque laoreet suspendisse interdum consectetur. Ornare suspendisse sed nisi lacus sed viverra tellus. In tellus integer feugiat scelerisque varius morbi enim nunc faucibus. Amet massa vitae tortor condimentum. Turpis tincidunt id aliquet risus.

- -

Euismod lacinia at quis risus sed vulputate odio ut. Eu consequat ac felis donec. Mattis enim ut tellus elementum sagittis vitae et leo duis. Proin libero nunc consequat interdum varius sit amet mattis. Felis eget velit aliquet sagittis id consectetur purus ut. Eget egestas purus viverra accumsan in nisl nisi scelerisque eu. Cras semper auctor neque vitae tempus quam pellentesque nec. Id porta nibh venenatis cras sed felis eget. Neque viverra justo nec ultrices dui sapien eget mi. Nunc sed id semper risus in hendrerit gravida rutrum.

- -

Orci sagittis eu volutpat odio facilisis mauris sit amet. Nisi est sit amet facilisis magna. Mi proin sed libero enim sed faucibus turpis. Magna sit amet purus gravida. A lacus vestibulum sed arcu non odio euismod. Massa tincidunt nunc pulvinar sapien et. Iaculis eu non diam phasellus vestibulum. Ultrices dui sapien eget mi proin sed. Blandit cursus risus at ultrices mi tempus imperdiet. Non arcu risus quis varius quam. Vitae congue mauris rhoncus aenean vel elit. Interdum velit laoreet id donec ultrices tincidunt arcu. Duis ultricies lacus sed turpis tincidunt id. Lacus vestibulum sed arcu non odio. Quis hendrerit dolor magna eget est. Nulla facilisi etiam dignissim diam quis enim lobortis. Placerat vestibulum lectus mauris ultrices.

- -

Amet est placerat in egestas erat imperdiet sed euismod nisi. Volutpat est velit egestas dui id ornare arcu odio ut. At lectus urna duis convallis convallis tellus. Amet purus gravida quis blandit turpis cursus in hac. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Viverra mauris in aliquam sem fringilla ut. Sed vulputate odio ut enim blandit volutpat maecenas volutpat blandit. Ultricies tristique nulla aliquet enim. Vivamus arcu felis bibendum ut tristique et egestas quis ipsum. Euismod nisi porta lorem mollis aliquam ut. Sed viverra ipsum nunc aliquet bibendum enim facilisis. Vitae proin sagittis nisl rhoncus mattis. Etiam sit amet nisl purus in mollis nunc. Amet nisl suscipit adipiscing bibendum est ultricies integer. Tincidunt vitae semper quis lectus nulla at volutpat diam. Vel elit scelerisque mauris pellentesque.

-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/base.html b/leaderboard/leaderboard/templates/leaderboard/base.html deleted file mode 100644 index 2b3736b..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/base.html +++ /dev/null @@ -1,85 +0,0 @@ -{% load static %} - - -{% block title %}{% endblock %} - - - - - - - - - - - - - - -
- - -
- -
-
- -
- -
- {% block header %}{% endblock %} -
-
- - {% block content %}{% endblock %} -
- -
- © Copyright DATA Lab at Texas A&M University
- Powered by w3.css -
- - - - - - - - \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/blackjack.html b/leaderboard/leaderboard/templates/leaderboard/blackjack.html deleted file mode 100644 index 563e32b..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/blackjack.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: Blackjack -{% endblock title %} - -{% block header %} -Blackjack Leaderboard -{% endblock header %} - -{% block content %} -
-

Currently Unavailable

-

Try Ludec Hold'em

-
- - -{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/cfr.html b/leaderboard/leaderboard/templates/leaderboard/cfr.html deleted file mode 100644 index e70b4ba..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/cfr.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: CFR -{% endblock title %} - -{% block header %} -CFR -{% endblock header %} - -{% block content %} -
- - - - - - - - - - - {% for game in games %} - - - - - - - {% endfor %} - -
Replay IDOpponentGameReplay Link
{{ game.replayID }}{{ game.agent2 }}{{ game.gameName }}{{ game.replayLink }}
-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/doudizhu.html b/leaderboard/leaderboard/templates/leaderboard/doudizhu.html deleted file mode 100644 index 8d58be7..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/doudizhu.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: Dou Dizhu -{% endblock title %} - -{% block header %} -Dou Dizhu Leaderboard -{% endblock header %} - -{% block content %} -
-

Currently Unavailable

-

Try Ludec Hold'em

-
- - -{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/dqn.html b/leaderboard/leaderboard/templates/leaderboard/dqn.html deleted file mode 100644 index 7c305cc..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/dqn.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: DQN -{% endblock title %} - -{% block header %} -DQN -{% endblock header %} - -{% block content %} -
- - - - - - - - - - - {% for game in games %} - - - - - - - {% endfor %} - -
Replay IDOpponentGameReplay Link
{{ game.replayID }}{{ game.agent2 }}{{ game.gameName }}{{ game.replayLink }}
-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/getting_started.html b/leaderboard/leaderboard/templates/leaderboard/getting_started.html deleted file mode 100644 index 6cb93f0..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/getting_started.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: Getting Started -{% endblock title %} - -{% block header %} -Getting Started -{% endblock header %} - -{% block content %} -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nunc lobortis mattis aliquam faucibus purus. Pretium aenean pharetra magna ac placerat vestibulum lectus mauris. Lacus laoreet non curabitur gravida arcu ac tortor. Pulvinar elementum integer enim neque volutpat ac. Enim sit amet venenatis urna. Amet risus nullam eget felis. Eu consequat ac felis donec et odio pellentesque diam. Congue nisi vitae suscipit tellus mauris a diam. Tellus elementum sagittis vitae et leo duis ut diam. Id leo in vitae turpis. Metus dictum at tempor commodo ullamcorper. Turpis cursus in hac habitasse platea dictumst. Lacus viverra vitae congue eu consequat ac felis. Justo donec enim diam vulputate ut. Donec pretium vulputate sapien nec sagittis.

- -

Sit amet risus nullam eget felis eget nunc lobortis. Quam vulputate dignissim suspendisse in. Tortor posuere ac ut consequat semper. Pretium aenean pharetra magna ac placerat vestibulum. Vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt. Iaculis urna id volutpat lacus laoreet non curabitur gravida. Odio facilisis mauris sit amet massa vitae tortor condimentum. Viverra adipiscing at in tellus integer. Et egestas quis ipsum suspendisse ultrices gravida dictum fusce. Sapien pellentesque habitant morbi tristique senectus et netus et. Orci porta non pulvinar neque laoreet suspendisse interdum consectetur. Ornare suspendisse sed nisi lacus sed viverra tellus. In tellus integer feugiat scelerisque varius morbi enim nunc faucibus. Amet massa vitae tortor condimentum. Turpis tincidunt id aliquet risus.

- -

Euismod lacinia at quis risus sed vulputate odio ut. Eu consequat ac felis donec. Mattis enim ut tellus elementum sagittis vitae et leo duis. Proin libero nunc consequat interdum varius sit amet mattis. Felis eget velit aliquet sagittis id consectetur purus ut. Eget egestas purus viverra accumsan in nisl nisi scelerisque eu. Cras semper auctor neque vitae tempus quam pellentesque nec. Id porta nibh venenatis cras sed felis eget. Neque viverra justo nec ultrices dui sapien eget mi. Nunc sed id semper risus in hendrerit gravida rutrum.

- -

Orci sagittis eu volutpat odio facilisis mauris sit amet. Nisi est sit amet facilisis magna. Mi proin sed libero enim sed faucibus turpis. Magna sit amet purus gravida. A lacus vestibulum sed arcu non odio euismod. Massa tincidunt nunc pulvinar sapien et. Iaculis eu non diam phasellus vestibulum. Ultrices dui sapien eget mi proin sed. Blandit cursus risus at ultrices mi tempus imperdiet. Non arcu risus quis varius quam. Vitae congue mauris rhoncus aenean vel elit. Interdum velit laoreet id donec ultrices tincidunt arcu. Duis ultricies lacus sed turpis tincidunt id. Lacus vestibulum sed arcu non odio. Quis hendrerit dolor magna eget est. Nulla facilisi etiam dignissim diam quis enim lobortis. Placerat vestibulum lectus mauris ultrices.

- -

Amet est placerat in egestas erat imperdiet sed euismod nisi. Volutpat est velit egestas dui id ornare arcu odio ut. At lectus urna duis convallis convallis tellus. Amet purus gravida quis blandit turpis cursus in hac. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Viverra mauris in aliquam sem fringilla ut. Sed vulputate odio ut enim blandit volutpat maecenas volutpat blandit. Ultricies tristique nulla aliquet enim. Vivamus arcu felis bibendum ut tristique et egestas quis ipsum. Euismod nisi porta lorem mollis aliquam ut. Sed viverra ipsum nunc aliquet bibendum enim facilisis. Vitae proin sagittis nisl rhoncus mattis. Etiam sit amet nisl purus in mollis nunc. Amet nisl suscipit adipiscing bibendum est ultricies integer. Tincidunt vitae semper quis lectus nulla at volutpat diam. Vel elit scelerisque mauris pellentesque.

-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/home.html b/leaderboard/leaderboard/templates/leaderboard/home.html deleted file mode 100644 index b5c6c67..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/home.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard -{% endblock title %} - -{% block header %} -RLCard Leaderboard -{% endblock header %} - -{% block content %} -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nunc lobortis mattis aliquam faucibus purus. Pretium aenean pharetra magna ac placerat vestibulum lectus mauris. Lacus laoreet non curabitur gravida arcu ac tortor. Pulvinar elementum integer enim neque volutpat ac. Enim sit amet venenatis urna. Amet risus nullam eget felis. Eu consequat ac felis donec et odio pellentesque diam. Congue nisi vitae suscipit tellus mauris a diam. Tellus elementum sagittis vitae et leo duis ut diam. Id leo in vitae turpis. Metus dictum at tempor commodo ullamcorper. Turpis cursus in hac habitasse platea dictumst. Lacus viverra vitae congue eu consequat ac felis. Justo donec enim diam vulputate ut. Donec pretium vulputate sapien nec sagittis.

- -

Sit amet risus nullam eget felis eget nunc lobortis. Quam vulputate dignissim suspendisse in. Tortor posuere ac ut consequat semper. Pretium aenean pharetra magna ac placerat vestibulum. Vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt. Iaculis urna id volutpat lacus laoreet non curabitur gravida. Odio facilisis mauris sit amet massa vitae tortor condimentum. Viverra adipiscing at in tellus integer. Et egestas quis ipsum suspendisse ultrices gravida dictum fusce. Sapien pellentesque habitant morbi tristique senectus et netus et. Orci porta non pulvinar neque laoreet suspendisse interdum consectetur. Ornare suspendisse sed nisi lacus sed viverra tellus. In tellus integer feugiat scelerisque varius morbi enim nunc faucibus. Amet massa vitae tortor condimentum. Turpis tincidunt id aliquet risus.

- -

Euismod lacinia at quis risus sed vulputate odio ut. Eu consequat ac felis donec. Mattis enim ut tellus elementum sagittis vitae et leo duis. Proin libero nunc consequat interdum varius sit amet mattis. Felis eget velit aliquet sagittis id consectetur purus ut. Eget egestas purus viverra accumsan in nisl nisi scelerisque eu. Cras semper auctor neque vitae tempus quam pellentesque nec. Id porta nibh venenatis cras sed felis eget. Neque viverra justo nec ultrices dui sapien eget mi. Nunc sed id semper risus in hendrerit gravida rutrum.

- -

Orci sagittis eu volutpat odio facilisis mauris sit amet. Nisi est sit amet facilisis magna. Mi proin sed libero enim sed faucibus turpis. Magna sit amet purus gravida. A lacus vestibulum sed arcu non odio euismod. Massa tincidunt nunc pulvinar sapien et. Iaculis eu non diam phasellus vestibulum. Ultrices dui sapien eget mi proin sed. Blandit cursus risus at ultrices mi tempus imperdiet. Non arcu risus quis varius quam. Vitae congue mauris rhoncus aenean vel elit. Interdum velit laoreet id donec ultrices tincidunt arcu. Duis ultricies lacus sed turpis tincidunt id. Lacus vestibulum sed arcu non odio. Quis hendrerit dolor magna eget est. Nulla facilisi etiam dignissim diam quis enim lobortis. Placerat vestibulum lectus mauris ultrices.

- -

Amet est placerat in egestas erat imperdiet sed euismod nisi. Volutpat est velit egestas dui id ornare arcu odio ut. At lectus urna duis convallis convallis tellus. Amet purus gravida quis blandit turpis cursus in hac. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Viverra mauris in aliquam sem fringilla ut. Sed vulputate odio ut enim blandit volutpat maecenas volutpat blandit. Ultricies tristique nulla aliquet enim. Vivamus arcu felis bibendum ut tristique et egestas quis ipsum. Euismod nisi porta lorem mollis aliquam ut. Sed viverra ipsum nunc aliquet bibendum enim facilisis. Vitae proin sagittis nisl rhoncus mattis. Etiam sit amet nisl purus in mollis nunc. Amet nisl suscipit adipiscing bibendum est ultricies integer. Tincidunt vitae semper quis lectus nulla at volutpat diam. Vel elit scelerisque mauris pellentesque.

-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/leducholdem.html b/leaderboard/leaderboard/templates/leaderboard/leducholdem.html deleted file mode 100644 index 284178f..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/leducholdem.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: Leduc Hold'em -{% endblock title %} - -{% block header %} -Leduc Hold'em Leaderboard -{% endblock header %} - -{% block content %} -
- - - - - - - - - - {% for agent in agents %} - - - - - - {% endfor %} - -
RankModelAverage Win Rate
{{ agent.rank }}{{ agent.agentName }}{{ agent.winRate }}
-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/limitholdem.html b/leaderboard/leaderboard/templates/leaderboard/limitholdem.html deleted file mode 100644 index d0ab847..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/limitholdem.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: Limit Texas Hold'em -{% endblock title %} - -{% block header %} -Limit Texas Hold'em Leaderboard -{% endblock header %} - -{% block content %} -
-

Currently Unavailable

-

Try Ludec Hold'em

-
- - -{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/mahjong.html b/leaderboard/leaderboard/templates/leaderboard/mahjong.html deleted file mode 100644 index d91c86f..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/mahjong.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: Mahjong -{% endblock title %} - -{% block header %} -Mahjong Leaderboard -{% endblock header %} - -{% block content %} -
-

Currently Unavailable

-

Try Ludec Hold'em

-
- - -{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/nfsp.html b/leaderboard/leaderboard/templates/leaderboard/nfsp.html deleted file mode 100644 index b204937..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/nfsp.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: NFSP -{% endblock title %} - -{% block header %} -NFSP -{% endblock header %} - -{% block content %} -
- - - - - - - - - - - {% for game in games %} - - - - - - - {% endfor %} - -
Replay IDOpponentGameReplay Link
{{ game.replayID }}{{ game.agent2 }}{{ game.gameName }}{{ game.replayLink }}
-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/nolimitholdem.html b/leaderboard/leaderboard/templates/leaderboard/nolimitholdem.html deleted file mode 100644 index 602e7a2..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/nolimitholdem.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: No-Limit Texas Hold'em -{% endblock title %} - -{% block header %} -No-Limit Hold'em Leaderboard -{% endblock header %} - -{% block content %} -
-

Currently Unavailable

-

Try Ludec Hold'em

-
- - -{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/templates/leaderboard/uno.html b/leaderboard/leaderboard/templates/leaderboard/uno.html deleted file mode 100644 index 815d706..0000000 --- a/leaderboard/leaderboard/templates/leaderboard/uno.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -RLCard Leaderboard: Uno -{% endblock title %} - -{% block header %} -Uno Leaderboard -{% endblock header %} - -{% block content %} -
-

Currently Unavailable

-

Try Ludec Hold'em

-
- - -{% endblock content %} \ No newline at end of file diff --git a/leaderboard/leaderboard/tests.py b/leaderboard/leaderboard/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/leaderboard/leaderboard/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/leaderboard/leaderboard/urls.py b/leaderboard/leaderboard/urls.py deleted file mode 100644 index 944a92a..0000000 --- a/leaderboard/leaderboard/urls.py +++ /dev/null @@ -1,18 +0,0 @@ -from django.urls import path -from . import views - -urlpatterns = [ - path('', views.home, name='leaderboard-home'), - path('about/', views.about, name='leaderboard-about'), - path('leaderboards/blackjack', views.blackjack, name='leaderboard-blackjack'), - path('leaderboards/doudizhu', views.doudizhu, name='leaderboard-doudizhu'), - path('leaderboards/leducholdem', views.leducholdem, name='leaderboard-leducholdem'), - path('leaderboards/limitholdem', views.limitholdem, name='leaderboard-limitholdem'), - path('leaderboards/nolimitholdem', views.nolimitholdem, name='leaderboard-nolimitholdem'), - path('leaderboards/mahjong', views.mahjong, name='leaderboard-mahjong'), - path('leaderboards/uno', views.uno, name='leaderboard-uno'), - path('getting_started/', views.getting_started, name='leaderboard-getting_started'), - path('leaderboards/nfsp', views.nfsp, name='leaderboard-nfsp'), - path('leaderboards/cfr', views.cfr, name='leaderboard-cfr'), - path('leaderboards/dqn', views.dqn, name='leaderboard-dqn'), -] diff --git a/leaderboard/leaderboard/views.py b/leaderboard/leaderboard/views.py deleted file mode 100644 index a74988c..0000000 --- a/leaderboard/leaderboard/views.py +++ /dev/null @@ -1,69 +0,0 @@ -from django.shortcuts import render -from .models import Agent -from .models import Game -import operator - - -def home(request): - return render(request, 'leaderboard/home.html') - - -def about(request): - return render(request, 'leaderboard/about.html') - - -def getting_started(request): - return render(request, 'leaderboard/getting_started.html') - - -def blackjack(request): - return render(request, 'leaderboard/blackjack.html') - - -def doudizhu(request): - return render(request, 'leaderboard/doudizhu.html') - - -def leducholdem(request): - context = { - 'agents': Agent.objects.all() - } - return render(request, 'leaderboard/leducholdem.html', context) - - -def limitholdem(request): - return render(request, 'leaderboard/limitholdem.html') - - -def nolimitholdem(request): - return render(request, 'leaderboard/nolimitholdem.html') - - -def mahjong(request): - return render(request, 'leaderboard/mahjong.html') - - -def uno(request): - return render(request, 'leaderboard/uno.html') - - -def nfsp(request): - context = { - 'games': Game.objects.filter(agent1="NFSP") - } - return render(request, 'leaderboard/nfsp.html', context) - - -def cfr(request): - context = { - 'games': Game.objects.filter(agent1="CFR") - } - return render(request, 'leaderboard/cfr.html', context) - - -def dqn(request): - context = { - 'games': Game.objects.filter(agent1="DQN") - } - return render(request, 'leaderboard/dqn.html', context) - diff --git a/leaderboard/manage.py b/leaderboard/manage.py deleted file mode 100755 index 253a4c2..0000000 --- a/leaderboard/manage.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -def main(): - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'research_env.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() diff --git a/leaderboard/media/RLCard.jpg b/leaderboard/media/RLCard.jpg deleted file mode 100644 index 9d65e3db53fb6eb2e9bdbbc05c7dff2192f3992e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111816 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%0AXrdSBu5nz}0tC~wQhhDYP?zO=)?z14DK)>7mS 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 diff --git a/leaderboard/media/RLCard.png b/leaderboard/media/RLCard.png deleted file mode 100644 index 3274105ac6d7d55dbed4825a2d8e15c3172afe5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7446 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 CR@*B8 diff --git a/leaderboard/media/default.jpg b/leaderboard/media/default.jpg deleted file mode 100644 index 36ef5e144a66941de384d1edcdfeb488de4a186a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4687 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 diff --git a/leaderboard/media/profile_pics/default.jpg b/leaderboard/media/profile_pics/default.jpg deleted file mode 100644 index 0b6cea56307865f39665ce5221bf121f5d792ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17165 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 diff --git a/leaderboard/media/profile_pics/default_cqLOpRI.jpg b/leaderboard/media/profile_pics/default_cqLOpRI.jpg deleted file mode 100644 index 36ef5e144a66941de384d1edcdfeb488de4a186a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4687 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 diff --git a/leaderboard/research_env/__init__.py b/leaderboard/research_env/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/leaderboard/research_env/settings.py b/leaderboard/research_env/settings.py deleted file mode 100644 index 131425e..0000000 --- a/leaderboard/research_env/settings.py +++ /dev/null @@ -1,130 +0,0 @@ -""" -Django settings for research_env project. - -Generated by 'django-admin startproject' using Django 2.2.7. - -For more information on this file, see -https://docs.djangoproject.com/en/2.2/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/2.2/ref/settings/ -""" - -import os - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = '2fw%$$6n0fnqap&^&#l+qnknff(r&eb7qqx3w8f91k@1dqx%p0' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = [ - 'users.apps.UsersConfig', - 'leaderboard.apps.LeaderboardConfig', - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'research_env.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'research_env.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/2.2/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), - } -} - - -# Password validation -# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/2.2/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/2.2/howto/static-files/ - -STATIC_URL = '/static/' - -MEDIA_ROOT = os.path.join(BASE_DIR, 'media') -MEDIA_URL = '/media/' - -CRISPY_TEMPLATE_PACK = 'bootstrap3' - -LOGIN_REDIRECT_URL = 'leaderboard-home' -LOGIN_URL = 'login' diff --git a/leaderboard/research_env/urls.py b/leaderboard/research_env/urls.py deleted file mode 100644 index e678833..0000000 --- a/leaderboard/research_env/urls.py +++ /dev/null @@ -1,35 +0,0 @@ -"""research_env URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/2.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.conf.urls.static import static -from django.conf import settings -from django.contrib import admin -from django.contrib.auth import views as auth_views -from django.urls import path, include -from users import views as user_views - -urlpatterns = [ - path('admin/', admin.site.urls), - path('', include('leaderboard.urls')), - path('register/', user_views.register, name='register'), - path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'), - path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'), - path('profile/', user_views.profile, name='profile'), -] - - -if settings.DEBUG: - urlpatterns += static(settings.MEDIA_URL, - document_root=settings.MEDIA_ROOT) diff --git a/leaderboard/research_env/wsgi.py b/leaderboard/research_env/wsgi.py deleted file mode 100644 index f409cef..0000000 --- a/leaderboard/research_env/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for research_env project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'research_env.settings') - -application = get_wsgi_application() diff --git a/leaderboard/tests.py b/leaderboard/tests.py deleted file mode 100644 index 1c74979..0000000 --- a/leaderboard/tests.py +++ /dev/null @@ -1,118 +0,0 @@ -# when done python3 manage.py syncdb -import os, sys - -proj_path = "/Users/juanvargas/Desktop/Research/rlcard-leaderboard/research_env/" -# This is so Django knows where to find stuff. -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "research_env.settings") -sys.path.append(proj_path) - -# This is so my local_settings.py gets loaded. -os.chdir(proj_path) - -# This is so models get loaded. -from django.core.wsgi import get_wsgi_application -application = get_wsgi_application() -from leaderboard.models import Agent, Game - -# a = Agent(gamesPlayed = 100, winRate = 0.123, gamesWon = 12, opponent = '123', agentID = '321', totalGamesPlayed = 100) -# a.save() - -# game = Game(gameID='int',agent1='agent-name',agent2='agent-name',replayID='int',replayLink="http://link") -# game.save() -# a = Agent(gamesPlayed='int',winRate='1.234',gamesWon='int',opponent='char',totalGamesPlayed="http://link") -# a.save() - -# We may need a function to generate a unique random id or append to current - -# We need to unpack user data -# Should be in the form - -# These need to be gotten from DB -# replayID = 10000 -# gameID = 10000 - -data = [ - { - 'agent' : '1', - 'gamesWon' : 'int', - 'gamesPlayed': 'int', - 'winRate' : 'float', - 'path' : '~/Test', - 'opponent' : 'opp' - }, - { - 'agent' : '2', - 'gamesWon' : 'int', - 'gamesPlayed': 'int', - 'winRate' : 'float', - 'path' : '~/Test', - 'opponent' : 'opp' - } - -] - -agents = [] -games_won = [] -games_played = [] -win_rates = [] -opponents = [] -for item in range(len(data)): - agents.append(data[item]['agent']) - games_won.append(data[item]['gamesWon']) - games_played.append(data[item]['gamesPlayed']) - win_rates.append(data[item]['winRate']) - opponents.append(data[item]['opponent']) - - -def add_agent(games_Played, win_Rate, games_Won, _opponent, agent_ID, total_GamesPlayed): - agent = Agent(gamesPlayed = games_Played, winRate = win_Rate, gamesWon = games_Won, opponent = _opponent, agentID = agent_ID, totalGamesPlayed = total_GamesPlayed) - agent.save() - -def add_game(game_ID, agent_1, agent_2, replay_ID, replay_Link): - game = Game(gameID = game_ID, agent1 = agent_1, agent2 = agent_2, replayID = replay_ID, replayLink = replay_Link) - game.save() - -# Will return true on new entry, false otherwise -def checkAgentID(agent_ID): - if len(Agent.obejects.filter(agentID = agent_ID)) == 0 - return True - return False - -# Function to update agentID -def updateAgentID(opponent, gamesWon, gamesPlayed): - #if agent is new, then add to database, else modify agent - for i in range(len(data)): - if checkAgentID(agents[i]) == True: - add_agent(games_won[i], win_rates[i], games_won[i], opponents[i], agents[i, games_played[i]]) - else: - agent = Agent.objects.get(agentID = agents[i]) - - agent.save() - - -# Will return true on new entry, false otherwise -# def checkAgentID(agentID): -# command_line = os.popen("python3 manage.py shell < agenthelper.py").read() -# if command_line == '0': -# return True -# else: -# return False - -# #Should return a tuple in format ([agent1, winrate1], [agent2, winrate2]) -# def calculateWinRate(agent1ID, agent2ID, gamesAgent1, gamesAgent2, gamesPlayed): -# #Check to see if ID is in DB if so update currrent info else just return -# return([[agent1ID, gamesAgent1/gamesPlayed], [agent2ID, gamesAgent2/gamesPlayed]]) - -# # Function to update game -# def updateGame(replayID, gameID): -# os.system("a = Game(gameID='int',agent1='agent-name',agent2='agent-name',replayID='int',replayLink='path')") -# time.sleep(0.5) -# os.system("a.save()") - - - - -def updateRanking(): - print("brb") - -# when done python3 manage.py syncdb \ No newline at end of file diff --git a/leaderboard/updateDataBase.py b/leaderboard/updateDataBase.py deleted file mode 100644 index 6a770ac..0000000 --- a/leaderboard/updateDataBase.py +++ /dev/null @@ -1,126 +0,0 @@ -# when done python3 manage.py syncdb -import os, sys -import uuid - -PATH = "/Users/juanvargas/Desktop/Research/rlcard-leaderboard/research_env/" -# This is so Django knows where to find stuff. -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "research_env.settings") -sys.path.append(PATH) - -# This is so my local_settings.py gets loaded. -os.chdir(PATH) - -# This is so models get loaded. -from django.core.wsgi import get_wsgi_application -application = get_wsgi_application() -from leaderboard.models import Agent, Game - -# a = Agent(gamesPlayed = 100, winRate = 0.123, gamesWon = 12, opponent = '123', agentID = '321', totalGamesPlayed = 100) -# a.save() - -# game = Game(gameID='int',agent1='agent-name',agent2='agent-name',replayID='int',replayLink="http://link") -# game.save() -# a = Agent(gamesPlayed='int',winRate='1.234',gamesWon='int',opponent='char',totalGamesPlayed="http://link") -# a.save() - -# We may need a function to generate a unique random id or append to current - -# We need to unpack user data -# Should be in the form - -# These need to be gotten from DB -# replayID = 10000 -# gameID = 10000 - -agentData = [ - { - 'gamesPlayed': 1, - 'winRate' : 0.5, - 'gamesWon' : 1, - 'opponent' : 'DQN', - 'agentID' : uuid.uuid4(), - 'agentName' : 'DQN', - 'totalGames' : 1 - } -] - -games_played = [] -win_rates = [] -games_won = [] -opponents = [] -agent_ids = [] -agent_names = [] -total_games = [] - -# b = Agent(gamesPlayed = 100, winRate = 0.5, gamesWon = 1, opponent = 'NFSP' , agentID = 'NFSP123', agentName = 'DQN', totalGamesPlayed = 100) - -for item in range(len(agentData)): - games_played.append(agentData[item]['gamesPlayed']) - win_rates.append(agentData[item]['winRate']) - games_won.append(agentData[item]['gamesWon']) - opponents.append(agentData[item]['opponent']) - agent_ids.append(agentData[item]['agentID']) - agent_names.append(agentData[item]['agentName']) - total_games.append(agentData[item]['totalGames']) - -gameData = [ - { - 'gameID' : 1, - 'agent1' : uuid.uuid4(), - 'agent2' : uuid.uuid4(), - 'replayID' : uuid.uuid4(), - 'replayLink' : '~/Test' - } -] - -game_ids = [] -agent_1_IDs = [] -agent_2_IDs = [] -replay_IDs = [] -replay_Links = [] - -for item in range(len(gameData)): - game_ids.append(gameData[item]['gameID']) - agent_1_IDs.append(gameData[item]['agent1']) - agent_2_IDs.append(gameData[item]['agent2']) - replay_IDs.append(gameData[item]['replayID']) - replay_Links.append(gameData[item]['replayLink']) - - -def add_agent(games_Played, win_Rate, games_Won, _opponent, agent_ID, agent_Name, total_GamesPlayed): - agent = Agent(gamesPlayed = games_Played, winRate = win_Rate, gamesWon = games_Won, opponent = _opponent, agentID = agent_ID, agentName = agent_Name, totalGamesPlayed = total_GamesPlayed) - agent.save() - -def add_game(game_ID, agent_1, agent_2, replay_ID, replay_Link): - game = Game(gameID = game_ID, agent1 = agent_1, agent2 = agent_2, replayID = replay_ID, replayLink = replay_Link) - game.save() - -# Will return true on new entry, false otherwise -def checkAgentID(agent_ID): - if len(Agent.obejects.filter(agentID = agent_ID)) == 0: - return True - return False - -# Function to update agentID -def updateAgentID(_opponent, games_Won, games_Played): - #if agent is new, then add to database, else modify agent - for i in range(len(data)): - if checkAgentID(agents[i]) == True: - add_agent(games_played[i], win_rates[i], games_won[i], opponents[i], agent_ids[i], agent_names[i], games_played[i]) - else: - agent = Agent.objects.get(agentID = agents[i]) - agent.gamesWon = agent.gamesWon + games_Won - agent.gamesPlayed = agent.gamesPlayed + games_Played - agent.winRate = agent.gamesWon / agent.gamesPlayed - agent.save() - - -# At the end of the game, update the rankings -def updateRanking(): - db_size = Agent.objects.all().count() - for i in range(db_size): - agent = Agent.objects.order_by('winRate')[i] - agent.Rank = i+1 - agent.save() - -updateRanking() \ No newline at end of file diff --git a/leaderboard/users/__init__.py b/leaderboard/users/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/leaderboard/users/admin.py b/leaderboard/users/admin.py deleted file mode 100644 index d914f1f..0000000 --- a/leaderboard/users/admin.py +++ /dev/null @@ -1,4 +0,0 @@ -from django.contrib import admin -from .models import Profile - -admin.site.register(Profile) diff --git a/leaderboard/users/apps.py b/leaderboard/users/apps.py deleted file mode 100644 index b8d67f1..0000000 --- a/leaderboard/users/apps.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.apps import AppConfig - - -class UsersConfig(AppConfig): - name = 'users' - - def ready(self): - import users.signals diff --git a/leaderboard/users/forms.py b/leaderboard/users/forms.py deleted file mode 100644 index ee5757a..0000000 --- a/leaderboard/users/forms.py +++ /dev/null @@ -1,26 +0,0 @@ -from django import forms -from django.contrib.auth.models import User -from django.contrib.auth.forms import UserCreationForm -from .models import Profile - - -class UserRegisterForm(UserCreationForm): - email = forms.EmailField() - - class Meta: - model = User - fields = ['username', 'email', 'password1', 'password2'] - - -class UserUpdateForm(forms.ModelForm): - email = forms.EmailField() - - class Meta: - model = User - fields = ['username', 'email'] - - -class ProfileUpdateForm(forms.ModelForm): - class Meta: - model = Profile - fields = ['image'] diff --git a/leaderboard/users/migrations/0001_initial.py b/leaderboard/users/migrations/0001_initial.py deleted file mode 100644 index 732a3ea..0000000 --- a/leaderboard/users/migrations/0001_initial.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 2.2.7 on 2019-11-15 00:57 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Profile', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('image', models.ImageField(default='default.jpg', upload_to='profile_pics')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - ] diff --git a/leaderboard/users/migrations/__init__.py b/leaderboard/users/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/leaderboard/users/models.py b/leaderboard/users/models.py deleted file mode 100644 index 498e479..0000000 --- a/leaderboard/users/models.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User -from PIL import Image - - -class Profile(models.Model): - user = models.OneToOneField(User, on_delete=models.CASCADE) - image = models.ImageField(default='default.jpg', upload_to='profile_pics') - - def __str__(self): - return f'{self.user.username} Profile' - - def save(self, *args, **kwargs): - super(Profile, self).save(*args, **kwargs) - - img = Image.open(self.image.path) - - if img.height > 300 or img.width > 300: - output_size = (300, 300) - img.thumbnail(output_size) - img.save(self.image.path) diff --git a/leaderboard/users/signals.py b/leaderboard/users/signals.py deleted file mode 100644 index 3a691d7..0000000 --- a/leaderboard/users/signals.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.db.models.signals import post_save -from django.contrib.auth.models import User -from django.dispatch import receiver -from .models import Profile - - -@receiver(post_save, sender=User) -def create_profile(sender, instance, created, **kwargs): - if created: - Profile.objects.create(user=instance) - - -@receiver(post_save, sender=User) -def save_profile(sender, instance, created, **kwargs): - instance.profile.save() diff --git a/leaderboard/users/templates/users/login.html b/leaderboard/users/templates/users/login.html deleted file mode 100644 index c460d29..0000000 --- a/leaderboard/users/templates/users/login.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% load crispy_forms_tags %} -{% block title %} -Log In -{% endblock title %} - -{% block content %} -

-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/users/templates/users/logout.html b/leaderboard/users/templates/users/logout.html deleted file mode 100644 index b531d78..0000000 --- a/leaderboard/users/templates/users/logout.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% block title %} -Logged Out -{% endblock title %} - -{% block content %} -

You have been logged out

-
- - Log In Again - -
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/users/templates/users/profile.html b/leaderboard/users/templates/users/profile.html deleted file mode 100644 index 30f66ce..0000000 --- a/leaderboard/users/templates/users/profile.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% load crispy_forms_tags %} -{% block title %} -Profile -{% endblock title %} - -{% block content %} -
-
- -
- -

{{ user.email }}

-
-
-
- {% csrf_token %} -
- Profile Info - {{ u_form|crispy }} - {{ p_form|crispy }} -
-
- -
-
-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/users/templates/users/register.html b/leaderboard/users/templates/users/register.html deleted file mode 100644 index a82c622..0000000 --- a/leaderboard/users/templates/users/register.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "leaderboard/base.html" %} -{% load crispy_forms_tags %} -{% block title %} -Register -{% endblock title %} - -{% block content %} -
-
- {% csrf_token %} -
- Join Today - {{ form|crispy }} -
-
- -
-
-
- - Already Have An Account? Sign In - -
-
-{% endblock content %} \ No newline at end of file diff --git a/leaderboard/users/tests.py b/leaderboard/users/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/leaderboard/users/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/leaderboard/users/views.py b/leaderboard/users/views.py deleted file mode 100644 index c9e6d3f..0000000 --- a/leaderboard/users/views.py +++ /dev/null @@ -1,42 +0,0 @@ -from django.shortcuts import render, redirect -from django.contrib import messages -from django.contrib.auth.decorators import login_required -from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm - - -def register(request): - if request.method == 'POST': - form = UserRegisterForm(request.POST) - if form.is_valid(): - form.save() - # username = form.cleaned_data.get('username') - messages.success( - request, f'Your account has been created! You are now able to log in!') - return redirect('login') - else: - form = UserRegisterForm() - return render(request, 'users/register.html', {'form': form}) - - -@login_required -def profile(request): - if request.method == 'POST': - u_form = UserUpdateForm(request.POST, instance=request.user) - p_form = ProfileUpdateForm( - request.POST, request.FILES, instance=request.user.profile) - if u_form.is_valid() and p_form.is_valid(): - u_form.save() - p_form.save() - messages.success( - request, f'Your account has been updated!') - return redirect('profile') - else: - u_form = UserUpdateForm(instance=request.user) - p_form = ProfileUpdateForm(instance=request.user.profile) - - context = { - 'u_form': u_form, - 'p_form': p_form - } - - return render(request, 'users/profile.html', context)