Visibly de-highlight disabled products

This commit is contained in:
Raphael Michel
2021-05-19 09:53:25 +02:00
parent f20ac78586
commit ac4e4a2578
8 changed files with 41 additions and 16 deletions

View File

@@ -42,8 +42,11 @@ from django.core.files import File
from django.core.files.uploadedfile import UploadedFile
from django.forms.utils import from_current_timezone
from django.urls import reverse
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _
from django_scopes.forms import SafeModelMultipleChoiceField
from ...base.forms import I18nModelForm, SecretKeySettingsField
@@ -411,3 +414,8 @@ class SMTPSettingsMixin(forms.Form):
if data.get('smtp_use_tls') and data.get('smtp_use_ssl'):
raise ValidationError(_('You can activate either SSL or STARTTLS security, but not both at the same time.'))
return data
class ItemMultipleChoiceField(SafeModelMultipleChoiceField):
def label_from_instance(self, obj):
return str(obj) if obj.active else mark_safe(f'<strike class="text-muted">{escape(obj)}</strike>')

View File

@@ -31,6 +31,7 @@ from django_scopes.forms import (
from pretix.base.channels import get_all_sales_channels
from pretix.base.models.checkin import CheckinList
from pretix.control.forms import ItemMultipleChoiceField
from pretix.control.forms.widgets import Select2
@@ -120,7 +121,7 @@ class CheckinListForm(forms.ModelForm):
'exit_all_at': NextTimeInput(attrs={'class': 'timepickerfield'}),
}
field_classes = {
'limit_products': SafeModelMultipleChoiceField,
'limit_products': ItemMultipleChoiceField,
'gates': SafeModelMultipleChoiceField,
'subevent': SafeModelChoiceField,
'exit_all_at': NextTimeField,
@@ -164,7 +165,7 @@ class SimpleCheckinListForm(forms.ModelForm):
}),
}
field_classes = {
'limit_products': SafeModelMultipleChoiceField,
'limit_products': ItemMultipleChoiceField,
'subevent': SafeModelChoiceField,
'gates': SafeModelMultipleChoiceField,
}

View File

@@ -41,6 +41,8 @@ from django.core.exceptions import ValidationError
from django.db.models import Max
from django.forms.formsets import DELETION_FIELD_NAME
from django.urls import reverse
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.utils.translation import (
gettext as __, gettext_lazy as _, pgettext_lazy,
)
@@ -57,7 +59,9 @@ from pretix.base.models import (
)
from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
from pretix.base.signals import item_copy_data
from pretix.control.forms import SplitDateTimeField, SplitDateTimePickerWidget
from pretix.control.forms import (
ItemMultipleChoiceField, SplitDateTimeField, SplitDateTimePickerWidget,
)
from pretix.control.forms.widgets import Select2
from pretix.helpers.models import modelcopy
from pretix.helpers.money import change_decimal_field
@@ -168,7 +172,7 @@ class QuestionForm(I18nModelForm):
field_classes = {
'valid_datetime_min': SplitDateTimeField,
'valid_datetime_max': SplitDateTimeField,
'items': SafeModelMultipleChoiceField,
'items': ItemMultipleChoiceField,
'dependency_question': SafeModelChoiceField,
}
@@ -200,9 +204,12 @@ class QuotaForm(I18nModelForm):
for item in items:
if len(item.variations.all()) > 0:
for v in item.variations.all():
choices.append(('{}-{}'.format(item.pk, v.pk), '{} {}'.format(item, v.value)))
choices.append((
'{}-{}'.format(item.pk, v.pk),
'{} {}'.format(item, v.value) if item.active else mark_safe(f'<strike class="text-muted">{escape(item)} {escape(v.value)}</strike>')
))
else:
choices.append(('{}'.format(item.pk), str(item)))
choices.append(('{}'.format(item.pk), str(item) if item.active else mark_safe(f'<strike class="text-muted">{escape(item)}</strike>')))
self.fields['itemvars'] = forms.MultipleChoiceField(
label=_('Products'),