From 81c68c3c1d84e628fc2f70dabd5f52fd10988dcb Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Sat, 10 Aug 2013 17:48:52 -0700 Subject: [PATCH] Add notification endpoints --- readthedocs/projects/tasks.py | 4 ++-- readthedocs/restapi/urls.py | 5 +++-- readthedocs/restapi/views.py | 25 +++++++++++++++++++------ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/readthedocs/projects/tasks.py b/readthedocs/projects/tasks.py index 9c884311d..560c93bce 100644 --- a/readthedocs/projects/tasks.py +++ b/readthedocs/projects/tasks.py @@ -233,7 +233,7 @@ def update_docs(pk, record=True, pdf=True, man=True, epub=True, dash=True, symlink_cname(version) # This requires database access, must disable it for now. # symlink_translations(version) - # send_notifications(version, build) + send_notifications(version, build) log.info("Purged %s" % version) else: log.warning("Failed HTML Build") @@ -607,7 +607,7 @@ def symlink_translations(version): def send_notifications(version, build): - zenircbot_notification(version.id) + #zenircbot_notification(version.id) for hook in version.project.webhook_notifications.all(): webhook_notification.delay(version.project.id, build, hook.url) emails = (version.project.emailhook_notifications.all() diff --git a/readthedocs/restapi/urls.py b/readthedocs/restapi/urls.py index f903e9b0d..26f2afe9e 100644 --- a/readthedocs/restapi/urls.py +++ b/readthedocs/restapi/urls.py @@ -1,6 +1,7 @@ from rest_framework import routers -from .views import ProjectViewSet +from .views import ProjectViewSet, NotificationViewSet router = routers.DefaultRouter() -router.register(r'project', ProjectViewSet, base_name="project") +router.register(r'project', ProjectViewSet) +router.register(r'notification', NotificationViewSet) urlpatterns = router.urls \ No newline at end of file diff --git a/readthedocs/restapi/views.py b/readthedocs/restapi/views.py index d0a772a29..91d194bd4 100644 --- a/readthedocs/restapi/views.py +++ b/readthedocs/restapi/views.py @@ -8,13 +8,11 @@ from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer from rest_framework.response import Response from betterversion.better import version_windows, BetterVersion -from projects.models import Project +from projects.models import Project, EmailHook + +from .permissions import RelatedProjectIsOwner class ProjectViewSet(viewsets.ModelViewSet): - """ - A simple ViewSet that for listing or retrieving users. - """ - permission_classes = [permissions.IsAuthenticatedOrReadOnly] renderer_classes = (JSONRenderer, BrowsableAPIRenderer) model = Project @@ -46,4 +44,19 @@ class ProjectViewSet(viewsets.ModelViewSet): project.versions.filter(verbose_name__in=version_strings).update(active=True) return Response({ 'flat': version_strings, - }) \ No newline at end of file + }) + +class NotificationViewSet(viewsets.ModelViewSet): + permission_classes = (permissions.IsAuthenticated, RelatedProjectIsOwner) + renderer_classes = (JSONRenderer, BrowsableAPIRenderer) + model = EmailHook + + def get_queryset(self): + """ + This view should return a list of all the purchases + for the currently authenticated user. + """ + user = self.request.user + if user.is_superuser: + return self.model.objects.all() + return self.model.objects.filter(project__users__in=[user.pk])