diff --git a/app/especie/metadata.py b/app/especie/metadata.py new file mode 100644 index 0000000..6b9c34b --- /dev/null +++ b/app/especie/metadata.py @@ -0,0 +1,15 @@ +from rest_framework.metadata import SimpleMetadata + +from .models import Configuracoes + +class EspecieMetadata(SimpleMetadata): + + def get_choices(self): + configuracoes = Configuracoes() + + return configuracoes.get_tipos() + + def determine_metadata(self, request, view): + return { + 'choices': self.get_choices() + } diff --git a/app/especie/models.py b/app/especie/models.py index fcbaf55..f02ff59 100644 --- a/app/especie/models.py +++ b/app/especie/models.py @@ -5,7 +5,7 @@ from familia.models import Familia -class Configuracoes(): +class Configuracoes(object): u""" Classe para definição de tipos gerais """ TIPOS_UMIDADE = ( @@ -23,7 +23,7 @@ class Configuracoes(): ('Erva grande', 'Erva grande'), ('Trepadeira', 'Trepadeira'), ('Arbusto', 'Arbusto'), - ('rvore pequena', 'Árvore pequena'), + ('Árvore pequena', 'Árvore pequena'), ('Árvore média', 'Árvore média'), ('Árvore grande', 'Árvore grande'), ('Outro / não especificado', 'Outro / não especificado'), @@ -99,6 +99,51 @@ class Configuracoes(): ('A', 'Anos') ) + fields = ( + 'porte', + 'solo', + 'estrato', + 'sucessao', + 'clima', + 'bioma', + 'declividade', + 'fases', + 'unidade_tempo_vida', + 'umidade', + ) + + def __init__(self, **kwargs): + self.porte = self.TIPOS_PORTE + self.solo = self.TIPOS_SOLO + self.estrato = self.TIPOS_ESTRATO + self.sucessao = self.TIPOS_SUCESSAO + self.clima = self.TIPOS_CLIMA + self.bioma = self.TIPOS_BIOMA + self.declividade = self.TIPOS_DECLIVIDADE + self.fases = self.FASES + self.unidade_tempo_vida = self.UNIDADE_TEMPO_VIDA + self.umidade = self.TIPOS_UMIDADE + + + def get_tipos(self): + result = { + 'porte': self.TIPOS_PORTE, + 'porte': self.TIPOS_PORTE, + 'solo': self.TIPOS_SOLO, + 'estrato': self.TIPOS_ESTRATO, + 'sucessao': self.TIPOS_SUCESSAO, + 'clima': self.TIPOS_CLIMA, + 'bioma': self.TIPOS_BIOMA, + 'declividade': self.TIPOS_DECLIVIDADE, + 'fases': self.FASES, + 'unidade_tempo_vida': self.UNIDADE_TEMPO_VIDA, + 'umidade': self.TIPOS_UMIDADE + } + return result + + class Meta: + abstract = True + def get_image_path(instance, filename): return os.path.join('images', str(instance.id), filename) diff --git a/app/especie/serializers.py b/app/especie/serializers.py index 4ff09d8..74c2998 100644 --- a/app/especie/serializers.py +++ b/app/especie/serializers.py @@ -65,3 +65,25 @@ class Meta: 'intensidade', 'descricao', ) + +class TiposSerializer(serializers.ModelSerializer): + porte = serializers.SerializerMethodField() + + def get_porte(self, obj): + configuracoes = Configuracoes() + return configuracoes.get_tipos()['porte'] + + class Meta: + model = None + fields = ( + 'porte', + 'solo', + 'estrato', + 'sucessao', + 'clima', + 'bioma', + 'declividade', + 'fases', + 'unidade_tempo_vida', + 'umidade', + ) diff --git a/app/especie/views.py b/app/especie/views.py index 80727b5..d4288ad 100644 --- a/app/especie/views.py +++ b/app/especie/views.py @@ -1,12 +1,15 @@ -from rest_framework.viewsets import ModelViewSet +from rest_framework.viewsets import ModelViewSet, ViewSet +from rest_framework.views import APIView +from rest_framework.response import Response -from .models import Variedade,Especie,Interacao,Configuracoes -from .serializers import EspecieSerializer, VariedadeSerializer, InteracaoSerializer +from .models import Variedade,Especie,Interacao +from .serializers import EspecieSerializer, VariedadeSerializer, InteracaoSerializer, TiposSerializer +from .metadata import EspecieMetadata class EspecieViewSet(ModelViewSet): queryset = Especie.objects.all() serializer_class = EspecieSerializer - + metadata_class = EspecieMetadata class VariedadeViewSet(ModelViewSet): queryset = Variedade.objects.all() @@ -16,3 +19,36 @@ class VariedadeViewSet(ModelViewSet): class InteracaoViewSet(ModelViewSet): queryset = Interacao.objects.all() serializer_class = InteracaoSerializer + +""" +class TiposViewSet(ModelViewSet): + configuracoes = Configuracoes() + + queryset = configuracoes.get_tipos() + serializer_class = TiposSerializer + + def list(self, request): + configuracoes = Configuracoes() + + serializer = TiposSerializer( + instance = configuracoes.get_tipos(), + many=True + ) + print('------------') + print(serializer.data) + return Response(serializer.data) + + + tipos = configuracoes.get_tipos() + porte = tipos['porte'] + solo = tipos['solo'] + estrato = tipos['estrato'] + sucessao = tipos['sucessao'] + clima = tipos['clima'] + bioma = tipos['bioma'] + declividade = tipos['declividade'] + fases = tipos['fases'] + unidade_tempo_vida = tipos['unidade_tempo_vida'] + umidade = tipos['umidade'] + """ +