From 27497df72375acd7c18ba388e9938a855c65e6b8 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Date: Thu, 14 Mar 2019 16:40:39 +0100 Subject: [PATCH] bugfix: fix inbox permission by using django.model magics --- djangoldp_notification/models.py | 34 +++++++++++++++++++------------- djangoldp_notification/urls.py | 10 ---------- 2 files changed, 20 insertions(+), 24 deletions(-) delete mode 100644 djangoldp_notification/urls.py diff --git a/djangoldp_notification/models.py b/djangoldp_notification/models.py index 5810302..6fd57c4 100644 --- a/djangoldp_notification/models.py +++ b/djangoldp_notification/models.py @@ -1,21 +1,21 @@ -import requests import logging -import datetime from threading import Thread +import requests +from django.conf import settings +from django.contrib.admin.models import LogEntry from django.contrib.sessions.models import Session from django.db import models -from django.conf import settings +from django.db.models.signals import post_save +from django.dispatch import receiver from oidc_provider.models import Token from djangoldp.fields import LDPUrlField -from django.db.models.signals import post_save -from django.dispatch import receiver -from django.contrib.auth.models import User -from django.contrib.admin.models import LogEntry from djangoldp.models import Model +from djangoldp.permissions import InboxPermissions -class Notification(models.Model): + +class Notification(Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='inbox') author_user = LDPUrlField() object = LDPUrlField() @@ -23,17 +23,20 @@ class Notification(models.Model): summary = models.TextField() date = models.DateTimeField(auto_now_add=True) read = models.BooleanField() + class Meta: permissions = ( ('view_notification', 'Read'), ('control_notification', 'Control'), ) + permission_classes=[InboxPermissions] ordering = ['date'] def __str__(self): return '{}'.format(self.type) -class Subscription(models.Model): + +class Subscription(Model): object = models.URLField() inbox = models.URLField() @@ -46,6 +49,7 @@ class Subscription(models.Model): def __str__(self): return '{}'.format(self.object) + # --- SUBSCRIPTION SYSTEM --- @receiver(post_save, dispatch_uid="callback_notif") def send_notification(sender, instance, **kwargs): @@ -56,12 +60,14 @@ def send_notification(sender, instance, **kwargs): process = Thread(target=send_request, args=[subscription.inbox, url]) process.start() threads.append(process) + + def send_request(target, object_iri): try: - req=requests.post(target, - json={"@context":"https://cdn.happy-dev.fr/owl/hdcontext.jsonld", - "object": object_iri, "type": "update"}, - headers={"Content-Type": "application/ld+json"}) + req = requests.post(target, + json={"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld", + "object": object_iri, "type": "update"}, + headers={"Content-Type": "application/ld+json"}) except: logging.error('Djangoldp_notifications: Error with request') - return True \ No newline at end of file + return True diff --git a/djangoldp_notification/urls.py b/djangoldp_notification/urls.py deleted file mode 100644 index 1b3c6e5..0000000 --- a/djangoldp_notification/urls.py +++ /dev/null @@ -1,10 +0,0 @@ -"""djangoldp_notifications URL Configuration""" -from django.conf.urls import url -from .models import Notification, Subscription -from djangoldp.views import LDPViewSet -#from djangoldp.permissions import InboxPermissions - -urlpatterns = [ - url(r'^notifications/', LDPViewSet.urls(model=Notification)), #permission_classes=(InboxPermissions,))), - url(r'^subscriptions/', LDPViewSet.urls(model=Subscription)), -]