def updatePanier(request): #On récupère la commande existante associé a la loge connecté, # par mesure de sécurité, on n'execute pas de requete en base de donnée si l'utilisateur connecté n'a pas de loge associé try: if request.user.loge: commandeExistante = Commande.objects.exclude(validee=True).exclude(servie=True).filter(loge=request.user.loge).first() except ObjectDoesNotExist: pass if request.method == "POST": if request.POST.get('addPanier'): # Si la soumission de formulaire est un ajout au panier idProduit = int(request.POST.get('leProduit', False)) # on récupère le produit concerné quantite = int(request.POST.get('quantite', 1)) # ainsi que la quantité produit_existant = False commandeExistante = Commande.objects.exclude(validee=True).exclude(servie=True).filter(loge=request.user.loge).first() # si il existe une commande pour cette loge, on verifie que le produit ajouté n'est pas déjà présent dans la commande # si tel est le cas, on se contente de mettre a jour la quantité if commandeExistante: for ligneCom in commandeExistante.lignecom_set.all(): if ligneCom.produit.pk == idProduit: ligneCom.quantite += quantite ligneCom.save(loge=request.user.loge) produit_existant = True if not produit_existant: ligneCom = LigneCom(produit=Produit.objects.get(pk=idProduit), quantite=quantite) ligneCom.save(loge=request.user.loge) else: # si le formulaire est une validation, on valide la commande existante et la sauvegarde if request.POST.get('validerCommande'): commandeExistante = Commande.objects.exclude(validee=True).exclude(servie=True).filter(loge=request.user.loge).first() commandeExistante.validee = True commandeExistante.save() return commandeExistante
def test_commission_serveur(self): c = Commande(loge=self.l, serveur=self.s) c.save() lc = LigneCom(produit=self.p, commande=c, quantite=10) lc.save(self.l) lc = LigneCom(produit=self.p2, commande=c, quantite=10) lc.save(self.l) self.assertEqual(Commande.objects.get(pk=c.pk).prixTTC, 300) c = Commande.objects.get(pk=c.pk) c.validee = True c.servie = True c.save() self.assertEqual(Commande.objects.get(pk=c.pk).prixTTC, 300) self.assertEqual(self.s.get_commissions(), 30)
def test_save_add_prix(self): c = Commande(loge=self.l) c.save() lc = LigneCom(produit=self.p, commande=c, quantite=4) lc.save() lc = LigneCom(produit=self.p2, commande=c, quantite=2) lc.save() self.assertEqual(Commande.objects.get(pk=c.pk).prixTTC, 16) for ligneCom in c.lignecom_set.all(): if ligneCom.produit.pk == 1: ligneCom.quantite = 2 print(ligneCom.produit.nom) print(ligneCom.quantite) print(ligneCom.produit.pk) print(self.p.pk)