Notes are read-only in the API, but can be modified with scripts (ie. transactions)

This commit is contained in:
Yohann D'ANELLO 2020-03-19 19:29:52 +01:00
parent 7794210cc8
commit 74c0fcca83
3 changed files with 23 additions and 47 deletions

View File

@ -20,6 +20,7 @@ class NoteSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Note model = Note
fields = '__all__' fields = '__all__'
read_only_fields = [f.name for f in model._meta.get_fields()] # Notes are read-only protected
class NoteClubSerializer(serializers.ModelSerializer): class NoteClubSerializer(serializers.ModelSerializer):
@ -32,6 +33,7 @@ class NoteClubSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = NoteClub model = NoteClub
fields = '__all__' fields = '__all__'
read_only_fields = ('note', 'club', )
def get_name(self, obj): def get_name(self, obj):
return str(obj) return str(obj)
@ -47,6 +49,7 @@ class NoteSpecialSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = NoteSpecial model = NoteSpecial
fields = '__all__' fields = '__all__'
read_only_fields = ('note', )
def get_name(self, obj): def get_name(self, obj):
return str(obj) return str(obj)
@ -62,6 +65,7 @@ class NoteUserSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = NoteUser model = NoteUser
fields = '__all__' fields = '__all__'
read_only_fields = ('note', 'user', )
def get_name(self, obj): def get_name(self, obj):
return str(obj) return str(obj)

View File

@ -5,56 +5,15 @@ from django.db.models import Q
from django_filters.rest_framework import DjangoFilterBackend 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 from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSet
from member.backends import PermissionBackend from member.backends import PermissionBackend
from .serializers import NoteSerializer, NotePolymorphicSerializer, NoteClubSerializer, NoteSpecialSerializer, \ from .serializers import NotePolymorphicSerializer, AliasSerializer, TemplateCategorySerializer, \
NoteUserSerializer, AliasSerializer, \ TransactionTemplateSerializer, TransactionPolymorphicSerializer
TemplateCategorySerializer, TransactionTemplateSerializer, TransactionPolymorphicSerializer from ..models.notes import Note, Alias
from ..models.notes import Note, NoteClub, NoteSpecial, NoteUser, Alias
from ..models.transactions import TransactionTemplate, Transaction, TemplateCategory from ..models.transactions import TransactionTemplate, Transaction, TemplateCategory
class NoteViewSet(ReadProtectedModelViewSet): class NotePolymorphicViewSet(ReadOnlyProtectedModelViewSet):
"""
REST API View set.
The djangorestframework plugin will get all `Note` objects, serialize it to JSON with the given serializer,
then render it on /api/note/note/
"""
queryset = Note.objects.all()
serializer_class = NoteSerializer
class NoteClubViewSet(ReadProtectedModelViewSet):
"""
REST API View set.
The djangorestframework plugin will get all `NoteClub` objects, serialize it to JSON with the given serializer,
then render it on /api/note/club/
"""
queryset = NoteClub.objects.all()
serializer_class = NoteClubSerializer
class NoteSpecialViewSet(ReadProtectedModelViewSet):
"""
REST API View set.
The djangorestframework plugin will get all `NoteSpecial` objects, serialize it to JSON with the given serializer,
then render it on /api/note/special/
"""
queryset = NoteSpecial.objects.all()
serializer_class = NoteSpecialSerializer
class NoteUserViewSet(ReadProtectedModelViewSet):
"""
REST API View set.
The djangorestframework plugin will get all `NoteUser` objects, serialize it to JSON with the given serializer,
then render it on /api/note/user/
"""
queryset = NoteUser.objects.all()
serializer_class = NoteUserSerializer
class NotePolymorphicViewSet(ReadProtectedModelViewSet):
""" """
REST API View set. REST API View set.
The djangorestframework plugin will get all `Note` objects (with polymorhism), serialize it to JSON with the given serializer, The djangorestframework plugin will get all `Note` objects (with polymorhism), serialize it to JSON with the given serializer,

View File

@ -227,6 +227,18 @@
"description": "Transfer from myself's note" "description": "Transfer from myself's note"
} }
}, },
{
"model": "permission.permission",
"pk": 18,
"fields": {
"model": 35,
"query": "{}",
"type": "change",
"mask": 1,
"field": "balance",
"description": "Update a note balance with a transaction"
}
},
{ {
"model": "member.role", "model": "member.role",
"pk": 1, "pk": 1,
@ -279,7 +291,8 @@
14, 14,
15, 15,
16, 16,
17 17,
18
] ]
} }
} }