From 967975a8990c2c63fef41042765631ba182d4672 Mon Sep 17 00:00:00 2001 From: Kipchirchir Sigei Date: Wed, 19 Oct 2022 09:07:01 +0300 Subject: [PATCH] Track form update notifications Signed-off-by: Kipchirchir Sigei --- onadata/apps/api/viewsets/export_viewset.py | 2 +- onadata/apps/api/viewsets/project_viewset.py | 3 +-- onadata/apps/api/viewsets/xform_viewset.py | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/onadata/apps/api/viewsets/export_viewset.py b/onadata/apps/api/viewsets/export_viewset.py index cd58e533b7..16345634dc 100644 --- a/onadata/apps/api/viewsets/export_viewset.py +++ b/onadata/apps/api/viewsets/export_viewset.py @@ -13,7 +13,7 @@ from rest_framework.viewsets import ReadOnlyModelViewSet from onadata.apps.api.permissions import ExportDjangoObjectPermission -from onadata.apps.messaging.constants import EXPORT, EXPORT_DELETED, XFORM +from onadata.apps.messaging.constants import EXPORT_DELETED, XFORM from onadata.apps.messaging.serializers import send_message from onadata.apps.viewer.models.export import Export from onadata.libs import filters diff --git a/onadata/apps/api/viewsets/project_viewset.py b/onadata/apps/api/viewsets/project_viewset.py index 92881409b8..4d51f0da51 100644 --- a/onadata/apps/api/viewsets/project_viewset.py +++ b/onadata/apps/api/viewsets/project_viewset.py @@ -2,7 +2,6 @@ """ The /projects API endpoint implementation. """ -from email import message from django.core.cache import cache from django.core.mail import send_mail from django.shortcuts import get_object_or_404 @@ -92,7 +91,7 @@ def get_queryset(self): ) return super().get_queryset() - + def create(self, request, *args, **kwargs): """Creates new project""" response = super().create(request, *args, **kwargs) diff --git a/onadata/apps/api/viewsets/xform_viewset.py b/onadata/apps/api/viewsets/xform_viewset.py index 56dc8ae8b3..38df02c6fe 100644 --- a/onadata/apps/api/viewsets/xform_viewset.py +++ b/onadata/apps/api/viewsets/xform_viewset.py @@ -53,8 +53,8 @@ from onadata.apps.logger.models.xform_version import XFormVersion from onadata.apps.logger.xform_instance_parser import XLSFormError from onadata.apps.messaging.constants import ( - FORM_UPDATED, EXPORT_CREATED, EXPORT_DELETED, - XFORM, FORM_DELETED, FORM_CREATED, PROJECT + FORM_UPDATED, EXPORT_CREATED, XFORM, + FORM_DELETED, FORM_CREATED, PROJECT ) from onadata.apps.messaging.serializers import send_message from onadata.apps.viewer.models.export import Export @@ -261,7 +261,7 @@ def parse_webform_return_url(return_url, request): return None -# pylint: disable=too-many-ancestors +# pylint: disable=too-many-ancestors, too-many-lines class XFormViewSet( AnonymousUserPublicFormsMixin, CacheControlMixin, @@ -843,6 +843,16 @@ def partial_update(self, request, *args, **kwargs): return _try_update_xlsform(request, self.object, owner) try: + # send notification for each form activity + if request.POST.get("title") or request.POST.get("title"): + # send form update notification + send_message( + instance_id=self.object.pk, + target_id=self.object.pk, + target_type=XFORM, + user=request.user or owner, + message_verb=FORM_UPDATED, + ) return super().partial_update(request, *args, **kwargs) except XLSFormError as e: raise ParseError(str(e)) from e