Skip to content

Commit

Permalink
[ADD] Adiciona rota OPTIONS com metadata de espécie #15
Browse files Browse the repository at this point in the history
  • Loading branch information
fernao committed May 25, 2019
1 parent c880578 commit 3bf221f
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 6 deletions.
15 changes: 15 additions & 0 deletions app/especie/metadata.py
Original file line number Diff line number Diff line change
@@ -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()
}
49 changes: 47 additions & 2 deletions app/especie/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from familia.models import Familia


class Configuracoes():
class Configuracoes(object):
u""" Classe para definição de tipos gerais """

TIPOS_UMIDADE = (
Expand All @@ -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'),
Expand Down Expand Up @@ -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)
Expand Down
22 changes: 22 additions & 0 deletions app/especie/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -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',
)
44 changes: 40 additions & 4 deletions app/especie/views.py
Original file line number Diff line number Diff line change
@@ -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()
Expand 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']
"""

0 comments on commit 3bf221f

Please sign in to comment.