onadata.apps.messaging package¶
Subpackages¶
- onadata.apps.messaging.backends package
- onadata.apps.messaging.migrations package
- onadata.apps.messaging.tests package
- Submodules
- onadata.apps.messaging.tests.test_backends_base module
- onadata.apps.messaging.tests.test_backends_mqtt module
- onadata.apps.messaging.tests.test_base module
- onadata.apps.messaging.tests.test_messaging_viewset module
TestMessagingViewSet
TestMessagingViewSet.setUp()
TestMessagingViewSet.test_authentication_required()
TestMessagingViewSet.test_create_message()
TestMessagingViewSet.test_create_permissions()
TestMessagingViewSet.test_delete_message()
TestMessagingViewSet.test_list_messages()
TestMessagingViewSet.test_messaging_timestamp_filter()
TestMessagingViewSet.test_retrieve_message()
TestMessagingViewSet.test_retrieve_pagination()
TestMessagingViewSet.test_retrieve_permissions()
TestMessagingViewSet.test_target_does_not_exist()
- onadata.apps.messaging.tests.test_signals module
- onadata.apps.messaging.tests.test_tasks module
- onadata.apps.messaging.tests.test_utils module
- Module contents
Submodules¶
onadata.apps.messaging.admin module¶
onadata.apps.messaging.apps module¶
Messaging AppsConfig module
onadata.apps.messaging.constants module¶
Messaging constant variables.
onadata.apps.messaging.filters module¶
Messaging viewset filters module.
- class onadata.apps.messaging.filters.ActionFilterSet(data=None, queryset=None, *, request=None, prefix=None)¶
Bases:
FilterSet
- class Meta¶
Bases:
object
- fields = {'timestamp': ['exact', 'gt', 'lt', 'gte', 'lte', 'year', 'year__gt', 'year__lt', 'year__gte', 'year__lte', 'month', 'month__gt', 'month__lt', 'month__gte', 'month__lte', 'day', 'day__gt', 'day__lt', 'day__gte', 'day__lte', 'hour', 'hour__gt', 'hour__lt', 'hour__gte', 'hour__lte', 'minute', 'minute__gt', 'minute__lt', 'minute__gte', 'minute__lte'], 'verb': ['exact']}¶
- model¶
alias of
Action
- base_filters = {'timestamp': <django_filters.filters.IsoDateTimeFilter object>, 'timestamp__day': <django_filters.filters.NumberFilter object>, 'timestamp__day__gt': <django_filters.filters.NumberFilter object>, 'timestamp__day__gte': <django_filters.filters.NumberFilter object>, 'timestamp__day__lt': <django_filters.filters.NumberFilter object>, 'timestamp__day__lte': <django_filters.filters.NumberFilter object>, 'timestamp__gt': <django_filters.filters.IsoDateTimeFilter object>, 'timestamp__gte': <django_filters.filters.IsoDateTimeFilter object>, 'timestamp__hour': <django_filters.filters.NumberFilter object>, 'timestamp__hour__gt': <django_filters.filters.NumberFilter object>, 'timestamp__hour__gte': <django_filters.filters.NumberFilter object>, 'timestamp__hour__lt': <django_filters.filters.NumberFilter object>, 'timestamp__hour__lte': <django_filters.filters.NumberFilter object>, 'timestamp__lt': <django_filters.filters.IsoDateTimeFilter object>, 'timestamp__lte': <django_filters.filters.IsoDateTimeFilter object>, 'timestamp__minute': <django_filters.filters.NumberFilter object>, 'timestamp__minute__gt': <django_filters.filters.NumberFilter object>, 'timestamp__minute__gte': <django_filters.filters.NumberFilter object>, 'timestamp__minute__lt': <django_filters.filters.NumberFilter object>, 'timestamp__minute__lte': <django_filters.filters.NumberFilter object>, 'timestamp__month': <django_filters.filters.NumberFilter object>, 'timestamp__month__gt': <django_filters.filters.NumberFilter object>, 'timestamp__month__gte': <django_filters.filters.NumberFilter object>, 'timestamp__month__lt': <django_filters.filters.NumberFilter object>, 'timestamp__month__lte': <django_filters.filters.NumberFilter object>, 'timestamp__year': <django_filters.filters.NumberFilter object>, 'timestamp__year__gt': <django_filters.filters.NumberFilter object>, 'timestamp__year__gte': <django_filters.filters.NumberFilter object>, 'timestamp__year__lt': <django_filters.filters.NumberFilter object>, 'timestamp__year__lte': <django_filters.filters.NumberFilter object>, 'verb': <django_filters.filters.CharFilter object>}¶
- declared_filters = {}¶
- class onadata.apps.messaging.filters.TargetIDFilterBackend¶
Bases:
BaseFilterBackend
A filter backend that filters by target id.
- filter_queryset(request, queryset, view)¶
Return a filtered queryset.
onadata.apps.messaging.models module¶
onadata.apps.messaging.permissions module¶
Tests Messaging app implementation.
- class onadata.apps.messaging.permissions.TargetObjectPermissions¶
Bases:
BasePermission
Check target object permissions
- get_required_object_permissions(method, model_cls)¶
Return required object permissions for given request method.
- has_object_permission(request, view, obj)¶
Check the target object’s permissions
- perms_map = {'DELETE': ['%(app_label)s.delete_%(model_name)s'], 'GET': ['%(app_label)s.view_%(model_name)s'], 'HEAD': ['%(app_label)s.view_%(model_name)s'], 'OPTIONS': ['%(app_label)s.view_%(model_name)s'], 'PATCH': ['%(app_label)s.change_%(model_name)s'], 'POST': ['%(app_label)s.change_%(model_name)s'], 'PUT': ['%(app_label)s.change_%(model_name)s']}¶
onadata.apps.messaging.serializers module¶
Message serializers
- class onadata.apps.messaging.serializers.ContentTypeChoiceField(*args, **kwargs)¶
Bases:
ChoiceField
Custom ChoiceField that gets the model name from a ContentType object
- to_representation(value)¶
Get the model from ContentType object
- class onadata.apps.messaging.serializers.MessageSerializer(*args, **kwargs)¶
Bases:
ModelSerializer
Serializer class for Message objects
- class Meta¶
Bases:
object
MessageSerializer metadata
- fields = ['id', 'verb', 'message', 'user', 'target_id', 'target_type', 'timestamp']¶
- model¶
alias of
Action
- TARGET_CHOICES = (('xform', 'XForm'), ('project', 'Project'), ('user', 'User'))¶
- create(validated_data)¶
Creates the Message in the Action model
- onadata.apps.messaging.serializers.send_message(instance_id: list | int, target_id: int, target_type: str, user: User, message_verb: str)¶
Send a message. :param id: A single ID or list of IDs that have been affected by an action :param target_id: id of the target_type :param target_type: any of these three [‘xform’, ‘project’, ‘user’] :param request: http request object :return:
onadata.apps.messaging.signals module¶
Messaging signal handlers
- onadata.apps.messaging.signals.messaging_backends_handler(sender, **kwargs)¶
Handler to send messages to notification backends e.g MQTT.
onadata.apps.messaging.tasks module¶
Messaging tasks
onadata.apps.messaging.urls module¶
Messaging urls module.
onadata.apps.messaging.utils module¶
Messaging util functions.
- exception onadata.apps.messaging.utils.TargetDoesNotExist¶
Bases:
Exception
Target does not Exist exception class.
- message = 'Unknown target.'¶
- onadata.apps.messaging.utils.get_target(target_type)¶
Returns a ContentType object if it exists, raises TargetDoesNotExist exception if target_type is not known.
onadata.apps.messaging.views module¶
onadata.apps.messaging.viewsets module¶
Messaging /messaging viewsets.
- class onadata.apps.messaging.viewsets.MessagingViewSet(**kwargs)¶
Bases:
CreateModelMixin
,ListModelMixin
,RetrieveModelMixin
,DestroyModelMixin
,GenericViewSet
ViewSet for the Messaging app - implements /messaging API endpoint
- basename = None¶
- description = None¶
- detail = None¶
- filter_backends = (<class 'onadata.apps.messaging.filters.TargetTypeFilterBackend'>, <class 'onadata.apps.messaging.filters.TargetIDFilterBackend'>, <class 'onadata.apps.messaging.filters.UserFilterBackend'>, <class 'django_filters.rest_framework.backends.DjangoFilterBackend'>)¶
- filterset_class¶
alias of
ActionFilterSet
- list(request, *args, **kwargs)¶
- name = None¶
- pagination_class¶
alias of
StandardPageNumberPagination
- permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>, <class 'onadata.apps.messaging.permissions.TargetObjectPermissions'>]¶
- queryset¶
- serializer_class¶
alias of
MessageSerializer
- suffix = None¶