40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
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
|
|
|
|
|
|
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, img=None):
|
|
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
|
|
}
|
|
|
|
# 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"})
|