From 54bc863f5fe589ec0e839ef6b4a9102d732d9221 Mon Sep 17 00:00:00 2001 From: Artem Darius Weber Date: Tue, 7 Jan 2025 18:08:34 +0300 Subject: [PATCH] init django project and added base invetory models --- .DS_Store | Bin 0 -> 6148 bytes .idea/.gitignore | 8 + .idea/franchise_store.iml | 8 + .idea/inspectionProfiles/Project_Default.xml | 187 ++++++++++++++++++ .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 14 ++ .idea/modules.xml | 8 + Makefile | 28 +++ docker-compose.yml | 31 +++ inventory/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 154 bytes inventory/__pycache__/apps.cpython-310.pyc | Bin 0 -> 439 bytes inventory/__pycache__/models.cpython-310.pyc | Bin 0 -> 4142 bytes inventory/admin.py | 3 + inventory/apps.py | 6 + inventory/migrations/0001_initial.py | 72 +++++++ inventory/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 0 -> 3264 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 165 bytes inventory/models.py | 72 +++++++ inventory/tests.py | 3 + inventory/views.py | 3 + manage.py | 18 ++ settings/__init__.py | 0 settings/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 153 bytes settings/__pycache__/base.cpython-310.pyc | Bin 0 -> 374 bytes settings/__pycache__/dev.cpython-310.pyc | Bin 0 -> 211 bytes settings/base.py | 20 ++ settings/dev.py | 4 + settings/prod.py | 15 ++ 30 files changed, 506 insertions(+) create mode 100644 .DS_Store create mode 100644 .idea/.gitignore create mode 100644 .idea/franchise_store.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 Makefile create mode 100644 docker-compose.yml create mode 100644 inventory/__init__.py create mode 100644 inventory/__pycache__/__init__.cpython-310.pyc create mode 100644 inventory/__pycache__/apps.cpython-310.pyc create mode 100644 inventory/__pycache__/models.cpython-310.pyc create mode 100644 inventory/admin.py create mode 100644 inventory/apps.py create mode 100644 inventory/migrations/0001_initial.py create mode 100644 inventory/migrations/__init__.py create mode 100644 inventory/migrations/__pycache__/0001_initial.cpython-310.pyc create mode 100644 inventory/migrations/__pycache__/__init__.cpython-310.pyc create mode 100644 inventory/models.py create mode 100644 inventory/tests.py create mode 100644 inventory/views.py create mode 100755 manage.py create mode 100644 settings/__init__.py create mode 100644 settings/__pycache__/__init__.cpython-310.pyc create mode 100644 settings/__pycache__/base.cpython-310.pyc create mode 100644 settings/__pycache__/dev.cpython-310.pyc create mode 100644 settings/base.py create mode 100644 settings/dev.py create mode 100644 settings/prod.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ca5a200d770a753f73ca2721ada7ed2e61db9084 GIT binary patch literal 6148 zcmeHKOG*P#5UkcL0xpuJ%XbBDFobx596&|m2V???x}H_e<pi9x)6)QK_5N@LECI~vjyQUlnm>1+*jZ(aNaq>%c*YA3*y3hVeLCUX1s<`-9r_Xf zfH&-z-+pZN{p+rO%3Dq!qpTE=0#ZN!2`1J0?au=EmFcWfWyy^EID$g+pS{nGZTqKLf6dObYz90$ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..c83e0bf --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,187 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..9d156b4 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..cd27d96 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4777d5d --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +# Define default environment variables +DJANGO_SETTINGS_MODULE ?= dev + +# Default target +.PHONY: help +help: + @echo "Available commands:" + @echo " make run - Run the Django development server" + @echo " make migrate - Apply database migrations" + @echo " make createsuperuser - Create a Django superuser" + +# Run the development server +.PHONY: run +run: + @echo "Running Django server with settings: $(DJANGO_SETTINGS_MODULE)" + DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) python manage.py runserver + +# Apply migrations +.PHONY: migrate +migrate: + @echo "Applying migrations with settings: $(DJANGO_SETTINGS_MODULE)" + DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) python manage.py migrate + +# Create a superuser +.PHONY: createsuperuser +createsuperuser: + @echo "Creating superuser with settings: $(DJANGO_SETTINGS_MODULE)" + DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) python manage.py createsuperuser \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ef343a4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +version: '3.8' + +services: + db: + image: postgres:15 + container_name: postgres_db + environment: + POSTGRES_USER: django_user + POSTGRES_PASSWORD: secure_password + POSTGRES_DB: django_db + ports: + - "5433:5432" + volumes: + - postgres_data:/var/lib/postgresql/data + networks: + - django_network + + adminer: + image: adminer + container_name: adminer + ports: + - "8080:8080" + networks: + - django_network + +volumes: + postgres_data: + +networks: + django_network: + driver: bridge \ No newline at end of file diff --git a/inventory/__init__.py b/inventory/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/inventory/__pycache__/__init__.cpython-310.pyc b/inventory/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c625c7fa45eb7be942e85c49637971d2022c3134 GIT binary patch literal 154 zcmd1j<>g`kg4foy=^*+sh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vOKeRZts8~NG zu_&{&Sl=Z-ximL5ucTN%ttc@sIU}<;HNLnczbI8dGp`INo?ld{A0MBYmst`YuUAlc Wi^C>2KczG$)edBAF%ytrVE_OG#U$4N literal 0 HcmV?d00001 diff --git a/inventory/__pycache__/apps.cpython-310.pyc b/inventory/__pycache__/apps.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0af69011ba997543826200c2cae0a64677d0db2a GIT binary patch literal 439 zcmYjNy-ve05VqqKrGG*~U6EL`Br^h`77&P~3u4J)nVb`Xk~r86QjwV88F&X?$tx4$ z4VXA51$xq*@8|P(KWaK15tOf^=ll)d4;O5UkHH+(9H0RLv?LWxC?%H!JYcT`n4~W( z@xZ?(;ouWdB&2q@Xqq!sXGNa6%(hSr=BQ?dMv{aA!QV7t;3YmVWby6pRsAUImD1~; z0MzYH#nt?|N6(G zX-w3tHA512JhOu)AU+Lfms^I+jyKyltoB?thyL%|dt=Pm;J9Dl#GTDJ!U>tNA8Z0{ Ai2wiq literal 0 HcmV?d00001 diff --git a/inventory/__pycache__/models.cpython-310.pyc b/inventory/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8242b78b9d1e2cd5e7ea2cfbba5ccd6ff47e5cf2 GIT binary patch literal 4142 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 literal 0 HcmV?d00001 diff --git a/inventory/admin.py b/inventory/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/inventory/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/inventory/apps.py b/inventory/apps.py new file mode 100644 index 0000000..905749f --- /dev/null +++ b/inventory/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class InventoryConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'inventory' diff --git a/inventory/migrations/0001_initial.py b/inventory/migrations/0001_initial.py new file mode 100644 index 0000000..d94664b --- /dev/null +++ b/inventory/migrations/0001_initial.py @@ -0,0 +1,72 @@ +# Generated by Django 5.1.4 on 2025-01-07 14:56 + +import django.db.models.deletion +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')), + ('name', models.CharField(max_length=255, verbose_name='Наименование товара')), + ('manufacturer_name', models.CharField(max_length=255, verbose_name='Производитель')), + ('manufacturer_country', models.CharField(max_length=255, verbose_name='Страна производителя')), + ('manufacturer_code', models.CharField(blank=True, max_length=50, null=True, verbose_name='Код производителя')), + ('dimensions', models.CharField(blank=True, max_length=255, null=True, verbose_name='Размеры')), + ('unit_of_measure', models.CharField(max_length=50, verbose_name='Единица измерения')), + ('shelf_life_days', models.IntegerField(verbose_name='Срок годности (дни)')), + ('barcode', models.CharField(max_length=50, unique=True, verbose_name='Штрихкод')), + ], + ), + migrations.CreateModel( + name='StorageLocation', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование')), + ('type', models.CharField(choices=[('Store', 'Магазин'), ('Distribution Center', 'Распределительный центр'), ('Office', 'Офис')], max_length=50, verbose_name='Тип места хранения')), + ], + ), + migrations.CreateModel( + name='PriceList', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('price_type', models.CharField(choices=[('Regular', 'Регулярная'), ('Discount', 'Скидочная'), ('Promotional', 'Акционная')], max_length=50, verbose_name='Тип цены')), + ('entry_price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Входная цена')), + ('final_price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Итоговая цена')), + ('date_effective', models.DateField(verbose_name='Дата вступления в силу')), + ('constraint_percent_limit', models.DecimalField(decimal_places=2, default=1000, max_digits=5, verbose_name='Лимит на наценку (%)')), + ('constraint_price_change', models.DecimalField(decimal_places=2, default=90, max_digits=5, verbose_name='Лимит на изменение цены (%)')), + ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.product', verbose_name='Товар')), + ], + ), + migrations.CreateModel( + name='StockOperation', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('operation_type', models.CharField(choices=[('Incoming', 'Приход'), ('Outgoing', 'Расход'), ('Transfer', 'Перемещение')], max_length=50, verbose_name='Тип операции')), + ('quantity', models.IntegerField(verbose_name='Количество')), + ('operation_date', models.DateTimeField(auto_now_add=True, verbose_name='Дата операции')), + ('expiration_date', models.DateField(blank=True, null=True, verbose_name='Срок годности')), + ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.product', verbose_name='Товар')), + ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.storagelocation', verbose_name='Место хранения')), + ], + ), + migrations.CreateModel( + name='Inventory', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('quantity', models.IntegerField(verbose_name='Количество')), + ('inventory_date', models.DateField(verbose_name='Дата инвентаризации')), + ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.product', verbose_name='Товар')), + ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.storagelocation', verbose_name='Место хранения')), + ], + ), + ] diff --git a/inventory/migrations/__init__.py b/inventory/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/inventory/migrations/__pycache__/0001_initial.cpython-310.pyc b/inventory/migrations/__pycache__/0001_initial.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..173570502aa3243e0968dc82efc930f61942877b GIT binary patch literal 3264 zcmbVOS#um$74GioSv49h7V;97Nx;MdMB{`VLa-ynK}23EHZSwi)#`g^)N)Vvq`R+) zTt!tJXDQ04oT8wLg0MJG@TRg+WiYY)7kXarD=+95uoZ#t+}j!{#?AxXH9dXKJ?GqW zzO&qpCMRnKuD4G8s5d!h7=Iz+;AMk2ga!)TX8U{Pf5A z`I+2alPvTM_V|0`%Moy`4zI$wW=eVKiQeO00GwVd~L@V=4rz6stWZ>&$Pm)ED)XV|ycx7oAG)5_S> z?>yAg=b%aPeOGyUD);m>xHa~C?!_XgSzx}zUQoF^1G)~{WG}MssW=|FKU;?ELC?O= zUdlZyk3Cy?sAnJb;jG&8T<+2TvtN<+>lHhP*m+d_1zA12SM8T%`9d5q;ib~@*%@gq zFSTr0cSRaGUd-K;GdVGc{k|J-IG6c`tR_76-N3)fW&H||SEGbGq1)%urswW|&>!MB z9@($6t!$WmkZou8vYqTUsC%Hdo1@n?IeIPIQjO=n>I6LOrEBp7^yEz64Mo@WQW5i5 znHI;$-fy9>0}JoN)=u`vYzRZ!*`G&0k#ir>@FEeW@rHPklx~e)r+u*XRx`W*2n#nK z*waJ%?>+-{@i^J|C2jXH+Q6&08o1%*xB+qCAc8=LQe%FfhY1Z8L2KFX;L7`i$>_Dw z4LK!3KXsz6)8}r2X!UkKr`QOq(Ocv+1*{Ylki*eUIhCyOpz8#FmpjbeNW>Fl`j!gr zZZo^1&;jP7Yd~n&JOO*K)@qsBsq(5DQ-org)PAo38jjw~?vh@spo1vEwO0gJ8Z9fX zQ(&d8&jXgosf%e8yFI=Vd1_#aBV_0i>6Ui7G2pENGF>D+u7P+LK-^JaAk>z1_0W=^ zq_Mv$XaYAEd6@E8JVkZ^+31=|-8KS2!uJ!O-5cG={?r6cs4-*2 zdIQqeG(hhG%KJ@)B>}V59K8w1s5GcT0c@)v%idZ9?L>i~;i_JU!C8TOvW7nJxHAr@ z{4(!}z>NitC318-yED3uio6NCC^%TOWCek#iWIXXbPF&K5y#Hx?Xk!N8n7Qx;BKI$ z-pTGFs38(^PfLj@Qq~dV;oguFKnYE$oZ7{SWbD#GDGrn9Pmxe+66HpY5ZbLE8;pBs z=D-;QE&|25hxTKB&rcH_??l&!AKI!oO16Fhw02Zkp@~N~$JSsA;-M|l*!9EI8SvOcG^pvmpZb3-AeJJou@`0wJ0?xO6t5wd(n7NHOT(rrPvLVF1lx4 zY0{`cAT&XKycduzk-Q&vkRX!TQWZCpl~;rtrhdAitD1%%wcOhfqPD^8J?Jr2fUc5p z-XAashxKU^Mn801#xw|1{MCW40l*B~v+<}IhN*N2(ZtkeTE7zH!{_SJ{WK(cF6}Le z#|VLUbH{i7r{86Dc`t*qF}9-JQ770qBpS!J2|cQ8U_~X8<8`hzCo7IRrW{As90%Wy zBH(zhI}V@>=u`w%_A%>mZpu3210FISdOqe1wXK|3R0r)@`s$2P`-ZGP@AppQ2tGp- zS5_C-+*rTXmoXW8e2-ev&76xZ0Z9E?JA+B<_rjNOV3*iBDn61HTa^`6jF>dCym|j;k^GgAu<>fYaljEA1cP;7{7jjeU`{mm*K#XiJlJ7xm_?`S=PT z_<4H_WPAUMx_$EG$)}whfrY_FOyBHf{E`746~nf0+m<0VI@<$w@UJ;24;b+ tF6a;bg*|lQ6}Tm<<8_rLl^LbG4~u@gNYa&Ob>^QlDXtR5g=ppr{{g`kg4foy=^*+sh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6v5KeRZts8~NG zu_&{&Sl=Z-ximL5ucTN%ttc@sIU}<;HNLnczbI8dGp`INo?ld{pPQLplvt9PpI59O hAD@|*SrQ+wS5SG2!zMRBr8Fni4rD_y6OdqG008J2DNXg`kf<)WebP)X*L?8o3AjbiSi&=m~3PUi1CZpd{>tnZSaT$-DjS5mB>R+N~RoRL|a8ed$JUzDm}oLW+nnU`LyA0MBYmst`YuUAlc Wi^C>2KczG$)edB8F%ytrVE_P&QzOv; literal 0 HcmV?d00001 diff --git a/settings/__pycache__/base.cpython-310.pyc b/settings/__pycache__/base.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..77d06b74496e62d448701a6c9d26c0c6b87bf333 GIT binary patch literal 374 zcmYjN!AiqW5KLlBlS&mlcoV$#l31(gL8OrcEz~shr3kr%B>RlfHmPqDr3L@QAMlsn z!HZvEFZ!w;I>Qb-EDXz(tyWVKpuN}ZLzbk^m05=_Oiv6R2muLXP+$X8*aQt4Z(1&g z66l#6%3u(w-Q*3RcX2(b7W?oJ7g=dSVkU9=NDDx7R$`Sgicgc!_&Z0Cgj@e>jg*Bu zNYk3pXci;BlnfR|=jhZt6zqiR$#J*a*0|<+SAEars%PH_9TRuNb>AlBb~tjldOaio zSN-8A2#vgWrbSh>;n;zFX%m<5?Y>6>doXaF$o75mF0oY&zp^~D#^MvSAZB@u zmQ$wnRD_^)$KoQr&yhwbBB_P6s`4U3D~XYsvpLt#rzO-AdLf#Wa8HOLuTx#B-^#B3 F^#dn%YCHe{ literal 0 HcmV?d00001 diff --git a/settings/__pycache__/dev.cpython-310.pyc b/settings/__pycache__/dev.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7cd880a83f81c3a14e467aab070879bb46b63381 GIT binary patch literal 211 zcmd1j<>g`kf|Itj>E=NCF^Gc*(X-AMWZB@8KUD61