Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions src/jsonapi/apis.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,8 @@ def setup(self, host=None, auth=None, headers=None):
if headers is not None:
self.headers = headers

def register(self, klass):
if klass.TYPE is not None:
self.registry[klass.TYPE] = klass
klass.API = self
return klass
def register_types(self, registry):
self.registry.update(registry.registry)

# Required args
def request(self, method, url,
Expand Down Expand Up @@ -131,7 +128,9 @@ def new(self, data=None, type=None, **kwargs):
# Lets make a new class on the fly
class klass(Resource):
API = self
return klass(**kwargs)
resource = klass(**kwargs)
resource.API = self
return resource

def as_resource(self, data):
""" Little convenience function when we don't know if we are dealing
Expand Down
58 changes: 42 additions & 16 deletions src/transifex_api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,60 @@

from jsonapi.exceptions import JsonApiException

_api = jsonapi.JsonApi(host="https://rest.api.transifex.com")

class Registry(object):

def setup(auth, host=None, headers=None):
_api.setup(host=host, auth=auth, headers=headers)
def __init__(self):
self.registry = {}

def register(self, klass):
if klass.TYPE is not None:
self.registry[klass.TYPE] = klass
return klass

@_api.register

_registry = Registry()


class API(object):

def __init__(self, auth, host=None, headers=None):
if not host:
host = "https://rest.api.transifex.com"
self._api = jsonapi.JsonApi(host=host,
auth=auth,
headers=headers)
self._api.register_types(_registry)


# _api = jsonapi.JsonApi(host="https://rest.api.transifex.com")
#
#
# def setup(auth, host=None, headers=None):
# _api.setup(host=host, auth=auth, headers=headers)


@_registry.register
class Organization(jsonapi.Resource):
TYPE = "organizations"


@_api.register
@_registry.register
class Team(jsonapi.Resource):
TYPE = "teams"


@_api.register
@_registry.register
class Project(jsonapi.Resource):
TYPE = "projects"


@_api.register
@_registry.register
class Language(jsonapi.Resource):
TYPE = "languages"


@_api.register
@_registry.register
class Resource(jsonapi.Resource):
TYPE = "resources"

Expand All @@ -45,18 +71,18 @@ def purge(self):
return count


@_api.register
@_registry.register
class ResourceString(jsonapi.Resource):
TYPE = "resource_strings"


@_api.register
@_registry.register
class ResourceTranslation(jsonapi.Resource):
TYPE = "resource_translations"
EDITABLE = ["strings", 'reviewed', "proofread"]


@_api.register
@_registry.register
class ResourceStringsAsyncUpload(jsonapi.Resource):
TYPE = "resource_strings_async_uploads"

Expand Down Expand Up @@ -95,7 +121,7 @@ def upload(cls, resource, content, interval=5):
upload.reload()


@_api.register
@_registry.register
class ResourceTranslationsAsyncUpload(Resource):
TYPE = "resource_translations_async_uploads"

Expand Down Expand Up @@ -139,22 +165,22 @@ def upload(cls, resource, content, language, interval=5,
upload.reload()


@_api.register
@_registry.register
class User(jsonapi.Resource):
TYPE = "users"


@_api.register
@_registry.register
class TeamMembership(jsonapi.Resource):
TYPE = "team_memberships"


@_api.register
@_registry.register
class ResourceLanguageStats(jsonapi.Resource):
TYPE = "resource_language_stats"


@_api.register
@_registry.register
class ResourceTranslationsAsyncDownload(jsonapi.Resource):
TYPE = "resource_translations_async_downloads"

Expand Down