Web checkin: Render special cases of pending state in search (Z#23154934) (#4193)

This commit is contained in:
Raphael Michel
2024-06-04 21:53:30 +02:00
committed by GitHub
parent 7365f165ad
commit fe54a42fc7
6 changed files with 18 additions and 3 deletions

View File

@@ -564,6 +564,8 @@ class CheckinListOrderPositionSerializer(OrderPositionSerializer):
attendee_name = AttendeeNameField(source='*')
attendee_name_parts = AttendeeNamePartsField(source='*')
order__status = serializers.SlugRelatedField(read_only=True, slug_field='status', source='order')
order__valid_if_pending = serializers.SlugRelatedField(read_only=True, slug_field='valid_if_pending', source='order')
order__require_approval = serializers.SlugRelatedField(read_only=True, slug_field='require_approval', source='order')
class Meta:
model = OrderPosition
@@ -571,7 +573,8 @@ class CheckinListOrderPositionSerializer(OrderPositionSerializer):
'company', 'street', 'zipcode', 'city', 'country', 'state',
'attendee_email', 'voucher', 'tax_rate', 'tax_value', 'secret', 'addon_to', 'subevent', 'checkins',
'downloads', 'answers', 'tax_rule', 'pseudonymization_id', 'pdf_data', 'seat', 'require_attention',
'order__status', 'valid_from', 'valid_until', 'blocked')
'order__status', 'order__valid_if_pending', 'order__require_approval', 'valid_from', 'valid_until',
'blocked')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

View File

@@ -21,6 +21,8 @@ export default {
computed: {
status() {
if (this.position.checkins.length) return 'redeemed';
if (this.position.order__status === 'n' && this.position.order__valid_if_pending) return 'pending_valid';
if (this.position.order__status === 'n' && this.position.order__require_approval) return 'require_approval';
return this.position.order__status
},
itemvar() {

View File

@@ -43,6 +43,8 @@ window.vapp = new Vue({
'status.n': gettext('Unpaid'),
'status.c': gettext('Canceled'),
'status.e': gettext('Canceled'),
'status.pending_valid': gettext('Confirmed'),
'status.require_approval': gettext('Approval pending'),
'status.redeemed': gettext('Redeemed'),
'modal.cancel': gettext('Cancel'),
'modal.continue': gettext('Continue'),

View File

@@ -74,10 +74,10 @@ a.searchresult {
align-items: center;
font-size: 140%;
&.status-p {
&.status-p, &.status-pending_valid {
background: $brand-success;
}
&.status-c, &.status-e, &.status-n {
&.status-c, &.status-e, &.status-n, &.status-require_approval {
background: $brand-danger;
}
&.status-redeemed {

View File

@@ -105,6 +105,8 @@ TEST_ORDERPOSITION1_RES = {
"id": 1,
"require_attention": False,
"order__status": "p",
"order__require_approval": False,
"order__valid_if_pending": False,
"order": "FOO",
"positionid": 1,
"item": 1,
@@ -140,6 +142,8 @@ TEST_ORDERPOSITION2_RES = {
"id": 2,
"require_attention": False,
"order__status": "p",
"order__require_approval": False,
"order__valid_if_pending": False,
"order": "FOO",
"positionid": 2,
"item": 1,
@@ -175,6 +179,8 @@ TEST_ORDERPOSITION3_RES = {
"id": 3,
"require_attention": False,
"order__status": "p",
"order__require_approval": False,
"order__valid_if_pending": False,
"order": "FOO",
"positionid": 3,
"item": 1,

View File

@@ -144,6 +144,8 @@ TEST_ORDERPOSITION1_RES = {
"id": 1,
"require_attention": False,
"order__status": "p",
"order__require_approval": False,
"order__valid_if_pending": False,
"order": "FOO",
"positionid": 1,
"item": 1,