UNPKG

leds-spark-lib

Version:

Biblioteca de geração de código

69 lines 3.08 kB
import { isLocalEntity, base_ident } from "../../../../models/model.js"; const ident = base_ident; function generateSearchFields(e) { return e.attributes.filter(a => a.type != "file").map(a => `'${a.name}'`).join(', '); } function createEntityViewSet(e, has_actor) { const get_filterset_fields = (e) => { // Se não tem atributo do tipo file if (e.attributes.every(a => a.type !== 'file')) { return "'__all__'"; } else { const attrs = e.attributes.filter(a => a.type !== 'file').map(a => `'${a.name}'`); return `[${attrs.join(', ')}]`; } }; const permission_class = has_actor ? 'permission_classes = [Or(IsAdminUser, And(AdministratorPermissions, TokenHasReadWriteScope))]' : 'permission_classes = [Or(IsAdminUser, TokenHasReadWriteScope)]'; const lines = [ `class ${e.name}ViewSet(ModelViewSet):`, `${ident}queryset = ${e.name}.objects.all()`, `${ident}pagination_class = CustomPagination`, `${ident}authentication_classes = [OAuth2Authentication, SessionAuthentication]`, `${ident}permission_classes = ${permission_class}`, `${ident}filter_backends = (`, `${ident}${ident}filters.SearchFilter,`, `${ident}${ident}filters.OrderingFilter,`, `${ident}${ident}django_filters.rest_framework.DjangoFilterBackend`, `${ident})`, `${ident}filterset_fields = ${get_filterset_fields(e)}`, `${ident}search_fields = [${generateSearchFields(e)}]`, `${ident}ordering_fields = '__all__'`, `${ident}ordering = ["id"]`, `${ident}`, `${ident}def get_serializer_class(self):`, `${ident}${ident}if self.request.method in ['GET']:`, `${ident}${ident}${ident}return ${e.name}ReadSerializer`, `${ident}${ident}return ${e.name}WriteSerializer`, `` ]; return lines.join('\n'); } export function generateAPIView(m, entities_with_actor) { const entities = m.elements.filter(isLocalEntity).filter(e => !e.is_abstract); const lines = [ `from .models import (`, ...entities.map(e => `${ident}${e.name},`), `)`, `from .serializers import (`, ...entities.map(e => `${ident}${e.name}ReadSerializer, ${e.name}WriteSerializer,`), `)`, ``, `from rest_framework.viewsets import ModelViewSet`, `from rest_framework.permissions import IsAdminUser`, `from rest_condition import And, Or`, `from oauth2_provider.contrib.rest_framework import TokenHasReadWriteScope, OAuth2Authentication`, `from rest_framework.authentication import SessionAuthentication`, `from .pagination import CustomPagination`, `from rest_framework import generics`, `from rest_framework import filters`, `import django_filters.rest_framework`, ``, ``, ...entities.map(e => createEntityViewSet(e, entities_with_actor.has(e))), ]; return lines.join('\n'); } //# sourceMappingURL=view-generator.js.map