From ff0e2213f352d18f36e34a6d52bcb8753ec8f334 Mon Sep 17 00:00:00 2001 From: bglacial Date: Sun, 13 Jan 2019 22:35:24 +0100 Subject: [PATCH] first commit --- api/__init__.py | 0 api/__init__.pyc | Bin 0 -> 139 bytes api/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 135 bytes api/__pycache__/settings.cpython-36.pyc | Bin 0 -> 2333 bytes api/__pycache__/urls.cpython-36.pyc | Bin 0 -> 1056 bytes api/__pycache__/wsgi.cpython-36.pyc | Bin 0 -> 531 bytes api/readme.md | 33 +++++ api/settings.py | 126 ++++++++++++++++++ api/settings.pyc | Bin 0 -> 2701 bytes api/urls.py | 26 ++++ api/urls.pyc | Bin 0 -> 1159 bytes api/wsgi.py | 16 +++ manage.py | 22 +++ timelaps/__init__.py | 0 timelaps/__init__.pyc | Bin 0 -> 144 bytes timelaps/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 140 bytes timelaps/__pycache__/admin.cpython-36.pyc | Bin 0 -> 405 bytes timelaps/__pycache__/models.cpython-36.pyc | Bin 0 -> 2477 bytes .../__pycache__/serializers.cpython-36.pyc | Bin 0 -> 2586 bytes timelaps/__pycache__/tests.cpython-36.pyc | Bin 0 -> 232 bytes timelaps/__pycache__/urls.cpython-36.pyc | Bin 0 -> 592 bytes timelaps/__pycache__/views.cpython-36.pyc | Bin 0 -> 2164 bytes timelaps/admin.py | 14 ++ timelaps/admin.pyc | Bin 0 -> 496 bytes timelaps/apps.py | 8 ++ timelaps/migrations/0001_initial.py | 82 ++++++++++++ .../migrations/0002_auto_20190112_0858.py | 17 +++ .../migrations/0003_auto_20190112_0903.py | 29 ++++ .../migrations/0004_auto_20190112_0906.py | 18 +++ .../migrations/0005_auto_20190112_0907.py | 18 +++ .../migrations/0006_auto_20190112_0912.py | 28 ++++ .../migrations/0007_auto_20190112_0930.py | 27 ++++ .../migrations/0008_auto_20190112_0934.py | 24 ++++ .../migrations/0009_auto_20190112_0938.py | 33 +++++ .../migrations/0010_auto_20190112_1005.py | 28 ++++ .../migrations/0011_auto_20190112_1017.py | 18 +++ .../migrations/0012_auto_20190112_1019.py | 83 ++++++++++++ timelaps/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-36.pyc | Bin 0 -> 1793 bytes .../0002_auto_20190112_0858.cpython-36.pyc | Bin 0 -> 509 bytes .../0003_auto_20190112_0903.cpython-36.pyc | Bin 0 -> 873 bytes .../0004_auto_20190112_0906.cpython-36.pyc | Bin 0 -> 599 bytes .../0005_auto_20190112_0907.cpython-36.pyc | Bin 0 -> 548 bytes .../0006_auto_20190112_0912.cpython-36.pyc | Bin 0 -> 625 bytes .../0007_auto_20190112_0930.cpython-36.pyc | Bin 0 -> 737 bytes .../0008_auto_20190112_0934.cpython-36.pyc | Bin 0 -> 779 bytes .../0009_auto_20190112_0938.cpython-36.pyc | Bin 0 -> 710 bytes .../0010_auto_20190112_1005.cpython-36.pyc | Bin 0 -> 625 bytes .../0011_auto_20190112_1017.cpython-36.pyc | Bin 0 -> 557 bytes .../0012_auto_20190112_1019.cpython-36.pyc | Bin 0 -> 1309 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 151 bytes timelaps/models.py | 72 ++++++++++ timelaps/models.pyc | Bin 0 -> 2758 bytes timelaps/serializers.py | 38 ++++++ timelaps/tests.py | 48 +++++++ timelaps/tests.pyc | Bin 0 -> 265 bytes timelaps/urls.py | 13 ++ timelaps/views.py | 71 ++++++++++ 58 files changed, 892 insertions(+) create mode 100644 api/__init__.py create mode 100644 api/__init__.pyc create mode 100644 api/__pycache__/__init__.cpython-36.pyc create mode 100644 api/__pycache__/settings.cpython-36.pyc create mode 100644 api/__pycache__/urls.cpython-36.pyc create mode 100644 api/__pycache__/wsgi.cpython-36.pyc create mode 100644 api/readme.md create mode 100644 api/settings.py create mode 100644 api/settings.pyc create mode 100644 api/urls.py create mode 100644 api/urls.pyc create mode 100644 api/wsgi.py create mode 100644 manage.py create mode 100644 timelaps/__init__.py create mode 100644 timelaps/__init__.pyc create mode 100644 timelaps/__pycache__/__init__.cpython-36.pyc create mode 100644 timelaps/__pycache__/admin.cpython-36.pyc create mode 100644 timelaps/__pycache__/models.cpython-36.pyc create mode 100644 timelaps/__pycache__/serializers.cpython-36.pyc create mode 100644 timelaps/__pycache__/tests.cpython-36.pyc create mode 100644 timelaps/__pycache__/urls.cpython-36.pyc create mode 100644 timelaps/__pycache__/views.cpython-36.pyc create mode 100644 timelaps/admin.py create mode 100644 timelaps/admin.pyc create mode 100644 timelaps/apps.py create mode 100644 timelaps/migrations/0001_initial.py create mode 100644 timelaps/migrations/0002_auto_20190112_0858.py create mode 100644 timelaps/migrations/0003_auto_20190112_0903.py create mode 100644 timelaps/migrations/0004_auto_20190112_0906.py create mode 100644 timelaps/migrations/0005_auto_20190112_0907.py create mode 100644 timelaps/migrations/0006_auto_20190112_0912.py create mode 100644 timelaps/migrations/0007_auto_20190112_0930.py create mode 100644 timelaps/migrations/0008_auto_20190112_0934.py create mode 100644 timelaps/migrations/0009_auto_20190112_0938.py create mode 100644 timelaps/migrations/0010_auto_20190112_1005.py create mode 100644 timelaps/migrations/0011_auto_20190112_1017.py create mode 100644 timelaps/migrations/0012_auto_20190112_1019.py create mode 100644 timelaps/migrations/__init__.py create mode 100644 timelaps/migrations/__pycache__/0001_initial.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0002_auto_20190112_0858.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0003_auto_20190112_0903.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0004_auto_20190112_0906.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0005_auto_20190112_0907.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0006_auto_20190112_0912.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0007_auto_20190112_0930.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0008_auto_20190112_0934.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0009_auto_20190112_0938.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0010_auto_20190112_1005.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0011_auto_20190112_1017.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/0012_auto_20190112_1019.cpython-36.pyc create mode 100644 timelaps/migrations/__pycache__/__init__.cpython-36.pyc create mode 100644 timelaps/models.py create mode 100644 timelaps/models.pyc create mode 100644 timelaps/serializers.py create mode 100644 timelaps/tests.py create mode 100644 timelaps/tests.pyc create mode 100644 timelaps/urls.py create mode 100644 timelaps/views.py diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/__init__.pyc b/api/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12eae5c8a4dda0c83f7ae60565566d63b93dc24d GIT binary patch literal 139 zcmZSn%*(Y+#WW_F0SXv_v;zF4FnZ6x# literal 0 HcmV?d00001 diff --git a/api/__pycache__/__init__.cpython-36.pyc b/api/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a445efef251321e4126794f83065ce8f05d83a8c GIT binary patch literal 135 zcmXr!<>lI@Vj9B$1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFBARTyb}EseV5cS zeaC`=oXq6JlFaF4Fwp1UE literal 0 HcmV?d00001 diff --git a/api/__pycache__/settings.cpython-36.pyc b/api/__pycache__/settings.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7306b11b0405574823e8d5e933666cb6d6da032 GIT binary patch literal 2333 zcmb7F>vGdZ6t*43R!kCZ;ZmTjpcG;*5(yz8okAmQ5j^-dmP}er2aV#hkvGu|?V2?D z+s7y`(CMr63G}zW`U?HUkuSt`m}% z^DXS`PaGg)W*`eWH*01|c0ad2GcgKe_SbCM%skAP1rSWp$(VC63wbDj2y;+`GcfOn zW)T)(5zfLnI1d-#qEj%>z>+x+mz)d;a2c+^Rrms~IReeX^$&uRH5cH9xd>mvSMW8= zg9JC>7JTy|PqXG(xDDT;-fg%u81D|oWtw#a^Bk1S^Kj3+fU#V}zJ&b}+&3>nPS2Dc z*blOqOtG?W`%WM+!a4OFChY~0WQSA=qhOzOxm+x66Q4vjCm`(}Nq1qO|Ih}H`V!-I z#7CNUr9MLhX#}_;ui*bF+P_3ZFNlaleFXPxP6J=UKkrd=M_uv&y^~^(^N@X~C=hg+ zJoGY-p&NJ#@s$)(;Xz2dOc}?k4Dor7NPB(Pm0ZfW6zm=E$Myj|5gJMFZMRR@|8f?Q zy$Mf$BLy;zc=f=4`^eht1ZtX?3M-GGNz!W+4h--%|emJu7D1b{2?TE;Xbo&wIN3uSe)IY7o zYtv3fVaXHr`cO7uRXXVekJ<}-xjcCMhboKq#vk8}W5BBZu0oH^3n7 z7Mi?^ro@MF8OW7E%^9O*W?mRj;umgVfpjsTAY$?IG{{LE8OUzmiSM04Ga~P>R(O1W zr2C1sX)Zs5oaQ)wJf-|8f1fcJua$(P@Io!W)*2O4s8ri}BC4&HHJBBeEu-3O=?3XD$pFcaYuhTq|Tp-5_*U&ABnVaasxE&HbRi zxf#!`tZvAUu&tQFleNdIrF@dt8r#)|mIw{Cj$=pH+KJdwb$zGVt|Y>%rfwuctJyZ9 z0^SJmtEqht2p8InVNHRB*A9h2#Bzs`Nabn$_c_t2M_oHDs5e86Ac~)#7O75s>h--E z@g3efw*TR@_QU#Wjbc0o*g7phqwkT3c26SA68~YJnKK=u9E%EmAh6Js(v_rOS$MNs zR+0-?B7`>Y;Q`Xf$J$5=_AVPpM9WGqCd)F#7pktMG)RiNR&HyC^;-KWnXPCqI@`&D zTB|j8w2GCUgq|!`8@hoa6d-r>q*$+3Dm86KZEMMVyV*3XPPy28g;$jooxlmIZ+Z}aVv&zkihJe+& zW|>VSi-C$fS2o^$WBaN8C1yTiwX)rMfaly|`gqC@++q#PF$aV+YZ7+Bh z-h-#;Emyn(R~&nds3svTQJgO)=Y0OokDu=Erw@KU`|`aL1iylvs|)xQJmwr08WaHy zX;g0gGtD;^p2lT}LdTeb%RY>u?>- zqhdhQk3lvdmr)RqhNI6P-l1b9XMDcW#BwFm^wWZ&^Odd}VlC6soTHi>i?muT4V5=Hl8SK0<>~C=T<{J?}W~S-MN>)zZ&Ay&>lA|L^5s`?CMrk`mXr`4w;;JM~ zvo-GcKiT^GoFRjq6d@G8#(H%2aCEp$ZJ`7^M3M;hV&w2BOOI<}%%cm)jqdRNPlvJ# zrk#}B*Qyot7P!3rJL_=~IWeW98E3aNoyw|SQ7-3D2*0CCuY!)YH9GahK_CWt3 zmjGgzw*|Zt&B_*T8LpEv?}e{pm|1+iZ@FMKX^ba*pA9!jS;BCYWpV#@DjEhoC=ULa zt>zaRj$g1DY>h5s9fL)?Q>c6HUu?K#o7nx@3}9^!!;e4@os(PsJjOy=Oz~@WiI1A5 o=9Qm+gIj&jeU9DZc=G0I(|;}$UDfR6J%~34u*Bi8z2jl{7gm))mjD0& literal 0 HcmV?d00001 diff --git a/api/__pycache__/wsgi.cpython-36.pyc b/api/__pycache__/wsgi.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f40164e93830753f472726af6e205ec7e95d31fb GIT binary patch literal 531 zcmYjNO=}x55Y=j(*ld&1L+DvoL%WLUp-@U`z^QRboP$#erm$95* zvTdMNrnv=g9X7 z6>8f6QwGKAO@Ud18K28$Is!Zg+pXw|76O{P*1KUw^Ls7QoRpjr~h}`TG(80dTP` z0hxfX1a1jv3HBynuY5w71bPnsC>=d+1xOj(DWKEf&Oje=W`RrsIR^w)Q$VJH%mBg3 z^Uz0|^FS^DnFDeW$R!|`fqVtz3iPMI#rdn?&H+RBc_7!Ij&S5U)DfH9fI7qUZUXrl z$SokZp^s+YK%IPxc9=5aeFyF(Kr4ok?*P$Ic^Am{*kRNku)7E3N9^tcd4OFN$O3i` zq3&LmZsd_NmeS*6Y4KRnm4s1U%-8_;3Xmmmud0>LtM-~|uLG%pdqbAet}e?8KgJ5r zHuwCvpJ<#4!QwvGc9Tr=Q>LX^vPT1<&(5yXm}b79MB6#k9uQ@}=#z-W8W(;hjw~N& zIY$KT2(YHt@Og&*uMsgyGODo{!6RR=B-Zc|1BT&PNFQT#Iy(>|UqJ*a-Z`|{Z`fBJlF<&fU{Q2%(Jtqh*7E)ZU?JzxFA`;^b4 zTd^!XNMez(9bFZXUp+;UivhoVa$Y*pSct=va(?5ap5ruD_f%bkIv?}kw@&dBxGRC& z3ob6AI>X-E&HRWSB-y@@oD?jgp`UWTIC75|At62RGpchM0*UkaJ^% zBWRR{$WDC+0ccEy+|dgjI!9_QrqJh=*?4Ppnqm^=W~*nboi#T%JvrdjQ&823`(1cQ z#Q>L+WQb39@;-m~|BN&G5lJWbqmlU+Z=Xr_eU|w&ZwSg!bKk$@iFvLei$Tae_2$})atCaI+mD0aY&A3 zRoRZYVJTtDwt7n6Oh2#fCHdN#D)^>p+uPkDrDGo~}G8z&5)* zN2O2buAhg3zZqruMI}?8b7U*=@H@wdT9LlRX=V!ft;q$oS;RtLlJs3+ft&f_3}729 zW>FrsY1|is5yUTNfG9Y-d6el0-=NYBGxjOU37oWQM>Tu6N}D2mLo80n{Ee}}7iiQ;+kDcwmPf(@@jww^Kg6_WG~_${lk4fB3iorAkUXR>&Lbw@ z!=^HEq5N>FQm#x?D&^AnJu~^ms9Y(ROH=ADPZXN@O5sz?%J$+6+Mss$&P^k3aaaBY D@9PSA literal 0 HcmV?d00001 diff --git a/api/urls.py b/api/urls.py new file mode 100644 index 0000000..4a76858 --- /dev/null +++ b/api/urls.py @@ -0,0 +1,26 @@ +"""api URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/1.11/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.conf.urls import url, include + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) +""" +from django.conf.urls import url +from django.contrib import admin +from django.urls import path +from django.urls import re_path +from django.urls import include + + +urlpatterns = [ + url(r'^admin/', admin.site.urls), + re_path('api/', include('timelaps.urls')) +] diff --git a/api/urls.pyc b/api/urls.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22f1436c9efae6d71ea32f277a6fc54299c61a9f GIT binary patch literal 1159 zcma)5UvJYe5Wlot+hq(UK7oah+Dap)ydYJ8mXNAo`(5tO@6NvN@BR46ub1C)Xx0vX-{R|j;wAtVxJMv5P(+|Ru;@TU zxC=!WbPpE28uy^s0o{j1zs5TO4`4BqyPLOIVW zyYC1R7Al`Si~ zk-1NDtGP6MnoOtM+fwC@lQqZuj>qqRWEz9HS$wiJInk^0hN#no9SOlQ!;~&<Pjwjmo=rlBk zAsIX)vX$crTQ=>S)h(;f1P{Y36Y6}+73IU$>;9ZC3cKRi$2Q%F6d~?tGKtk6T;m8Y zq3_~GeGh;JB@fk~Vj9B$1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFH8O0yb}EseV5cS zeaC`=oXq6JlFad&Y?rjvFd1^is-{&<98xCh)~$ zHTMM}Z=)LxC&Yx<%^B;c-uBD3*UpGn6GPKy3aq5{i3K;G8@?45Y<;#eVh1%@)0X>m z%_ZGK86}6=4X4V_f<6h^yANa*;B}Pmt6FJSvwFpM^}{eo(NZURZEGhKm<*QCLHu9p bWANp$_xUX(0sFg<)ds&ZDsi5a_;3FJeb8#G literal 0 HcmV?d00001 diff --git a/timelaps/__pycache__/models.cpython-36.pyc b/timelaps/__pycache__/models.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12c0b567ac4282ff3b5754d715d649d851aa8915 GIT binary patch literal 2477 zcma)8%WmT~6qRJjmSj26xYOwieV`}`coUp`TMJ1g1+PYq}II>MKoGyg@01waDP1=3w2T_8OX0tuH$ z4@e|pAn_6jf%HWJBv~R6kb&3&vb98FvHipurI$F3GjeshsPbtoBroz-s;p>$bxQz6 zGo>k4PZy0{l;%@Z(qXP}m`5gsD?A(?$G`AdU=Pi@!owy#?H|dky!-%54v$8@j?3&f zUdZaCJ=HxSXW61?b#Po{)l=G3QviD5#xq{%nyIc0_fsQb+rznL5a2AykaM+MnsPh}hud-$LX^wy^^XlaP zl@AoejU_giR`{CSjQWh`9)OCsi4&4$=%rqWH}w?Z*T`E1`y3;;$Xf+F=t7{I;1572 z(YM|w`l1&OqwLg|l#vFad*LyYiIB_eN=h5sA{5a}howfbvGyNlQ~650-lpEwQC)$D zLbmdfa>r{)+C=Fq#QYi2b(Iw8R4Xap+vI8^Wn)thCRr%id3h2)4D8W)!rQ+nB`bG!*uc0k&=Fjl?ntm52+MKsXn`LO|qZ?ZKVxo^*;@$(w`ZjAAO|r;#AWEHlQ`d#es-b3~kz5hmY(x`fD<4!XWVye;DFThUqZ;4@8IS Aq5uE@ literal 0 HcmV?d00001 diff --git a/timelaps/__pycache__/serializers.cpython-36.pyc b/timelaps/__pycache__/serializers.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25caf64dc844d680678b554c4c9abddadfb044e4 GIT binary patch literal 2586 zcmbuB&2G~`5XW~NJ8_)PHU+hOf1JXhIdDT2DpDm*jZj-I5z@-aZdHRFo3UHeUduD^ z4!qJ{IrSCb!i?>vPKruoC-P|bzdK{kZ|$9Z-RU^d$2Xt;)EN843O^IuyLiPv&`2h^ z&jLQ-oJm90eB+3{XVR3`cP1^xKi4j66BCuXY@pJ}6$=$xHc@HjN*xtPwoqy1N&}U) z?4Z)g6&sbV?4i=jl_n~ExrWMGt~hf2kPQb{_-t&*bt_ijxxROyAim<6#$Qco^!kVS zW%)e7hGG*g*~GxOTpAeHxHKj;S;Ls7?(czjrr>ZMav=^y-^DB5D8x~iz2p;18W^E= zac?=o_P$D7-4Md{eIdrfy0(Rwxq%WwJ3<7ZJoTyF7UJuv>*pi&ER42rT=}|w>?vQy zKN)oJ)~WfuGYV$ONRIZ@+2~yq`QFq`yl@te5-(7`8^ywnym@C-z_cBmYm*+!qGV{b zZEkYtVPiZrp+UE>$u!B3d~@5Z)g_I*$vHOA*gWko@LHXF_rRU13e*RS{wZ^)<6|N3 zrF^tWbD@QU&?Yk{T1bs@cJL|>r;px*?-~yEOTy_L;BuZ?#Hc)< zb@ZmU=$a4pOY^}mD6Yh3F~EQL(Bu{P&?Zry4|xv?e5hZNPxnZgp(%s!SlnU0-;UHdMU`An3{8k6<9r~#ELjQF0i70NmkiDvXtjS zEGiwlbhBF(vWXSa#tP|NY^58_Qk0aIZUOCdB2HXLbTjLynbgjS8w*g!r&tQx5iORO zoR^ftn@SNpJ~7I;Ks)9ezA)z(af#ctnN>0D*+3WS)_Ej^N+!P){HU{T`Y!B9tK69dLPdM3% pD_I+(WW~H}YDc`(LNVhgGxC3sP~r-6>-r1b@K%Xs_~8N#qc1UbJvjgX literal 0 HcmV?d00001 diff --git a/timelaps/__pycache__/urls.cpython-36.pyc b/timelaps/__pycache__/urls.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0aa357243b1e732862c786db6859d50bc1a6a709 GIT binary patch literal 592 zcmYk2%}T>S6oqG+Hc6XARD1}d&=JIiQ0fm|iWDs_LZO7tSf}KVOj>Di*QasotGJ6x zSA7Ln-aBnW6LRl4XKp56=F;<8-(T0mA4=@O5ozc6MPusz|#(?_bjq&t7iwmqumkCqU+<2=;)++UEMEso0bkh!jTms zPt+&L9l+A%?~27q!8q%QIlIfUNRGoorio&OjDaCjqcD?|Vfe4@Y*E^sIOPD<#j{t( NP+aO#+rYZJ{{d4Ut{VUV literal 0 HcmV?d00001 diff --git a/timelaps/__pycache__/views.cpython-36.pyc b/timelaps/__pycache__/views.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de3ed1c23f3a3510b69ebe6816279e60792091b2 GIT binary patch literal 2164 zcmb`I&2G~`5P-dL5<8CLI8Dp1K;hPKXbwmfLI|~}5<)^%RSE|SX=S|I)?po|yPH($ zwY&^3z{B{;sjq;9#Eg@M;Bp8`U3t3x?2i3ScW0k98qV_%FFyUM8paP};V8p+2Tt`J z0y7v9MnVEYa9k3l#0<=QY>IMH2`Vryvx=x5O@CWQ#v6lGnf29R7O(W}OEaheu~`jB zZAKg*4yyyH&qy7J%Njr$GvWgASQAKdMjAkT)&kO+5f8{3YXfP|NRzFcwx5fEksB}M|1 zm;04|_0k9|ZU;41f>)ZE_byg?PsU>|KgRt0V$77>zsxI zCb-PLurz-k-)J_>Dee0vpW{0ER6tHr*Fxu^mCs_T4iP^L}s6j zxSS}i1Alt|J-CG;zTh(R)qG4N5i0e~kS&nP!_VzrGSEHN+vDTj?rVf($O!2j-Arn`PpVoUKqq7mIipMm#TJxAPx0lr{?0FgO_M z5VA7nk`27}Ff<_q9>PD>kv`s;mt#6wL)M0X=b|89uOQgS1)-{wTQaO1VzQ!QGpEZq zZh+5&f+Mn(9bpQqTXV!@Hyx2K<9HW*o)jFBt>BnX)FU1yx1?CcTt!0<;WC2vL1wcc zh-?MH7EV-r|3NHLeM^?LdBUP_hWr`9)%) ztO~md7b>f(`BtEUIx6oTyv2WS-n#RaCvp8tTp$uBk;Ka8AMvjynb|L=`_(J_By|sh QTXKm@Y+_f|tc9P}Z{Dldpa1{> literal 0 HcmV?d00001 diff --git a/timelaps/admin.py b/timelaps/admin.py new file mode 100644 index 0000000..ef66633 --- /dev/null +++ b/timelaps/admin.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.contrib import admin +from .models import * + +# Register your models here. + +admin.site.register(Driver) +admin.site.register(Race) +admin.site.register(Relay) +admin.site.register(Rules) +admin.site.register(Team) +admin.site.register(TeamPilot) \ No newline at end of file diff --git a/timelaps/admin.pyc b/timelaps/admin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..13f6d51a1f3288646012e13640e3401142b8e234 GIT binary patch literal 496 zcmZ9J!AiqG5Qb-yw6@Vo9wT^YZh|19(6dPFsR&`su4Te*60(y*&)$6yU(W~7*+ea5 z6K4N!X4rp{4Zl_~ecrs3@Vf%u?;!y9!9wvXzyMeQI|0IT044w%!Y*VEK}BF9*y<3f z8B}x7XYkIQCtgf=IpKK1=M%mdSk2%$o%2Ze%_|kGDB;l8ST;%*21$3)xUn+hic}VB z^o?WAtEhLumT)e4e3*#ta>DY)CEIPeM z$EM^PHXR;V`i5MVn*0E{Hu5;8dZP!i)zZ?EYhFB|X((lYQ*hUenXM^P*+w6-hqg6X rO2Vdg8KLDPTUW>y{~;T`bKM??p>BCnHoNn;==}dlf<(koBL1Eq6f|Z> literal 0 HcmV?d00001 diff --git a/timelaps/apps.py b/timelaps/apps.py new file mode 100644 index 0000000..c3d05f2 --- /dev/null +++ b/timelaps/apps.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class TimelapsConfig(AppConfig): + name = 'timelaps' diff --git a/timelaps/migrations/0001_initial.py b/timelaps/migrations/0001_initial.py new file mode 100644 index 0000000..e8ee090 --- /dev/null +++ b/timelaps/migrations/0001_initial.py @@ -0,0 +1,82 @@ +# Generated by Django 2.1.5 on 2019-01-12 08:54 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Driver', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(max_length=30)), + ('last_name', models.CharField(max_length=30)), + ], + ), + migrations.CreateModel( + name='Race', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=30)), + ('start_date', models.DateField()), + ('end_date', models.DateField(null=True)), + ('duration', models.IntegerField()), + ('comment', models.CharField(max_length=256)), + ], + ), + migrations.CreateModel( + name='Relay', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('relay_start', models.DateField()), + ('relay_end', models.DateField(null=True)), + ('has_refuel', models.BooleanField(default=False)), + ('pilot_chrono', models.IntegerField(null=True)), + ('comment', models.CharField(max_length=256, null=True)), + ], + ), + migrations.CreateModel( + name='Rule', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('min_stand_duration', models.IntegerField()), + ('max_autonomy_dry', models.IntegerField()), + ('max_autonomy_wet', models.IntegerField()), + ('max_driving_duration', models.IntegerField(null=True)), + ('relay_default_duration', models.IntegerField(null=True)), + ], + ), + migrations.CreateModel( + name='Team', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=30)), + ], + ), + migrations.CreateModel( + name='TeamPilot', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('pilot', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='timelaps.Driver')), + ('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='timelaps.Race')), + ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='timelaps.Team')), + ], + ), + migrations.AddField( + model_name='relay', + name='team', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='timelaps.Team'), + ), + migrations.AddField( + model_name='race', + name='fk_rules', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='timelaps.Rule'), + ), + ] diff --git a/timelaps/migrations/0002_auto_20190112_0858.py b/timelaps/migrations/0002_auto_20190112_0858.py new file mode 100644 index 0000000..62d8065 --- /dev/null +++ b/timelaps/migrations/0002_auto_20190112_0858.py @@ -0,0 +1,17 @@ +# Generated by Django 2.1.5 on 2019-01-12 08:58 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0001_initial'), + ] + + operations = [ + migrations.RenameModel( + old_name='Rule', + new_name='Rules', + ), + ] diff --git a/timelaps/migrations/0003_auto_20190112_0903.py b/timelaps/migrations/0003_auto_20190112_0903.py new file mode 100644 index 0000000..539accf --- /dev/null +++ b/timelaps/migrations/0003_auto_20190112_0903.py @@ -0,0 +1,29 @@ +# Generated by Django 2.1.5 on 2019-01-12 09:03 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0002_auto_20190112_0858'), + ] + + operations = [ + migrations.RemoveField( + model_name='relay', + name='team', + ), + migrations.AddField( + model_name='relay', + name='team_pilot_id', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='timelaps.TeamPilot'), + preserve_default=False, + ), + migrations.AddField( + model_name='teampilot', + name='order', + field=models.IntegerField(null=True), + ), + ] diff --git a/timelaps/migrations/0004_auto_20190112_0906.py b/timelaps/migrations/0004_auto_20190112_0906.py new file mode 100644 index 0000000..a7ce129 --- /dev/null +++ b/timelaps/migrations/0004_auto_20190112_0906.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.5 on 2019-01-12 09:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0003_auto_20190112_0903'), + ] + + operations = [ + migrations.AlterField( + model_name='race', + name='comment', + field=models.CharField(max_length=256, null=True), + ), + ] diff --git a/timelaps/migrations/0005_auto_20190112_0907.py b/timelaps/migrations/0005_auto_20190112_0907.py new file mode 100644 index 0000000..27f1af2 --- /dev/null +++ b/timelaps/migrations/0005_auto_20190112_0907.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.5 on 2019-01-12 09:07 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0004_auto_20190112_0906'), + ] + + operations = [ + migrations.RenameField( + model_name='driver', + old_name='last_name', + new_name='name', + ), + ] diff --git a/timelaps/migrations/0006_auto_20190112_0912.py b/timelaps/migrations/0006_auto_20190112_0912.py new file mode 100644 index 0000000..a989d30 --- /dev/null +++ b/timelaps/migrations/0006_auto_20190112_0912.py @@ -0,0 +1,28 @@ +# Generated by Django 2.1.5 on 2019-01-12 09:12 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0005_auto_20190112_0907'), + ] + + operations = [ + migrations.RenameField( + model_name='teampilot', + old_name='pilot', + new_name='pilot_id', + ), + migrations.RenameField( + model_name='teampilot', + old_name='race', + new_name='race_id', + ), + migrations.RenameField( + model_name='teampilot', + old_name='team', + new_name='team_id', + ), + ] diff --git a/timelaps/migrations/0007_auto_20190112_0930.py b/timelaps/migrations/0007_auto_20190112_0930.py new file mode 100644 index 0000000..2237c17 --- /dev/null +++ b/timelaps/migrations/0007_auto_20190112_0930.py @@ -0,0 +1,27 @@ +# Generated by Django 2.1.5 on 2019-01-12 09:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0006_auto_20190112_0912'), + ] + + operations = [ + migrations.RenameField( + model_name='driver', + old_name='name', + new_name='last_name', + ), + migrations.RemoveField( + model_name='relay', + name='team_pilot_id', + ), + migrations.AddField( + model_name='relay', + name='team_pilot_id', + field=models.ManyToManyField(to='timelaps.TeamPilot'), + ), + ] diff --git a/timelaps/migrations/0008_auto_20190112_0934.py b/timelaps/migrations/0008_auto_20190112_0934.py new file mode 100644 index 0000000..b10731f --- /dev/null +++ b/timelaps/migrations/0008_auto_20190112_0934.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.5 on 2019-01-12 09:34 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0007_auto_20190112_0930'), + ] + + operations = [ + migrations.RemoveField( + model_name='relay', + name='team_pilot_id', + ), + migrations.AddField( + model_name='relay', + name='team_pilot_id', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='timelaps.TeamPilot'), + preserve_default=False, + ), + ] diff --git a/timelaps/migrations/0009_auto_20190112_0938.py b/timelaps/migrations/0009_auto_20190112_0938.py new file mode 100644 index 0000000..56adc2a --- /dev/null +++ b/timelaps/migrations/0009_auto_20190112_0938.py @@ -0,0 +1,33 @@ +# Generated by Django 2.1.5 on 2019-01-12 09:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0008_auto_20190112_0934'), + ] + + operations = [ + migrations.AlterField( + model_name='race', + name='end_date', + field=models.DateTimeField(null=True), + ), + migrations.AlterField( + model_name='race', + name='start_date', + field=models.DateTimeField(), + ), + migrations.AlterField( + model_name='relay', + name='relay_end', + field=models.DateTimeField(null=True), + ), + migrations.AlterField( + model_name='relay', + name='relay_start', + field=models.DateTimeField(), + ), + ] diff --git a/timelaps/migrations/0010_auto_20190112_1005.py b/timelaps/migrations/0010_auto_20190112_1005.py new file mode 100644 index 0000000..5ffc41c --- /dev/null +++ b/timelaps/migrations/0010_auto_20190112_1005.py @@ -0,0 +1,28 @@ +# Generated by Django 2.1.5 on 2019-01-12 10:05 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0009_auto_20190112_0938'), + ] + + operations = [ + migrations.RenameField( + model_name='teampilot', + old_name='pilot_id', + new_name='pilot', + ), + migrations.RenameField( + model_name='teampilot', + old_name='race_id', + new_name='race', + ), + migrations.RenameField( + model_name='teampilot', + old_name='team_id', + new_name='team', + ), + ] diff --git a/timelaps/migrations/0011_auto_20190112_1017.py b/timelaps/migrations/0011_auto_20190112_1017.py new file mode 100644 index 0000000..4169685 --- /dev/null +++ b/timelaps/migrations/0011_auto_20190112_1017.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.5 on 2019-01-12 10:17 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0010_auto_20190112_1005'), + ] + + operations = [ + migrations.RenameField( + model_name='relay', + old_name='team_pilot_id', + new_name='team_pilot', + ), + ] diff --git a/timelaps/migrations/0012_auto_20190112_1019.py b/timelaps/migrations/0012_auto_20190112_1019.py new file mode 100644 index 0000000..17c085a --- /dev/null +++ b/timelaps/migrations/0012_auto_20190112_1019.py @@ -0,0 +1,83 @@ +# Generated by Django 2.1.5 on 2019-01-12 10:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('timelaps', '0011_auto_20190112_1017'), + ] + + operations = [ + migrations.AlterField( + model_name='driver', + name='first_name', + field=models.CharField(blank=True, default=None, max_length=30, null=True), + ), + migrations.AlterField( + model_name='driver', + name='last_name', + field=models.CharField(blank=True, default=None, max_length=30, null=True), + ), + migrations.AlterField( + model_name='race', + name='comment', + field=models.CharField(blank=True, default=None, max_length=256, null=True), + ), + migrations.AlterField( + model_name='race', + name='end_date', + field=models.DateTimeField(blank=True, default=None, null=True), + ), + migrations.AlterField( + model_name='race', + name='name', + field=models.CharField(blank=True, default=None, max_length=30, null=True), + ), + migrations.AlterField( + model_name='race', + name='start_date', + field=models.DateTimeField(blank=True, default=None, null=True), + ), + migrations.AlterField( + model_name='relay', + name='comment', + field=models.CharField(blank=True, default=None, max_length=256, null=True), + ), + migrations.AlterField( + model_name='relay', + name='pilot_chrono', + field=models.IntegerField(blank=True, default=None, null=True), + ), + migrations.AlterField( + model_name='relay', + name='relay_end', + field=models.DateTimeField(blank=True, default=None, null=True), + ), + migrations.AlterField( + model_name='rules', + name='max_driving_duration', + field=models.IntegerField(blank=True, default=None, null=True), + ), + migrations.AlterField( + model_name='rules', + name='min_stand_duration', + field=models.IntegerField(blank=True, default=None, null=True), + ), + migrations.AlterField( + model_name='rules', + name='relay_default_duration', + field=models.IntegerField(blank=True, default=None, null=True), + ), + migrations.AlterField( + model_name='team', + name='name', + field=models.CharField(blank=True, default=None, max_length=30, null=True), + ), + migrations.AlterField( + model_name='teampilot', + name='order', + field=models.IntegerField(blank=True, default=None, null=True), + ), + ] diff --git a/timelaps/migrations/__init__.py b/timelaps/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/timelaps/migrations/__pycache__/0001_initial.cpython-36.pyc b/timelaps/migrations/__pycache__/0001_initial.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f35929a45ca2e1706083097020ae4354d9086c3a GIT binary patch literal 1793 zcmZuyOK;mo5GI!^iKHZ3aTM3-!+ob!ACilniWWr_t8RiILE+>?6xh<56-|W?bxEa_ zuj$o4r074IYft_QJ$06(XxWemk~6b2-^_k9T7KK@x=;W4?$_VChViel@#7>vq&pkZ z0}L=DBQ`xVW*#%O&LYd>KO0~H|H}X_&3WUEXF;#&$QoVTUyLjX@~8TB0ny0`m@O?ZUoS_}?va1gb}j_iE{|mfpXC{lTWTf&AfCVE(~eDr6y?AbT zwGyx73Y|=<(2v3ki5-eMOEW1FKbGjuLY3u(e04|zJ1}Xu{Xaz{lOR7wC-SRRntEPD zG-siVAVYrYPo?Tn47yqFt6Tu(MO!9NNQA_bWfY+e%ksa1t!Wy^GRdzDlcE}@GV)j0 zR{A9h2y{w?Fwi~sGoj>cDIlvD96qsjM7|8&sCbF1EzMU0Ci7S!B3Zw#JxC7 zG?=bpowuiVq{&IrcqKrs@TTPtnPXr30C5^7!FA+*Sx=Sx+Rk4}KSoDCf6?_|qbTcQ zHxFal&LSI@?IG5jG!b+_NaBX&DRM=$U36LK z3(%gu5{mYmZA5Ago)7wHi^5+BbcLXJGLzg9;`gN=={}Oy3X?FWslX1%1yL@OX(%&A zCzgTj<6?}S>CDQ~7H3QZp6K4AbA0ZrN}N#BOR@7L$z>p`h0dcijijHHYwk&^WEdn* zX%?F>_mdz+24^%Ini)Drv2{FtaXg;ij#Zzg}f-&#v9 zX>P4+O<()fx=U-?w)S7Y56lDeQ2Wqzz{+=#Z_q@iWMBwq1=%IP_iN*@{Gtrk+^FxV bx+3zAB`DZ9lh5=b=cZD-5ytNM$Jn&zM%{$PshJoo# zcTOf~WG)mhYtv7XBxO>|Msj7m`9=xjJFFvOfnwr@veKuOZl6``$ffes3GHcB!k qJD!ILZmYA1njWmVUKInlYx`{L`;NBk*a}T>z8&_``PFWwKK%xjpn|*r literal 0 HcmV?d00001 diff --git a/timelaps/migrations/__pycache__/0003_auto_20190112_0903.cpython-36.pyc b/timelaps/migrations/__pycache__/0003_auto_20190112_0903.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..967da008276f35453c5bac6a55bc28430e93f8e5 GIT binary patch literal 873 zcmZ8fO>fgc5cRGj+k768 zBU;TR0U9v_Bj&I(XR(P^X6x!;uQ_ptxPybtg#mh*pAE8MHUbyCwFy29*H)J^f-&Wc zVGFj`3?^%HZpK^ih%`M`-lvTi<+f>oc~Up(X%t0!B3ZPR*o$@#qut#-5goifP`0Fm zm9kn)iq45vFUq7qWpy~#5mBdk)ru7E7#Xn0Q1G*k1*RGR-Xx2>RbEvJs)8*l z-d3l9CAEL)6Da#8#T?Y6me`!?wZzj-kUInDn4}3Y zlz&=DOy}iCTqy^#q?}iZ!_w0?K{UxB9JaSfiy( Hm}~w4a&Yfk literal 0 HcmV?d00001 diff --git a/timelaps/migrations/__pycache__/0004_auto_20190112_0906.cpython-36.pyc b/timelaps/migrations/__pycache__/0004_auto_20190112_0906.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..afc77981bc25d2366ed4e8d5b917c34684d518fc GIT binary patch literal 599 zcmZWmy^ho{5cW@!O#&xTac_W>W|O@|NGl<9ClFLzb5s$MWirEFR(2AcEP@)^<2`72 zAh%Ta3RH}5PvEfB`qm@|s&w3(j6K z5Fo!YkjQuPi>xI?SFDI{=`JgT&uzPPdTRS_^oi{O&Dez0aV^L=r!y`IkkuSmEg;|W zT4J<|f!blRTR;p6EN%p(H&Z^a>TCL7h zwW-!Va=JmkXnJe0n{F8m`evr6KPiLVcDnXaw>PGcL_1Jbowi7^fbshl4O|w&#l+Ml z1V!dkHQ!On=Soq{-XPicmHM#PCe#HFaKH|*Yg!zgphBNtm(9y{d$ev&8gYWZx zz(0z8XYOHmEWod;(sok`0Xi^kN?->$#VGY!rz8b x#+)FPNfdEGdyZcgkZ#9X&kSd=meW7M`m zPtZ^)psF<|Rj^_SK2>bwS-Asa+|lb)k@WN6N=VsEnn#0cMy0CesLu z+@eOkb%*BhIzk27O*35W;hp8%#@)d8*pHLa2mcC}{zaClXj(7JUk8+77X4oQ%{G0? zef&T7=|T3K3vzB!6)u4znzqd?`YL@y`P(oLlUaHI57nfVzL}|JJJhP3vpVj%aV$)# Gj`#sOFplp4 literal 0 HcmV?d00001 diff --git a/timelaps/migrations/__pycache__/0006_auto_20190112_0912.cpython-36.pyc b/timelaps/migrations/__pycache__/0006_auto_20190112_0912.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cfdba4fcee77b7cca20da3118b9ba21bbf25027c GIT binary patch literal 625 zcmZWmJ8u**5VqI*y3Jif3M5LpZL)iZlISFaf`p(VMbcT3EORqD`S3onyB9=F3L1V0 z75~RA6@P(>@m?+u;njRIpV#y7=U1~?_W9TH>U+T0Z}w<~6rYjxFA0DFx2)olbM}Ej z0OFQ`K)wmS2^m0m$@1tAontw7S!LFp9!yjBE5Eg02?b|ly$58H1EbXGnoEJQ&ZVPM2690&H-J{vxsxpR*kTP>uMGAbY0uoj1^S=w4O(zn)8d_oKUw$8 zSNHJuvZ(5zfZ`qA6mQ$sn$=F}Vy}SGt+^+~!&4L_%*lVk%oj)P*G^F7n5=(6kcv1A tc|czrJoV$bb5d&p8(puPBlt809H;vd0Hq6Po} literal 0 HcmV?d00001 diff --git a/timelaps/migrations/__pycache__/0007_auto_20190112_0930.cpython-36.pyc b/timelaps/migrations/__pycache__/0007_auto_20190112_0930.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..16ca204a7c9d817ae595136c185d180f66e31045 GIT binary patch literal 737 zcmZWn%Wl&^6rG3d*iJ(cn*twzA1yn~Wt`*DSDqp_T>0_<6dhlQu1j#yEKiI&0>1v|lcgGu+Juf@U!X z77KW^;IY)!(gt(~HaJ_d92kHL-c}$V5ZCU~10RN44o6$Lkg*RV41R39%Y9ViwrQ@j zq-xAb6h$vpvT92;jV7~bGMTDqHkrl_)ahE+#wwCr8!t#XQwbjk9BB_(9X*1-T?6FV{Q6JqPGM z*OG+Cmr1d?DG7VAUsifIt)HxZMyU||z7F%E4IzB1*Wr0pW$C;hX}B*=B~|*@2oEz4 zvFES;>-lLkt~NFOS5#>86v35_WpROzBk0|u;GOC!u#5-Gq*#<=_|z5I70?|X((KuD S^k&@GeY@UJoeg#6vHSyUl*G6I literal 0 HcmV?d00001 diff --git a/timelaps/migrations/__pycache__/0008_auto_20190112_0934.cpython-36.pyc b/timelaps/migrations/__pycache__/0008_auto_20190112_0934.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d107dce1db3036ed908e5f5bfe583c918a1702a3 GIT binary patch literal 779 zcmZWn&59F25bo~z$z+nqvIiGIA7Cz-$*!OQkqx`XgSd$CGziUXsy56pfA&lQ5pR0U zgNRq3rmvp%6+BrzF}s2d{qc2IRo7QleKs2TKYmU>ei4lQV*f0g_&M!nOaKgc&I%s$ zLd1fbv&gO3e$BuF`x^rrdFFhzVh6;613x12D?i`AALxjfBt{xpN{LTGT*F6yE!KCEZ4TV z;I1$z_(R^=16TL=lE-k}mAbF#(cR^E|F_16V$=z}*2UiI-?JxV(B6xEQ(v0aG)BS^ G_pCoV8P)v& literal 0 HcmV?d00001 diff --git a/timelaps/migrations/__pycache__/0009_auto_20190112_0938.cpython-36.pyc b/timelaps/migrations/__pycache__/0009_auto_20190112_0938.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14e51fcc77ec1776d7968659f717bb7fbadb7f69 GIT binary patch literal 710 zcmZuvy>8qv4AzhB*iJ6!md+Uhc!_;Uha6B832AQt%EX#11#>)CD&6`F7B&Z zY1vtKR20R9klVf$XT^L`%;#sKSe(CcfsrfaV%2~E*{i#Zx}e!=opGe+DTzkb3T+<4 z`$}nWsqLld2mdlOnBc)BgAf?T?T_lB6$-bWQmK#5Kah}3W4FbTA_X*#OJNl zK7~Jl>M)LKR+X}b;g2r8(!Db8eR6{nByP6!wIaE}=F+xP&x80*%#ly%;rDG`H+>HI zQhmvU7$N3S5KxBSAsc1-ET{9} of0G3+fsJg|?J0a3NDV}W%U!{v_8Q~5`0d!9cb>2HU3kU+0MOI7*#H0l literal 0 HcmV?d00001 diff --git a/timelaps/migrations/__pycache__/0010_auto_20190112_1005.cpython-36.pyc b/timelaps/migrations/__pycache__/0010_auto_20190112_1005.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b3e8e3c49356beb6a036cbcd71974e7f8cf5748a GIT binary patch literal 625 zcmZ8eyKWRQ6t&0m+R1L4NR)KbWITzGSSgBvghE9M(v6TTv-fJ{mFL0CY@*bmpy5OK zhWv?3sQ3jcu4l6(VC!C=WBWdQe7aaTYmHQp%;$+p$$AvRultJW+Ca`r6G# z)OBZUJGyjQlmQn_C>PXo3uslNYjkOA;Sn`>yF*E@SLh=`4_xAtP1J*{Jm|ezeMBx# zT&kuZrCg>ICEi*jJXh-TR$E`fGr$fTz-DD|=t+C#4nCkiyfkRRWo?I#B7SH6q0jE! z@9Uy&#sZ4BcvHOTI%`%trHj1+N_XZjDW1Nfkg}Bj2~$e>>bSe>1!a!Oh8N^g5r-iU sXvV?6>vZpm)SAIYH|zEoK24oZ`%gXY&=I9_>Dli2=f1+=UpW_l0M=Qgo&W#< literal 0 HcmV?d00001 diff --git a/timelaps/migrations/__pycache__/0011_auto_20190112_1017.cpython-36.pyc b/timelaps/migrations/__pycache__/0011_auto_20190112_1017.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0cf14303bbe03112c828f8f5b2af31408abc485e GIT binary patch literal 557 zcmZWlJx{|h5Vhl^O+&lDz>Zk5kfaD9B!r5DV1fa*3dst+Q{~F}AW1=;VdY=2@F(~o zUYYm{Oq^3nk+5~AcW2+zy|+IY1h4N$w-21L5BBG{ghv$h4kci~HOu&zb9TYN0rAX0 zAfGu;V(fr>!$R+q{;`moAXC#SZB&uh6WdxHkHCnc-lc?W%z@FUKjmYA?#u%LE_l#+ z5!C5GmneItce&y+exowfX<3`?I8I`j&YMCGD$`Q^ z7SY<)hzv;n8ITOHUL*5bk*`JF_g{%ER}?#AG#Lcky6IjDbir9^e9}jY+53YL;1h9`^JSIqMbw zhrh!AQCCm=1y5GbJ}|&Ald0~iuj^esuba(i|M&Li=MBdGu>T&P_B-?yFNgpGN3q1| zJBizO9rlrd3*HX~o^(ducdze(f5_UwC7oq$7o#K|YGL9mEwGkkAXPE2(Ck^G%?^FV zPlqwd`VO$Z3r~hl-;@3*05T_QqXh_{2A0+@dp zphiu6isAmOdssJdB9+Js+~{_DJub#3<6GU{HZfbg*X_N*8tC{;YK%@|T^OE?Vn zKBMloeGHD3NWb6$$P+PEh6Y1?<4UGObBcaCR;ulh%nnGYNHS8#;3Sp`FjQh{5PdBM z5*G$plE~CtG8!AK%M>^WBio*i$epGUX1Zy~G7*dlBeW?`V4x|Bb6m`0l^H%b)mfTh zSPD6rA$+W4fvYw=n@^k$IgBSGjIAV2IT^F=X0r8(?li9}xo@OMFtoJvg+Zo4>b9!` z8(57He;o^DOJF&WIfW+EK`aaHmKp6TBlQPc9PL>_`2JK( zcx>)bC61_DC5(%oQX_}c!x&|`oZiP@Ouw{|Sn~Im5TZ5hJ=1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFBkpXyb}EseV5cS zeaC`=oXq6JlFaTZl OX-=vg$n;_$W&i*@&L&R) literal 0 HcmV?d00001 diff --git a/timelaps/models.py b/timelaps/models.py new file mode 100644 index 0000000..297657f --- /dev/null +++ b/timelaps/models.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models + +# Create your models here. + +class Team(models.Model): + # Name of the team + name = models.CharField(max_length=30, default=None, blank=True, null=True) + + def __str__(self): + return self.name + + +class Driver(models.Model): + # Name of the pilot + first_name = models.CharField(max_length=30, default=None, blank=True, null=True) + last_name = models.CharField(max_length=30, default=None, blank=True, null=True) + + def __str__(self): + return self.last_name + +class Rules(models.Model): + #Minimum time in the pitlane + min_stand_duration = models.IntegerField(default=None, blank=True, null=True) + #Maximum autonomy of the kart in dry condition (In seconds) + max_autonomy_dry = models.IntegerField() + #Maximum autonomy of the kart in wet condition (In seconds) + max_autonomy_wet = models.IntegerField() + #Maximum driving time by driver(In seconds) + max_driving_duration = models.IntegerField(default=None, blank=True, null=True) + #Start and end date of the race + relay_default_duration = models.IntegerField(default=None, blank=True, null=True) + +class Race(models.Model): + # Name of the race + name = models.CharField(max_length=30, default=None, blank=True, null=True) + #Start and end date of the race + start_date = models.DateTimeField(default=None, blank=True, null=True) + end_date = models.DateTimeField(default=None, blank=True, null=True) + #Lenth of th race in seconds + duration = models.IntegerField() + #Link to the rules of the race + fk_rules = models.ForeignKey(Rules, on_delete=models.CASCADE) + #Comment the race + comment = models.CharField(max_length=256, default=None, blank=True, null=True) + + def __str__(self): + return self.name + +class TeamPilot(models.Model): + # Foreign keys to the team pilot and race + team = models.ForeignKey(Team, on_delete=models.CASCADE) + pilot = models.ForeignKey(Driver, on_delete=models.CASCADE) + race = models.ForeignKey(Race, on_delete=models.CASCADE) + order = models.IntegerField(default=None, blank=True, null=True) + + +class Relay(models.Model): + # Name of the team + team_pilot = models.ForeignKey(TeamPilot, on_delete=models.CASCADE) + #Starting timestamp for the relay + relay_start = models.DateTimeField() + #ending timestamp for the relay + relay_end = models.DateTimeField(default=None, blank=True, null=True) + #Does the pilot did refuel + has_refuel = models.BooleanField(default=False) + #Average chrono for the pulot on this relay + pilot_chrono = models.IntegerField(default=None, blank=True, null=True) + #comment the relay + comment = models.CharField(max_length=256, default=None, blank=True, null=True) diff --git a/timelaps/models.pyc b/timelaps/models.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee79f525e9dc4cb8a3da0bf814dd601a79c3a2f6 GIT binary patch literal 2758 zcmb_e+ioL85bYUX<2YGw1SsYK1W3rd#7_v25RgrXgb=G$XN81?G@A9aoiTHd6G!%W;szs_w3WUdaUa`5mxezD ziOJ^nCVq=HIjNyfxCx7^*d&o9hF3t_Xa=wO z^d`vv9jRty+_NMCZU594j4q4#r72$J@nbCdZyq1!S7>EwXm&!T<_iT8%>!%lE$7#V z91%7_XBHQw6}T+dCE;qePY{lsM4^(e%$~5a zd6uWQK~&tnYW&f-Ja}GI#=gd#@JIyi<7~d!>kT*x$Q_%QSy&~ucI}e`;{Q5YNg=fT z6TgqoiSL*QryC}i5W>XI80;{C60luVh%##Cs?2y3$Aq(NGtpz+ouE)+eP5X)RwIs& zQAfPVqYYaT%au17kS)fsBWF=)o&l%CSQE2EjUIE^eJVE!mz&jKEq&}Mr2b23*c`F{OuL|2AABny}P#K zD%-YiQfY{tM-QZu=4B$4Prr?kNX#NY%{m|jcgavSk0j0l`r9W~?_%RKw2~zqSb3+O zyjC;IYJ~n(=no^*5fM9702Qv<0}*Raa5|JU=!*pxzleLY#z}lY-9zGQyFYnc3!PX> zZ4&*g3W1Zq$eeX(SLXL&*6(r2o9HY#aTP^`?lexBI3tuU)$U22Cnn4!EjAazO;`qn znN=onnLxb>U%~XIK(TY#MJeu+viGsyhiGegH&~qbc`6E9UF5UMRs}C|tW+ZWXc1=f z{49Fm?sjte4Sy{;`B89^uA((fU1+{(kC99Af9if=e8$_pJVrP02hCx3*c$eSN5jrP D@ue7_ literal 0 HcmV?d00001 diff --git a/timelaps/serializers.py b/timelaps/serializers.py new file mode 100644 index 0000000..269957f --- /dev/null +++ b/timelaps/serializers.py @@ -0,0 +1,38 @@ +from rest_framework import serializers +from .models import * + +class DriverSerializer(serializers.ModelSerializer): + class Meta: + model = Driver + fields = '__all__' + +class RaceSerializer(serializers.ModelSerializer): + class Meta: + model = Race + fields = '__all__' + +class RelaySerializer(serializers.ModelSerializer): + class Meta: + model = Relay + fields = '__all__' + +class RulesSerializer(serializers.ModelSerializer): + class Meta: + model = Rules + fields = '__all__' + +class TeamSerializer(serializers.ModelSerializer): + class Meta: + model = Team + fields = '__all__' + +class TeamPilotSerializer(serializers.ModelSerializer): + class Meta: + model = TeamPilot + fields = '__all__' + +class RelayPilotSerializer(serializers.ModelSerializer): + class Meta: + model = Relay + fields = ('relay_start','relay_end','has_refuel','pilot_chrono','comment','team_pilot','race') + \ No newline at end of file diff --git a/timelaps/tests.py b/timelaps/tests.py new file mode 100644 index 0000000..ec5289c --- /dev/null +++ b/timelaps/tests.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.test import TestCase + +# Create your tests here. +from django.urls import reverse +from rest_framework.test import APITestCase, APIClient +from rest_framework.views import status +from .models import * +from .serializers import DriverSerializer + +""" +# tests for views +class BaseViewTest(APITestCase): + client = APIClient() + + @staticmethod + def create_song(title="", artist=""): + if title != "" and artist != "": + Songs.objects.create(title=title, artist=artist) + + def setUp(self): + # add test data + self.create_song("like glue", "sean paul") + self.create_song("simple song", "konshens") + self.create_song("love is wicked", "brick and lace") + self.create_song("jam rock", "damien marley") + + +class GetAllSongsTest(BaseViewTest): + + def test_get_all_songs(self): + + #This test ensures that all songs added in the setUp method + #exist when we make a GET request to the songs/ endpoint + + # hit the API endpoint + response = self.client.get( + reverse("songs-all", kwargs={"version": "v1"}) + ) + # fetch the data from db + expected = Songs.objects.all() + serialized = SongsSerializer(expected, many=True) + self.assertEqual(response.data, serialized.data) + self.assertEqual(response.status_code, status.HTTP_200_OK) + +""" diff --git a/timelaps/tests.pyc b/timelaps/tests.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5a568d5dd12ca4eaee379ac824390a7763fcf194 GIT binary patch literal 265 zcmYL^!HNPg42IK=2XPU62oH0zC-)@Fik>};o(7?mX;-?mGi8zyd`I8L2hh}AG=#tT z`llf+ZqvzizC1SYACk{+kbrY8ET@0~5Czl%L}m#=LM)&zm\d+)/team/(?P\d+)/relays', ListRelaysByRaceView.as_view()), +] \ No newline at end of file diff --git a/timelaps/views.py b/timelaps/views.py new file mode 100644 index 0000000..ba27bfc --- /dev/null +++ b/timelaps/views.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.shortcuts import render +from rest_framework import generics +from .models import * +from .serializers import * + + +# Create your views here. + +class ListDriverView(generics.ListAPIView): + """ + Provides a get method handler. + """ + queryset = Driver.objects.all() + serializer_class = DriverSerializer + +class ListRaceView(generics.ListAPIView): + """ + Provides a get method handler. + """ + queryset = Race.objects.all() + serializer_class = RaceSerializer + +class ListRelayView(generics.ListAPIView): + """ + Provides a get method handler. + """ + queryset = Relay.objects.all() + serializer_class = RelaySerializer + +class ListRulesView(generics.ListAPIView): + """ + Provides a get method handler. + """ + queryset = Rules.objects.all() + serializer_class = RulesSerializer + +class ListTeamView(generics.ListAPIView): + """ + Provides a get method handler. + """ + queryset = Team.objects.all() + serializer_class = TeamSerializer + +class ListTeamPilotView(generics.ListAPIView): + """ + Provides a get method handler. + """ + queryset = TeamPilot.objects.all() + serializer_class = TeamPilotSerializer + +class ListRelaysByRaceView(generics.ListAPIView): + + queryset = Relay.objects.select_related('team_pilot').all() + serializer_class = RelayPilotSerializer + +''' + serializer_class = RelayPilotSerializer + lookup_url_raceid = "raceid" + lookup_url_teamid = "teamid" + + def get_queryset(self): + raceid = self.kwargs.get(self.lookup_url_raceid) + teamid = self.kwargs.get(self.lookup_url_teamid) + relays = Relay.objects.filter(team_pilot__team=teamid).filter(team_pilot__race=raceid) + + return relays + +''' \ No newline at end of file