def put(self, id):
        """
        HTTP PUT method
        :param id: translation object id
        :return: JSON data
        """
        try:
            request_data = RequestDataValidator(
                'update_translation',
                {'id': id, **request.get_json()}
            ).validate()

            t_object = TranslationObject.objects.get({'_id': request_data.get('id')})

            t_object.object_key = request_data.get('object_key')
            t_object.object_data = request_data.get('object_data')

            language = Language.get_by_alias(request_data.get('lang'))

            if not language:
                return {'errors': {'language': ['Language does not exist']}}, 404

            t_object.save()

            return to_safe_dict(t_object)
        except TranslationObject.DoesNotExist:
            return {'errors': {'translation': ['TranslationObject does not exist']}}, 404
        except DataValidationError as exc:
            return {'errors': exc.errors}, 400
    def post(self):
        """
        HTTP POST method
        :return: JSON data
        """
        try:
            created_translations = []

            request_data = RequestDataValidator('add_translation', request.get_json()).validate()
            lang, objects = request_data.values()

            language = Language.get_by_alias(lang)
            if not language:
                return {'errors': {'language': ['Language does not exist']}}, 404

            for object_key, object_data in objects.items():
                translation_object = TranslationObject(
                    language=language,
                    object_key=object_key,
                    object_data=object_data,
                    status=TranslationStatus.TRANSLATED_MANUALLY.value
                ).save()

                created_translations.append(translation_object)

            return [to_safe_dict(trans) for trans in created_translations]

        except DataValidationError as exc:
            return {'errors': exc.errors}, 400
        except Exception as exc:
            return {'errors': [str(exc)]}, 500
Esempio n. 3
0
    def put(self, id):
        """
        HTTP PUT method
        :param id: language id
        :return: JSON data
        """
        editable_fields = ['alias', 'label', 'parent']

        try:
            request_data = RequestDataValidator(
                'update_language',
                {'id': id, **request.get_json()}
            ).validate()

            language = Language.objects.get({'_id': request_data.get('id')})

            for field in editable_fields:
                setattr(language, field, request_data.get(field))

            language.save()

            return to_safe_dict(language)
        except DataValidationError as exc:
            return {'errors': exc.errors}, 400
        except Language.DoesNotExist:
            return {'errors': {'language': ['Language does not exist']}}, 404
        except DuplicateKeyError:
            return {'errors': {'alias': ['Language with same alias already exists.']}}, 409
Esempio n. 4
0
    def get(self, id=None):
        """
        HTTP GET method
        :param id: language id
        :return: JSON data
        """
        if not id:
            return [to_safe_dict(lang) for lang in Language.objects.all()]

        try:
            request_data = RequestDataValidator(
                'get_language',
                {'id': id}
            ).validate()

            language = Language.objects.get({'_id': request_data.get('id')})

            return to_safe_dict(language)
        except Language.DoesNotExist:
            return {'errors': {'language': ['Language does not exist']}}, 404
        except DataValidationError as exc:
            return {'errors': exc.errors}, 400
Esempio n. 5
0
    def post(self):
        """
        HTTP POST method
        :return: JSON data
        """
        try:
            request_data = RequestDataValidator('create_language', request.get_json()).validate()
            language = Language(**request_data).save()

            return to_safe_dict(language)
        except DataValidationError as exc:
            return {'errors': exc.errors}, 400
        except DuplicateKeyError:
            return {'errors': {'alias': ['Language with same alias already exists.']}}, 409
    def get(self, id=None):
        """
        HTTP GET method
        :param id: translation object id
        :return: JSON data
        """
        if id:
            return _get_translation_object_by_id(id)

        try:
            request_data = dict(request.args)

            if not request_data:
                return [to_safe_dict(trans) for trans in TranslationObject.objects.all()]

            request_data = RequestDataValidator(
                'filter_translations',
                request_data
            ).validate()

            filters = _create_filters(request_data)
            return [to_safe_dict(trans) for trans in TranslationObject.objects.raw(filters)]
        except DataValidationError as exc:
            return {'errors': exc.errors}, 400
def _get_translation_object_by_id(object_id):
    """
    Get Translation object data by given ObjectId
    :param object_id: bson.ObjectId of TranslationObject
    :return: dict
    """
    try:
        request_data = RequestDataValidator(
            'get_translation',
            {'id': object_id}
        ).validate()

        t_object = TranslationObject.objects.get({'_id': request_data.get('id')})

        return to_safe_dict(t_object)
    except TranslationObject.DoesNotExist:
        return {'errors': {'translation': ['TranslationObject does not exist']}}, 404
    except DataValidationError as exc:
        return {'errors': exc.errors}, 400