from django.http.response import JsonResponse, HttpResponse from django.views.decorators.http import require_GET, require_POST from django.contrib.auth.models import User from django.views.decorators.csrf import csrf_exempt from webpush import send_user_notification import json from django.shortcuts import render, get_object_or_404 from django.conf import settings from django.utils.translation import gettext as _ from SubscribesApp.funcs import check_option_in_cur_user_subscribe def get_key_Dict(): webpush_settings = getattr(settings, 'WEBPUSH_SETTINGS', {}) vapid_key = webpush_settings.get('VAPID_PUBLIC_KEY') Dict = { 'vapid_key': vapid_key } return Dict def send_push(user, title, text, url=None, button_name=None, img=None): if not check_option_in_cur_user_subscribe(user, 'push уведомления'): return False try: # body = request.body # data = json.loads(body) # # if 'head' not in data or 'body' not in data or 'id' not in data: # return JsonResponse(status=400, data={"message": "Invalid data format"}) # # user_id = data['id'] # user = get_object_or_404(User, pk=user_id) Dict = { 'head': title, 'body': text, } if url: Dict['url'] = url if button_name: Dict['button_name'] = button_name else: Dict['button_name'] = _('Перейти'), if img: Dict['img'] = img # payload = {'head': data['head'], 'body': data['body']} send_user_notification(user=user, payload=Dict, ttl=1000) return JsonResponse(status=200, data={"message": "Web push successful"}) except TypeError: return JsonResponse(status=500, data={"message": "An error occurred"})