Files
edx-platform/lms/djangoapps/mobile_api/notifications/views.py
Іван Нєдєльніцев 13e3024ae3 style: [FC-0047] fix code style issues
2024-09-06 17:40:26 +03:00

54 lines
2.1 KiB
Python

"""
This module contains the view for registering a device for push notifications.
"""
from django.conf import settings
from rest_framework import status
from rest_framework.response import Response
from edx_ace.push_notifications.views import GCMDeviceViewSet as GCMDeviceViewSetBase
from ..decorators import mobile_view
@mobile_view()
class GCMDeviceViewSet(GCMDeviceViewSetBase):
"""
**Use Case**
This endpoint allows clients to register a device for push notifications.
If the device is already registered, the existing registration will be updated.
If setting PUSH_NOTIFICATIONS_SETTINGS is not configured, the endpoint will return a 501 error.
**Example Request**
POST /api/mobile/{version}/notifications/create-token/
**POST Parameters**
The body of the POST request can include the following parameters.
* name (optional) - A name of the device.
* registration_id (required) - The device token of the device.
* device_id (optional) - ANDROID_ID / TelephonyManager.getDeviceId() (always as hex)
* active (optional) - Whether the device is active, default is True.
If False, the device will not receive notifications.
* cloud_message_type (required) - You should choose FCM or GCM. Currently, only FCM is supported.
* application_id (optional) - Opaque application identity, should be filled in for multiple
key/certificate access. Should be equal settings.FCM_APP_NAME.
**Example Response**
```json
{
"id": 1,
"name": "My Device",
"registration_id": "fj3j4",
"device_id": 1234,
"active": true,
"date_created": "2024-04-18T07:39:37.132787Z",
"cloud_message_type": "FCM",
"application_id": "my_app_id"
}
```
"""
def create(self, request, *args, **kwargs):
if not getattr(settings, 'PUSH_NOTIFICATIONS_SETTINGS', None):
return Response('Push notifications are not configured.', status.HTTP_501_NOT_IMPLEMENTED)
return super().create(request, *args, **kwargs)