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..baead5a8d 100644 --- a/src/ephios/core/signup/forms.py +++ b/src/ephios/core/signup/forms.py @@ -182,9 +182,19 @@ def __init__(self, *args, **kwargs): FormActions(*self._get_buttons()), ) - if not getattr( - self.shift.signup_flow.configuration, "user_can_customize_signup_times", False - ): + 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 not can_customize_times: self.fields["individual_start_time"].disabled = True self.fields["individual_end_time"].disabled = True