Metadata-Version: 2.1
Name: txlib-too
Version: 0.1.2
Summary: A python library for Transifex
Home-page: http://www.eventbrite.com
Author: eb-pypi
Author-email: eb-pypi@eventbrite.com
License: LGPL3
Keywords: translation,localization,internationalization
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: requests
Requires-Dist: six

Transifex Python Library
========================

This library is a wrapper around the Transifex API, built to provide a
simpler interface to users of the API.

At this moment, it supports only a subset of the endpoints of the API.
In particular, it allows certain operations on Projects, Resources and
Translations.

Usage
-----

Initialization
~~~~~~~~~~~~~~

Before making any requests, you need to setup the HTTP handler, which
will be used for all subsequent requests.

Authentication works both with username/password or with an API token.

.. code:: python

    from txlib_too.http.auth import BasicAuth
    from txlib_too.http.http_requests import HttpRequest
    from txlib_too.registry import registry

    credentials = BasicAuth(username='api', password='')

    host = 'https:/www.transifex.com/'
    conn = HttpRequest(host, auth=credentials)
    registry.setup({'http_handler': conn})


Projects
~~~~~~~~

TODO

Resources
~~~~~~~~~

Get resource
^^^^^^^^^^^^

.. code:: python

    from txlib_too.api.resources import Resource
    from txlib_too.http.exceptions import NotFoundError, ServerError

    try:
        r = Resource.get(project_slug='project_slug', slug='resource_slug')
        print(r.slug) # 'resource_slug'
    except NotFoundError:
        print('Resource not found')
    except ServerError as e:
        print('Exception while retrieving resource: {}'.format(e))


Create/update resource
^^^^^^^^^^^^^^^^^^^^^^

.. code:: python

    from txlib_too.api.resources import Resource
    from txlib_too.http.exceptions import NotFoundError, ServerError

    try:
        r = Resource.get(project_slug='project_slug', slug='resource_slug')
        # Resource exists, update it
        # Not all fields are allowed here. For example, if i18n_type
        # is provided, the request will fail with a 400 error
        try:
            r.save(content='{"key1": "text1"}')
        except ServerError as e:
            print('Exception while updating resource: {}'.format(e))

    except NotFoundError:
        # Resource does not exist, create one now
        try:
            r = Resource(project_slug='project_slug', slug='resource_slug')
            r.save(name='R1', i18n_type='KEYVALUEJSON', content='{"key1": "text1"}')
        except ServerError as e:
            print('Exception while creating resource: {}'.format(e))

    except ServerError as e:
        print('Exception while retrieving resource: {}'.format(e))

Alternatively, instead of passing all parameters to :code:`save()`, you can
do the following:

.. code:: python

    r = Resource.get(...)
    r.name = '...'
    r.i18n_type = '...'
    r.content = '...'
    r.save()


Translations
~~~~~~~~~~~~

Get translation
^^^^^^^^^^^^^^^
.. code:: python

    from txlib_too.api.translations import Translation
    from txlib_too.http.exceptions import NotFoundError, ServerError

    try:
        t = Translation.get(project_slug='project_slug', slug='resource_slug', lang='translation_language')
        print(t.lang) # 'translation_language'
    except NotFoundError:
        print('Translation not found')
    except ServerError as e:
        print('Exception while retrieving translation: {}'.format(e))


Create/update translation
^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: python

    from txlib_too.api.translations import Translation
    from txlib_too.http.exceptions import NotFoundError, ServerError

    try:
        t = Translation(
            project_slug=project_slug, slug=resource_slug, lang=language_code
        )
        t.save(content=content)
    except ServerError as e:
        print('Exception while retrieving translation: {}'.format(e))

