Skip to content

Commit

Permalink
Add language field in new example
Browse files Browse the repository at this point in the history
  • Loading branch information
dougppaz committed Aug 15, 2018
1 parent 6bf480a commit 9edba5b
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 5 deletions.
20 changes: 15 additions & 5 deletions bothub/api/serializers/example.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from bothub.common.models import RepositoryExample
from bothub.common.models import RepositoryExampleEntity
from bothub.common.models import RepositoryEntity
from bothub.common import languages

from ..fields import EntityText
from ..fields import EntityValueField
Expand Down Expand Up @@ -126,8 +127,9 @@ class Meta:
'repository',
'repository_update',
'text',
'entities',
'language',
'intent',
'entities',
]

id = serializers.PrimaryKeyRelatedField(
Expand All @@ -139,11 +141,15 @@ class Meta:
validators=[
CanContributeInRepositoryValidator(),
],
source='repository_update',
write_only=True,
style={'show': False})
repository_update = serializers.PrimaryKeyRelatedField(
read_only=True,
style={'show': False})
language = serializers.ChoiceField(
languages.LANGUAGE_CHOICES,
allow_blank=True,
required=False)
entities = NewRepositoryExampleEntitySerializer(
many=True,
style={'text_field': 'text'})
Expand All @@ -152,11 +158,15 @@ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.validators.append(ExampleWithIntentOrEntityValidator())

def validate_repository(self, repository):
return repository.current_update()

def create(self, validated_data):
entities_data = validated_data.pop('entities')
repository = validated_data.pop('repository')
try:
language = validated_data.pop('language')
except KeyError as e:
language = None
repository_update = repository.current_update(language or None)
validated_data.update({'repository_update': repository_update})
example = self.Meta.model.objects.create(**validated_data)
for entity_data in entities_data:
entity_data.update({'repository_example': example.pk})
Expand Down
28 changes: 28 additions & 0 deletions bothub/api/tests/test_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from bothub.common.models import Repository
from bothub.common.models import RepositoryExample
from bothub.common.models import RepositoryExampleEntity
from bothub.common.models import RepositoryUpdate

from ..views import NewRepositoryExampleViewSet
from ..views import RepositoryExampleViewSet
Expand Down Expand Up @@ -66,6 +67,33 @@ def test_okay(self):
content_data.get('intent'),
intent)

def test_okay_with_language(self):
text = 'hi'
intent = 'greet'
language = languages.LANGUAGE_PT
response, content_data = self.request(
self.owner_token,
{
'repository': str(self.repository.uuid),
'text': text,
'language': language,
'intent': intent,
'entities': [],
})
self.assertEqual(
response.status_code,
status.HTTP_201_CREATED)
self.assertEqual(
content_data.get('text'),
text)
self.assertEqual(
content_data.get('intent'),
intent)
repository_update_pk = content_data.get('repository_update')
repository_update = RepositoryUpdate.objects.get(
pk=repository_update_pk)
self.assertEqual(repository_update.language, language)

def test_forbidden(self):
response, content_data = self.request(
self.user_token,
Expand Down

0 comments on commit 9edba5b

Please sign in to comment.