Skip to main content

REST-api bases over unity asset server for some routines.

Project description

LICENSE

MIT

Requirements

  • python 2.7
  • django 1.6+
  • djangorestframework 2.4.3+
  • django-filter 0.8

Quick start

  1. Add “duashttp” to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = (
        ...
        'duashttp',
    )
    

2. Add unity asset server router in your INSTALLED_APPS settings and configure access to unity asset server access.

DATABASE_ROUTERS = ['duashttp.router.UnityAssetServerRouter', ]
DATABASES = {
   'default': {
     'ENGINE': 'django.db.backends.sqlite3',
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   },
   'unity_asset_server': {
      'ENGINE': 'django.db.backends.postgresql_psycopg2',
      'NAME': 'game_project_database_name',
      'USER': 'admin',
      'PASSWORD': 'admin_password',
      'HOST': '192.168.0.1',  # There UNITY asset server is placed on
      'PORT': '10733'  # standard unity asset server port number
    }
}

3. Manage your settings.py with django restframe work settings to get optimal config:

REST_FRAMEWORK = {
 'PAGINATE_BY': 10,
 'PAGINATE_BY_PARAM': 'page_size',
 # Maximum limit allowed when using `?page_size=xxx`.
 'MAX_PAGINATE_BY': 100,
 'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.BasicAuthentication',
     'rest_framework.authentication.SessionAuthentication',
 ),
 'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',)
}
  1. Apply your custom view sets or use existent and include them in “urls.py”:
# -*- views.py -*-
from duashttp.views.api import AssetVersionViewSetBase

from rest_framework.decorators import list_route
from rest_framework.response import Response

from django.db.models import Q


class AssetVersionViewSet(AssetVersionViewSetBase):
    """ AssetVersion view set """
    @list_route()
    def configs(self, request):
        """get xml configs with their last revision"""
        qset = (
            Q(name__icontains='.xml') &
            ~Q(name__icontains='(DEL_') &
            ~Q(name__icontains='~$')
        )
        xml_docs = self.queryset.filter(qset).order_by(
            'name', '-revision').distinct('name')
        docs = self.filter_queryset(xml_docs)
        page = self.paginate_queryset(docs)
        serializer = self.get_pagination_serializer(page)
        return Response(serializer.data)
# -*- urls.py -*-
from django.conf.urls import patterns, include, url
from views import *
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'asset_versions', AssetVersionViewSet)


urlpatterns = patterns('',
    # Examples:
    url(r'^api/', include(router.urls)),
    url(r'^api/', include(router.urls, namespace='api')),
)
  1. Start the development server and visit http://127.0.0.1:8000/api/ to see available api calls.

Models

You can fetch data from unity asset server (based on posgres 8.3) using this:

>>> from duashttp.models import AssetVersion
>>> versions = AssetVersion.objects.filter(name__icontains='Actions.xml')
>>> versions
... [<AssetVersion: Actions.xml [46]>, <AssetVersion: Actions.xml [45]>,
... <AssetVersion: Actions.xml [44]>, <AssetVersion: Actions.xml [43]>,
... <AssetVersion: Actions.xml [42]>, <AssetVersion: Actions.xml [41]>,
... <AssetVersion: Actions.xml [40]>, <AssetVersion: Actions.xml [39]>,
... <AssetVersion: Actions.xml [38]>, <AssetVersion: Actions.xml [37]>,
... <AssetVersion: Actions.xml [36]>, <AssetVersion: Actions.xml [35]>,
... <AssetVersion: Actions.xml [34]>, '...(remaining elements truncated)...']
>>> version = versions.get(revision=45)
>>> print(version.get_blob_data())
... <?xml version="1.0" encoding="utf-8"?>
... <DocumentElement>
...     <Data_Table>
...         <id>1</id>
...         <num>1</num>
...         <prefab_name />
...         <small_prefab_name>SmallAction_gems_3_dollar</small_prefab_name>
...         <icon_sprite>lucky_gem</icon_sprite>
...         <is_small_action>1</is_small_action>
...         <is_big_action />
...         <is_top_panel_action />
...         <move_to_window />
...         <affected_id />
...         <appear_date>27/10/2014 08:00</appear_date>
...         <start_date>27/10/2014 08:00</start_date>
...         <end_date>31/10/2014 08:00</end_date>
...         <expire_date>31/10/2014 08:00</expire_date>
...         <source />
...         <patch />
...         <bind_id />
...     </Data_Table>
... </DocumentElement>

Project details


Release history Release notifications

This version
History Node

0.1.5

History Node

0.1.4

History Node

0.1.3

History Node

0.1.2

History Node

0.1.1

History Node

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
django-unity-asset-server-http-client-0.1.5.linux-x86_64.tar.gz (13.8 kB) Copy SHA256 hash SHA256 Dumb Binary any Jun 5, 2015
django_unity_asset_server_http_client-0.1.5-py2-none-any.whl (16.3 kB) Copy SHA256 hash SHA256 Wheel 2.7 Jun 5, 2015
django-unity-asset-server-http-client-0.1.5.tar.gz (10.0 kB) Copy SHA256 hash SHA256 Source None Jun 5, 2015

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page