From a7242e8c315757dacc99020b99913dba3f15f6da Mon Sep 17 00:00:00 2001 From: Sandro-Meireles Date: Fri, 30 Apr 2021 16:09:28 -0300 Subject: [PATCH] feat: Reposutory train languages API --- bothub/api/v2/nlp/views.py | 55 ++++++++++++++++++++++++++++++++++++-- bothub/api/v2/routers.py | 4 +++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/bothub/api/v2/nlp/views.py b/bothub/api/v2/nlp/views.py index db6bdeaf5..0e21a59ab 100644 --- a/bothub/api/v2/nlp/views.py +++ b/bothub/api/v2/nlp/views.py @@ -64,8 +64,10 @@ def retrieve(self, request, *args, **kwargs): repository_version = request.query_params.get("repository_version") if repository_version: - current_version = repository_authorization.repository.get_specific_version_id( - repository_version, str(request.query_params.get("language")) + current_version = ( + repository_authorization.repository.get_specific_version_id( + repository_version, str(request.query_params.get("language")) + ) ) else: current_version = repository_authorization.repository.current_version( @@ -199,6 +201,55 @@ def training_log(self, request, **kwargs): return Response({}) +class RepositoryAuthorizationTrainLanguagesViewSet( + mixins.RetrieveModelMixin, GenericViewSet +): + queryset = RepositoryAuthorization.objects + serializer_class = NLPSerializer + permission_classes = [AllowAny] + pagination_class = NLPPagination + authentication_classes = [NLPAuthentication] + + def retrieve(self, request, *args, **kwargs): + check_auth(request) + repository_authorization = self.get_object() + + if not repository_authorization.can_contribute: + raise PermissionDenied() + + repository_version = request.query_params.get("repository_version") + + response = [] + + for language in settings.SUPPORTED_LANGUAGES: + + if repository_version: + current_version = ( + repository_authorization.repository.get_specific_version_id( + repository_version, language + ) + ) + else: + current_version = repository_authorization.repository.current_version( + language + ) + + if current_version.ready_for_train: + response.append( + { + "current_version_id": current_version.id, + "repository_authorization_user_id": repository_authorization.user.id, + "language": current_version.language, + "algorithm": current_version.repository_version.repository.algorithm, + "use_name_entities": current_version.repository_version.repository.use_name_entities, + "use_competing_intents": current_version.repository_version.repository.use_competing_intents, + "use_analyze_char": current_version.repository_version.repository.use_analyze_char, + } + ) + + return Response(response) + + class RepositoryAuthorizationParseViewSet(mixins.RetrieveModelMixin, GenericViewSet): queryset = RepositoryAuthorization.objects serializer_class = NLPSerializer diff --git a/bothub/api/v2/routers.py b/bothub/api/v2/routers.py index 75d4c8482..7ba68a857 100644 --- a/bothub/api/v2/routers.py +++ b/bothub/api/v2/routers.py @@ -37,6 +37,7 @@ RepositoryAuthorizationKnowledgeBaseViewSet, RepositoryAuthorizationExamplesViewSet, RepositoryAuthorizationAutomaticEvaluateViewSet, + RepositoryAuthorizationTrainLanguagesViewSet, ) from .nlp.views import RepositoryAuthorizationParseViewSet from .nlp.views import RepositoryAuthorizationInfoViewSet @@ -187,6 +188,9 @@ def get_lookup_regex(self, viewset, lookup_prefix=""): router.register( "repository/nlp/authorization/train", RepositoryAuthorizationTrainViewSet ) +router.register( + "repository/nlp/authorization/train-languages", RepositoryAuthorizationTrainLanguagesViewSet +) router.register( "repository/nlp/authorization/parse", RepositoryAuthorizationParseViewSet )