From ae040b2d29fdfc4b1891de90d662acb7bb181a86 Mon Sep 17 00:00:00 2001 From: willy Date: Mon, 28 Oct 2024 06:41:12 +0100 Subject: [PATCH] complete initial developer features for plant catalog --- .gitignore | 10 ++++++++++ .../__pycache__/api_views.cpython-311.pyc | Bin 1465 -> 0 bytes .../catalog/__pycache__/models.cpython-311.pyc | Bin 1165 -> 0 bytes .../__pycache__/serializers.cpython-311.pyc | Bin 947 -> 0 bytes plant_catalog/catalog/api_views.py | 1 + plant_catalog/catalog/models.py | 11 +++++------ plant_catalog/catalog/serializers.py | 7 +++++-- 7 files changed, 21 insertions(+), 8 deletions(-) delete mode 100644 plant_catalog/catalog/__pycache__/api_views.cpython-311.pyc delete mode 100644 plant_catalog/catalog/__pycache__/models.cpython-311.pyc delete mode 100644 plant_catalog/catalog/__pycache__/serializers.cpython-311.pyc diff --git a/.gitignore b/.gitignore index 4ad4d96..97ee1ab 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,13 @@ venv/ # Ignore Django migrations **/migrations/ +# Ignore media files +**/media/ + +# Ignore pycache +**/__pycache__/ + +# Ignore static files +**/static/ + + diff --git a/plant_catalog/catalog/__pycache__/api_views.cpython-311.pyc b/plant_catalog/catalog/__pycache__/api_views.cpython-311.pyc deleted file mode 100644 index e131d30d5d64c740d79f1494fb6d963da8c8a16a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmbtT%}>-o6rbsS(ETjv0-_iZP}wMK;>C+0Q3+@wNF*B5#584RSPRqLWu~x!#AFX1 zJs2-=t*SQjd}t>#$W__4PPQ*hxK! zk%FcW>3D~TO7UVU++) zo;JP09BbC(j{F4WUUIU+?Le2I={aih;+si}Ih60=;Q!bxGs}+jYQ8cj*D{&4PI)oh zA4a7$InbrDfhf{3LApXCi_w+`ZG|NZ4gR<-ap%aQ$7zSI(gaPG6g@@LC9G!%CW@S8 zNkpa<^?LkcJhg=Lh*Q&{4`!ddv}nzXmQ9;_DMCe&TUE!ZlxOmqry2&>4Z}+shFu{m z4D_^NEU%a>@NiXb?{!q>7irNEUc_X~Q zg0)IV$)Z^KX^e_yB|z4<*!(URTS#fBRD#_@NDa z*9LdB!TMvj_huuSb9-)Vtv9;w)@R(_p%3NyGq?N7=Ici8c6}ON-WM)&Z2$kjXT*d;Iq^ec;5{KLA^|Twu0!o}@$?1rIA1$`T zB{3-z0TENjToVENy3UZ@Z?)I|w}J&3w^!k}dOx@V<9t{i8!ou`CZQR@7&qex4>!=z zNpaD5<2-Ruq0ufb>T9%%i$)sl(u~LOohCX9o3D1S-rEPq;jy<|EPPgXN2d3| Kad?i`Z`L1LLv(Qf diff --git a/plant_catalog/catalog/__pycache__/models.cpython-311.pyc b/plant_catalog/catalog/__pycache__/models.cpython-311.pyc deleted file mode 100644 index 7107b4dc6daf6daca0648f93d40c4314c05e544a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1165 zcmah|y>HV%6u*n@B>o6Zf`mXND$RhDwr)1WfLLgQ!bd@(Q0!iNQmM z4jsC6?LsMP{{S{v*%HZv00RsuXu%qUAOW5OoY)0eAh4MjZ8#PHIAu>PH35t7KuJ31VF`xG zmW2s*>cezo#wC8T@DLDCgBa8j2|$FVI09mLmN;h3ow6sEniL_DqZkWk;uSiCC&oSG;SW#NW z7NVrxaMzYuD7L$l?xZ>#;*?85D0e&5GB9#2n-3F8D=f8cbIut&g~_VXrEYyp4O{0v zzlDn|Q-|OKXfhiMYXB}qWsDZ#)**D&;Ts-YE|fP6yS%x%S$51;hY~$%LO1OCnz=!A z+%(z^s~jz&y5SnsYLrJdzS{ZDc9=rQaczWlGSQgx!|)a>;c%Wk5KP?O-|nUFUhtNd zO4%@tP@A=bP^cipPU=$bYY4sX8Z^$>e4bE#wr1EBlTd7Px}|A(`9{l?r2Vh?Q5m+o)rkb+*jrr$b+>wq4R7ae+{BT&uora|%BLJI9PY z!4-dFBgGx(BU9e^7pRkak9>9V$myxGeRbAXXT60WUp#o|=Zhy|FR%CWx}Vp*mw{H; ztN2>sME)XvTj*)kzE<_Ms<#+qrw@{TcKXQeW#{_YIX^q+RfAmd;Etc;N96Q=PWN-V z_ae}y_z_blu&2%RwHaTV@fHV3DBT-?>nfgr_qAmS6t{gJ328!Gprsuc`M4pCU}1@v5D1}0NM*XkGO-h`@#RwAr3Z+CfuSQ? z76!yngjo15STit0o{*TjU6oFmc)lb3pdGNEfA{Qn@BQ9;_Lo|%f?zxy{ph^K2>mvj z`EdR!(}$pp5JwzK6k;D^#0j?~2`%5kh@i)a+wT!~1m3pi&ifWZ-(VHPceuNSywZW$ zdRQ;SLIq3)Z-j~ufY+Qk&m`+7?ZTnJd9>*r*pHAvKIX_LIU@!}vQK~oRxx~wTfk!L z#XQv3F~|P|6_#&zp~TM^l7;fP&7F@Vz`k3gKD+i$(2Y%zFd!oV*LI(ULN9O;w^cAm zf~c>ZAY@&kYLMEa=N{2zC3c2^5?oi9lu=6iLn&KcNtY=#-jwPJrD4Q}(&$x6cZN(B z7GBZfIaylSb0*98$GPmezp7V1 z-Ta=6SDGN1Mb;{NRWsFfa8v65EzedrfKoX!zt1^o8qk8ENy2LkWERFaa}mBhMz>DO1g($HN@lwl3ONrSdOuh19vZ{Z1=hTpKP9y32><{9 diff --git a/plant_catalog/catalog/api_views.py b/plant_catalog/catalog/api_views.py index e79db80..99b8be0 100644 --- a/plant_catalog/catalog/api_views.py +++ b/plant_catalog/catalog/api_views.py @@ -18,3 +18,4 @@ class PlantListCreateAPIView(generics.ListCreateAPIView): class PlantRetrieveUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView): queryset = Plant.objects.all() serializer_class = PlantSerializer + parser_classes = [MultiPartParser, FormParser] # Allow file uploads and form data \ No newline at end of file diff --git a/plant_catalog/catalog/models.py b/plant_catalog/catalog/models.py index 0f36f88..bc757ea 100644 --- a/plant_catalog/catalog/models.py +++ b/plant_catalog/catalog/models.py @@ -4,12 +4,11 @@ from django.db import models class Plant(models.Model): name = models.CharField(max_length=100) - description = models.TextField(null=True) - image = models.ImageField(upload_to='plants/', null=True, blank=True) # Allow null values - buy_price = models.FloatField(null=True) - sell_price = models.FloatField(null=True) - stock = models.IntegerField(default=0) - + description = models.TextField(null=True, blank=True) # Allow null and blank + image = models.ImageField(upload_to='plants/', null=True, blank=True) # Optional image + buy_price = models.FloatField(null=True, blank=True) # Allow null for buy price + sell_price = models.FloatField(null=True, blank=True) # Allow null for sell price + stock = models.IntegerField(default=0) # Default to 0 def __str__(self): return self.name diff --git a/plant_catalog/catalog/serializers.py b/plant_catalog/catalog/serializers.py index a34300e..20dfb76 100644 --- a/plant_catalog/catalog/serializers.py +++ b/plant_catalog/catalog/serializers.py @@ -6,9 +6,12 @@ from .models import Plant class PlantSerializer(serializers.ModelSerializer): class Meta: model = Plant - fields = ['id', 'name', 'description', 'image'] # Relevant fields + fields = ['id', 'name', 'description', 'image', 'buy_price', 'sell_price', 'stock'] # Include all fields extra_kwargs = { - 'image': {'required': False, 'allow_null': True} # Optional field + 'buy_price': {'required': False, 'allow_null': True}, # Allow null for buy price + 'sell_price': {'required': False, 'allow_null': True}, # Allow null for sell price + 'image': {'required': False, 'allow_null': True}, # Allow image to be optional + 'description': {'required': False, 'allow_null': True}, # Optional description } \ No newline at end of file