| 
						
						
							
								
							
						
						
					 | 
					@ -150,11 +150,27 @@ class WebPushService(): | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                vapid_private_key=vapid_key.private_key, | 
					 | 
					 | 
					                vapid_private_key=vapid_key.private_key, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                vapid_claims={"sub": CONTACT_EMAIL} | 
					 | 
					 | 
					                vapid_claims={"sub": CONTACT_EMAIL} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            ) | 
					 | 
					 | 
					            ) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            time.sleep(1) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            return True | 
					 | 
					 | 
					            return True | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					         | 
					 | 
					 | 
					         | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        except WebPushException as ex: | 
					 | 
					 | 
					        except WebPushException as ex: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            print(f"Failed to send push notification for {subscription_info['endpoint']} -- {ex}") | 
					 | 
					 | 
					            now = datetime.datetime.now().isoformat() | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					            return False | 
					 | 
					 | 
					            endpoint = subscription_info['endpoint'] | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            print(f"{now}: Failed to send push notification for {endpoint} -- {ex}") | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            unsubscribed_msg = '410 Gone' | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            if unsubscribed_msg in ex.args[0]: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                subscription = Subscription.query.filter_by(endpoint=endpoint).first() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                # Delete the subscription if found | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                if subscription: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    db.session.delete(subscription) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    db.session.commit() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    print(f"Committed delete of {subscription_info}") | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                else: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    print(f"Could not find subscription at: {endpoint}") | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            else: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                print("Wrong error.", ex.args[0]) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    def _send_daily_notifications(self) -> None: | 
					 | 
					 | 
					    def _send_daily_notifications(self) -> None: | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |