forked from CGM_Public/pretix_original
Include "Cross-selling condition products" option when cloning category (#4534)
* Include "Cross-selling condition products" option when cloning category * Add test case * Remove print
This commit is contained in:
@@ -302,6 +302,8 @@ class CategoryCreate(EventPermissionRequiredMixin, CreateView):
|
||||
i = modelcopy(self.copy_from)
|
||||
i.pk = None
|
||||
kwargs['instance'] = i
|
||||
kwargs.setdefault('initial', {})
|
||||
kwargs['initial']['cross_selling_match_products'] = [str(i.pk) for i in self.copy_from.cross_selling_match_products.all()]
|
||||
else:
|
||||
kwargs['instance'] = ItemCategory(event=self.request.event)
|
||||
return kwargs
|
||||
|
||||
@@ -86,6 +86,23 @@ class CategoriesTest(ItemFormTest):
|
||||
with scopes_disabled():
|
||||
assert str(ItemCategory.objects.get(id=c.id).name) == 'T-Shirts'
|
||||
|
||||
def test_copy(self):
|
||||
i2 = Item.objects.create(event=self.event1, name="Non-Standard", default_price=10, position=2)
|
||||
c = ItemCategory.objects.create(event=self.event1, name="Cross-Selling", cross_selling_mode='only', cross_selling_condition='products')
|
||||
c.cross_selling_match_products.add(self.item1)
|
||||
c.cross_selling_match_products.add(i2)
|
||||
|
||||
doc = self.get_doc('/control/event/%s/%s/categories/add?copy_from=%d' % (self.orga1.slug, self.event1.slug, c.pk))
|
||||
form_data = extract_form_fields(doc.select('.container-fluid form')[0])
|
||||
assert form_data['name_0'] == 'Cross-Selling'
|
||||
assert form_data['category_type'] == 'only'
|
||||
assert form_data['cross_selling_condition'] == 'products'
|
||||
assert form_data['cross_selling_match_products'] == ['1', '2']
|
||||
form_data['name_0'] = 'Recommendations'
|
||||
doc = self.post_doc('/control/event/%s/%s/categories/add' % (self.orga1.slug, self.event1.slug), form_data)
|
||||
assert doc.select(".alert-success")
|
||||
self.assertIn("Recommendations", doc.select("#page-wrapper table")[0].text)
|
||||
|
||||
def test_sort(self):
|
||||
with scopes_disabled():
|
||||
c1 = ItemCategory.objects.create(event=self.event1, name="Entry tickets", position=0)
|
||||
|
||||
Reference in New Issue
Block a user