diff --git a/gui/__main__.py b/gui/__main__.py index 6a0b418..4f71c4e 100755 --- a/gui/__main__.py +++ b/gui/__main__.py @@ -526,8 +526,8 @@ class CustomWindow(QMainWindow): ticket_observer.subscribe('ticket_ready', lambda event: self.update_status('Ticket ready.')) ticket_observer.subscribe('used', lambda event: self.update_status('Ticket used.')) ticket_observer.subscribe('connection_error', lambda event: self.update_status('Ticket server connection error.')) - ticket_observer.subscribe('failed_output', lambda event: self.update_status(f'Ticket server error: {event.subject if event.subject else ""}')) - ticket_observer.subscribe('failed_input', lambda event: self.update_status(f'Invalid ticket input: {event.subject if event.subject else ""}')) + ticket_observer.subscribe('failed_output', lambda event: self.update_status(f'{event.subject if event.subject else ""}')) + ticket_observer.subscribe('failed_input', lambda event: self.update_status(f'{event.subject if event.subject else ""}')) ticket_observer.subscribe('unknown_error', lambda event: self.update_status('Unknown ticket error.')) ticket_observer.subscribe('error', lambda event: self.update_status(f'Ticket error: {event.subject if event.subject else ""}')) @@ -1531,11 +1531,12 @@ class Worker(QObject): return self.profile_data['billing_code'] = ticket_billing_code elif 'billing_code' not in self.profile_data and self.profile is not None: - ticket_billing_code = self._maybe_auto_use_ticket() - if ticket_billing_code is None and self._ticket_error_emitted: - return - if ticket_billing_code: - self.profile_data['billing_code'] = ticket_billing_code + if not self._profile_has_valid_subscription(): + ticket_billing_code = self._maybe_auto_use_ticket() + if ticket_billing_code is None and self._ticket_error_emitted: + return + if ticket_billing_code: + self.profile_data['billing_code'] = ticket_billing_code if 'billing_code' in self.profile_data: subscription = SubscriptionController.get( @@ -1631,6 +1632,20 @@ class Worker(QObject): return candidates + def _profile_has_valid_subscription(self): + try: + sub = getattr(self.profile, 'subscription', None) + if not sub: + return False + expires_at = getattr(sub, 'expires_at', None) + if not expires_at: + return False + if expires_at.tzinfo is None: + expires_at = expires_at.replace(tzinfo=timezone.utc) + return expires_at > datetime.now(timezone.utc) + except Exception: + return False + def _maybe_auto_use_ticket(self): try: which_ticket, error_msg = do_we_use_a_random_ticket(ticket_observer)