Skip to content

Commit

Permalink
Merge 5ef620e into a85dd3a
Browse files Browse the repository at this point in the history
  • Loading branch information
dyohan9 committed Aug 9, 2019
2 parents a85dd3a + 5ef620e commit f25b015
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 67 deletions.
40 changes: 13 additions & 27 deletions bothub/api/v2/example/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,42 +18,20 @@ class Meta:
'start',
'end',
'entity',
'entity_method',
'label',
'label_method',
'created_at',
'value',
]
ref_name = None

repository_example = serializers.PrimaryKeyRelatedField(
queryset=RepositoryExample.objects,
help_text=_('Example\'s ID'))
entity = serializers.SerializerMethodField()
label = serializers.SerializerMethodField()

def get_entity(self, obj):
return obj.entity.value

def get_label(self, obj):
if not obj.entity.label:
return None
return obj.entity.label.value


class NewRepositoryExampleEntitySerializer(serializers.ModelSerializer):
class Meta:
model = RepositoryExampleEntity
fields = [
'repository_example',
'start',
'end',
'entity',
'label',
]
ref_name = None

repository_example = serializers.PrimaryKeyRelatedField(
queryset=RepositoryExample.objects,
help_text=_('Example\'s ID'),
required=False)
entity_method = serializers.SerializerMethodField(required=False)
label_method = serializers.SerializerMethodField(required=False)

entity = EntityValueField()
label = LabelValueField(
Expand All @@ -64,6 +42,14 @@ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.validators.append(EntityNotEqualLabelValidator())

def get_entity_method(self, obj):
return obj.entity.value

def get_label_method(self, obj):
if not obj.entity.label:
return None
return obj.entity.label.value

def create(self, validated_data):
repository_example = validated_data.pop('repository_example', None)
assert repository_example
Expand Down
45 changes: 11 additions & 34 deletions bothub/api/v2/repository/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

from bothub.api.v2.example.serializers import \
RepositoryExampleEntitySerializer
from bothub.api.v2.example.serializers import \
NewRepositoryExampleEntitySerializer
from bothub.api.v2.fields import TextField
from bothub.api.v2.fields import EntityText
from bothub.api.v2.repository.validators import \
Expand Down Expand Up @@ -479,6 +477,7 @@ class Meta:
model = RepositoryExample
fields = [
'id',
'repository',
'repository_update',
'deleted_in',
'text',
Expand All @@ -489,41 +488,14 @@ class Meta:
'translations',
]
read_only_fields = [
'repository_update',
'deleted_in',
]
ref_name = None

entities = RepositoryExampleEntitySerializer(
many=True,
read_only=True)
translations = RepositoryTranslatedExampleSerializer(
many=True,
read_only=True)
language = serializers.SerializerMethodField()

def get_language(self, obj):
return obj.language


class NewRepositoryExampleSerializer(serializers.ModelSerializer):
class Meta:
model = RepositoryExample
fields = [
'id',
'repository',
'repository_update',
'text',
'language',
'intent',
'entities',
]
ref_name = None

id = serializers.PrimaryKeyRelatedField(
read_only=True,
style={'show': False})
text = EntityText(style={'entities_field': 'entities'})
text = EntityText(style={'entities_field': 'entities'}, required=False)
repository = serializers.PrimaryKeyRelatedField(
queryset=Repository.objects,
validators=[
Expand All @@ -533,14 +505,19 @@ class Meta:
style={'show': False})
repository_update = serializers.PrimaryKeyRelatedField(
read_only=True,
style={'show': False})
style={'show': False}, required=False)
language = serializers.ChoiceField(
languages.LANGUAGE_CHOICES,
allow_blank=True,
required=False)
entities = NewRepositoryExampleEntitySerializer(

entities = RepositoryExampleEntitySerializer(
many=True,
style={'text_field': 'text'},
required=False)
translations = RepositoryTranslatedExampleSerializer(
many=True,
style={'text_field': 'text'})
read_only=True)

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
Expand All @@ -560,7 +537,7 @@ def create(self, validated_data):
example = self.Meta.model.objects.create(**validated_data)
for entity_data in entities_data:
entity_data.update({'repository_example': example.pk})
entity_serializer = NewRepositoryExampleEntitySerializer(
entity_serializer = RepositoryExampleEntitySerializer(
data=entity_data)
entity_serializer.is_valid(raise_exception=True)
entity_serializer.save()
Expand Down
2 changes: 0 additions & 2 deletions bothub/api/v2/repository/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@

from ..metadata import Metadata
from .serializers import RepositorySerializer
from .serializers import NewRepositoryExampleSerializer
from .serializers import RepositoryAuthorizationRoleSerializer
from .serializers import RepositoryContributionsSerializer
from .serializers import RepositoryVotesSerializer
Expand Down Expand Up @@ -354,7 +353,6 @@ class RepositoryExampleViewSet(
]

def create(self, request, *args, **kwargs):
self.serializer_class = NewRepositoryExampleSerializer
self.permission_classes = [permissions.IsAuthenticated]
return super().create(request, *args, **kwargs)

Expand Down
12 changes: 8 additions & 4 deletions bothub/api/v2/tests/test_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -1430,7 +1430,7 @@ def test_entity_has_label(self):
status.HTTP_200_OK)
entity = content_data.get('entities')[0]
self.assertIn(
'label',
'label_method',
entity.keys())

def test_entity_has_valid_label(self):
Expand All @@ -1445,10 +1445,10 @@ def test_entity_has_valid_label(self):
status.HTTP_200_OK)
entity = content_data.get('entities')[0]
self.assertIn(
'label',
'label_method',
entity.keys())
self.assertEqual(
entity.get('label'),
entity.get('label_method'),
label)


Expand Down Expand Up @@ -1580,7 +1580,11 @@ def test_okay(self):
response, content_data = self.request(
self.example,
self.owner_token,
{"text": text, "intent": intent}
{
"repository": str(self.repository.uuid),
"text": text,
"intent": intent
}
)

self.assertEqual(
Expand Down

0 comments on commit f25b015

Please sign in to comment.