mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	get alias and note infos together
This commit is contained in:
		| @@ -92,6 +92,20 @@ class NotePolymorphicSerializer(PolymorphicSerializer): | ||||
|     class Meta: | ||||
|         model = Note | ||||
|  | ||||
| class ConsumerSerializer(serializers.ModelSerializer): | ||||
|     """ | ||||
|     REST API Nested Serializer for Consumers. | ||||
|     return Alias, and the note Associated to it in  | ||||
|     """ | ||||
|     note = NotePolymorphicSerializer() | ||||
|     class Meta: | ||||
|         model = Alias | ||||
|         fields = '__all__' | ||||
|  | ||||
|     @staticmethod | ||||
|     def setup_eager_loading(queryset): | ||||
|         queryset = queryset.select_related('note') | ||||
|      | ||||
|  | ||||
| class TemplateCategorySerializer(serializers.ModelSerializer): | ||||
|     """ | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
|  | ||||
| from .views import NotePolymorphicViewSet, AliasViewSet, \ | ||||
| from .views import NotePolymorphicViewSet, AliasViewSet, ConsumerViewSet, \ | ||||
|     TemplateCategoryViewSet, TransactionViewSet, TransactionTemplateViewSet | ||||
|  | ||||
|  | ||||
| @@ -11,7 +11,8 @@ def register_note_urls(router, path): | ||||
|     """ | ||||
|     router.register(path + '/note', NotePolymorphicViewSet) | ||||
|     router.register(path + '/alias', AliasViewSet) | ||||
|  | ||||
|     router.register(path + '/consumer', ConsumerViewSet) | ||||
|      | ||||
|     router.register(path + '/transaction/category', TemplateCategoryViewSet) | ||||
|     router.register(path + '/transaction/transaction', TransactionViewSet) | ||||
|     router.register(path + '/transaction/template', TransactionTemplateViewSet) | ||||
|   | ||||
| @@ -6,8 +6,8 @@ from django_filters.rest_framework import DjangoFilterBackend | ||||
| from rest_framework.filters import OrderingFilter, SearchFilter | ||||
| from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSet | ||||
|  | ||||
| from .serializers import NotePolymorphicSerializer, AliasSerializer, TemplateCategorySerializer, \ | ||||
|     TransactionTemplateSerializer, TransactionPolymorphicSerializer | ||||
| from .serializers import NotePolymorphicSerializer, AliasSerializer, ConsumerSerializer,\ | ||||
|     TemplateCategorySerializer, TransactionTemplateSerializer, TransactionPolymorphicSerializer | ||||
| from ..models.notes import Note, Alias | ||||
| from ..models.transactions import TransactionTemplate, Transaction, TemplateCategory | ||||
|  | ||||
| @@ -68,6 +68,29 @@ class AliasViewSet(ReadProtectedModelViewSet): | ||||
|  | ||||
|         return queryset | ||||
|  | ||||
| class ConsumerViewSet(ReadOnlyProtectedModelViewSet): | ||||
|     queryset = Alias.objects.all() | ||||
|     serializer_class = ConsumerSerializer | ||||
|     filter_backends = [SearchFilter, OrderingFilter] | ||||
|     search_fields = ['$normalized_name', '$name', '$note__polymorphic_ctype__model', ] | ||||
|     ordering_fields = ['name', 'normalized_name'] | ||||
|  | ||||
|     def get_queryset(self): | ||||
|         """ | ||||
|         Parse query and apply filters. | ||||
|         :return: The filtered set of requested aliases | ||||
|         """ | ||||
|  | ||||
|         queryset = super().get_queryset() | ||||
|  | ||||
|         alias = self.request.query_params.get("alias", ".*") | ||||
|         queryset = queryset.filter( | ||||
|             Q(name__regex="^" + alias) | ||||
|             | Q(normalized_name__regex="^" + Alias.normalize(alias)) | ||||
|             | Q(normalized_name__regex="^" + alias.lower())) | ||||
|  | ||||
|         return queryset | ||||
|     | ||||
|  | ||||
| class TemplateCategoryViewSet(ReadProtectedModelViewSet): | ||||
|     """ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user