From 75c16f28c0086bcba289ae966d30b13c656664b9 Mon Sep 17 00:00:00 2001 From: Ramon Ramos Date: Sat, 6 Dec 2025 03:55:57 +0000 Subject: [PATCH] Added a new self app called products along with the tutorial --- trydjango/db.sqlite3 | Bin 0 -> 139264 bytes trydjango/manage.py | 22 +++ trydjango/pages/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 147 bytes .../pages/__pycache__/admin.cpython-312.pyc | Bin 0 -> 191 bytes .../pages/__pycache__/apps.cpython-312.pyc | Bin 0 -> 451 bytes .../pages/__pycache__/models.cpython-312.pyc | Bin 0 -> 188 bytes .../pages/__pycache__/views.cpython-312.pyc | Bin 0 -> 411 bytes trydjango/pages/admin.py | 3 + trydjango/pages/apps.py | 6 + trydjango/pages/migrations/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 158 bytes trydjango/pages/models.py | 3 + trydjango/pages/tests.py | 3 + trydjango/pages/views.py | 6 + trydjango/products/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 150 bytes .../__pycache__/admin.cpython-312.pyc | Bin 0 -> 328 bytes .../products/__pycache__/apps.cpython-312.pyc | Bin 0 -> 460 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 858 bytes trydjango/products/admin.py | 5 + trydjango/products/apps.py | 6 + trydjango/products/migrations/0001_initial.py | 30 +++++ .../migrations/0002_product_summary.py | 18 +++ ...escription_alter_product_price_and_more.py | 33 +++++ .../migrations/0004_product_featured.py | 19 +++ .../migrations/0005_alter_product_summary.py | 18 +++ .../migrations/0006_alter_product_summary.py | 18 +++ trydjango/products/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-312.pyc | Bin 0 -> 978 bytes .../0002_product_summary.cpython-312.pyc | Bin 0 -> 737 bytes ...ter_product_price_and_more.cpython-312.pyc | Bin 0 -> 1231 bytes .../0004_product_featured.cpython-312.pyc | Bin 0 -> 800 bytes ...0005_alter_product_summary.cpython-312.pyc | Bin 0 -> 738 bytes ...0006_alter_product_summary.cpython-312.pyc | Bin 0 -> 727 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 161 bytes trydjango/products/models.py | 9 ++ trydjango/products/tests.py | 3 + trydjango/products/views.py | 3 + trydjango/ramon_trydjango/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 157 bytes .../__pycache__/settings.cpython-312.pyc | Bin 0 -> 2576 bytes .../__pycache__/urls.cpython-312.pyc | Bin 0 -> 1151 bytes .../__pycache__/wsgi.cpython-312.pyc | Bin 0 -> 661 bytes trydjango/ramon_trydjango/asgi.py | 16 +++ trydjango/ramon_trydjango/settings.py | 126 ++++++++++++++++++ trydjango/ramon_trydjango/urls.py | 26 ++++ trydjango/ramon_trydjango/wsgi.py | 16 +++ 48 files changed, 389 insertions(+) create mode 100644 trydjango/db.sqlite3 create mode 100755 trydjango/manage.py create mode 100644 trydjango/pages/__init__.py create mode 100644 trydjango/pages/__pycache__/__init__.cpython-312.pyc create mode 100644 trydjango/pages/__pycache__/admin.cpython-312.pyc create mode 100644 trydjango/pages/__pycache__/apps.cpython-312.pyc create mode 100644 trydjango/pages/__pycache__/models.cpython-312.pyc create mode 100644 trydjango/pages/__pycache__/views.cpython-312.pyc create mode 100644 trydjango/pages/admin.py create mode 100644 trydjango/pages/apps.py create mode 100644 trydjango/pages/migrations/__init__.py create mode 100644 trydjango/pages/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 trydjango/pages/models.py create mode 100644 trydjango/pages/tests.py create mode 100644 trydjango/pages/views.py create mode 100644 trydjango/products/__init__.py create mode 100644 trydjango/products/__pycache__/__init__.cpython-312.pyc create mode 100644 trydjango/products/__pycache__/admin.cpython-312.pyc create mode 100644 trydjango/products/__pycache__/apps.cpython-312.pyc create mode 100644 trydjango/products/__pycache__/models.cpython-312.pyc create mode 100644 trydjango/products/admin.py create mode 100644 trydjango/products/apps.py create mode 100644 trydjango/products/migrations/0001_initial.py create mode 100644 trydjango/products/migrations/0002_product_summary.py create mode 100644 trydjango/products/migrations/0003_alter_product_description_alter_product_price_and_more.py create mode 100644 trydjango/products/migrations/0004_product_featured.py create mode 100644 trydjango/products/migrations/0005_alter_product_summary.py create mode 100644 trydjango/products/migrations/0006_alter_product_summary.py create mode 100644 trydjango/products/migrations/__init__.py create mode 100644 trydjango/products/migrations/__pycache__/0001_initial.cpython-312.pyc create mode 100644 trydjango/products/migrations/__pycache__/0002_product_summary.cpython-312.pyc create mode 100644 trydjango/products/migrations/__pycache__/0003_alter_product_description_alter_product_price_and_more.cpython-312.pyc create mode 100644 trydjango/products/migrations/__pycache__/0004_product_featured.cpython-312.pyc create mode 100644 trydjango/products/migrations/__pycache__/0005_alter_product_summary.cpython-312.pyc create mode 100644 trydjango/products/migrations/__pycache__/0006_alter_product_summary.cpython-312.pyc create mode 100644 trydjango/products/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 trydjango/products/models.py create mode 100644 trydjango/products/tests.py create mode 100644 trydjango/products/views.py create mode 100644 trydjango/ramon_trydjango/__init__.py create mode 100644 trydjango/ramon_trydjango/__pycache__/__init__.cpython-312.pyc create mode 100644 trydjango/ramon_trydjango/__pycache__/settings.cpython-312.pyc create mode 100644 trydjango/ramon_trydjango/__pycache__/urls.cpython-312.pyc create mode 100644 trydjango/ramon_trydjango/__pycache__/wsgi.cpython-312.pyc create mode 100644 trydjango/ramon_trydjango/asgi.py create mode 100644 trydjango/ramon_trydjango/settings.py create mode 100644 trydjango/ramon_trydjango/urls.py create mode 100644 trydjango/ramon_trydjango/wsgi.py diff --git a/trydjango/db.sqlite3 b/trydjango/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..564693a8c8362fed12049bd88d950c9310ce4f53 GIT binary patch literal 139264 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 N0w4eaAaF1V{69!DbH4xp literal 0 HcmV?d00001 diff --git a/trydjango/manage.py b/trydjango/manage.py new file mode 100755 index 0000000000..fe4c3aec1a --- /dev/null +++ b/trydjango/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ramon_trydjango.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/trydjango/pages/__init__.py b/trydjango/pages/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/trydjango/pages/__pycache__/__init__.cpython-312.pyc b/trydjango/pages/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80c21669e074e5edbd62d33f259cd61aec331c9c GIT binary patch literal 147 zcmX@j%ge<81V0uTXM*U*AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdWu#x8UzA;3keHlW ztnZSQn3taKlA4>ZUs6<=0_N!#B&GwU;^Q;(GE3s)^$IF~aoFVMrm}#sl@w(r6)^)9tYr8MQuj+=zdXMvySN}RIki~d1+2~` zH8)?sq^J_2OTQp79Vi7hOs}Bw7l%!5eoARhs$CHWP(LFO7lRldm>C%v?=dJ8u>m;% DZ9p&` literal 0 HcmV?d00001 diff --git a/trydjango/pages/__pycache__/apps.cpython-312.pyc b/trydjango/pages/__pycache__/apps.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cf3eb2573bbad780b7d29e1b446d7091b29472af GIT binary patch literal 451 zcmXv~J4*vW5T3n<#5_cz2o@GL!Zmk=jfDu&pk1)OW?8eF3Hs^N<37p_c%Yx#-lhInzHezPL|se%z;6OD1;V8p-rvODQ(ZG zT9+hZ!iewp=rtKfnNP3$G@~pL{%IWbib-}JvxHVISKNW;Rt=2DBxM*^O^hYANEB{k zd|QyDu5>9Iks_I3A{*e5?%=4}Gc46&D?hl)@*Ba)kcptLC-+&J1(Uoqdjxu3KsXmZ zFLQMw?Hmb2N4gm-c8}hiokgoV?dR%6*9V?mwd$`ZajuSL}AjSt~Mn=Ya3^GM*Kn?)1<1X6( literal 0 HcmV?d00001 diff --git a/trydjango/pages/__pycache__/views.cpython-312.pyc b/trydjango/pages/__pycache__/views.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..894add93405b649b8d7b87b70a195059db5618e7 GIT binary patch literal 411 zcmXv~u};G<5cMT#MG1utNOWMRfF(-}Vy!xL=+prQq%J6`t)?`oqjR7t69fOyPe2tT zpTSaz&7u<%8&bAToI|j5@7{aXJ^B1zukSKC$1j(YH|k$j{2!+z`3aFF6HGwN5*Pwl z?!->w4qf8zGaGsfFQ|Omffbm&ewL+IQm1OBWdNp%awa5>%Dkevga=f4lVHg*C|m*o zuO+``firkK>_ivczKmnlx=|R54kwLvJaCK`;#iyNbZ)!04{o)#oX-_bbsCPO=DoXc zHdZ~ED4yX$6pE+en64fsa<1Fy!qg&_$XhGX{zipL?-M++PycA$Y=8KC?eUx(HV7)l z|4V5{v?Y3Ennvm9NMSa*&otVMB5cLbx4cHM-RUGs+{dzuc6Ga^ZV>#q0I*?a8+Mvk I0nUqwU&sYvwEzGB literal 0 HcmV?d00001 diff --git a/trydjango/pages/admin.py b/trydjango/pages/admin.py new file mode 100644 index 0000000000..8c38f3f3da --- /dev/null +++ b/trydjango/pages/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/trydjango/pages/apps.py b/trydjango/pages/apps.py new file mode 100644 index 0000000000..4b6237c55b --- /dev/null +++ b/trydjango/pages/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class PagesConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "pages" diff --git a/trydjango/pages/migrations/__init__.py b/trydjango/pages/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/trydjango/pages/migrations/__pycache__/__init__.cpython-312.pyc b/trydjango/pages/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..51692208faf0a04db5038c611c2f5535a28d56ad GIT binary patch literal 158 zcmX@j%ge<81V0uTXM*U*AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdWvgGFUzA;3keHlW ztnZSQn3taKlA4>ZUs6<=0_N!#B&GwUax>G55=%1k^NRK3<1_OzOXB183Mzkb*yQG? bl;)(`6|n+MV+7)25aS~=BO_xGGmr%UU(F}S literal 0 HcmV?d00001 diff --git a/trydjango/pages/models.py b/trydjango/pages/models.py new file mode 100644 index 0000000000..71a8362390 --- /dev/null +++ b/trydjango/pages/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/trydjango/pages/tests.py b/trydjango/pages/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/trydjango/pages/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/trydjango/pages/views.py b/trydjango/pages/views.py new file mode 100644 index 0000000000..86aea12038 --- /dev/null +++ b/trydjango/pages/views.py @@ -0,0 +1,6 @@ +from django.http import HttpResponse +from django.shortcuts import render + +# Create your views here. +def home_view(*args, **kwargs): + return HttpResponse("

Hello World

") \ No newline at end of file diff --git a/trydjango/products/__init__.py b/trydjango/products/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/trydjango/products/__pycache__/__init__.cpython-312.pyc b/trydjango/products/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c5e61330054ab76594a30959584a0baf182f6a9 GIT binary patch literal 150 zcmX@j%ge<81ZyT6XM*U*AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdWvXAEUzA;3keHlW ztnZSQn3taKlA4>ZUs6<=0_N!#6y>LsCYKcJ$H!;pWtPOp>lIY~;;_jDisq!+6|n+M TVFco05aS~=BO_xGGmr%U#PTFu literal 0 HcmV?d00001 diff --git a/trydjango/products/__pycache__/admin.cpython-312.pyc b/trydjango/products/__pycache__/admin.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..66ced42adb9184e7d95ee459fbb593b03cd1fda4 GIT binary patch literal 328 zcmX@j%ge<81V^VCXO;u$#~=<2Fhd!igMf_b3@HpLj5!Rsj8Tk?3@J=0%sEWC%u&pY z45^G+955{iI*S{@hOttaS2IG`j0}}5nyfED98JbstcfYPnRzckazGw?Kv8~5X>y65 zCfhB(l&r+O^nAVK{JfH)%%mcalWwu)=BK3Q6c@3AI4s4PC8@VKic-@vi%U|ARx*4B ziZc8%(l5_1$}TQQOinGZUs6;FF;c$(VoR|;*mAvs%3mBdK!ZzjQtgU( wfkuE_Q!Ec8J}@&fGTvoS_{zq>D072>wVkVx>pFw*MF!ys?pGOPia;I(0H;b!g#Z8m literal 0 HcmV?d00001 diff --git a/trydjango/products/__pycache__/apps.cpython-312.pyc b/trydjango/products/__pycache__/apps.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..512aa97d9f5adffaf2687ba09b7b40e403e2eefd GIT binary patch literal 460 zcmXv~Jxjzu5S>kOa^8oC=z)cWjgTfmY%D}LJ+wP)O|z`Gdq*_6th)&kJK=tSpm4uI z^q<&R9sw&WJK?ms%H3>kikUY%@6F84d%N8LWp7Uh;j@ZgI$2t+0`olura*zB2x1f< z1QwhFwI)DqhF)#M3#{C6Yu`F?QL)Sk$j7P5#Ibzaf?Zmplt}VqmsC$(4u~1 f_CFTuD%FRR`e;8kLg*8Ae^)HjdA$4s6-w1V$J2H{ literal 0 HcmV?d00001 diff --git a/trydjango/products/__pycache__/models.cpython-312.pyc b/trydjango/products/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8ac41826ea7358d3c23947f7181c509664404c3 GIT binary patch literal 858 zcmZ{izi-n(6vyxEIB`OPDhm+5#1JVIFO5XSP(Tb2S`eZFsVrWM>$|2-&p&#$MY08{ z5-`Eml@XK-`4iY-sfa{%h>0m1Qef%CoiCwAh#Q{2@7?F!y?cHiYqbjC>+9QP?*#N6EJXoW?dW+>Y6OSMfEOy3rDarAdU=afqz(%MMaHaB#x3LtsgZ_? z!_ptF{NM9*r0347WZap5&l}7_R<&0)E3EX0hA4HDNteg@`zyZFwFwT|$@Ye+Fm01K z!44|~DIpV4tGBSoIfb1>*!6se*b#AD9Lqf9wY?->T{mk?x9!03v2C-8ZS$U{MCht* z@1_osJ5>AtR=%_C&{Yo;#I(dq2xjFC+)ZTU1j4aPy(sa*fK^-a${8F{&&8}1r@rsd z9;@CCLxP<^?&@3ENm7c@doUFbK3Z-*3+YZAiDH|rjuW)Q7WTttLVGClnvrZo+>{fr z6!oZ>uFQxDh@Wz^2M&$;o6BE}`hih@=Z=l5{k!?dsZncetn?oo8Vx};4vfa=@rP?; zCuz1aihPM<31aU&+pOm^DEcQ0xQeXme8i`mG)2!r!4E705kdmS4a9y+2mXF h5_iS)#b>$sp+X41fr~$j8ocsy>os{regQ7C%-@Tb&F26B literal 0 HcmV?d00001 diff --git a/trydjango/products/admin.py b/trydjango/products/admin.py new file mode 100644 index 0000000000..9c39fccdb2 --- /dev/null +++ b/trydjango/products/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin + +# Register your models here. +from .models import Product +admin.site.register(Product) \ No newline at end of file diff --git a/trydjango/products/apps.py b/trydjango/products/apps.py new file mode 100644 index 0000000000..7b0ca83a6d --- /dev/null +++ b/trydjango/products/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ProductsConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "products" diff --git a/trydjango/products/migrations/0001_initial.py b/trydjango/products/migrations/0001_initial.py new file mode 100644 index 0000000000..5fb38c7858 --- /dev/null +++ b/trydjango/products/migrations/0001_initial.py @@ -0,0 +1,30 @@ +# Generated by Django 4.2.27 on 2025-12-06 02:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Product", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.TextField()), + ("description", models.TextField()), + ("price", models.TextField()), + ], + ), + ] diff --git a/trydjango/products/migrations/0002_product_summary.py b/trydjango/products/migrations/0002_product_summary.py new file mode 100644 index 0000000000..db17e07501 --- /dev/null +++ b/trydjango/products/migrations/0002_product_summary.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.27 on 2025-12-06 02:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("products", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="product", + name="summary", + field=models.TextField(default="this is cool!"), + ), + ] diff --git a/trydjango/products/migrations/0003_alter_product_description_alter_product_price_and_more.py b/trydjango/products/migrations/0003_alter_product_description_alter_product_price_and_more.py new file mode 100644 index 0000000000..dbdf8b73af --- /dev/null +++ b/trydjango/products/migrations/0003_alter_product_description_alter_product_price_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 4.2.27 on 2025-12-06 02:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("products", "0002_product_summary"), + ] + + operations = [ + migrations.AlterField( + model_name="product", + name="description", + field=models.TextField(blank=True, null=True), + ), + migrations.AlterField( + model_name="product", + name="price", + field=models.DecimalField(decimal_places=2, max_digits=10000), + ), + migrations.AlterField( + model_name="product", + name="summary", + field=models.TextField(), + ), + migrations.AlterField( + model_name="product", + name="title", + field=models.CharField(max_length=120), + ), + ] diff --git a/trydjango/products/migrations/0004_product_featured.py b/trydjango/products/migrations/0004_product_featured.py new file mode 100644 index 0000000000..b9bccffca2 --- /dev/null +++ b/trydjango/products/migrations/0004_product_featured.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.27 on 2025-12-06 03:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("products", "0003_alter_product_description_alter_product_price_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="product", + name="featured", + field=models.BooleanField(default=True), + preserve_default=False, + ), + ] diff --git a/trydjango/products/migrations/0005_alter_product_summary.py b/trydjango/products/migrations/0005_alter_product_summary.py new file mode 100644 index 0000000000..78f520d7ad --- /dev/null +++ b/trydjango/products/migrations/0005_alter_product_summary.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.27 on 2025-12-06 03:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("products", "0004_product_featured"), + ] + + operations = [ + migrations.AlterField( + model_name="product", + name="summary", + field=models.TextField(blank=True), + ), + ] diff --git a/trydjango/products/migrations/0006_alter_product_summary.py b/trydjango/products/migrations/0006_alter_product_summary.py new file mode 100644 index 0000000000..72f911f2b2 --- /dev/null +++ b/trydjango/products/migrations/0006_alter_product_summary.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.27 on 2025-12-06 03:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("products", "0005_alter_product_summary"), + ] + + operations = [ + migrations.AlterField( + model_name="product", + name="summary", + field=models.TextField(), + ), + ] diff --git a/trydjango/products/migrations/__init__.py b/trydjango/products/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/trydjango/products/migrations/__pycache__/0001_initial.cpython-312.pyc b/trydjango/products/migrations/__pycache__/0001_initial.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c0f8515084a13a4ab0da0a9aefd7f2921eb1497 GIT binary patch literal 978 zcma)4F>ljA6uxs}Cw9^*2?=T=2oWk2SI`8yqDny23PdZ0PF^h6ca1J}VsmzYFcql- zV;N8xSyB2=SQ2%JbyFoKCL*;6sS|g0q9PRup5*iQ-TR*I-S_V6%!~$jls>MI9})oH z1eu0B0jH}R90CLobU+&#uq_!91QJ*WNZJP|fniIT7G3=Ni5MG+UQ(C83!+O*Ym+9m z0^)XjrnFsz9pApF0U&CJZ=8mFIRqFO5CKC%&`30ak(2<* z5G9d(r1X<~NL{$B?oYP3CjB28_1~Ii@<{7*b44_vq4hF)mZ=+4AGTQP1$9x^ z4wyvH8k3$j^d!q#-M}?%imd=6mhmWQTeN5H;vQ3dOo`=?x0q#LVY==5*z8zs%;bOs z4rUpIeVYEs5jngqjY7Mu7vqA=cW0uxOlKODlQI-i{ULjT(}e76yQviOIOEo zI$szUKw*ARUix%fgc5S_K1^@kEvEJRV;Lx~EKFLh{-KoL>}5-L4$@?|mEZE)}xwj&595Iu10 z1@$k0+JC@L;1mfd(Ox-mvy>vFp4fG41yhyZ>{(wtTe z=6eF10tJdfh>(XO#ZwR{@EE9a3{+)kh?}J4eWot3r;atJ^-B^*;Z_t3GQS9tIOjM@ zC=2ucG6z7f$^5whr@+8N6g-8Z0rFG@m^Q2${x=0g8&tmG;g$dWl2Prvbta_AbB>#) zL^WfqI|etOHvNd^j5JH=s9)r~-Rt%4kRT3fcHAm0>UKS{!y z4&pjxNB$@*992k^vPkSljBAx`9R)0;hmOe&Quztt79k>T6f%L^guEX4p^TM`vXsS? z#r=TgnVcdw9#Z;9*2pwT&1dXwQE_f1DXZuC73Nap<$?Pq$zJ8D-)FhIKlI~4vd^N# zEwVAKnA^y7m&RSbN!;pmLr0hA^dy5c-1wITyH%@QF2D*_y0u{RTm*?7z^2xRC$= literal 0 HcmV?d00001 diff --git a/trydjango/products/migrations/__pycache__/0003_alter_product_description_alter_product_price_and_more.cpython-312.pyc b/trydjango/products/migrations/__pycache__/0003_alter_product_description_alter_product_price_and_more.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4042fadd5f45538c619baf151255d9420929ae6d GIT binary patch literal 1231 zcmb7Dy=xRf6rb6zyWMc}}-<<47x0fs&ZpbZ1bmLQP8Lx80nfMo((T9GvVc6mKvw%k!H^-#E$#Eige zQYZDIFkxB{Vd5vQI4Ufo!-Jz$D4G&rLkw&Q!zQ$42@s`KAc_qB#S#{0T5I~$=E%hg zR(fhz%EO*k(E3ZQQdX<-hgxN<_l*ClHE|ZN?x_4fF`CS(n15h2)tl~erG$+uH5J?F zoU(lQ!_C}{_QLp!WA+F%oyBrf%0F{O2$sBZX9xW$yP z?faI@M<~XILMI@6Pps;5kNB9WG4)(>D5Ul(H?wh1W8!*&2VgN zqOqEKsZS2Kd7cGxh)=?1y18aeurkUzA;b)Xc;~iHxIc-|i?-v7?jph@CLt!F>yd8cRAVE}5X$NOfy->A2e%W=d?+S7RgP$s&()5>;Of}?$m|u^Q#kfPo-;^!FNj~yr z2Mjf!-x|u&jP~lu&;a_}8{?on+b_=!E?yg)pBtFf-5UpHwQpA6&+Ik!%{#{>MK^v& zUK*G+fvok-+TOEIxA)CQXCN=1s`)bmj-^~ZTN^3k6&pWxwm!S+H{H_6L9cx#hwrd3`xu0z$%EJ$VbHBJ||UBx}?;y!pPF_h!EL&3tJz93;m3kKO1iM(DdF)u^q& zVo!ieL=nX?O0bU;&DSu}&~rq!b3}E(1G6ex&trXweSKuOwI7nW8h4VY&w?__(t?{w zMju^&*HV-^>{lz+Qv6O=TYojTTXv zgm8z58|W|wfj0;_8wRngmW)CUDTOqQpkUH`ZtYWgC{JawX}<9+%VG#pwZxq)ht*4b zMhj`m&5`#eW3P%l2%+!}20_}-4j{?Al8vZhUS*HBenw9i_4toPRlmFWh{;c(f&|6B z2SBKri-b?uJ%_T}6`_Vx#7YPBX-Yqs@ZcDprewl5w{o9#)n{fT~Sc4zk=UfVU> znd|kY`R)a~Tb+34Y^(*Xbg literal 0 HcmV?d00001 diff --git a/trydjango/products/migrations/__pycache__/0005_alter_product_summary.cpython-312.pyc b/trydjango/products/migrations/__pycache__/0005_alter_product_summary.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c32affc67c992ccbd3f3fd085399e55ba3ca9df4 GIT binary patch literal 738 zcmY*W&ui2`6n>LrCqHPVhH9l)k);T^Y!=j;7KEZ8+Jp3z%b4y=m)+)9 zw_ZIe?SJBFLD*%kp1cLNBJ|`;HgWYGUcT?;y*KZB@7wCC1JZ_{9}i9uzz;-B zBf$kwpeTYE1t``64S@!)fNEzzb%utxDO!Fn^#u;}vEj9TD&lFvi3fci7K1d&1&&k7 zqP(}P0WfPae=orWFbEKZK%=OS0$l@U46A|vEdeb56t`^)-ww{vY8wo~fZ#iy_NM$>Q4Glabut3wYey_Lqri+5F8m3vR38|&F( mX*+yVQgzS#zI3II5c-V)dDnOa;d5uYwmn(f{sod$)qenQa=EVn literal 0 HcmV?d00001 diff --git a/trydjango/products/migrations/__pycache__/0006_alter_product_summary.cpython-312.pyc b/trydjango/products/migrations/__pycache__/0006_alter_product_summary.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26523da402ec15c4658e2962c9dd3e12215c8508 GIT binary patch literal 727 zcmZuvzl+pB6n>LrXOnOz=b|1Sp2)HYX)X(gHp+o;D2QGmRzVoz&bVaFFDF?vV4-k@ z<#pHE%K4vIEf%{>Yh@SM6X7anW)oJyDPF$s%X@F$_mXd$n=Z&xf8LMYBY+=@w5QX6 z<$(mJK!Ktd5)`1s2n+-UJOXMQ12q|%;I?S}JTq4~Fe}UJ{8Yp4j6?5vT#TJ1oxlU;Q@ zES#t9EOIbA=NX-j%0lc6hr>H0j7!EzBa&j8Bq6Uvw-H3QQ9M&xQZ`5$CQMj5c3wp+ zrbnJ5Y@&5SgiDCbo5oDy4MN^b!&v1iMp@2M%F%)y!|r`Rn!j(&pX&+uX}5u0Dhg z3KaKbIEEU7vtOIW75w2z?SgajlRLL}XZG%5`_|&}&Z5^pxjpaoXTARS-r&4zIc{y@ z9{%{4Uu(M^d6sZiL+#O*+O2lDy6>t=)4AIcUD)?mD?8xVC6)gt6gOn3O@z>I49Gjj T8wj7c^R2;bYw!ys(bazdb7Hp` literal 0 HcmV?d00001 diff --git a/trydjango/products/migrations/__pycache__/__init__.cpython-312.pyc b/trydjango/products/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee28cd5eccb26790d6e742acfc619e1fa1d8e65b GIT binary patch literal 161 zcmX@j%ge<81ZyT6XM*U*AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxd<)B}lUzA;3keHlW ztnZSQn3taKlA4>ZUs6<=0_N!#6y>LsCYKcJ=VqoCC6;97=N0S6$7kkcmc+;F6;%G> eu*n4~$Vs&;Vg(w=2*kx8#z$sGM#ds$APWG-sVLI` literal 0 HcmV?d00001 diff --git a/trydjango/products/models.py b/trydjango/products/models.py new file mode 100644 index 0000000000..b39fa0929a --- /dev/null +++ b/trydjango/products/models.py @@ -0,0 +1,9 @@ +from django.db import models + +# Create your models here. +class Product(models.Model): + title = models.CharField(max_length=120) #max_length = required + description = models.TextField(blank=True, null=True) + price = models.DecimalField(decimal_places=2, max_digits=10000) + summary = models.TextField(blank=False, null=False) + featured = models.BooleanField() \ No newline at end of file diff --git a/trydjango/products/tests.py b/trydjango/products/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/trydjango/products/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/trydjango/products/views.py b/trydjango/products/views.py new file mode 100644 index 0000000000..b91e46a51e --- /dev/null +++ b/trydjango/products/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. \ No newline at end of file diff --git a/trydjango/ramon_trydjango/__init__.py b/trydjango/ramon_trydjango/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/trydjango/ramon_trydjango/__pycache__/__init__.cpython-312.pyc b/trydjango/ramon_trydjango/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6bd909206f1278546a391bd86fdb970214927a24 GIT binary patch literal 157 zcmX@j%ge<81bkh_nIQTxh(HIQS%4zb87dhx8U0o=6fpsLpFwJV+31(&7iAY0Bqpa8 z>$_wn=B4Mmq~_-9mlRc|fO+~wiMjcC@d$o=d}dx|NqoFsLFF$Fo80`A(wtPgB37Vb Sj6hrrVtiy~WMnL22C@LBH71q- literal 0 HcmV?d00001 diff --git a/trydjango/ramon_trydjango/__pycache__/settings.cpython-312.pyc b/trydjango/ramon_trydjango/__pycache__/settings.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3961607153d1ebe9eb1b3aaf3f87836c03afc585 GIT binary patch literal 2576 zcmb7GJ8#=o6ejf+^{}icv68faf)q}a)RY}NaZm(lXo+@&$dW2bam$6EbgyMPe1)Xq zh?Dj%-P$2jIu-pX9U7xU3{D0*73d%*=#r_2lxz#Kfx3i5-g_S3IrqEgT=KU>f+FCW z`*~UVJx&mRx|8E8G#-5X8wNiTh~NoCBA-kuKHf(XJ_7r&|5tKkwHrNlJAM8-9`1TE zPUY_CJQ*KCem;x>e56b8(Jq04Z%LklX9%7#6z1ayG$?>v9rc!!NECY$=#qQ_#rY&k zpd=2V89PQ0DD}oCk^BsrMQN~_MVGvL#=BpZ$Zmj7p)33>n&Z3ZEHr(5EV@oETfM`O5MZ^A0$OeizCz!l@2!ISI)E#hfpd}yaTL*#G&Ki5Ye#~}l8nEE zL@>2uS-SaEp@6iGNsodYr_j-q0#*xvSgX?P&%nKuUYX|4Hd$OF9CDY1j+ovlN zRRn>sWaM6nau1vTCzgS?Cj$NDZf>4*0(H^avDd~lNUDiDJp(W3ck%p!+5SSkv1mN$ zuZoL{OWmbc?Hy%#SwRb{55=yra&J)-o^)^O^RN3xf2Em^*qIRw-O*IbklM7zs(oo% z+JlJKr-ZHxRxPWqW7D3SQkvK_f#$Oc1r%ZzJg!Z9Sg7w`e4^z|F zri*ZUF5$fi)77b5L|}6=4+iEyq}1^$bHZ_Y5y#w3I&Y5nobY;Z&LU)~^I})*ynyzg zzg>q;!!_M)19QSJGu41}&yY>KFh;YmqRY^ObQ@r>ijG@^E_vPB9IH(y?bXF=OMuPm zKysR4<^%TaX_&KCG{Ws(*S>QBO9Q`zR<8(kO0SvguHNc%ftp_ zx&7R;FefRJEV}LSd}N^+_T!5pZAz-7^ppx#yVlOB|JN7wAGJ+=oZ~6LlZygWdkQwB z&RK*YRu_7v<8L*Kb{O6Q&^`tG^D!(isb~nxCcP$gp}n+q3CpOOpL4>30Oz|PIAI-5 zQCVsmexTNg2!ea^xN-xVn*0hoAsx;b)p8LA9BQ*%DplAmrolS#My=KqT8&DvR$X_ZO?Ixf?xaiXI@78&1wgI|>t(i5`i1!DzFR&$ zDnKQ@Fm)07wovl=x`Y+2aPm$rOdSy?Zzo#se~LT;&U-R`Y}^Jg_v6KcZy93fCrR?i zN0EVlvIKecC`80lKSaKN{62PLKX&7f*v`v%Dm*+|j{nhcSeAH;_dBEymgsq{f6dl=7sAc8lOLw`6!9Yy28(9oYu z_y*Boj>tTCN2CBXm^?_+2dV5&kM>iyj)MLa*aSVBYeaPBU5X$2ec%`ICiTh5HDM;u4Ck8*4* zs7$m|R|XbT{u4%68i@%pu(hgKI$=8roGKxKrAwY)-hJ=;KKp%|o_2s-`|qzNs|^6Y zsZG7?DmdDf!7hkF2gF8frUo%PrlI0S+8|cP(y^7=q}gd2zy#QeZQLBp)IfjUar5KE zp6sKRuA9W>;8eLEe-7rxcV)b1mhYa~aYj?FgI>#ov-ac>jA+(PdP9apLNnN<3^GJ$ z778|s2Po@Nm@_)Sk?41ZEjuhiSqEWOOJnhZ2oLLE-ZRZ*mW=NGL)X zhDjz-Nr|7Q7;y|a#(@Ln>I;$c!1rSsaj)!Gw~Hw8apqt17JWhUB;vj*_GNqSI}ctU zBC&YjtPHbAQ`c=Z=oJs%i(`l~n2?+@5kS~wlt3~HQJz=HlBTX-tm>5lC16aU{Hqk( zpKrGpDqVd_@B+*b!MEEgZoAI?6mfoeLkf$>Q2)k)iautFh^HCXbRJ5q|6!x*J;Xx= zGVh*Xw3-?DqBDU?y`Qhn2H@k?|70bQsJli~4HF1L>;4Hwt@;F9TE za!y9ER^NQuYHTI#jqUAbtI