Exemple #1
0
    def save(self):
        parent_product = self.parent_product
        current_products = set(parent_product.get_package_child_to_quantity_map())
        selected_products, removed_products, selected_quantities = self.get_selected_and_removed()

        with atomic():
            try:
                clear_existing_package(parent_product)
                parent_product.make_package(package_def=selected_quantities)
            except ImpossibleProductModeException as ipme:
                six.raise_from(
                    Problem(
                        _("Unable to make package %(product)s: %(error)s") %
                        {"product": parent_product, "error": ipme}
                    ), ipme
                )

        products_to_add = selected_products - current_products
        products_to_remove = current_products & removed_products

        message_parts = []
        if products_to_add:
            message_parts.append(_("New: %d") % len(products_to_add))
        if products_to_remove:
            message_parts.append(_("Removed: %d") % len(products_to_remove))
        if message_parts and self.request:
            messages.success(self.request, ", ".join(message_parts))
Exemple #2
0
 def dispatch_command(self, request, command):
     product = self.object
     if command == "clear_package":
         clear_existing_package(product)
         messages.success(self.request, _("Package cleared."))
     else:
         raise Problem("Unknown command: %s" % command)
     return HttpResponseRedirect(self.get_success_url())
Exemple #3
0
 def dispatch_command(self, request, command):
     product = self.object
     if command == "clear_package":
         clear_existing_package(product)
         messages.success(self.request, _("Package cleared."))
     else:
         raise Problem("Unknown command: %s" % command)
     return HttpResponseRedirect(self.get_success_url())
def test_package_child_formset():
    FormSet = formset_factory(PackageChildForm, PackageChildFormSet, extra=5, can_delete=True)
    parent = create_product(printable_gibberish())
    child = create_product(printable_gibberish())

    # No products in the package
    formset = FormSet(parent_product=parent)
    assert formset.initial_form_count() == 0 # No children yet

    assert not parent.get_all_package_children()

    data = dict(get_form_data(formset, True), **{"form-0-child": child.pk, "form-0-quantity": 2})
    formset = FormSet(parent_product=parent, data=data)
    formset.save()
    assert parent.get_all_package_children()

    clear_existing_package(parent)
    assert not parent.get_all_package_children()
def test_package_child_formset():
    FormSet = formset_factory(PackageChildForm,
                              PackageChildFormSet,
                              extra=5,
                              can_delete=True)
    parent = create_product(printable_gibberish())
    child = create_product(printable_gibberish())

    # No products in the package
    formset = FormSet(parent_product=parent)
    assert formset.initial_form_count() == 0  # No children yet

    assert not parent.get_all_package_children()

    data = dict(get_form_data(formset, True), **{
        "form-0-child": child.pk,
        "form-0-quantity": 2
    })
    formset = FormSet(parent_product=parent, data=data)
    formset.save()
    assert parent.get_all_package_children()

    clear_existing_package(parent)
    assert not parent.get_all_package_children()