diff --git a/kfet/views.py b/kfet/views.py index 94e89882..fad87333 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -548,11 +548,14 @@ class ArticleCreate(SuccessMessageMixin, CreateView): form.add_error(None, 'Permission refusée') return self.form_invalid(form) + # Save ici pour save le manytomany suppliers article = form.save() + # Save des suppliers déjà existant for supplier in form.cleaned_data['suppliers']: SupplierArticle.objects.create( article = article, supplier = supplier) + # Nouveau supplier supplier_new = form.cleaned_data['supplier_new'].strip() if supplier_new: supplier, created = Supplier.objects.get_or_create( @@ -585,6 +588,30 @@ class ArticleUpdate(SuccessMessageMixin, UpdateView): if not self.request.user.has_perm('kfet.change_article'): form.add_error(None, 'Permission refusée') return self.form_invalid(form) + + # Save ici pour save le manytomany suppliers + article = form.save() + # Save des suppliers déjà existant + for supplier in form.cleaned_data['suppliers']: + if supplier not in article.suppliers.all(): + SupplierArticle.objects.create( + article = article, supplier = supplier) + + # On vire les suppliers désélectionnés + for supplier in article.suppliers.all(): + if supplier not in form.cleaned_data['suppliers']: + SupplierArticle.objects.filter( + article = article, supplier = supplier).delete() + + # Nouveau supplier + supplier_new = form.cleaned_data['supplier_new'].strip() + if supplier_new: + supplier, created = Supplier.objects.get_or_create( + name=supplier_new) + if created: + SupplierArticle.objects.create( + article = article, supplier = supplier) + # Updating return super(ArticleUpdate, self).form_valid(form)