mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
add endpoint + buttons to mark a notification read
This commit is contained in:
parent
f9655f5eac
commit
06f6587050
@ -9,6 +9,7 @@ from django.conf.urls import url, include
|
|||||||
|
|
||||||
from django_filters.rest_framework import DjangoFilterBackend
|
from django_filters.rest_framework import DjangoFilterBackend
|
||||||
from rest_framework import filters, generics, permissions
|
from rest_framework import filters, generics, permissions
|
||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
import common.models
|
import common.models
|
||||||
import common.serializers
|
import common.serializers
|
||||||
@ -186,6 +187,33 @@ class NotificationDetail(generics.RetrieveDestroyAPIView):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationRead(generics.CreateAPIView):
|
||||||
|
"""
|
||||||
|
API endpoint to mark a notification as read.
|
||||||
|
"""
|
||||||
|
|
||||||
|
queryset = common.models.NotificationMessage.objects.all()
|
||||||
|
serializer_class = common.serializers.NotificationReadSerializer
|
||||||
|
|
||||||
|
permission_classes = [
|
||||||
|
UserSettingsPermissions,
|
||||||
|
]
|
||||||
|
|
||||||
|
def get_serializer_context(self):
|
||||||
|
context = super().get_serializer_context()
|
||||||
|
if self.request:
|
||||||
|
context['instance'] = self.get_object()
|
||||||
|
return context
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
message = self.get_object()
|
||||||
|
try:
|
||||||
|
message.read = True
|
||||||
|
message.save()
|
||||||
|
except Exception as exc:
|
||||||
|
raise serializers.ValidationError(detail=serializers.as_serializer_error(exc))
|
||||||
|
|
||||||
|
|
||||||
settings_api_urls = [
|
settings_api_urls = [
|
||||||
# User settings
|
# User settings
|
||||||
url(r'^user/', include([
|
url(r'^user/', include([
|
||||||
@ -210,7 +238,13 @@ common_api_urls = [
|
|||||||
|
|
||||||
# Notifications
|
# Notifications
|
||||||
url(r'^notifications/', include([
|
url(r'^notifications/', include([
|
||||||
url(r'^(?P<pk>\d+)/', NotificationDetail.as_view(), name='api-notifications-detail'),
|
# Individual purchase order detail URLs
|
||||||
|
url(r'^(?P<pk>\d+)/', include([
|
||||||
|
url(r'^read/', NotificationRead.as_view(), name='api-notifications-read'),
|
||||||
|
url(r'.*$', NotificationDetail.as_view(), name='api-notifications-detail'),
|
||||||
|
])),
|
||||||
|
|
||||||
|
# Notification messages list
|
||||||
url(r'^.*$', NotificationList.as_view(), name='api-notifications-list'),
|
url(r'^.*$', NotificationList.as_view(), name='api-notifications-list'),
|
||||||
])),
|
])),
|
||||||
|
|
||||||
|
@ -144,3 +144,11 @@ class NotificationMessageSerializer(InvenTreeModelSerializer):
|
|||||||
'age_human',
|
'age_human',
|
||||||
'read',
|
'read',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationReadSerializer(NotificationMessageSerializer):
|
||||||
|
|
||||||
|
def is_valid(self, raise_exception=False):
|
||||||
|
self.instance = self.context['instance'] # set instance that should be returned
|
||||||
|
self._validated_data = True
|
||||||
|
return True
|
||||||
|
@ -91,9 +91,10 @@ function loadNotificationTable(table, options={}) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$(table).on('click', '.notification-read', function() {
|
$(table).on('click', '.notification-read', function() {
|
||||||
var url = "/notifications/" + $(this).attr('pk') + "/";
|
var url = "/api/notifications/" + $(this).attr('pk') + "/read/";
|
||||||
|
|
||||||
inventreeDelete(url, {
|
inventreePut(url, {}, {
|
||||||
|
method: 'POST',
|
||||||
success: function() {
|
success: function() {
|
||||||
$(table).bootstrapTable('refresh');
|
$(table).bootstrapTable('refresh');
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user