feature: subscription system

This commit is contained in:
Matthieu Fesselier 2019-02-20 10:18:46 +07:00
parent 41f15006db
commit 9fc9fd4cce
2 changed files with 24 additions and 25 deletions

View File

@ -1,13 +1,14 @@
# import requests import requests
# import logging import logging
# import datetime import datetime
# from threading import Thread from threading import Thread
from django.db import models from django.db import models
from django.conf import settings from django.conf import settings
from django.db.models.signals import post_save from django.db.models.signals import post_save
from django.dispatch import receiver from django.dispatch import receiver
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.admin.models import LogEntry from django.contrib.admin.models import LogEntry
from djangoldp.models import Model
class Notification(models.Model): class Notification(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='inbox') user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='inbox')
@ -41,22 +42,21 @@ class Subscription(models.Model):
return '{}'.format(self.object) return '{}'.format(self.object)
# --- SUBSCRIPTION SYSTEM --- # --- SUBSCRIPTION SYSTEM ---
# @receiver(post_save, dispatch_uid="callback_notif") @receiver(post_save, dispatch_uid="callback_notif")
# def send_notification(sender, instance, **kwargs): def send_notification(sender, instance, **kwargs):
# if (sender != Notification and sender != LogEntry): if (sender != Notification and sender != LogEntry):
# threads = [] threads = []
# url = sender.url # TODO : get URL of saved resource url = "http://127.0.0.1:8000" + Model.get_absolute_url(instance) + '/' # TODO : get host
# for subscription in Subscription.objects.filter(object=url): for subscription in Subscription.objects.filter(object=url):
# process = Thread(target=send_request, args=[subscription.inbox, url]) process = Thread(target=send_request, args=[subscription.inbox, url])
# process.start() process.start()
# threads.append(process) threads.append(process)
def send_request(target, object):
# def send_request(target, object): try:
# try: req=requests.post(target,
# req=requests.post(target, json={"@context":"https://cdn.happy-dev.fr/owl/hdcontext.jsonld",
# json={"@context":"https://cdn.happy-dev.fr/owl/hdcontext.jsonld", "object": object, "type": "system", "read": False},
# "object": object, "type": "system", "read": False}, headers={"Content-Type": "application/ld+json"})
# headers={"Content-Type": "application/ld+json"}) except:
# except: logging.error('Djangoldp_notifications: Error with request')
# logging.error('Djangoldp_notifications: Error with request') return True
# return True

View File

@ -2,9 +2,8 @@
from django.conf.urls import url from django.conf.urls import url
from .models import Notification, Subscription from .models import Notification, Subscription
from djangoldp.views import LDPViewSet from djangoldp.views import LDPViewSet
from djangoldp.permissions import InboxPermissions
urlpatterns = [ urlpatterns = [
url(r'^notifications/', LDPViewSet.urls(model=Notification, permission_classes=(InboxPermissions,))), url(r'^notifications/', LDPViewSet.urls(model=Notification, permission_classes=[])),
url(r'^subscriptions/', LDPViewSet.urls(model=Subscription)), url(r'^subscriptions/', LDPViewSet.urls(model=Subscription)),
] ]