From 6b64df90981b20d08891e544fea3621c593d6919 Mon Sep 17 00:00:00 2001 From: Juan Diego Bohorquez Lopez Date: Fri, 24 Sep 2021 21:58:46 -0500 Subject: [PATCH] Fixes #34 Solucion de problemas de compatibilidad --- Checkout_1095834454/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 268 bytes .../__pycache__/admin.cpython-38.pyc | Bin 0 -> 432 bytes .../__pycache__/apps.cpython-38.pyc | Bin 0 -> 570 bytes .../__pycache__/models.cpython-38.pyc | Bin 0 -> 2247 bytes .../__pycache__/serializers.cpython-38.pyc | Bin 0 -> 1396 bytes .../__pycache__/urls.cpython-38.pyc | Bin 0 -> 650 bytes .../__pycache__/views.cpython-38.pyc | Bin 0 -> 3699 bytes Checkout_1095834454/admin.py | 7 ++ Checkout_1095834454/apps.py | 6 + .../migrations/0001_initial.py | 49 ++++++++ .../0002_alter_articulo_producto.py | 20 ++++ .../migrations/0003_auto_20210920_2137.py | 25 +++++ Checkout_1095834454/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-38.pyc | Bin 0 -> 1547 bytes ...002_alter_articulo_producto.cpython-38.pyc | Bin 0 -> 881 bytes .../0003_auto_20210920_2137.cpython-38.pyc | Bin 0 -> 975 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 279 bytes Checkout_1095834454/models.py | 47 ++++++++ Checkout_1095834454/serializers.py | 19 ++++ Checkout_1095834454/tests.py | 3 + Checkout_1095834454/urls.py | 15 +++ Checkout_1095834454/views.py | 105 ++++++++++++++++++ 23 files changed, 296 insertions(+) create mode 100644 Checkout_1095834454/__init__.py create mode 100644 Checkout_1095834454/__pycache__/__init__.cpython-38.pyc create mode 100644 Checkout_1095834454/__pycache__/admin.cpython-38.pyc create mode 100644 Checkout_1095834454/__pycache__/apps.cpython-38.pyc create mode 100644 Checkout_1095834454/__pycache__/models.cpython-38.pyc create mode 100644 Checkout_1095834454/__pycache__/serializers.cpython-38.pyc create mode 100644 Checkout_1095834454/__pycache__/urls.cpython-38.pyc create mode 100644 Checkout_1095834454/__pycache__/views.cpython-38.pyc create mode 100644 Checkout_1095834454/admin.py create mode 100644 Checkout_1095834454/apps.py create mode 100644 Checkout_1095834454/migrations/0001_initial.py create mode 100644 Checkout_1095834454/migrations/0002_alter_articulo_producto.py create mode 100644 Checkout_1095834454/migrations/0003_auto_20210920_2137.py create mode 100644 Checkout_1095834454/migrations/__init__.py create mode 100644 Checkout_1095834454/migrations/__pycache__/0001_initial.cpython-38.pyc create mode 100644 Checkout_1095834454/migrations/__pycache__/0002_alter_articulo_producto.cpython-38.pyc create mode 100644 Checkout_1095834454/migrations/__pycache__/0003_auto_20210920_2137.cpython-38.pyc create mode 100644 Checkout_1095834454/migrations/__pycache__/__init__.cpython-38.pyc create mode 100644 Checkout_1095834454/models.py create mode 100644 Checkout_1095834454/serializers.py create mode 100644 Checkout_1095834454/tests.py create mode 100644 Checkout_1095834454/urls.py create mode 100644 Checkout_1095834454/views.py diff --git a/Checkout_1095834454/__init__.py b/Checkout_1095834454/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Checkout_1095834454/__pycache__/__init__.cpython-38.pyc b/Checkout_1095834454/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d3333c4514998555f67147d39681bbae5dface2 GIT binary patch literal 268 zcmYk1%}T^D6ooV3LWFsTxOAb+PX}g1#E?V?)D)6dH-S*nfKl5FNh|tDE`1%h^9b%- znXL4{`7YA>+ShDcmH-ql6Afa5m!~AmsHQem?P~YN8EMJx%Sf zQ`KNeaIY4g!-lhaDkLL_K*mWUYr#+n3562z8gW8}LZE;>KJnqjzFtd^9qVQEUpO ZwHw^1^~L`E>-eho-SlFw^DE!U;1}CkMT`Id literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/__pycache__/admin.cpython-38.pyc b/Checkout_1095834454/__pycache__/admin.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..919e31210a80f97f2609b3ec1faf4f20edf844cf GIT binary patch literal 432 zcmYjN-AcnS7;V;VR^9dty`A9LFE|-uX)6R~3;j_T0jW)#nQb$YcIYGc7JBK8FW{T> z)~mgOSEkd89mx64$;Wp{zOdasQY2m>jJ{<3uFO7EX)fgvGf7y%AW>4V06@VttR}TU zAz-Dx)k))B-u>(5o<68FuKP;2v6Tr*7nF?%r!?DwKL<{nuD0mlRg^7RFJ@WJ={>K> zX4y;`CW$EPg65>uI9XDW6JB=Ah;y1Vlcj4OiBdCoPU9kB^Py!}I&`ei4?Jkhb<5U$!wC$>vOQ$P5hf{( z8M>x|vP=)4sSo?Z0WzUEclD9Xv25S)Ja;Z_HS1mlw}xjUkF1$|J>!%KWIx+6OH;yQ tg3Lz}Kd~ae8}z4>v(b1w8Kd1^dh3@`o5`OS3Aw0tBs57aps6j;0>5x#c4q(p literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/__pycache__/apps.cpython-38.pyc b/Checkout_1095834454/__pycache__/apps.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4937997833c807ca88153fcfe3cf0a822249808e GIT binary patch literal 570 zcmZuuOOMkq5Vo7FRQ7QJ4qTATu?MPsbfsOiLTi#Nid0f5X+erCStfRimn05xgMcgi z84ig5lPf3w0w>1pqTK@{&3InlC(q2{;9wVlJUNTSPk4X1;I8-(T!LBxMk0wzRN)+B z^b*N|^u8hKDg4#T2hz{bXy-R{p%L!y(WVJZz0|A1W$p@w;1bk61fx)nB?2_gJvqpI z=>d!1KMLNd;=SqCM~CO9XD5@%>150H<*~dL^~#Lp+i_*2D((1%UeRuCuCyv;|KJ~x z-y)OIPCw+l7M0?>-{l;DUFrON&Odabys6xmYAL#M%>~f$<%Z99weP5POWK$}KZ0j$ zVO49{btmd`HmgW_*%C5t3}9i>?u(vZYSxX9*dOs6D_NJf)6O~NQ;v=CBNx-jgO zw%XKW9tY(3@c4)YaWI{c6W|G>jHc;q3ZcW!uI6uO8nIM0#_F|cwXrPv6cwhbR9h(a zpP89x8ar-2w;p`l-OxHS#6I3+l9AW%-E7izwgWex>%E+M0VA6{%%_T1ghy54>7 EFIbR~^#A|> literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/__pycache__/models.cpython-38.pyc b/Checkout_1095834454/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..39f988f2858e1c97fde27c9dc1d1cdc9920dbb95 GIT binary patch literal 2247 zcmah~-EZSW5ck?n;-pTSmU19YKmhR(KFVFMCpd&qLz12Xt&5TrBrB5Hdbh2E;|**3 zxT}sQ?zMlx2?-wWiN6QG@^t?KPt2_AG~enyYhTVlu+?Gvby&FJla# zS3tMWJLpx=Yv=kB=r+WF_Byjz^^xW-vl?51?+UY79li~=3^A=_%N;6Zkcf_$&LoYW zGI0BZWVI>1?}a=%PEJM;s7=#Ec#-(Yql`(CucP`w{QT;2wv~2TuRn-eB18w!6)~(>)lD2L1MKv)gM9+s>%%bbEtw+oz0A17D2y zf;bRSbJXuNH*aj-9C!Mi-Tme*IH%hiwg-d#T^Qot{hiTw?Llum;4={eE)ZKh?%nVC zVmjs0=i|-^_kR#+;@!M)=k}+!wzh6>jq`+V%pPPF&x;f3c{cug9fU?suRRO##`%&< zs3CF+HDn>vhL8tG!655k$TdVoHb7*hL?krCaqdSyU4PDxTJZl~Bqr(K{n$}DZObI^ z(@?}O%-xaG>(9AcT<5e_Gt2WLI^~|1)jSUnN<-9b&-*c@VLl@fp{&|Dp>ikSA(KmL z+@%T6#|UFq+X)3tl)*KbpNP!vM+raX`6jpK(sqF_oh`%580PNRHvc}9;Z6LJ-f zkr=yNN1;Hx5D2G4%%LM_F^()^7eC!HEK|+;F!9WT%eUc;zXGvXsyr`Ja;B>iHMs=^ zS!Fsi&J4E(`Vuo)35wHZWmbV=Tqshgj-|{h0Ec?0ipYa@!4p1e>GE}Om6=f*hN=o> z6~>oRJTJeOVHV5pH}ZQ?g8IZ*EW(eQEi#C!Ey98 zf1uKyRXXiqr`_$zH(*U>eN&)g4SOTcIoRD*aY_V3zKue$4TD$+Y+kqWRhU4RG2TQL zX+U%~kWASxQEYx6g|PTPC}t^g<+nhgBhd;SZv+cSXCUbo^!kFnoZn+`LsTFOR#xpt zN1_+q3xq^8CDL6Yq)#_NTp}HU*MV34uYz<#O?4MY8G@H1b44>#6CdJcJOx_j>fCoh zC#Ti8DqZqjJQrb-@1am`koNK|5UxdMJPZRS+$sxzM?j>=HD@%4q4xNU$^<%8lnA%% z2PtqXkMN>3T%_#-I1Z0I?+=ZlKj2rFIP0`3S(Qy_bSyU5p(2ypDA*Ej4e literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/__pycache__/serializers.cpython-38.pyc b/Checkout_1095834454/__pycache__/serializers.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..271a1c8867484f4c20a15813e4b9c00c1e3bb53e GIT binary patch literal 1396 zcmbtUOK;Oa5cVsM^JogC7dZJEB&t3oiV&)08)T_R;f*jFXo10jkuMb~H0P`>p4j84s71ngXmJwiA7n1mPDNi%S7x4>tEf5P^uP zkcqx1qAsOUCi^nzGEq`xAiNVuji}!RqEh*=b|(8OcBE;u0#x5=yj6K-=83-!)A`yHEUJ{7} zFG**TFB2JFQOZ>_Vl0^yW|56q#QPQeEj)aw!dqRyqq46M(XSB+kmS>+cOk7E&`DI* z!!SzIFm$_WsfA%4Wi$-SW*BA#nWm_>!|=;AO6Mn?>riD4;%Hi`qlBh}p9`!5pHYe5 zKh0Oc5J=&{;WWy3gI-Q8mK;<4g+6qh_qNw}EW^?r*BbT*o@4CmmaX>Qt-e& zvEw4kD2r)eex~tJF`a}P>$^KIx3;%;wu6PTt&P8x3er-CBslhyCMqI(1d4mEFbz{{ zpuk3~+<()ZY0G$^g22t8O97#>Z`JMoeb6!3B#EbK@qi9^avh_pJ;N-a?l@umfGvtsK3EK3CGTEi)~4hR%$D?KiCi+KmY&$ literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/__pycache__/urls.cpython-38.pyc b/Checkout_1095834454/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..940088648b419342c04111904d3760ba68eaa4a3 GIT binary patch literal 650 zcmYjN%Z}496t&Z|&Ga!U8`jwti87B?VnzrNB|$_gElOLEqDWPU-Htm+T-iwn*mli- zz=9w0meu?M8@TQiX>9rEoa@IqzKd?Rg zdt;5G4(ZNN|MVVQQQuJJHYsmZlND)J5!%P9>(NzGWo5{#l8SqXj-ZO4sb-o8!Ac%A z-3J0?>vJM$k>oV85>c|W%DA$eBa2$BSn(w-c8q^(1;B0p!0V}~$cst8tJ-9f6l*@H zL?(p+R-y)=o(d|<CK@laHjplc=}YScRBay|r6`+o>6 zI@u|4-KaqH%y*2##bujo^G{Cb$06Nv2@MvE%h>+Z=OK+otHmeIgHJ!_|b{{f?Xy4C;y literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/__pycache__/views.cpython-38.pyc b/Checkout_1095834454/__pycache__/views.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b30350456c5c6de24020ecf092d19c9784f0bab GIT binary patch literal 3699 zcmcInOK;mo5av@NWm$IYIBEJ+i?#^U#?2FGf}*t`DXEH7E+jbxSOEgV-6T{bQ5jNB zV%WVT*W7zdj=uB<@!C_4y%s%mW=Tqv?KB1IP~dVoyE~k3X1>|g*5YD8!t2l9esKOS zNzxzmlD#y1*}yya6&ofoc_0mCTb2*@m4Px;ZB@wCfi~1_UG%jjTvCv|RD9XMJD`S3w#+13VKP&mNw&&Vrr}d# zC6;6PXR@ucC1x-adpTBM3pkc%Xc|5ZrlWz&QK9Mpc%fhUso^T9GQG%+bXV~X%GiWb zUw)yyl=hTR-4$PauI#CywyXB_r*d1`SDPKgqYa(W6Dt>$61`P_I0h$(^8TGZcf%l3 zoxvbFIX~Lw;5h@x;b$U^IiX`|krwd5-6#+I;e-dFZMdO0C>z*0$Q6R-V57$@F!vK;)QEhzrK9s%GE1f5%cx&lSmtQL3jc! z4+y)Y6y&13vy?aoL$Xfeb8(^g(=Fn12|J;*EB9q4KbQBEU4K?n8H*~ zrubl_lq6DG(~@Bs*V=mhG1}a*aWkg+dPg+jsy4*SSpaUutJMh zMiaj6C&nfrq$r3`z)9>yITyGS^3&K41Z~x#Y~T-3p2(n#XEj{{mR>q`ra;U1LJ8PM zhytpLNvJ-R_cVm1C9sqxa!46JKr}_14~y7D>OCID;K;)Qp{372zy~xbpQKb&#N5G5 zjFT$HArJ{L2B0dBV>aQMIACf?Hk6&!43u=vAuNPP1g(ah!&oqgB3RGWJw)_E$1q;U zXHJAM&u}aWV;=Duf^d2h-bY=;y8PII5Dm8%DsDJQ09fYC5AY$*oCO&uBJd71!Yya8 zcgQX95lW+!cOA}<_dWE^B*MKZ}j@Cjp$KQ3FeL_m|4s!|iExWDQjMZg z03If!sFcc*dNwN>nVhgqVjI~K*lW{nyyD2xA$+=l`s1o0W0_ZWmeWtYtvU~<1Ws7T zhbVkUvOZhUS4Bln?K-lgi_Ew|P((e)N-pZTva^ydBRI!W(BZw<{_|u%74x`=2{^O3 z94h8U8WAYdnt8s6oNl5#iG--%C$pxf1sn;pp970joTKIoY7TH?rh7()FLB;?c#97R zG8jOzW1>N^F}my5N88@<@xYv_%n)H|D*RU_EPH4U3>_CwOTsGqbVl+fN^GTml444n zn11wabK)|7`M+`El;8vzmcV>HEq)<5bF`3mR_7ocD=+Bum*Itg^m<;{CIv>s2+Fil zq^xM@bR&py2Rm6}tj!spVFp~7*DzB<+hHeFBho()Bx_oW(K72hqkH~(aNmc}orD3< zjukB=;`{i|2xxPNN`OcH-d(`0>X8o*fQ|>z>3QKgzKTCl@d0%qNKS5e_>c0p@lRD7 qPiwR@3HAvaGLWYRN5(htKKL#D=L%>WE9yloYxvU*W#y}twSNH3)c4E) literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/admin.py b/Checkout_1095834454/admin.py new file mode 100644 index 0000000..465868d --- /dev/null +++ b/Checkout_1095834454/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from .models import * + +# Register your models here. +admin.site.register(CarritoCompras) +admin.site.register(Articulo) +admin.site.register(InfoEnvio) \ No newline at end of file diff --git a/Checkout_1095834454/apps.py b/Checkout_1095834454/apps.py new file mode 100644 index 0000000..0fbd68b --- /dev/null +++ b/Checkout_1095834454/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class Checkout1095834454Config(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'Checkout_1095834454' diff --git a/Checkout_1095834454/migrations/0001_initial.py b/Checkout_1095834454/migrations/0001_initial.py new file mode 100644 index 0000000..519f5b2 --- /dev/null +++ b/Checkout_1095834454/migrations/0001_initial.py @@ -0,0 +1,49 @@ +# Generated by Django 3.2.7 on 2021-09-21 01:51 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('Productos', '0002_auto_20210916_1521'), + ] + + operations = [ + migrations.CreateModel( + name='CarritoCompras', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('usuario', models.CharField(max_length=100)), + ('fecha', models.DateField(auto_now=True)), + ('dcto', models.FloatField(default=0)), + ('cantMinima', models.IntegerField(default=0)), + ('pagado', models.BooleanField(default=False)), + ], + ), + migrations.CreateModel( + name='InfoEnvio', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nombre', models.CharField(max_length=100)), + ('apellido', models.CharField(max_length=100)), + ('direccion', models.CharField(max_length=100)), + ('pais', models.CharField(max_length=50)), + ('departamento', models.CharField(max_length=50)), + ('ciudad', models.CharField(max_length=50)), + ('carrito', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Checkout_1095834454.carritocompras')), + ], + ), + migrations.CreateModel( + name='Articulo', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cantidad', models.IntegerField(default=0)), + ('carrito', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Checkout_1095834454.carritocompras')), + ('producto', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Productos.producto')), + ], + ), + ] diff --git a/Checkout_1095834454/migrations/0002_alter_articulo_producto.py b/Checkout_1095834454/migrations/0002_alter_articulo_producto.py new file mode 100644 index 0000000..ec2e33c --- /dev/null +++ b/Checkout_1095834454/migrations/0002_alter_articulo_producto.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.7 on 2021-09-21 02:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('Productos', '0002_auto_20210916_1521'), + ('Checkout_1095834454', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='articulo', + name='producto', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='Productos.producto'), + ), + ] diff --git a/Checkout_1095834454/migrations/0003_auto_20210920_2137.py b/Checkout_1095834454/migrations/0003_auto_20210920_2137.py new file mode 100644 index 0000000..7c9a2a8 --- /dev/null +++ b/Checkout_1095834454/migrations/0003_auto_20210920_2137.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.7 on 2021-09-21 02:37 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('Productos', '0002_auto_20210916_1521'), + ('Checkout_1095834454', '0002_alter_articulo_producto'), + ] + + operations = [ + migrations.AlterField( + model_name='articulo', + name='producto', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Productos.producto'), + ), + migrations.AlterField( + model_name='carritocompras', + name='fecha', + field=models.DateField(auto_now_add=True), + ), + ] diff --git a/Checkout_1095834454/migrations/__init__.py b/Checkout_1095834454/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Checkout_1095834454/migrations/__pycache__/0001_initial.cpython-38.pyc b/Checkout_1095834454/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c5a34a09264258ceb112618f1af3008c7ddd0e8 GIT binary patch literal 1547 zcmZ`(-EP}96qab&mj9A8&DM0kUVG(>8Md1YOE3&oC1)^}ID_r1fFVF&L|UOMiykFq zO>Vc_yu|MI7JClf?qbLr48^eRP_~n%NF_+%cSxR}?>pp4tyb3H`E9?4LsQfKRN(E$ z0Pq~XxCuX^5k1sq`dFW#G13)AVQy@Er;!{ne$|LU^=bZ>+&E9rP;2C`VUN~8vOHsf zzzO3~EDJMEXc+f>HTU+j4&XU_@l@9|s*QD`jS9?iwqW&b zln?Hp5AUEy8QNav^Y{+>=nncA&>CHzZcK~Q2h&aR3HkI2O;BLoJ7dV!Pkpqc(PQ#GZY`HHePAHL;xnMIaF1%OtLY87G7!KJbmDO`9 zPI*kd2+yc2rg4e|`obUjU|MBv4=M8f`DUarSN&DsIjR4J+t>4&^rk9cBd9v(zaEQ{7!no>r zKczTSRRStP`3X>*WlbYOBcIV&AXP}k&NMkv$4}(4(q6E@0&x!%IkIG*VX+)KAl_nF zJ_tEZ7UOC!N@zfri>fa;4=IjT>$spSh`tA%3uKC;fJ;P9rJ0qjI4#=N(6*eeEb}>C z-Uh#GVh=LOesBJ;_uUg{k=UK4INEcMBkBltPU~ORPx`$dyMtlRv7CCZ@0<)rgPwI* zce?eV)gM`Xr#o;h9}_xbK6j5;3<2w-o?TaM>)Jj0@VNdA{5ajAH5eQp0#tjC4@NJo zLDwD7Igg>8p#@{N`??Fl&8YCHdyly8?Oo==@o0NX%A4~Gp)SiJe6a&R6B#-5pOH6o zgtqjx)%ynhYgFE`!QA%WV6Uz0+xqrDfd9%oHVV+18KX^dnrXR^@9~YXxwuoCE3UoCjvuK}hRTso+*@kZB{s(Yl!esye literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/migrations/__pycache__/0002_alter_articulo_producto.cpython-38.pyc b/Checkout_1095834454/migrations/__pycache__/0002_alter_articulo_producto.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ffb1cf9760ce730a21a4339bd35f2bfc0ad389f4 GIT binary patch literal 881 zcmZuvOK;Oa5cVsMV_FFnsR+Tr*BpqFv_-T+sFv*_i#9<{0+MBEWxPvRV|#-ih;oH% zPy7o04d=ab;x8can01=A2S(cQ&bPBO-tU{m_O>a3eLeQ$ks?VyL~zqI2##S@18`Wv zawg?+DCbJ3$RbuUHPoI-SjE~G32Q`7JD=6CgO!=o@BD;2QeWX_PM2j|Q&v=5&lx6J zHA%$TO*0@khE*MbBT^`1DO9kGm8BA@L`yrO2hr0m?hqsGrFv?nx3G@87b-R`)TJD5 z;U07~dGBn~4tn=qlnggX%_@F(I2?{q+|&$>hvU)kaP$a`4#p$My5qbh$vf862;hUq zd;9wb`+N)XM~D`*rg0V;aaq%($rv|QmnG+)cCM-qHeg@nTG3<~@38{GQ%Oy@QZsqz*;wD0n*JK3tTL`^x;!Na<2$K~lFewsBsuI+axM^oK zDNjU|Qf+|~RuZ}_o|AK~<1{Xoj4SvxH`+e|1$fu7XO8W9++-_qsmeF0ybrfq_v^cJ z6fG)JR#Do-#bGoph+EPR#Cm8gCjLt=nE9^lTK>dc%;te_pIWYG&FsnCp158R*-4B^ zP7@ZL(Fz(`bKkK9-;v`xr&DVW>bTy_4ua_^gyQb>Wd6zyyeJ?mR?(W3lvR=U(MwpK zlQJREf7FStXDV9jDwseUkMOOZ3x+cR{-u@duTPxMMeM7mPI5bC2)K=ZxpgrYXTn-GTo{k)&V3xw|xQ4q<0)Fj&HJ zEG6vt>R1tM- zLPP`Wc=JLQDC9PA17>OR`tf=Qn5cfjC@zAWX8cj7)9E3<$SLY|dfm=J_bKY`_qq`E zpnpb!546Y;!28d4_xASp_)Zlc=Y%1jhD7m?yq(MkB2GUF1w8cjqiDpbKfg{RDxJ=)W zb6&%dpDrm^@F_RSfk94gOx+n8&4)u?cl?}`x!j~HaxM1{i9Lo&rMdjsf8otD!ZI%^ z{Pe&Zr^I35Ct^LZ=A*$|cQPF~wqp%O&U`wX4D6xhxYpDj&FqomPCPsCF-gLJddFb~ z&8^v>Zwbk~{-8e`Tf0!lai{iVG9H2}a>qxrclN~fCS*l3ppJz!^V}~kP?!)F5br+% zd$*U>1F3iKUX5M{^}4&y+N*OWevA#+*$x;(Rb=I_R?}p7$`7wJy*im!+GQEps_}Y7 tU>l#7Y*!3#-+=Avzi6+iW!r)`(dCxG>SO`NjhB_KuY^#U2)id6>OZ9?7eD|2 literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/migrations/__pycache__/__init__.cpython-38.pyc b/Checkout_1095834454/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d238714f43859035efffa3c08c70edd97fcbf81 GIT binary patch literal 279 zcmYk1&q~BF5XQUUL4u^^(*1OW-(kvhl7YdtFn`sc+Y%l|KaC@oI?||5AZm3 z!w$+pQ*T~0Iz^4(w@g-?Vv4w+O;t;d3q%>Ju&A-1OafM2udPuIZcH$4Ks6_5wOB2I za8i_L9rsXHVJXWZ#xz@A*LPSlkb3We8J#yS0DEQ1S*yL$KpwPua?{u@7rV`No#&ez hthx8y7!L$!TQiukZO`^^pNALL_0zMyOkaIRXTKulN-zKb literal 0 HcmV?d00001 diff --git a/Checkout_1095834454/models.py b/Checkout_1095834454/models.py new file mode 100644 index 0000000..1824836 --- /dev/null +++ b/Checkout_1095834454/models.py @@ -0,0 +1,47 @@ +from django.db import models +from Productos.models import * + +# Create your models here. +class CarritoCompras(models.Model): + usuario = models.CharField(max_length=100) + fecha = models.DateField(auto_now_add=True) + dcto = models.FloatField(default=0) + cantMinima = models.IntegerField(default=0) + pagado = models.BooleanField(default=False) + + def __str__(self): + return f"{self.usuario} - {self.fecha}" + + def total(self): + + pass + + def numArticulos(self): + pass + +class Articulo(models.Model): + carrito = models.ForeignKey(CarritoCompras, on_delete=models.CASCADE) + producto = models.ForeignKey(Producto, on_delete=models.SET_NULL, null=True) + cantidad = models.IntegerField(default=0) + + def __str__(self): + return f"{self.carrito.__str__()} / {self.producto.nombre}" + + def subtotal(self): + subtotal = 0 + subtotal += self.producto.precio * self.cantidad + return subtotal + +class InfoEnvio(models.Model): + carrito = models.ForeignKey(CarritoCompras, on_delete=models.CASCADE) + nombre = models.CharField(max_length=100) + apellido = models.CharField(max_length=100) + direccion = models.CharField(max_length=100) + pais = models.CharField(max_length=50) + departamento = models.CharField(max_length=50) + ciudad = models.CharField(max_length=50) + + def __str__(self): + return self.carrito.__str__() + + \ No newline at end of file diff --git a/Checkout_1095834454/serializers.py b/Checkout_1095834454/serializers.py new file mode 100644 index 0000000..acfb43d --- /dev/null +++ b/Checkout_1095834454/serializers.py @@ -0,0 +1,19 @@ +from django.core import exceptions +from rest_framework import serializers +# from Checkout_1095834454.models import * +from .models import * # Funciona para importar dentro de la misma aplicación (Checkout...) + +class CarritoComprasSerial(serializers.ModelSerializer): + class Meta: + model = CarritoCompras + fields = "__all__" + +class ArticuloSerial(serializers.ModelSerializer): + class Meta: + model = Articulo + fields = "__all__" + +class InfoEnvioSerial(serializers.ModelSerializer): + class Meta: + model = InfoEnvio + fields = "__all__" diff --git a/Checkout_1095834454/tests.py b/Checkout_1095834454/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/Checkout_1095834454/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Checkout_1095834454/urls.py b/Checkout_1095834454/urls.py new file mode 100644 index 0000000..4213fe8 --- /dev/null +++ b/Checkout_1095834454/urls.py @@ -0,0 +1,15 @@ +# Direcciones de las APIS +from django.urls import path, include + +from rest_framework.routers import DefaultRouter + +from .views import * + +router = DefaultRouter() +router.register('carrito', CarritoAPI, basename="Carrito") +router.register('articulo', ArticuloAPI, basename="Articulo") +router.register('info_envio', InfoEnvioAPI, basename="Info Envio") + +urlpatterns = [ + path('crud/', include(router.urls)) +] diff --git a/Checkout_1095834454/views.py b/Checkout_1095834454/views.py new file mode 100644 index 0000000..e1074e5 --- /dev/null +++ b/Checkout_1095834454/views.py @@ -0,0 +1,105 @@ +from django.shortcuts import render + +# Create your views here. + +# APIS +from django.shortcuts import render +from django.http import HttpResponse +from rest_framework import viewsets +from rest_framework.response import Response + +# Creación de las APIS + +# from Checkout_1095834454.serializers import * +from .serializers import * + +class CarritoAPI(viewsets.ViewSet): + def list(self, request): + # request => Se trata de la petición de usuario => GET, POST, PUT... + carritos = CarritoCompras.objects.all() + carritoSerializador = CarritoComprasSerial(carritos, many=True) + return Response(carritoSerializador.data) + + def create(self, request): + # Crear nuevos elementos en la base de datos + # serializer = CarritoComprasSerial(data=request.data, many=True) + nuevoCarritoSerial = CarritoComprasSerial(data=request.data) + if nuevoCarritoSerial.is_valid(): + nuevoCarritoSerial.save() + return Response({"Exito":True}) + return Response(nuevoCarritoSerial.errors) + + def retrieve(self, request, pk=None): + # Obtener uno o varios objetos de la base de datos + # pk => Llave primaria - método de identificación de nuestros objetos + carrito = CarritoCompras.objects.get(pk=pk) + serializador = CarritoComprasSerial(carrito) + + return Response(serializador.data) + + def partial_update(self, request, pk=None): + # Permite actualizar atributos de los objetos CRUD + carrito = CarritoCompras.objects.get(pk=pk) + carritoS = CarritoComprasSerial(carrito, request.data, partial=True) + if carritoS.is_valid(): + carritoS.save() + return Response({"Actualizado":True}) + return Response(carritoS.errors) + + def update(self, request): + # Permite actualizar TODOS los argumentos en la base de datos + carrito = CarritoCompras.objects.get(pk=pk) + carritoS = CarritoComprasSerial(carrito, request.data, partial=True) + if carritoS.is_valid(): + carritoS.save() + return Response({"Actualizado":True}) + return Response(carritoS.errors) + + def destroy(self, request, pk=None): + # Permite borrar un objeto de la base de datos + carrito = CarritoCompras.objects.get(pk=pk) + carrito.delet() + return Response({"Delete":True}) + + + +class ArticuloAPI(viewsets.ViewSet): + def list(self, request): + articulos = Articulo.objects.all() + articulosSerializador = ArticuloSerial(articulos, many=True) + + return Response(articulosSerializador.data) + + def create(self, request): + nuevoArticuloSerial = ArticuloSerial(data=request.data) + if nuevoArticuloSerial.is_valid(): + nuevoArticuloSerial.save() + return Response({"Exito":True}) + + return Response(nuevoArticuloSerial.errors) + + def retrieve(self, request, pk=None): + articulo = Articulo.objects.get(pk=pk) + serializador = ArticuloSerial(articulo) + + return Response(serializador.data) + +class InfoEnvioAPI(viewsets.ViewSet): + def list(self, request): + informacionEnvio = InfoEnvio.objects.all() + informacionSerializador = InfoEnvioSerial(informacionEnvio, many=True) + + return Response(informacionSerializador.data) + + def create(self, request): + nuevoInformacionSerial = InfoEnvioSerial(data=request.data) + if nuevoInformacionSerial.is_valid(): + nuevoInformacionSerial.save() + return Response({"Exito":True}) + return Response(nuevoInformacionSerial.errors) + + def retrieve(self, request, pk=None): + infoEnvio = InfoEnvio.objects.get(pk=pk) + serializador = InfoEnvioSerial(infoEnvio) + + return Response(serializador.data)