Allow same datafields on product if different sales channel selected

This commit is contained in:
Mira Weller
2026-09-30 21:03:28 +02:00
parent 7bc2eb04cd
commit 8764ad5059
2 changed files with 11 additions and 5 deletions
+4
View File
@@ -1429,6 +1429,10 @@ class Event(EventMixin, LoggedModel):
return issues
@property
def sales_channels(self):
return self.organizer.sales_channels if self.all_sales_channels else self.limit_sales_channels
def get_users_with_any_permission(self):
"""
Returns a queryset of users who have any permission to this event.
+7 -5
View File
@@ -2056,16 +2056,18 @@ class Questionnaire(LoggedModel):
def check_constraints(event):
errors = set()
all_questionnaires = Questionnaire.objects.filter(event=event).prefetch_related('children', 'items')
for (type, item_id, sdf, udf), fields in groupby(sorted(
(q.type, item.id, c.system_datafield or '', c.user_datafield_id or 0, q, item)
all_sales_channels = event.sales_channels.all()
for (sales_channel, type, item_id, sdf, udf), fields in groupby(sorted(
(sales_channel, q.type, item.id, c.system_datafield or '', c.user_datafield_id or 0, q, item)
for q in all_questionnaires
for sales_channel in (q.limit_sales_channels if not q.all_sales_channels else all_sales_channels).values_list('pk', flat=True)
for item in q.items.all()
for c in q.children.all()
), key=lambda d: (d[0], d[1], d[2], d[3])):
), key=lambda d: (d[0], d[1], d[2], d[3], d[4])):
fields = list(fields)
if len(fields) > 1:
type, item_id, sdf, udf, q, item = fields[0]
questionnaires = set(q for type,item,sdf,udf,q,item in fields)
sales_channel, type, item_id, sdf, udf, q, item = fields[0]
questionnaires = set(q for sc,type,item,sdf,udf,q,item in fields)
df_label = _('System data field') + f' "{sdf}"' if sdf else _('User-defined data field') + f' "{str(udf)}"'
if len(questionnaires) == 1:
errors.add(_('{datafield} added twice to questionnaire "{questionnaire}"').format(