mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-30 23:39:54 +01:00 
			
		
		
		
	get alias and note infos together
This commit is contained in:
		| @@ -92,6 +92,20 @@ class NotePolymorphicSerializer(PolymorphicSerializer): | |||||||
|     class Meta: |     class Meta: | ||||||
|         model = Note |         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): | class TemplateCategorySerializer(serializers.ModelSerializer): | ||||||
|     """ |     """ | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay | # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay | ||||||
| # SPDX-License-Identifier: GPL-3.0-or-later | # SPDX-License-Identifier: GPL-3.0-or-later | ||||||
|  |  | ||||||
| from .views import NotePolymorphicViewSet, AliasViewSet, \ | from .views import NotePolymorphicViewSet, AliasViewSet, ConsumerViewSet, \ | ||||||
|     TemplateCategoryViewSet, TransactionViewSet, TransactionTemplateViewSet |     TemplateCategoryViewSet, TransactionViewSet, TransactionTemplateViewSet | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -11,7 +11,8 @@ def register_note_urls(router, path): | |||||||
|     """ |     """ | ||||||
|     router.register(path + '/note', NotePolymorphicViewSet) |     router.register(path + '/note', NotePolymorphicViewSet) | ||||||
|     router.register(path + '/alias', AliasViewSet) |     router.register(path + '/alias', AliasViewSet) | ||||||
|  |     router.register(path + '/consumer', ConsumerViewSet) | ||||||
|  |      | ||||||
|     router.register(path + '/transaction/category', TemplateCategoryViewSet) |     router.register(path + '/transaction/category', TemplateCategoryViewSet) | ||||||
|     router.register(path + '/transaction/transaction', TransactionViewSet) |     router.register(path + '/transaction/transaction', TransactionViewSet) | ||||||
|     router.register(path + '/transaction/template', TransactionTemplateViewSet) |     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 rest_framework.filters import OrderingFilter, SearchFilter | ||||||
| from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSet | from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSet | ||||||
|  |  | ||||||
| from .serializers import NotePolymorphicSerializer, AliasSerializer, TemplateCategorySerializer, \ | from .serializers import NotePolymorphicSerializer, AliasSerializer, ConsumerSerializer,\ | ||||||
|     TransactionTemplateSerializer, TransactionPolymorphicSerializer |     TemplateCategorySerializer, TransactionTemplateSerializer, TransactionPolymorphicSerializer | ||||||
| from ..models.notes import Note, Alias | from ..models.notes import Note, Alias | ||||||
| from ..models.transactions import TransactionTemplate, Transaction, TemplateCategory | from ..models.transactions import TransactionTemplate, Transaction, TemplateCategory | ||||||
|  |  | ||||||
| @@ -68,6 +68,29 @@ class AliasViewSet(ReadProtectedModelViewSet): | |||||||
|  |  | ||||||
|         return queryset |         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): | class TemplateCategoryViewSet(ReadProtectedModelViewSet): | ||||||
|     """ |     """ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user