Compare commits
No commits in common. "master" and "0.1.1" have entirely different histories.
@ -2,12 +2,6 @@
|
|||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
0.2.0
|
|
||||||
================
|
|
||||||
- add custom radius handling
|
|
||||||
- made accuracy and radius optional
|
|
||||||
- new parameters: alt, search2/3, slider2/3, checkboxes
|
|
||||||
|
|
||||||
0.1.1 - March 4 2009
|
0.1.1 - March 4 2009
|
||||||
====================
|
====================
|
||||||
- fix packaging issues
|
- fix packaging issues
|
||||||
|
2
README
2
README
@ -5,7 +5,7 @@ Django generic view for making `Layar <http://layar.com>`_ endpoints.
|
|||||||
|
|
||||||
Provides abstract class that responds to Layar API requests in the appropriate format. By implementing two small functions it is possible to add a layer to the Layar augmented reality application for Android and iPhone.
|
Provides abstract class that responds to Layar API requests in the appropriate format. By implementing two small functions it is possible to add a layer to the Layar augmented reality application for Android and iPhone.
|
||||||
|
|
||||||
django-layar is a project of Sunlight Labs (c) 2010.
|
django-layar is a project of Sunlight Labs (c) 2009.
|
||||||
Written by James Turk <jturk@sunlightfoundation.com>
|
Written by James Turk <jturk@sunlightfoundation.com>
|
||||||
|
|
||||||
Source: http://github.com/sunlightlabs/django-layar/
|
Source: http://github.com/sunlightlabs/django-layar/
|
||||||
|
6
conf.py
6
conf.py
@ -42,16 +42,16 @@ master_doc = 'index'
|
|||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = u'django-layar'
|
project = u'django-layar'
|
||||||
copyright = u'2010, James Turk'
|
copyright = u'2009, James Turk'
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |version| and |release|, also used in various other places throughout the
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '0.2.0'
|
version = '0.1.0'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '0.2.0'
|
release = '0.1.0'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -36,28 +36,15 @@ class POI(object):
|
|||||||
additional lines of detail (use special token %distance% to
|
additional lines of detail (use special token %distance% to
|
||||||
display distance to POI) (<= 35 chars)
|
display distance to POI) (<= 35 chars)
|
||||||
``type``
|
``type``
|
||||||
numerical type, can set meaning when publishing Layar
|
numerical type (0-3), can set meaning when publishing Layar
|
||||||
``attribution``
|
``attribution``
|
||||||
bottom line of display, shown in small font (<= 45 chars)
|
bottom line of display, shown in small font (<= 45 chars)
|
||||||
``dimension``
|
|
||||||
changes how POI is displayed (defaults to 1)
|
|
||||||
1 - point marker (default)
|
|
||||||
2 - image used for POI
|
|
||||||
3 - 3d object used for POI
|
|
||||||
``alt``
|
|
||||||
Real altitude of object in meters.
|
|
||||||
``relative_alt``
|
|
||||||
Relative altitude (in meters) of object with respect to user.
|
|
||||||
``actions``
|
``actions``
|
||||||
list of dictionaries with ``label`` and ``uri`` keys
|
list of dictionaries with 'label' and 'uri' keys
|
||||||
as of Layar v3 the dictionaries may optionally include
|
|
||||||
``autoTriggerOnly`` and ``autoTriggerOnly``
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self, id, lat, lon, title, actions=None, image_url=None,
|
def __init__(self, id, lat, lon, title, actions=None, image_url=None,
|
||||||
line2=None, line3=None, line4=None, type=0, attribution=None,
|
line2=None, line3=None, line4=None, type=0, attribution=None):
|
||||||
dimension=1, alt=None, transform=None, object_detail=None,
|
|
||||||
relative_alt=None):
|
|
||||||
self.id = str(id)
|
self.id = str(id)
|
||||||
self.lat = lat
|
self.lat = lat
|
||||||
self.lon = lon
|
self.lon = lon
|
||||||
@ -66,24 +53,13 @@ class POI(object):
|
|||||||
self.line2 = line2 # recommended max len 35
|
self.line2 = line2 # recommended max len 35
|
||||||
self.line3 = line3
|
self.line3 = line3
|
||||||
self.line4 = line4
|
self.line4 = line4
|
||||||
self.type = type
|
self.type = type # must be 0..3
|
||||||
self.attribution = attribution # recommended max len 45
|
self.attribution = attribution # recommended max len 45
|
||||||
self.dimension = dimension
|
|
||||||
self.alt = alt
|
|
||||||
self.transform = transform
|
|
||||||
self.object = object_detail
|
|
||||||
self.relativeAlt = relative_alt
|
|
||||||
self.actions = actions
|
self.actions = actions
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
d = dict(self.__dict__)
|
d = dict(self.__dict__)
|
||||||
|
|
||||||
# don't include optional attributes if not set
|
|
||||||
remove_if_none = ('alt', 'transform', 'object', 'relativeAlt')
|
|
||||||
for k in remove_if_none:
|
|
||||||
if not d[k]:
|
|
||||||
del d[k]
|
|
||||||
|
|
||||||
# do lat/long conversion
|
# do lat/long conversion
|
||||||
if isinstance(self.lat, (float, Decimal)):
|
if isinstance(self.lat, (float, Decimal)):
|
||||||
d['lat'] = int(self.lat*1000000)
|
d['lat'] = int(self.lat*1000000)
|
||||||
@ -132,13 +108,10 @@ class LayarView(object):
|
|||||||
controls the maximum number of results across all pages (default: 50)
|
controls the maximum number of results across all pages (default: 50)
|
||||||
``verify_hash``
|
``verify_hash``
|
||||||
set to False to disable hash verification (useful for testing)
|
set to False to disable hash verification (useful for testing)
|
||||||
``default_radius``
|
|
||||||
radius to use if a radius is not passed
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
results_per_page = 15
|
results_per_page = 15
|
||||||
max_results = 50
|
max_results = 50
|
||||||
default_radius = 1000
|
|
||||||
verify_hash = True
|
verify_hash = True
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -146,9 +119,6 @@ class LayarView(object):
|
|||||||
|
|
||||||
def __call__(self, request):
|
def __call__(self, request):
|
||||||
try:
|
try:
|
||||||
# parameters from http://layar.pbworks.com/GetPointsOfInterest
|
|
||||||
|
|
||||||
# required parameters
|
|
||||||
user_id = request.GET['userId']
|
user_id = request.GET['userId']
|
||||||
developer_id = request.GET['developerId']
|
developer_id = request.GET['developerId']
|
||||||
developer_hash = request.GET['developerHash']
|
developer_hash = request.GET['developerHash']
|
||||||
@ -156,31 +126,12 @@ class LayarView(object):
|
|||||||
layer_name = request.GET['layerName']
|
layer_name = request.GET['layerName']
|
||||||
lat = float(request.GET['lat'])
|
lat = float(request.GET['lat'])
|
||||||
lon = float(request.GET['lon'])
|
lon = float(request.GET['lon'])
|
||||||
|
accuracy = int(request.GET['accuracy'])
|
||||||
# optional
|
radius = int(request.GET['radius'])
|
||||||
accuracy = request.GET.get('accuracy')
|
|
||||||
if accuracy:
|
|
||||||
accuracy = int(accuracy)
|
|
||||||
radius = request.GET.get('radius')
|
|
||||||
if radius:
|
|
||||||
radius = int(radius)
|
|
||||||
alt = request.GET.get('alt')
|
|
||||||
if alt:
|
|
||||||
alt = int(alt)
|
|
||||||
page = int(request.GET.get('pageKey', 0))
|
|
||||||
|
|
||||||
# user defined UI elements
|
|
||||||
radio_option = request.GET.get('RADIOLIST')
|
radio_option = request.GET.get('RADIOLIST')
|
||||||
search = request.GET.get('SEARCHBOX')
|
search = request.GET.get('SEARCHBOX')
|
||||||
search2 = request.GET.get('SEARCHBOX_2')
|
|
||||||
search3 = request.GET.get('SEARCHBOX_3')
|
|
||||||
slider = request.GET.get('CUSTOM_SLIDER')
|
slider = request.GET.get('CUSTOM_SLIDER')
|
||||||
slider2 = request.GET.get('CUSTOM_SLIDER_2')
|
page = int(request.GET.get('pageKey', 0))
|
||||||
slider3 = request.GET.get('CUSTOM_SLIDER_3')
|
|
||||||
checkboxes = request.GET.get('CHECKBOXLIST')
|
|
||||||
if checkboxes:
|
|
||||||
checkboxes = checkboxes.split(',')
|
|
||||||
|
|
||||||
except KeyError, e:
|
except KeyError, e:
|
||||||
return HttpResponseBadRequest('missing required parameter: %s' % e)
|
return HttpResponseBadRequest('missing required parameter: %s' % e)
|
||||||
|
|
||||||
@ -203,10 +154,7 @@ class LayarView(object):
|
|||||||
|
|
||||||
qs = qs_func(latitude=lat, longitude=lon, radius=radius,
|
qs = qs_func(latitude=lat, longitude=lon, radius=radius,
|
||||||
radio_option=radio_option, search_query=search,
|
radio_option=radio_option, search_query=search,
|
||||||
search_query2=search2, search_query3=search3,
|
slider_value=slider)[:self.max_results]
|
||||||
slider_value=slider, slider_value2=slider2,
|
|
||||||
slider_value3=slider3, checkboxes=checkboxes)
|
|
||||||
qs = qs[:self.max_results]
|
|
||||||
|
|
||||||
# do pagination if results_per_page is set
|
# do pagination if results_per_page is set
|
||||||
if self.results_per_page:
|
if self.results_per_page:
|
||||||
@ -229,10 +177,6 @@ class LayarView(object):
|
|||||||
pois = [poi_func(item) for item in qs]
|
pois = [poi_func(item) for item in qs]
|
||||||
layar_response['hotspots'] = [poi.to_dict() for poi in pois]
|
layar_response['hotspots'] = [poi.to_dict() for poi in pois]
|
||||||
|
|
||||||
# if radius wasn't sent pass back the radius used
|
|
||||||
if not radius:
|
|
||||||
layar_response['radius'] = self.default_radius
|
|
||||||
|
|
||||||
except LayarException, e:
|
except LayarException, e:
|
||||||
layar_response['errorCode'] = e.code
|
layar_response['errorCode'] = e.code
|
||||||
layar_response['errorString'] = e.message
|
layar_response['errorString'] = e.message
|
||||||
|
2
setup.py
2
setup.py
@ -4,7 +4,7 @@ long_description = open('README').read()
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='django-layar',
|
name='django-layar',
|
||||||
version="0.2.0",
|
version="0.1.0",
|
||||||
package_dir={'layar': 'layar'},
|
package_dir={'layar': 'layar'},
|
||||||
packages=['layar'],
|
packages=['layar'],
|
||||||
description='helper for publishing data to Layar augmented reality browser from Django',
|
description='helper for publishing data to Layar augmented reality browser from Django',
|
||||||
|
Loading…
Reference in New Issue
Block a user