From e1077f67df888047f3ef8e26410cd5e9e7b1134f Mon Sep 17 00:00:00 2001 From: LionAB Date: Fri, 18 Nov 2022 14:32:18 +0100 Subject: [PATCH 1/6] Ajout erreur migration --- .../back/__pycache__/settings.cpython-310.pyc | Bin 2448 -> 2446 bytes back/back/__pycache__/urls.cpython-310.pyc | Bin 1093 -> 1471 bytes back/back/settings.py | 2 +- back/back/urls.py | 15 +++-- .../__pycache__/models.cpython-310.pyc | Bin 1032 -> 3042 bytes back/fantazoo/migrations/0001_initial.py | 25 ------- back/fantazoo/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 783 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 177 -> 0 bytes back/fantazoo/models.py | 62 ++++++++++++++++-- back/fantazoo/serializers.py | 33 ++++++++-- back/fantazoo/views.py | 34 +++++++++- 12 files changed, 130 insertions(+), 41 deletions(-) delete mode 100644 back/fantazoo/migrations/0001_initial.py delete mode 100644 back/fantazoo/migrations/__init__.py delete mode 100644 back/fantazoo/migrations/__pycache__/0001_initial.cpython-310.pyc delete mode 100644 back/fantazoo/migrations/__pycache__/__init__.cpython-310.pyc diff --git a/back/back/__pycache__/settings.cpython-310.pyc b/back/back/__pycache__/settings.cpython-310.pyc index 88adf35bbad898b2e2601a965e5aaea29816ab06..f53848e4ab9278dc538d551339ab791defe1a6a2 100644 GIT binary patch delta 74 zcmbOr+$YSN&&$ij00fI#%9GnS@}6VW3(L*VOV3Y9(k?D4v(nf1$;{77&2eMd&&$ij00fi$%ac1d@}6Tgh{(;)OV3Y9(k?D4v(nf1DNW8yb+QUeO({t& dN;friNX{uO1~Luwj57;Ta+1?GbF#HE0|0%Y7=Qo( diff --git a/back/back/__pycache__/urls.cpython-310.pyc b/back/back/__pycache__/urls.cpython-310.pyc index 8568b7fd50cc6cf1758882b5bb2bae960007f29e..f37c6a0e31eb4213e7a297ebf27f41541f87297f 100644 GIT binary patch delta 563 zcmYjOKTq306hFtYeYVezfs&zOfT|1;g9rEkL|vc*AR-uUsSNju9C9(bGm4a|Vqin+ zfHJbcCqVrKOe}l^ul*D-@yr}s>s!i^$|0)pqQKRVrV2>D~k|Hru7 z82aUQBfS!qa0afVoJybjGT?y>c_{=);Q^%#N~UTcaLgnx|$*c6|6d|52?NN4f) z&0XW_IEPUW%8pY--C-`XLHA(SXcg-UnGffz_2p8Rg#gy66DP9Se2)W z%Mz64URD>@sL_*5!!VODb~95xb;ix?BA;y9pLRk7X|3vX92;^v>xsNJ3)2$GM`P9` z{gI2GQzNzDZ_3Rjfdl-@YpxVpOPe6{5&lFP9esIIJhG t-09>MRdAMT{KMqYUU%E3M0--%N1s;_HVJDb7PD3`XakWQBbs0O`VJnWnb`mU delta 182 zcmdnbeUw8xpO=@50SL4L%9AfMGcY^`agYHUkmCTv#ZeQr^$j=~Qdv@1Q<<_jvN)TW zfNZu@))e+;MlhQrm3;x%LWX9hbml1T6wY7Lrj}Q+C8p$N=1rDl zQ4-)uEXdSP%*)J8%qiCQ)8v`l%;Gg!npKsJ2WV9h&tx~&P%$AOlZAnYUx1N^k%@_i KnFmO7`~?8u+9a6( diff --git a/back/back/settings.py b/back/back/settings.py index d660a26..c0818a0 100644 --- a/back/back/settings.py +++ b/back/back/settings.py @@ -80,7 +80,7 @@ 'ENGINE': 'djongo', # 'ENFORCE_SCHEMA': False, 'CLIENT': { - 'host': 'mongodb+srv://LucieB:Vedterg55@cluster0.3ipdlcg.mongodb.net/?retryWrites=true&w=majority', + 'host': 'mongodb+srv://LionelAB:12345@cluster0.sc8k0kw.mongodb.net/?retryWrites=true&w=majority', 'name': 'fantazoo', 'authMechanism': 'SCRAM-SHA-1', } diff --git a/back/back/urls.py b/back/back/urls.py index b3a9ecb..26a07b1 100644 --- a/back/back/urls.py +++ b/back/back/urls.py @@ -15,12 +15,19 @@ """ from django.contrib import admin from django.urls import path,include -from fantazoo.views import AnimalAPIView +from fantazoo.views import AnimalViewSet +from fantazoo.views import AnimalAPIView,AdminAPIView,CustomerAPIView,OrderAPIView,OrderItemAPIView +from rest_framework import routers + +router=routers.SimpleRouter() +router.register('animals',AnimalViewSet,basename='animals') -""" router=routers.SimpleRouter() -router.register('animals',AnimalAPIView) """ urlpatterns = [ path('admin/', admin.site.urls), + path('api/',include(router.urls)), path('api-auth/', include('rest_framework.urls')), - path('api/animals/',AnimalAPIView.as_view()), + path('api/admins/',AdminAPIView.as_view()), + path('api/customers/',CustomerAPIView.as_view()), + path('api/orders/',OrderAPIView.as_view()), + path('api/order/{id}/orderitems/',OrderItemAPIView.as_view()), ] diff --git a/back/fantazoo/__pycache__/models.cpython-310.pyc b/back/fantazoo/__pycache__/models.cpython-310.pyc index a38e6899c8bff1d7ae8cdd97378b2bbfaf21c707..73317e9cc56acf276edf0807ed89f510c1fddbd1 100644 GIT binary patch literal 3042 zcmaJ@OLN=S6$XeWUlPN(lP1%L(xy$=CRWonlTIg1MU$Y+IHFXM@}yW41Myx_ph18+ z0LQkbyJXQW{2!d`wC!KWrZfEq*kSkAZ|8m3Vu8P zzCZn6Ls7nGu=&#g_Rx}lfe1yYq2h9136+KFs%pWjxRrfHXhQ#55xP|8+E<#ZgJTF2 z98>DR2CyY;U^~Yqa8=ZRYvl?HoVsX$(wx2*7Wz{w z9X+!>FY*`C^Rk-f;ijvQ#|_W>a^;7m#P&~BLWsSrF^kZ1e5yi>9pL}xKA{51G- zC3pKWxtGSv-6M+UG9CC)>br5gd&{5R+dXA+#;gml3aj2+KFoAhW{XwkP_PwSB}Su8 zlWab%%7kNxDj-?&@N_Px=}-&;8H!Bv0+CgF=ROtKUO_8XJhPX6lH89;WQJV$LFiV` z0!q?C7W%~~KkCJ;icymfWB*!c2^*5NYCQk9)m(bT_RmA&9V}Vf9ws?O?f#XUwEul~a!7%uiMc{kp`x z^8mr+)4K(>Z}~|O2FX2ouV9$_G4YWdK>9iJaGPg#cjvA%>K{Awn_`;5@PvMwqi41= z+8Iv{dw1x4W|(}HW9Mix{M?}riUrk!?!m!u;9!fJ1;;u%9FE6_Bib$Ta5Q#$6Ni3R zuIL_jd$&i!zC#~^Qz&C#Yy0qEG`xF=o%sC&qk7vpzEyDkP;z?R<8sa)3y#q}nPA07 z>z$tbmq+ZP0dc5f8$DWuVP+w`{Z*Jgxxo|i`)I_;LVp6utm%0iOl3klK%G+Z=e4*@ z)gQf-8?HWfzHnS?eB|_o&e%1_lkVhXlIfGbA33hxA3Br#G0U?#s|%S-DOjdK9A&jZ z82f4QmKjUJ(Qebv!^}%kKV2oRl`Q2nkcq1&@`216!zh(ASw4T7Ka*~~T#!Co%FIBB zf~Si>rq`zGPjH!^q9s2A;fHShZ>U>%E%-i>=GH@d%C+X7 z%3PVF{9mdg?8BF(Pe8BYzkn!=p2s2gv;tzQ7dJLlyID>cb=ogQNKwmb zgP3G6i|)vW`JDiN3HC=JqwS+nn_a)LZB z!lpJQ35M|el>UMh^eHbh(m3@)8ZqN}6)#44y}Jbg=Wbc=*zH?+#pB9HEPb`(&mjFj zj<=TTh!qEdS)DwkVNdX zJpIa~c7P|e&w9Sf$28}IR?ZalKLy(JRe%1>&zJ8q>>4@iZQKi2z zIcCB&m)>NOhtZfv`Mwh#v0L1F?h!9faynu5T_&&e&=-*Mo3!B}PR+tg#L`YJGsQfP zW^oZ;y2K|!W*qPrZ2rkoXvyWcP>bD~uiP+0Zjd~_?N5p?!cW}4N!y_QYDL32}EavNK?0s6@M#eUs|n>pvvl5}r;BsuA;A@f#IWmDGua zZ0}gvaTEJm*taMAhM3hBx|+NHpFSWq9;8|7gM=-D*eU+1r)v|B6+4#1_;@UKv^| g8{J1$yO_a4A46$AU8H0c(`PbL#s``bpK?$82b6uIC;$Ke diff --git a/back/fantazoo/migrations/0001_initial.py b/back/fantazoo/migrations/0001_initial.py deleted file mode 100644 index dc8d4a0..0000000 --- a/back/fantazoo/migrations/0001_initial.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 4.1.2 on 2022-11-04 13:54 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Animal', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50)), - ('description', models.CharField(max_length=200)), - ('age', models.IntegerField()), - ('type', models.CharField(max_length=50)), - ('image', models.CharField(max_length=200)), - ], - ), - ] diff --git a/back/fantazoo/migrations/__init__.py b/back/fantazoo/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/back/fantazoo/migrations/__pycache__/0001_initial.cpython-310.pyc b/back/fantazoo/migrations/__pycache__/0001_initial.cpython-310.pyc deleted file mode 100644 index 95722caecea20023805eca65b0643c900cb9e770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 783 zcmY*XJ8u&~5Z>K8pM8&*AR#IQR7h@efjUBY$tXo4BtSyfoHm~EWu1Fv?~HI-X!9SS z^S5$y`GqI-46B5`bYOaYP zOE|DZ08gBZB`)@6o=t)M*#J0Q7kc2`xKjar()lm||ArF^Iux!^g#9nUS4R4+|Gb8q zUYQ5?ZbZhD5Voo4`^G>0SM6Kl9h9n&xe*G+Mw}dvTocK8Tcs0?vPCdqt;sS96)$RD}AfR4o-_BET9;z;dFn z(X?A;!lSPGQ@aW6SWR@OvIFXCY;zd@=tAn17@d?YX1GQ{RpWY*-k9rr4Ec};L_;oa-QR;ho#z?t$A_6LvuX#{9baK#Ae$T51qdu_1MDz diff --git a/back/fantazoo/migrations/__pycache__/__init__.cpython-310.pyc b/back/fantazoo/migrations/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index f5c8fc4cbedca99e19df16bc24da588ae274cb06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmd1j<>g`kf_rkQ$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o10GKeRZts8~NU zFD<_)H?btMuryWQCAB!aB)>pEpeR2pwZttkuOu-lKVRP|F*#d52}GoUgsOl-xtZxj nKu!61#rpB_nR%Hd@$q^EmA5!-a`RJ4b5iX Date: Fri, 18 Nov 2022 16:22:41 +0100 Subject: [PATCH 2/6] =?UTF-8?q?Mise=20=C3=A0=20jour=20models?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/back/urls.py | 6 ++---- back/fantazoo/models.py | 16 +++++++++++----- back/fantazoo/views.py | 11 ++++++++++- requirements.txt | 10 +++++++++- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/back/back/urls.py b/back/back/urls.py index 26a07b1..ace3f91 100644 --- a/back/back/urls.py +++ b/back/back/urls.py @@ -26,8 +26,6 @@ path('admin/', admin.site.urls), path('api/',include(router.urls)), path('api-auth/', include('rest_framework.urls')), - path('api/admins/',AdminAPIView.as_view()), - path('api/customers/',CustomerAPIView.as_view()), - path('api/orders/',OrderAPIView.as_view()), - path('api/order/{id}/orderitems/',OrderItemAPIView.as_view()), + + ] diff --git a/back/fantazoo/models.py b/back/fantazoo/models.py index 128862c..8f47047 100644 --- a/back/fantazoo/models.py +++ b/back/fantazoo/models.py @@ -47,10 +47,12 @@ class ShoppingCart(models.Model): product = models.ForeignKey(Animal, on_delete=models.CASCADE) product_quantity = models.IntegerField(null=False,blank=False) created_at = models.DateTimeField(auto_now_add=True) - price = models.FloatField(Animal.price) total = models.FloatField() + + def get_price(self): + return self.product.price * self.product_quantity def __str__(self): - return self.Animal.description + return self.product.description class Order(models.Model): @@ -60,14 +62,18 @@ class Order(models.Model): product_quantity = models.IntegerField() total_price = models.FloatField(null=False,blank=False) created_at = models.DateTimeField(auto_now_add=True) + + def get_order_address(self): + return self.userID.address + def __str__(self): - return self.Animal.description + return self.product.description -""" class OrderItem(models.Model): +class OrderItem(models.Model): order=models.ForeignKey(Order,on_delete=models.CASCADE) product=models.ForeignKey(Animal,on_delete=models.CASCADE) price = models.FloatField(null=False,default=0.0) quantity = models.IntegerField(null=False,default=0) def __str__(self): - return '{}{}'.format(self.order.id) """ \ No newline at end of file + return '{}{}'.format(self.order.id) \ No newline at end of file diff --git a/back/fantazoo/views.py b/back/fantazoo/views.py index bef9d15..981c42a 100644 --- a/back/fantazoo/views.py +++ b/back/fantazoo/views.py @@ -11,6 +11,7 @@ def get(self, *args,**kwargs): data = Animal.objects.all() serializer = AnimalSerializer(data, many=True) return Response(serializer.data) + class AnimalViewSet(ModelViewSet): serializer_class = AnimalSerializer def get_queryset(self): @@ -21,12 +22,20 @@ def get(self, *args,**kwargs): data = Admin.objects.all() serializer = AdminSerializer(data, many=True) return Response(serializer.data) +class AdminViewSet(ModelViewSet): + serializer_class = AdminSerializer + def get_queryset(self): + return Admin.objects.all() + class CustomerAPIView(APIView): def get(self, *args,**kwargs): data = Customer.objects.all() serializer = CustomerSerializer(data, many=True) return Response(serializer.data) - +class CustomerViewSet(ModelViewSet): + serializer_class = CustomerSerializer + def get_queryset(self): + return Customer.objects.all() class OrderAPIView(APIView): def get(self, *args,**kwargs): data = Order.objects.all() diff --git a/requirements.txt b/requirements.txt index 06fabd0..1de9e4f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,17 @@ asgiref==3.5.2 Django==4.1.3 +djangorestframework==3.14.0 djongo==1.3.6 dnspython==2.2.1 +et-xmlfile==1.1.0 +numpy==1.23.4 +openpyxl==3.0.10 +pandas==1.5.0 +pykerberos==1.2.4 pymongo==3.12.3 +python-dateutil==2.8.2 python-snappy==0.6.1 +pytz==2022.4 +six==1.16.0 sqlparse==0.2.4 tzdata==2022.6 -#winkerberos==0.9.0 From ac6abf93cbc6f59c4ca886391371a63c657e4b39 Mon Sep 17 00:00:00 2001 From: LionAB Date: Fri, 18 Nov 2022 16:59:48 +0100 Subject: [PATCH 3/6] Rajout des CORS --- back/back/settings.py | 4 ++++ back/back/urls.py | 9 ++++++++- back/fantazoo/models.py | 7 ++++++- back/fantazoo/views.py | 24 ++++++++++++++++++++++-- back/requirements.txt | 1 + docu.md | 12 ++++++++++++ 6 files changed, 53 insertions(+), 4 deletions(-) diff --git a/back/back/settings.py b/back/back/settings.py index c0818a0..ea78a6d 100644 --- a/back/back/settings.py +++ b/back/back/settings.py @@ -39,6 +39,7 @@ 'django.contrib.staticfiles', 'fantazoo.apps.FantazooConfig', 'rest_framework', + 'corsheaders', ] MIDDLEWARE = [ @@ -49,6 +50,7 @@ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'corsheaders.middleware.CorsMiddleware' ] ROOT_URLCONF = 'back.urls' @@ -128,3 +130,5 @@ # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +CORS_ORIGIN_ALLOW_ALL = True \ No newline at end of file diff --git a/back/back/urls.py b/back/back/urls.py index ace3f91..86e4d11 100644 --- a/back/back/urls.py +++ b/back/back/urls.py @@ -15,12 +15,19 @@ """ from django.contrib import admin from django.urls import path,include -from fantazoo.views import AnimalViewSet + +from fantazoo.views import AnimalViewSet,AdminViewSet,CustomerViewSet,ShoppingCartViewSet,OrderViewSet,OrderItemViewSet from fantazoo.views import AnimalAPIView,AdminAPIView,CustomerAPIView,OrderAPIView,OrderItemAPIView from rest_framework import routers router=routers.SimpleRouter() router.register('animals',AnimalViewSet,basename='animals') +router.register('admins',AdminViewSet,basename='admins') +router.register('customers',CustomerViewSet,basename='customers') +router.register('orders',OrderViewSet,basename='orders') +router.register('orderitems',OrderItemViewSet,basename='orderitems') +router.register('shoppingcarts',ShoppingCartViewSet,basename='shoppingcarts') + urlpatterns = [ path('admin/', admin.site.urls), diff --git a/back/fantazoo/models.py b/back/fantazoo/models.py index 8f47047..43141b7 100644 --- a/back/fantazoo/models.py +++ b/back/fantazoo/models.py @@ -51,13 +51,13 @@ class ShoppingCart(models.Model): def get_price(self): return self.product.price * self.product_quantity + def __str__(self): return self.product.description class Order(models.Model): userID = models.ForeignKey(Customer, on_delete=models.CASCADE) - address=models.CharField(Customer.address,max_length=50) product = models.ForeignKey(Animal, on_delete=models.CASCADE) product_quantity = models.IntegerField() total_price = models.FloatField(null=False,blank=False) @@ -66,6 +66,7 @@ class Order(models.Model): def get_order_address(self): return self.userID.address + def __str__(self): return self.product.description @@ -75,5 +76,9 @@ class OrderItem(models.Model): price = models.FloatField(null=False,default=0.0) quantity = models.IntegerField(null=False,default=0) + def get_price_item(self): + return self.product.price + + def __str__(self): return '{}{}'.format(self.order.id) \ No newline at end of file diff --git a/back/fantazoo/views.py b/back/fantazoo/views.py index 981c42a..2c64681 100644 --- a/back/fantazoo/views.py +++ b/back/fantazoo/views.py @@ -6,6 +6,7 @@ from rest_framework.viewsets import ModelViewSet # Create your views here. + class AnimalAPIView(APIView): def get(self, *args,**kwargs): data = Animal.objects.all() @@ -16,12 +17,21 @@ class AnimalViewSet(ModelViewSet): serializer_class = AnimalSerializer def get_queryset(self): return Animal.objects.all() - +class ShoppingCartAPIView(APIView): + def get(self, *args,**kwargs): + data = ShoppingCart.objects.all() + serializer = ShoppingCartSerializer(data, many=True) + return Response(serializer.data) +class ShoppingCartViewSet(ModelViewSet): + serializer_class = ShoppingCartSerializer + def get_queryset(self): + return ShoppingCart.objects.all() class AdminAPIView(APIView): def get(self, *args,**kwargs): data = Admin.objects.all() serializer = AdminSerializer(data, many=True) return Response(serializer.data) + class AdminViewSet(ModelViewSet): serializer_class = AdminSerializer def get_queryset(self): @@ -32,6 +42,8 @@ def get(self, *args,**kwargs): data = Customer.objects.all() serializer = CustomerSerializer(data, many=True) return Response(serializer.data) + + class CustomerViewSet(ModelViewSet): serializer_class = CustomerSerializer def get_queryset(self): @@ -41,6 +53,11 @@ def get(self, *args,**kwargs): data = Order.objects.all() serializer = OrderSerializer(data, many=True) return Response(serializer.data) + +class OrderViewSet(ModelViewSet): + serializer_class = OrderSerializer + def get_queryset(self): + return Order.objects.all() class OrderItemAPIView(APIView): def get(self, *args,**kwargs): @@ -48,7 +65,10 @@ def get(self, *args,**kwargs): serializer = OrderItemSerializer(data, many=True) return Response(serializer.data) - +class OrderItemViewSet(ModelViewSet): + serializer_class = OrderItemSerializer + def get_queryset(self): + return OrderItem.objects.all() """ def post(self, request): diff --git a/back/requirements.txt b/back/requirements.txt index 1de9e4f..9dbeaf6 100644 --- a/back/requirements.txt +++ b/back/requirements.txt @@ -1,5 +1,6 @@ asgiref==3.5.2 Django==4.1.3 +django-cors-headers==3.13.0 djangorestframework==3.14.0 djongo==1.3.6 dnspython==2.2.1 diff --git a/docu.md b/docu.md index e0cbbcf..797b974 100644 --- a/docu.md +++ b/docu.md @@ -1,4 +1,16 @@ Lancement de l'environnement + +Cours + + Utilisation de l’environnement virtuel et commandes associées : + 1. Création de l’environnement virtuel: py –m venv path/venv + 2. Utilisation/Activation du venv: source path/venv/Scripts/activate + 3. Installation de librairie: pip install + 4. Installation Django: pip install Django + 5. Copie des librairies dans un fichier: pip freeze> requirements.txt + 6. Installation des librairies depuis un fichier: pip install -r requirements.txt + 7. Fermeture/Désactivation du venv: deactivate + Se placer dans le répertoire du projet source path/venv/Scripts/activate \ No newline at end of file From 06179f7d0e5f024b3f35b100e45f8b08c73b503c Mon Sep 17 00:00:00 2001 From: LionAB Date: Fri, 18 Nov 2022 17:05:24 +0100 Subject: [PATCH 4/6] Rajout nom animal --- back/fantazoo/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/back/fantazoo/models.py b/back/fantazoo/models.py index 43141b7..13e0228 100644 --- a/back/fantazoo/models.py +++ b/back/fantazoo/models.py @@ -32,6 +32,7 @@ class Animal(models.Model): STATUT=[('A VENDRE','A VENDRE'),('VENDU','VENDU'),('EN STOCK','EN STOCK')] TYPE=[('REPTILE','REPTILE'),('MAMMIFERE','MAMMIFERE'),('POISSON','POISSON'),('INSECTE','INSECTE'),('ARACHNIDE','ARACHNIDE'),('ND','Non défini')] DIET=[('OMNIVORE','OMNIVORE'),('HERBIVORE','HERBIVORE'),('CARNIVORE','CARNIVORE'),('AUTRE','AUTRE'),('ND','Non défini')] + animal_name = models.CharField(max_length=50,default='ND') description = models.CharField(max_length=200) price=models.FloatField(null=False, default=0) animal_status=models.CharField(max_length=20,default='EN STOCK',choices=STATUT) From 929708a24b93992343b0c1f5a1bb0b3702c6316e Mon Sep 17 00:00:00 2001 From: LionAB Date: Fri, 2 Dec 2022 11:43:00 +0100 Subject: [PATCH 5/6] =?UTF-8?q?=C3=A7a=20fonctionne=20base?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/back/settings.py | 2 +- back/back/urls.py | 7 ++--- back/fantazoo/models.py | 26 ++++++------------ back/fantazoo/serializers.py | 11 ++------ back/fantazoo/views.py | 53 ++++++++++++++++-------------------- docu.md | 7 ++++- 6 files changed, 45 insertions(+), 61 deletions(-) diff --git a/back/back/settings.py b/back/back/settings.py index ea78a6d..0a5c933 100644 --- a/back/back/settings.py +++ b/back/back/settings.py @@ -82,7 +82,7 @@ 'ENGINE': 'djongo', # 'ENFORCE_SCHEMA': False, 'CLIENT': { - 'host': 'mongodb+srv://LionelAB:12345@cluster0.sc8k0kw.mongodb.net/?retryWrites=true&w=majority', + 'host': 'mongodb+srv://lionel:lionel@cluster0.nxldmip.mongodb.net/?retryWrites=true&w=majority', 'name': 'fantazoo', 'authMechanism': 'SCRAM-SHA-1', } diff --git a/back/back/urls.py b/back/back/urls.py index 86e4d11..83d6328 100644 --- a/back/back/urls.py +++ b/back/back/urls.py @@ -16,14 +16,13 @@ from django.contrib import admin from django.urls import path,include -from fantazoo.views import AnimalViewSet,AdminViewSet,CustomerViewSet,ShoppingCartViewSet,OrderViewSet,OrderItemViewSet -from fantazoo.views import AnimalAPIView,AdminAPIView,CustomerAPIView,OrderAPIView,OrderItemAPIView +from fantazoo.views import AnimalViewSet,ShoppingCartViewSet,OrderViewSet,OrderItemViewSet,UserViewSet +from fantazoo.views import AnimalAPIView,UserAPIView,OrderAPIView,OrderItemAPIView from rest_framework import routers router=routers.SimpleRouter() router.register('animals',AnimalViewSet,basename='animals') -router.register('admins',AdminViewSet,basename='admins') -router.register('customers',CustomerViewSet,basename='customers') +router.register('users',UserViewSet,basename='users') router.register('orders',OrderViewSet,basename='orders') router.register('orderitems',OrderItemViewSet,basename='orderitems') router.register('shoppingcarts',ShoppingCartViewSet,basename='shoppingcarts') diff --git a/back/fantazoo/models.py b/back/fantazoo/models.py index 13e0228..836d590 100644 --- a/back/fantazoo/models.py +++ b/back/fantazoo/models.py @@ -5,38 +5,28 @@ # Create your models here. class User(models.Model): - _id = models.ObjectIdField() - username = models.CharField(max_length=50) password = models.CharField(max_length=50) email = models.CharField(max_length=50) firstname = models.CharField(max_length=50) lastname = models.CharField(max_length=50) - class Meta: - abstract = True -################################################################################ - -class Customer(User): phone_number = models.CharField(max_length=10) address = models.CharField(max_length=50) + is_admin = models.BooleanField(default=False) + + -################################################################################ - -class Admin(User): - """ def """ - -################################################################################ class Animal(models.Model): + SEXE =[('M','Mâle'),('F','Femelle'),('ND','Non défini')] - SPECIES=[('Phoenix','Phoenix'),('Dragon','Dragon'),('Unicorn','Unicorn'),('Griffin','Griffin'),('Hippogriff','Hippogriff'),('Pegasus','Pegasus'),('Chimera','Chimera'),('Basilisk','Basilisk'),('Gorgon','Gorgon'),('ND','Non défini')] STATUT=[('A VENDRE','A VENDRE'),('VENDU','VENDU'),('EN STOCK','EN STOCK')] TYPE=[('REPTILE','REPTILE'),('MAMMIFERE','MAMMIFERE'),('POISSON','POISSON'),('INSECTE','INSECTE'),('ARACHNIDE','ARACHNIDE'),('ND','Non défini')] - DIET=[('OMNIVORE','OMNIVORE'),('HERBIVORE','HERBIVORE'),('CARNIVORE','CARNIVORE'),('AUTRE','AUTRE'),('ND','Non défini')] + DIET=[('OMNIVORE','OMNIVORE'),('HERBIVORE','HERBIVORE'),('CARNIVORE','CARNIVORE'),('ND','Non défini')] animal_name = models.CharField(max_length=50,default='ND') description = models.CharField(max_length=200) price=models.FloatField(null=False, default=0) animal_status=models.CharField(max_length=20,default='EN STOCK',choices=STATUT) - species=models.CharField(max_length=20,choices=SPECIES,default='ND') + species=models.CharField(max_length=200) sexe=models.CharField(max_length=20,choices=SEXE,default='ND') age = models.IntegerField() animal_type = models.CharField(max_length=50,choices=TYPE,default='ND') @@ -44,7 +34,7 @@ class Animal(models.Model): diet = models.CharField(max_length=200,choices=DIET,default='ND') class ShoppingCart(models.Model): - userID = models.ForeignKey(Customer, on_delete=models.CASCADE) + userID = models.ForeignKey(User, on_delete=models.CASCADE) product = models.ForeignKey(Animal, on_delete=models.CASCADE) product_quantity = models.IntegerField(null=False,blank=False) created_at = models.DateTimeField(auto_now_add=True) @@ -58,7 +48,7 @@ def __str__(self): class Order(models.Model): - userID = models.ForeignKey(Customer, on_delete=models.CASCADE) + userID = models.ForeignKey(User, on_delete=models.CASCADE) product = models.ForeignKey(Animal, on_delete=models.CASCADE) product_quantity = models.IntegerField() total_price = models.FloatField(null=False,blank=False) diff --git a/back/fantazoo/serializers.py b/back/fantazoo/serializers.py index 1423058..3a6b3d5 100644 --- a/back/fantazoo/serializers.py +++ b/back/fantazoo/serializers.py @@ -1,17 +1,12 @@ from rest_framework.serializers import ModelSerializer -from .models import Animal,Admin,Customer,ShoppingCart,Order,OrderItem +from .models import Animal,User,ShoppingCart,Order,OrderItem -class AdminSerializer(ModelSerializer): +class UserSerializer(ModelSerializer): class Meta: - model = Admin + model = User fields = '__all__' -class CustomerSerializer(ModelSerializer): - class Meta: - model = Customer - fields = '__all__' - class OrderItemSerializer(ModelSerializer): class Meta: model = OrderItem diff --git a/back/fantazoo/views.py b/back/fantazoo/views.py index 2c64681..8d3fadf 100644 --- a/back/fantazoo/views.py +++ b/back/fantazoo/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render -from .models import Animal,Admin,Customer,ShoppingCart,Order,OrderItem -from .serializers import AnimalSerializer,AdminSerializer,CustomerSerializer,ShoppingCartSerializer,OrderSerializer,OrderItemSerializer +from .models import Animal,User,ShoppingCart,Order,OrderItem +from .serializers import AnimalSerializer,UserSerializer,ShoppingCartSerializer,OrderSerializer,OrderItemSerializer from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet @@ -17,6 +17,22 @@ class AnimalViewSet(ModelViewSet): serializer_class = AnimalSerializer def get_queryset(self): return Animal.objects.all() +######## SHOPPING CART ######## + + ###AJOUTER UN PRODUIT AU PANIER##### + +class AddToCartAPIView(APIView): + def post(self, request, *args, **kwargs): + data = request.data + serializer = ShoppingCartSerializer(data=data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data) + return Response(serializer.errors) + + ###AFFICHER LE PANIER##### + + class ShoppingCartAPIView(APIView): def get(self, *args,**kwargs): data = ShoppingCart.objects.all() @@ -26,28 +42,17 @@ class ShoppingCartViewSet(ModelViewSet): serializer_class = ShoppingCartSerializer def get_queryset(self): return ShoppingCart.objects.all() -class AdminAPIView(APIView): +class UserAPIView(APIView): def get(self, *args,**kwargs): - data = Admin.objects.all() - serializer = AdminSerializer(data, many=True) + data = User.objects.all() + serializer = UserSerializer(data, many=True) return Response(serializer.data) -class AdminViewSet(ModelViewSet): - serializer_class = AdminSerializer +class UserViewSet(ModelViewSet): + serializer_class = UserSerializer def get_queryset(self): - return Admin.objects.all() + return User.objects.all() -class CustomerAPIView(APIView): - def get(self, *args,**kwargs): - data = Customer.objects.all() - serializer = CustomerSerializer(data, many=True) - return Response(serializer.data) - - -class CustomerViewSet(ModelViewSet): - serializer_class = CustomerSerializer - def get_queryset(self): - return Customer.objects.all() class OrderAPIView(APIView): def get(self, *args,**kwargs): data = Order.objects.all() @@ -69,13 +74,3 @@ class OrderItemViewSet(ModelViewSet): serializer_class = OrderItemSerializer def get_queryset(self): return OrderItem.objects.all() - -""" - def post(self, request): - serializer = AnimalSerializer(data=request.data) - if serializer.is_valid(): - serializer.save() - return Response(serializer.data, status=status.HTTP_201_CREATED) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) -# Create your views here. - """ \ No newline at end of file diff --git a/docu.md b/docu.md index 797b974..2596230 100644 --- a/docu.md +++ b/docu.md @@ -13,4 +13,9 @@ Cours 7. Fermeture/Désactivation du venv: deactivate Se placer dans le répertoire du projet -source path/venv/Scripts/activate \ No newline at end of file +source path/venv/Scripts/activate + +python3 manage.py makemigrations fantazoo + python3 manage.py migrate + + python3 manage.py runserver fantazoo \ No newline at end of file From 0ed02f106bdb634858aaa292ebec23b556e833ce Mon Sep 17 00:00:00 2001 From: LionAB Date: Fri, 2 Dec 2022 11:57:19 +0100 Subject: [PATCH 6/6] gitignore --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 68bc17f..4309b3e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,10 +2,10 @@ __pycache__/ *.py[cod] *$py.class - +back/back/__pycache__/ # C extensions *.so - + # Distribution / packaging .Python build/