Skip to content

Commit

Permalink
Ya se puede hacer un filtro por género a través del end point:
Browse files Browse the repository at this point in the history
/api/marvel/v1/characters/?gener=x donde x puede tormar los valores:
v = Villians
h = Heroes
  • Loading branch information
engeldevelopment committed Aug 17, 2020
1 parent 6adda6d commit e87ea0f
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 4 deletions.
9 changes: 9 additions & 0 deletions marvel/core/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from django_filters import rest_framework as filters

from .models import Character


class CharacterFilter(filters.FilterSet):
class Meta:
model = Character
fields = ('gener',)
18 changes: 18 additions & 0 deletions marvel/core/migrations/0002_auto_20200817_1753.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.1 on 2020-08-17 21:53

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('core', '0001_initial'),
]

operations = [
migrations.AlterField(
model_name='character',
name='gener',
field=models.CharField(choices=[('h', 'Heroes'), ('v', 'Villians')], max_length=2),
),
]
9 changes: 8 additions & 1 deletion marvel/core/models.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from django.db import models
from django.urls import reverse


class Character(models.Model):
GENERS = (
('h', 'Heroes'),
('m', 'Villians')
('v', 'Villians')
)
name = models.CharField(max_length=80)
real_name = models.CharField(max_length=30)
Expand All @@ -13,3 +14,9 @@ class Character(models.Model):

def __str__(self):
return self.name

def get_absolute_url(self):
return reverse(
'core:character-detail',
kwargs={'pk': self.pk}
)
17 changes: 15 additions & 2 deletions marvel/core/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,20 @@ def test_if_i_not_create_a_character_the_list_should_be_empty(self):

self.assertEqual(0, response.data['count'])

def test_get_all_characters_by_gener(self):

CharacterFactory.create(
name="Hulk",
real_name="Brust Banner",
gener='h',
origin='Se expuso a rayos gammas'
)
self.url = '/api/marvel/v1/characters/?gener=h'

response = self.client.get(self.url)

self.assertEqual(1, response.data['count'])


class CharacterDetailAPIVIewTest(APITestCase):

Expand All @@ -42,9 +56,8 @@ def test_i_can_to_see_detail_of_character(self):
gener='h',
origin='Se expuso a rayos gammas'
)
url = reverse('core:character-detail', kwargs={'pk': hulk.pk})

response = self.client.get(url)
response = self.client.get(hulk.get_absolute_url())

self.assertTrue(status.is_success(response.status_code))

Expand Down
3 changes: 2 additions & 1 deletion marvel/core/views.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from rest_framework import generics

from .filters import CharacterFilter
from .mixins import CharacterMixinAPIView


class CharacterListAPIView(CharacterMixinAPIView, generics.ListAPIView):
pass
filterset_class = CharacterFilter


class CharacterDetailAPIView(CharacterMixinAPIView, generics.RetrieveAPIView):
Expand Down

0 comments on commit e87ea0f

Please sign in to comment.