Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

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

Project description

https://badge.fury.io/py/django-unity-asset-server-http-client.svg

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


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
django_unity_asset_server_http_client-0.1.5-py2-none-any.whl (16.3 kB) Copy SHA256 hash SHA256 Wheel 2.7
django-unity-asset-server-http-client-0.1.5.tar.gz (10.0 kB) Copy SHA256 hash SHA256 Source None

Supported by

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