def broadcast(cls, client_types, title, message, url=None, app_version=None): from models.notifications.broadcast import BroadcastNotification notification = BroadcastNotification(title, message, url, app_version) # Send to FCM clients fcm_client_types = [ct for ct in client_types if ct in ClientType.FCM_CLIENTS] if fcm_client_types: clients = MobileClient.query(MobileClient.client_type.IN(fcm_client_types)).fetch() if clients: cls._defer_fcm(clients, notification) # Send to webhooks if ClientType.WEBHOOK in client_types: clients = MobileClient.query(MobileClient.client_type == ClientType.WEBHOOK).fetch() if clients: cls._defer_webhook(clients, notification) if ClientType.OS_ANDROID in client_types: clients = MobileClient.query(MobileClient.client_type == ClientType.OS_ANDROID).fetch() from helpers.push_helper import PushHelper keys = PushHelper.get_client_ids_for_clients(clients) from notifications.broadcast import BroadcastNotification notification = BroadcastNotification(title, message, url, app_version) notification.send(keys)