From eeb78dbe36249e336d2f71ce5e4fddbf19d88f4c Mon Sep 17 00:00:00 2001
From: Bo Liu <64301505+bo2020bo@users.noreply.github.com>
Date: Fri, 25 Oct 2024 08:10:18 +0000
Subject: [PATCH] Add src directory with manage.py and other necessary files

---
 dev/trydjango/src/db.sqlite3                  | Bin 0 -> 139264 bytes
 dev/trydjango/src/leodjango/__init__.py       |   0
 .../__pycache__/__init__.cpython-38.pyc       | Bin 0 -> 153 bytes
 .../__pycache__/settings.cpython-38.pyc       | Bin 0 -> 2312 bytes
 .../leodjango/__pycache__/urls.cpython-38.pyc | Bin 0 -> 932 bytes
 .../leodjango/__pycache__/wsgi.cpython-38.pyc | Bin 0 -> 560 bytes
 dev/trydjango/src/leodjango/settings.py       | 123 ++++++++++++++++++
 dev/trydjango/src/leodjango/urls.py           |  21 +++
 dev/trydjango/src/leodjango/wsgi.py           |  16 +++
 dev/trydjango/src/manage.py                   |  15 +++
 dev/trydjango/src/products/__init__.py        |   0
 .../__pycache__/__init__.cpython-38.pyc       | Bin 0 -> 152 bytes
 .../products/__pycache__/admin.cpython-38.pyc | Bin 0 -> 266 bytes
 .../__pycache__/models.cpython-38.pyc         | Bin 0 -> 595 bytes
 dev/trydjango/src/products/admin.py           |   5 +
 dev/trydjango/src/products/apps.py            |   5 +
 .../src/products/migrations/0001_initial.py   |  24 ++++
 .../migrations/0002_auto_20241025_0643.py     |  24 ++++
 .../src/products/migrations/__init__.py       |   0
 .../__pycache__/0001_initial.cpython-38.pyc   | Bin 0 -> 793 bytes
 .../0002_auto_20241025_0643.cpython-38.pyc    | Bin 0 -> 714 bytes
 .../__pycache__/__init__.cpython-38.pyc       | Bin 0 -> 163 bytes
 dev/trydjango/src/products/models.py          |   9 ++
 dev/trydjango/src/products/tests.py           |   3 +
 dev/trydjango/src/products/views.py           |   3 +
 25 files changed, 248 insertions(+)
 create mode 100644 dev/trydjango/src/db.sqlite3
 create mode 100644 dev/trydjango/src/leodjango/__init__.py
 create mode 100644 dev/trydjango/src/leodjango/__pycache__/__init__.cpython-38.pyc
 create mode 100644 dev/trydjango/src/leodjango/__pycache__/settings.cpython-38.pyc
 create mode 100644 dev/trydjango/src/leodjango/__pycache__/urls.cpython-38.pyc
 create mode 100644 dev/trydjango/src/leodjango/__pycache__/wsgi.cpython-38.pyc
 create mode 100644 dev/trydjango/src/leodjango/settings.py
 create mode 100644 dev/trydjango/src/leodjango/urls.py
 create mode 100644 dev/trydjango/src/leodjango/wsgi.py
 create mode 100755 dev/trydjango/src/manage.py
 create mode 100644 dev/trydjango/src/products/__init__.py
 create mode 100644 dev/trydjango/src/products/__pycache__/__init__.cpython-38.pyc
 create mode 100644 dev/trydjango/src/products/__pycache__/admin.cpython-38.pyc
 create mode 100644 dev/trydjango/src/products/__pycache__/models.cpython-38.pyc
 create mode 100644 dev/trydjango/src/products/admin.py
 create mode 100644 dev/trydjango/src/products/apps.py
 create mode 100644 dev/trydjango/src/products/migrations/0001_initial.py
 create mode 100644 dev/trydjango/src/products/migrations/0002_auto_20241025_0643.py
 create mode 100644 dev/trydjango/src/products/migrations/__init__.py
 create mode 100644 dev/trydjango/src/products/migrations/__pycache__/0001_initial.cpython-38.pyc
 create mode 100644 dev/trydjango/src/products/migrations/__pycache__/0002_auto_20241025_0643.cpython-38.pyc
 create mode 100644 dev/trydjango/src/products/migrations/__pycache__/__init__.cpython-38.pyc
 create mode 100644 dev/trydjango/src/products/models.py
 create mode 100644 dev/trydjango/src/products/tests.py
 create mode 100644 dev/trydjango/src/products/views.py

diff --git a/dev/trydjango/src/db.sqlite3 b/dev/trydjango/src/db.sqlite3
new file mode 100644
index 0000000000000000000000000000000000000000..6ac5b1fc285b6408225edb378edddf3ea1396dfd
GIT binary patch
literal 139264
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
Hu?hSi#DQJb

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/leodjango/__init__.py b/dev/trydjango/src/leodjango/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/dev/trydjango/src/leodjango/__pycache__/__init__.cpython-38.pyc b/dev/trydjango/src/leodjango/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..496fb9402c3aab98e4a614b96a136356deac4560
GIT binary patch
literal 153
zcmWIL<>g`kf^~Bw(n0iN5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HWetCXTc5y*s
za%!=@OIBiDdcI3)ZoYm>YMFjXQDq8PM8CKwSwAN=AIgi5&&<m#iI3MSsJz8tlbfGX
Onv-e=GWRnOGXMaeswC3@

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/leodjango/__pycache__/settings.cpython-38.pyc b/dev/trydjango/src/leodjango/__pycache__/settings.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..156e8d827b511579dee43f6131f98b5e4b365608
GIT binary patch
literal 2312
zcmb7F+j7%J7?u^qc1#=s;gAAtMN5HDB0)k4bP7e-B6#XUCXz|3i)v);THZtlN4tuN
zo`s8Y)#<zR33S`5zCb(eFr~j_$MHDKG?lFN>Ob$d-@j^?%Owu3yFV{G>+>A<TlzA2
z72)L>JoHx>5NB{Ghj=$<<Zy16|7m7o6!7fZTzVUMG-DKyU=$tBm_xHDj|!-W=1>Wp
zaSBEW&7(3}Kxfe+I)~1K<P2Ie=FtU*Ljt;pE}_e48GYmkB!{lN5uBV+MpummbPau+
zWjl-W=##fR`t%J?a>gPO(RHvC(P!ECc{bi4IY%(gp)ZW{=%%p*wOoMbB0QJSE#orc
zHE!j$CFMA-RNb|FClD!SjQ9=}yFn<rI6y;jKMZ!U&7@Lk6Z<%{7)D~}P`ou%uUg0>
zzDSuBvXSL2F`^Jh9EDwz?n@is{Q{zTL5M}-LjuoYB=AM}u^xex#Km`^0$l1b)~8>~
zG74-e4Rah-U<aOzeHjAEEa(%P%10&3!|<$!#ct%fqDv?fgYNN?EFVE4OhWO%awAOt
zPp%MmCldV*B;cCyn)Q{nzV^topFBS3&<CA8@_7IH&HdLK4>t~X2REJ!dOw=+AYSdR
zJfYEA_uk$eOOG!M*CW}1&qC6XGVJ1|X=%iI@zp6|>Vkd74*QtKm#35zQwnIFRCu7U
z9Pqd@?ZE(lJ4KxuMZgzDHly+C$jT!Kxp-iOSfbdDLc$IuZ8T|&b@7AgprbOR34d)U
zoA6pWnFKc03w)`P{r!h24ZBhWhF1g+CQLV`YOw&s$vPBx2mFYg@ovI#dJ#vEO*%J*
zFiv<q{J<hyV(;x*_8xFw`u;^|dAQY2NlqvH7RG%gMWIV$c@&3XukS)@NgW7)eRM>9
zshTyRK2lTTd`5)V%!Ey|p{yXJ@$Km#Cv7BzJCPILIfZ42_n|>p{N>1YOx6_94@6Fp
zj@PG*$0&Zl;Yhb4B!%Zn<vX=mHH2zyTT6<{)|Q#g3au@@)@o|;m1DpL)FG19?*q=+
zCME@hyH@0~F}qRc7(cr25{B2~5(r206+X$U&COa<O@yY>P{RVWa{O|t^o%)ui_$?5
zA`^}ag0gf{o8nMmY2!u=Ys4e2m3GFfp+ykJPfr`EL44vxULE@m>mB=lds_ctqil_8
zJPz>ev;mrtheKkYj4+G+)rclDZM_l~WjNKLW8{_Pq+ptGAe&~w2Q(4-7V81}B=mvg
zNx|ySOj0z>^h7aDqxf9W)O074lBQO+Ro(nf{UMpHs?Xb-Nm;4aTRUpieA&`;Em^2F
zH627CfbG|kQlnO_*3}(lTTSM-TP@veZ`UiW=8I%bR~uV(MOU?CaYx&%rS|n&MM;^G
z2)hCClewy*D`|2qSytNmOLI%nw4K&=)qJJYYoKfa&B}G9x!G1WRkPBnst~r;P)(x+
zv?#Wr?ArZD&Ec$m|6Vi6r!w7umFSSEl2-Ez7m7fgZ20@B3`E%j1fU(|YSyk*>;*Ey
z2Qmu}hg%}k(3Zzk9)C`x{$W!5#)IS6#ZTc=%+UiFg!$skwSq7s@Is!?jqe%$PoX@1
sOXYtFB|*p}{8;{uf6u=Y-V2LDA(hSl1M@P^fmAp#{vj+uj^UmE7v5kFS^xk5

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/leodjango/__pycache__/urls.cpython-38.pyc b/dev/trydjango/src/leodjango/__pycache__/urls.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..433649d7c7d20833a59542e754827a1628fd74a6
GIT binary patch
literal 932
zcma)5F>ll`6i#xv_DHX=GJ4BJI%3)}0t9NQsDv1RF1Mt<*q6%@+mY?G94mi=KfuBd
z%F4vV&H~TA9Ey;TYAKfOJb&-|zW01}d>nZ&zI}OE{tP_tyWI@O2sY2*(~n`I-om3k
z4QihUi@>+*Q9a_}BJ@2L(vSt4@#f%jQ2L8QI)3LR2SfpA%_Q9rQA%|6_BA?_VpWx`
zBBqieir%jox^7k75M!7U`Wn@hHb}|VFl{erWF)$&*sV^{g;a=3#ZV<yQgH`?nwk;K
zkY+545RA1kjm|Kpve4-+aiiph6(%ht$4ubU^aLB(RE5Si7(;rEqn95E2P~aM7p*8P
zyIoobdXl0Slp-Qf#T%(ihR{k$j`%hwP17F^;!pc{Cm93`6v9;yyPn1Iyw|msoXwFS
zoIQ>0I!>aqnrQuK3Bu?A^?xj+Su<scq|T^4omYV6*x!+jjZcZrEyyhShtZ`d>Xufb
z1QT37E3JTH?)|xR#vq^q<*~7BmY`K{Wwx_xSB}&gz9-qo&YdZDX1lCqiNU~qrq~`h
z+&D?1AJD8`;&)?0c_m;GTE{;fxGjE@OuEB7hyKX(#r>WVC^4#9+J5!AqXAE4pFkJt
z%CIi9#Ji(GF~5519{hLHuMFQx^+7kJU>cvhmOp1)V#;o?QQI9T)~djNpM>kZwApr(
XCtT9DX3u<p(-WA&2UCAKn*RO+YWgDe

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/leodjango/__pycache__/wsgi.cpython-38.pyc b/dev/trydjango/src/leodjango/__pycache__/wsgi.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f3957c550afd39ff65076d26b882979a8bd33e34
GIT binary patch
literal 560
zcmYjP!EO^V5cO`-CM*;oges1{MuIhPtWX6~+9(LpLs}u_vN7w)#=+}Z*>2MG%CW!D
zLpgHcfAEzPzrYFauBbASXEYwoy!XbwI5<d1u%EZji<^j$-*vKU-H^Ns$G!?qkQot?
zh*dO;LhPux?94h5foRpe+Y?=}_dO0-=Np;ri+D-~``5pc&(qPE=BO94pbIoq0g4sZ
z1=7mk3UZew$=Ff2s?dU^ZV9w);Y#r@3MjXf(-Os{f|m-`py-+#*_1RdLD2b}SCx`E
zcM|n{9_F0}oDvOCsRLx$6e#L2Tw1!23SLkPkSv|6>=9!EbDOrL{&UK)WT4rb^fg=J
z#vv0>DcqKz9oyJKvgA)#2$>8b|EvI))pywr4SzWN@P0Bn%cdvi=i|v}nteJOUVJ>c
zetNGzwcwo8g&p*KFUtanEb}p1|D>go=0QPP4>oat@;%UNX;AwlGzwVoOXd8-9n2rZ
z)Q{P?zej9?=BurE4wem@g%6>ub*z~)+ZKXZle2q5jj*)Z`u^K?-N)fa5Ze!~`=B2`
IiXX@S02aBgasU7T

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/leodjango/settings.py b/dev/trydjango/src/leodjango/settings.py
new file mode 100644
index 0000000000..6f784d66be
--- /dev/null
+++ b/dev/trydjango/src/leodjango/settings.py
@@ -0,0 +1,123 @@
+"""
+Django settings for leodjango project.
+
+Generated by 'django-admin startproject' using Django 2.1.7.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/2.1/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/2.1/ref/settings/
+"""
+
+import os
+
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'a5a328mc=9vbs4bki9q!&qx767yjw$=wh^_zwz-f)=su2f0k*a'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+    'django.contrib.admin',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.messages',
+    'django.contrib.staticfiles',
+
+    #own
+    'products',
+]
+
+MIDDLEWARE = [
+    'django.middleware.security.SecurityMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.common.CommonMiddleware',
+    'django.middleware.csrf.CsrfViewMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+    'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'leodjango.urls'
+
+TEMPLATES = [
+    {
+        'BACKEND': 'django.template.backends.django.DjangoTemplates',
+        'DIRS': [],
+        'APP_DIRS': True,
+        'OPTIONS': {
+            'context_processors': [
+                'django.template.context_processors.debug',
+                'django.template.context_processors.request',
+                'django.contrib.auth.context_processors.auth',
+                'django.contrib.messages.context_processors.messages',
+            ],
+        },
+    },
+]
+
+WSGI_APPLICATION = 'leodjango.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/2.1/ref/settings/#databases
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.sqlite3',
+        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+    }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+    {
+        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+    },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/2.1/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_L10N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/2.1/howto/static-files/
+
+STATIC_URL = '/static/'
diff --git a/dev/trydjango/src/leodjango/urls.py b/dev/trydjango/src/leodjango/urls.py
new file mode 100644
index 0000000000..ca6087b9f0
--- /dev/null
+++ b/dev/trydjango/src/leodjango/urls.py
@@ -0,0 +1,21 @@
+"""leodjango URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+    https://docs.djangoproject.com/en/2.1/topics/http/urls/
+Examples:
+Function views
+    1. Add an import:  from my_app import views
+    2. Add a URL to urlpatterns:  path('', views.home, name='home')
+Class-based views
+    1. Add an import:  from other_app.views import Home
+    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
+Including another URLconf
+    1. Import the include() function: from django.urls import include, path
+    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
+"""
+from django.contrib import admin
+from django.urls import path
+
+urlpatterns = [
+    path('admin/', admin.site.urls),
+]
diff --git a/dev/trydjango/src/leodjango/wsgi.py b/dev/trydjango/src/leodjango/wsgi.py
new file mode 100644
index 0000000000..9f41e49c57
--- /dev/null
+++ b/dev/trydjango/src/leodjango/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for leodjango project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'leodjango.settings')
+
+application = get_wsgi_application()
diff --git a/dev/trydjango/src/manage.py b/dev/trydjango/src/manage.py
new file mode 100755
index 0000000000..c84f827277
--- /dev/null
+++ b/dev/trydjango/src/manage.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+import os
+import sys
+
+if __name__ == '__main__':
+    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'leodjango.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)
diff --git a/dev/trydjango/src/products/__init__.py b/dev/trydjango/src/products/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/dev/trydjango/src/products/__pycache__/__init__.cpython-38.pyc b/dev/trydjango/src/products/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..325c8c4e1494a19707ac59c8d8cb7d937ef42687
GIT binary patch
literal 152
zcmWIL<>g`kg36^5=^*+sh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vOzdXMvySN}R
zIki~dB`Yy6J>MlYH(x&`wM@UHs4@jCqF-E;tY1)+pHiA!Qmh{zpP83g5+AQuP<e~P
RCKo80lWGSt_A?MO003kyBxe8s

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/products/__pycache__/admin.cpython-38.pyc b/dev/trydjango/src/products/__pycache__/admin.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..322e6712a65ab4e4e8eb2df28087b8387b2a17b9
GIT binary patch
literal 266
zcmYk0u};H442I9Sq(rD?<`Kx!+p7vObVf*sB@#o3ttcgzi|i{^-v&lTUMDM4UxA6c
zWa%&2)@ND%|CiP3S_QrS+&0HBe<NH<2Y3i2ccGy|=#+&LKw*NqORO$6D1v?ZnUVgA
z`}A2A**RRR0>-RD+xBOe>FS9c9%}zsEXo_)SAFBwwd*~%Z=8gaabX=&C!9t|rS&xC
zOie4E_*-!v)>Hf2n4{x&8LFDZ?50mUvd$oV7|*Bqw-K(*Fk6b5lB|c*m~Vs2p`-hl
KN}|<LFX11vQ$xD|

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/products/__pycache__/models.cpython-38.pyc b/dev/trydjango/src/products/__pycache__/models.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b00bf1b42eebcfaf89e4cd494a6fab36db0c0559
GIT binary patch
literal 595
zcmYjP&5qPC3{IMMrk(BV4KCdF*30$*SRn)>II&uZMMAwq+1ku@HvJ)KVdf0ieTU`9
zE9J_Cc?C{5jRfl`jz8P6V>=(#>lGt9yLh(!$Qk?P!DEUEyrgZ<hyeqxS<5TV*;@t?
zi0=#p@?G>zR087ntVoXJ#|rKiZ4anz?crnk7jQ#bWEBTiMJRSLaER`Cm5{suK`XwG
zswJTm5?H{JP=?}R@q<+>I#1}#A*Ga=TV9zSrg}W?DJJD!wQ4UlcH8mxx`<qIqg8k3
z;%?IV7?Df!TaaJmP66wtRay>O)o8;#XtvF0FN?KHrR-FTQo5CtRL-QmoJ;w6QaV_S
z59hMix5~U}P=iaxX4L4iYut}Pa{_2<(+p$NcP`(AjI*gq2Gi8&mUe1eWezTX)%O}z
z7p&<gRO4h2elqif(#-77^YUwN?(E<nTyA!%+x8o5`x5X=Ihq5^n$nuO970oU876T)
z91NAs`~a*UddhQtN-O2F{<4T&7OtPeO(-mR=Z83(|34u}Pbq>+FG5>h(AQzs_aYa6
E0kYhkwEzGB

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/products/admin.py b/dev/trydjango/src/products/admin.py
new file mode 100644
index 0000000000..9c39fccdb2
--- /dev/null
+++ b/dev/trydjango/src/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/dev/trydjango/src/products/apps.py b/dev/trydjango/src/products/apps.py
new file mode 100644
index 0000000000..864c43ed85
--- /dev/null
+++ b/dev/trydjango/src/products/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class ProductsConfig(AppConfig):
+    name = 'products'
diff --git a/dev/trydjango/src/products/migrations/0001_initial.py b/dev/trydjango/src/products/migrations/0001_initial.py
new file mode 100644
index 0000000000..17cd0b457d
--- /dev/null
+++ b/dev/trydjango/src/products/migrations/0001_initial.py
@@ -0,0 +1,24 @@
+# Generated by Django 2.1.7 on 2024-10-23 08:31
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Product',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('title', models.CharField(max_length=120)),
+                ('description', models.TextField()),
+                ('price', models.DecimalField(decimal_places=2, max_digits=1000)),
+                ('summary', models.TextField()),
+            ],
+        ),
+    ]
diff --git a/dev/trydjango/src/products/migrations/0002_auto_20241025_0643.py b/dev/trydjango/src/products/migrations/0002_auto_20241025_0643.py
new file mode 100644
index 0000000000..a0940a9496
--- /dev/null
+++ b/dev/trydjango/src/products/migrations/0002_auto_20241025_0643.py
@@ -0,0 +1,24 @@
+# Generated by Django 2.1.7 on 2024-10-25 06:43
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('products', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='product',
+            name='featured',
+            field=models.BooleanField(default=True),
+            preserve_default=False,
+        ),
+        migrations.AlterField(
+            model_name='product',
+            name='description',
+            field=models.TextField(blank=True, null=True),
+        ),
+    ]
diff --git a/dev/trydjango/src/products/migrations/__init__.py b/dev/trydjango/src/products/migrations/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/dev/trydjango/src/products/migrations/__pycache__/0001_initial.cpython-38.pyc b/dev/trydjango/src/products/migrations/__pycache__/0001_initial.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bdf9cf5698047f6ef1abd1ef673a8710f11b47bb
GIT binary patch
literal 793
zcmYjPOK;RL5VoD{BiU>zh(pgHA?>9pcZ7<%Dng<a5=BV4SZQXOdYf16Z0T}^>;4CN
z<j$}0l?(j~AOYi~RqM#38QYofVSkuTLq_A{kFESlF!s|G_lHl#E=}`{0x;kOD|y08
zkqFLSGZ5f?W#A!ScwfB41OGjn4X)`dn+Y41D%WYN>dM$*Spya(b6fX^gWsiT78H;r
z99SZNCtl7H9|wz}gTT>Z44gh61~6RvCjv&a7Qh&SHK!`X(YNr5Q8uCV2}Cf3jkTcq
z!R<~yfX%hYc@n`xBKgP$2e<5w?C71YVVSj7DA>2+&3xwDC|$O-%rvGgf}J#4m8o9I
zGhErgpjK(2KBJ8;P#@O@WtEm_2d!!gyuKtYGfw)`OIcu*x2JXjXfmxD=Y}0nvkb4v
zaHf8FomU%x837csDbfs0|1YRqwZ@LjvUJ#Fso%j2PZSnl4rfz4mL0N`Hk6V)UKU7s
zB<1-sE!<(MMygUR@wE|PgB4(vDKy%_+sR%h@W9=UCMwJZuSoa41F*r~X{vA1BfM<;
zG@AER`zov(yt(A>Oh2IxUHJVr{#5HT(>OKpe34dpJ;$<+0WacKub^9rjn3kx_uj;J
z&n4d3*?BH+Xm2+w?cU*#rrDw}7QXO(p9}GrZ}5<B^6-!N>;LOc9n#eWefMoR?nHLF
Zy3IR&efE^P+3}0sx0g=7ajtB7{{fQY;==#{

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/products/migrations/__pycache__/0002_auto_20241025_0643.cpython-38.pyc b/dev/trydjango/src/products/migrations/__pycache__/0002_auto_20241025_0643.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..28caf7c4be400f05d10e46280c3465c4123c6920
GIT binary patch
literal 714
zcmYjPO>fjN5VaF$H=9kRo+)RfaA?w{a6(m!s^vs46d~nerJ3m}Tjv8iDfA52{UQ7%
zUpes;Kp+@rw`wPvr<rHRGxO{ZdwUThdwz1TT6&EAaLHp6l$?^AX9U22D^~NI*Iw>%
z_LhMM{x=3b^0oif&wUW@SrYuDy)5x;R97oq^i|s!JE>bhWlFd7*g{H9$<2}gS<Zpw
z9`F^<eH81!6~M`Q3Ic)+hY3tKg7}d5koXz#0%jWzqK&`u@(AYCKx}94?kiIpVW(Rd
z%HG&G%d#U`HC0~~%1(E@4X?522aRx<a61LOE(X;v6F~#Gre#yqXvK)Zb%hG-ey7o(
zzD2p)ZRdcd)K%xErJBK&Dw-SmX;3QhwG&y-9mE6|$=rr=JXT5@Nl9e}g%rn9ei{np
zO1TWM!v?S^D>Ry}huQE9VCh=WzDwgbZL6?oM#@HKsz<$zXP5Y;-_dP{yKDH)^b^;G
zgWn(1&#k^OT~VS*&(}q>YR|E5Q^4D_*LN^7snKP6FJSs`p(#nZkj2oqa*-{LkFv!}
znY}uGaoF8y_h=^M<|#qwd;dfrxJO^ay+2~IjpM)K*SPb7gr04S9m3T(<~ZEA_|Wb)
TI-nD6_<AeYiPOM1UH1L|E6Bhs

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/products/migrations/__pycache__/__init__.cpython-38.pyc b/dev/trydjango/src/products/migrations/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9aa969ab23f056d4bdb222b4ccd227a6cbc0159d
GIT binary patch
literal 163
zcmWIL<>g`kg36^5=^*+sh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6v5zdXMvySN}R
zIki~dB`Yy6J>MlYH(x&`wM@UHs4@jCqF-E;tY1)+pHiA!QmmhwnO>Awl9``ZtREkr
cnU`4-AFo$Xd5gm)7pNd7)edCCXCP((05p^+-T(jq

literal 0
HcmV?d00001

diff --git a/dev/trydjango/src/products/models.py b/dev/trydjango/src/products/models.py
new file mode 100644
index 0000000000..614ea3768f
--- /dev/null
+++ b/dev/trydjango/src/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)
+    description = models.TextField(blank=True, null=True)
+    price       = models.DecimalField(decimal_places=2, max_digits=1000)
+    summary     = models.TextField()
+    featured    = models.BooleanField()
\ No newline at end of file
diff --git a/dev/trydjango/src/products/tests.py b/dev/trydjango/src/products/tests.py
new file mode 100644
index 0000000000..7ce503c2dd
--- /dev/null
+++ b/dev/trydjango/src/products/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/dev/trydjango/src/products/views.py b/dev/trydjango/src/products/views.py
new file mode 100644
index 0000000000..91ea44a218
--- /dev/null
+++ b/dev/trydjango/src/products/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.