diff --git a/README.rst b/README.rst index 9cc39ca..0d5e9c7 100644 --- a/README.rst +++ b/README.rst @@ -30,4 +30,59 @@ which will install the application into the site-packages directory. Usage ===== -TBD +Layar Developer Key +-------------------- + +If you haven't already, it is necessary to `sign up with Layar `_ to obtain an API key. + +Set ``LAYAR_DEVELOPER_KEY=''`` in settings.py + + +Creating a ``LayarView`` subclass +--------------------------------- + +django-layar provides a class-based generic view at :class:`layar.LayarView`. In order to provide your own layers +it is necessary to inherit from this view and implement two simple functions (per layer). + +The required functions are :func:`get_LAYERNAME_queryset` and :func:`poi_from_LAYERNAME_item`. + +It is possible to serve as many layers as you desire from a single Layar endpoint, just make sure that the name of your functions matches the name you provide when registering your layers with Layar.com + +:func:`get_LAYERNAME_queryset` is passed a number of arguments (see :class:`layar.LayarView` for detail) +and should return a queryset of the objects for :class:`LayarView` to paginate and return. + +:func:`poi_from_LAYERNAME_item` is called on each item being returned, and should convert items +into :class:`POI` objects. + +It is usually best to then create an instance of your derived class in your application's ``views.py`` + +Example:: + + # views.py + + from django.contrib.gis.geos import Point + from myapp.models import BusStop + from layar import LayarView, POI + + class BusStopLayar(LayarView): + + # make sure to accept **kwargs + def get_busstop_queryset(self, latitude, longitude, radius, **kwargs): + return BusStop.objects.filter(location__distance_lt=(Point(longitude, latitude), radius)) + + def poi_from_recoverygov_item(self, item): + return POI(id=item.id, lat=item.location.y, lon=item.location.x, title=item.name, + line2=item.route_name, line3='Distance: %distance%') + + # create an instance of BusStopLayar + busstop_layar = BusStopLayar() + +In urls.py it is then necessary to map a URL directly to ``busstop_layar``:: + + # urls.py + + from django.conf.urls.defaults import * + + urlpatterns = patterns('', + url(r'^layar_endpoint/$', 'myapp.views.busstop_layar'), + ) diff --git a/conf.py b/conf.py new file mode 100644 index 0000000..2849a30 --- /dev/null +++ b/conf.py @@ -0,0 +1,190 @@ +# -*- coding: utf-8 -*- +# +# django-layar documentation build configuration file, created by +# sphinx-quickstart on Fri Oct 23 10:58:10 2009. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# The contents of this file are pickled, so don't put values in the namespace +# that aren't pickleable (module imports are okay, they're removed automatically). +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If your extensions (or modules documented by autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.append(os.path.abspath('.')) + +# General configuration +# --------------------- + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['.templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'django-layar' +copyright = u'2009, James Turk' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '0.1.0' +# The full version, including alpha/beta/rc tags. +release = '0.1.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of documents that shouldn't be included in the build. +#unused_docs = [] + +# List of directories, relative to source directory, that shouldn't be searched +# for source files. +exclude_trees = ['.build'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# Options for HTML output +# ----------------------- + +# The style sheet to use for HTML and HTML Help pages. A file of that name +# must exist either in Sphinx' static/ path, or in one of the custom paths +# given in html_static_path. +html_style = 'default.css' + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['.static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_use_modindex = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, the reST sources are included in the HTML build as _sources/. +#html_copy_source = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = '' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'django-layardoc' + + +# Options for LaTeX output +# ------------------------ + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, document class [howto/manual]). +latex_documents = [ + ('index', 'django-layar.tex', ur'django-layar Documentation', + ur'James Turk', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_use_modindex = True diff --git a/index.rst b/index.rst new file mode 100644 index 0000000..e5710ce --- /dev/null +++ b/index.rst @@ -0,0 +1,22 @@ +.. django-layar documentation master file, created by sphinx-quickstart on Fri Oct 23 10:58:10 2009. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +django-layar +============ + +Contents: + +.. toctree:: + :maxdepth: 2 + + README + layar-autodoc + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/layar-autodoc.rst b/layar-autodoc.rst new file mode 100644 index 0000000..703520f --- /dev/null +++ b/layar-autodoc.rst @@ -0,0 +1,6 @@ +Module Documentation +==================== + +.. automodule:: layar + :members: +