From 2fef743c9744c9ae7a29233555bbcd1a2f69a967 Mon Sep 17 00:00:00 2001 From: jeriox Date: Mon, 20 Apr 2026 22:48:55 +0200 Subject: [PATCH 1/3] allow users to customize confirmed participations --- src/ephios/core/signup/flow/participant_validation.py | 5 +---- src/ephios/core/signup/forms.py | 8 +++++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/ephios/core/signup/flow/participant_validation.py b/src/ephios/core/signup/flow/participant_validation.py index d104dcc04..c2f249220 100644 --- a/src/ephios/core/signup/flow/participant_validation.py +++ b/src/ephios/core/signup/flow/participant_validation.py @@ -197,10 +197,7 @@ def can_customize_signup(self): self.participation is not None and self.participation.is_in_positive_state() ) - if positive_state: - # If in a positive state, check that you can decline and then sign up again. - return self.can_decline() and not self.get_signup_errors() - return not self.get_signup_errors() + return positive_state or not self.get_signup_errors() class BasicSignupActionValidator(BaseSignupActionValidator): diff --git a/src/ephios/core/signup/forms.py b/src/ephios/core/signup/forms.py index dfa54ada5..a342cdd26 100644 --- a/src/ephios/core/signup/forms.py +++ b/src/ephios/core/signup/forms.py @@ -182,9 +182,11 @@ def __init__(self, *args, **kwargs): FormActions(*self._get_buttons()), ) - if not getattr( - self.shift.signup_flow.configuration, "user_can_customize_signup_times", False - ): + if ( + not getattr( + self.shift.signup_flow.configuration, "user_can_customize_signup_times", False + ) + ) or (self.instance and self.instance.state == AbstractParticipation.States.CONFIRMED): self.fields["individual_start_time"].disabled = True self.fields["individual_end_time"].disabled = True From ce1e88a1ae72fd2a0d32096e6c8578ce69e41aee Mon Sep 17 00:00:00 2001 From: jeriox Date: Mon, 20 Apr 2026 23:18:31 +0200 Subject: [PATCH 2/3] allow users to customize confirmed participations --- src/ephios/core/signup/forms.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ephios/core/signup/forms.py b/src/ephios/core/signup/forms.py index a342cdd26..5511261bc 100644 --- a/src/ephios/core/signup/forms.py +++ b/src/ephios/core/signup/forms.py @@ -186,7 +186,10 @@ def __init__(self, *args, **kwargs): not getattr( self.shift.signup_flow.configuration, "user_can_customize_signup_times", False ) - ) or (self.instance and self.instance.state == AbstractParticipation.States.CONFIRMED): + ) or ( + self.instance + and self.shift.signup_flow.get_validator(self.instance.participant).get_signup_errors() + ): self.fields["individual_start_time"].disabled = True self.fields["individual_end_time"].disabled = True From 63d4db5188df2ba48d53b3a1ec9a22ff635786b6 Mon Sep 17 00:00:00 2001 From: jeriox Date: Mon, 20 Apr 2026 23:48:56 +0200 Subject: [PATCH 3/3] allow users to customize confirmed participations --- src/ephios/core/signup/forms.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/ephios/core/signup/forms.py b/src/ephios/core/signup/forms.py index 5511261bc..baead5a8d 100644 --- a/src/ephios/core/signup/forms.py +++ b/src/ephios/core/signup/forms.py @@ -182,14 +182,19 @@ def __init__(self, *args, **kwargs): FormActions(*self._get_buttons()), ) + validator = self.instance and self.shift.signup_flow.get_validator( + self.instance.participant + ) + can_customize_times = ( + validator + and (not self.instance.is_in_positive_state() or validator.can_decline()) + and not validator.get_signup_errors() + ) if ( not getattr( self.shift.signup_flow.configuration, "user_can_customize_signup_times", False ) - ) or ( - self.instance - and self.shift.signup_flow.get_validator(self.instance.participant).get_signup_errors() - ): + ) or not can_customize_times: self.fields["individual_start_time"].disabled = True self.fields["individual_end_time"].disabled = True