Commits

Stefan Scherfke committed ca3ab74

Comments (0)

Files changed (20)

CHANGELOG.txt

-
-Changelog for django-lastfm
-===========================
-
-Version 0.1.2 – 2010-01-12:
----------------------------
-
-- [FIX] Fixed an error that occured when there is only one top artist.
-
-
-Version 0.1.1 – 2009-10-04:
----------------------------
-
-- [NEW] Documentation (Yeah!)
-- [NEW] Added setup.py
-- [CHANGE] Moved app to *lastfm/*
-- [FIX] Added try/except around urllib-calls
-
-
-Version 0.1 – 2009-11-24:
--------------------------
-
-- [NEW] Initial release
+
+Changelog for django-lastfm
+===========================
+
+v0.1.2 – 2010-01-12:
+--------------------
+
+- [FIX] Fixed an error that occured when there is only one top artist.
+
+
+v0.1.1 – 2009-10-04:
+--------------------
+
+- [NEW] Documentation (Yeah!)
+- [NEW] Added setup.py
+- [CHANGE] Moved app to *lastfm/*
+- [FIX] Added try/except around urllib-calls
+
+
+v0.1 – 2009-11-24:
+------------------
+
+- [NEW] Initial release
-recursive-include lastfm/templates *
+include *.txt
+recursive-include docs *
+recursive-include lastfm/templates *
 ------------
 
 This app is tested with Django 1.1. It might also work with older versions, but
-I haven’t tested it. 
-`Setuptools <http://pypi.python.org/pypi/setuptools>`_ is required to install 
-this app.
+I haven’t tested it.
 
 If you want to run the tests, you’ll need to install `Mock 
 <http://www.voidspace.org.uk/python/mock/>`_.
 If you checked out the repository and always want to use the newest version,
 type::
 
-    python setup.py develop
+    pip install -e path/to/django-lastfm
     
 
 Usage

doc/Makefile

-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
-BUILDDIR      = _build
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
-
-help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html      to make standalone HTML files"
-	@echo "  dirhtml   to make HTML files named index.html in directories"
-	@echo "  pickle    to make pickle files"
-	@echo "  json      to make JSON files"
-	@echo "  htmlhelp  to make HTML files and a HTML help project"
-	@echo "  qthelp    to make HTML files and a qthelp project"
-	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  changes   to make an overview of all changed/added/deprecated items"
-	@echo "  linkcheck to check all external links for integrity"
-	@echo "  doctest   to run all doctests embedded in the documentation (if enabled)"
-
-clean:
-	-rm -rf $(BUILDDIR)/*
-
-html:
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
-	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-pickle:
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-json:
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
-	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
-	@echo
-	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
-	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/django-lastfm.qhcp"
-	@echo "To view the help file:"
-	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/django-lastfm.qhc"
-
-latex:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
-	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
-	      "run these through (pdf)latex."
-
-changes:
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
-	@echo
-	@echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
-	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
-	@echo "Testing of doctests in the sources finished, look at the " \
-	      "results in $(BUILDDIR)/doctest/output.txt."

doc/conf.py

-# -*- coding: utf-8 -*-
-#
-# django-lastfm documentation build configuration file, created by
-# sphinx-quickstart on Fri Nov 27 10:35:57 2009.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# 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
-from django.conf import settings
-settings.configure()
-
-# If extensions (or modules to document with 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('.'))
-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 = '.txt'
-
-# The encoding of source files.
-#source_encoding = 'utf-8'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'django-lastfm'
-copyright = u'2009, Stefan Scherfke'
-
-# 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'
-# The full version, including alpha/beta/rc tags.
-release = '0.1'
-
-# 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'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  Major themes that come with
-# Sphinx are currently 'default' and 'sphinxdoc'.
-html_theme = 'default'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> 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, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> 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-lastfmdoc'
-
-
-# -- 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, documentclass [howto/manual]).
-latex_documents = [
-  ('index', 'django-lastfm.tex', u'django-lastfm Documentation',
-   u'Stefan Scherfke', '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

doc/index.txt

-.. django-lastfm documentation master file, created by
-   sphinx-quickstart on Fri Nov 27 10:35:57 2009.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
-Welcome to django-lastfm's documentation!
-=========================================
-
-Contents:
-
-.. toctree::
-    :maxdepth: 2
-   
-    quickstart
-    ref/index
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-

doc/quickstart.txt

-.. _quickstart:
-
-Quickstart Guide
-================
-
-This guide assumes that you already have a `Django
-<http://www.djangoproject.com/>`_ installation up and running. If this is not
-the case, you should work through the `Django tutorial
-<http://docs.djangoproject.com/en/dev/intro/install/#intro-install>`_ first.
-
-
-Get a Last.fm API key
----------------------
-
-In order to use the Last.fm web services, you’ll need an API key. You can get
-one `here <http://www.last.fm/api/account>`_ – it’s free for non-commercial use.
-
-
-Installation
-------------
-
-This app requires `Setuptools <http://pypi.python.org/pypi/setuptools>`_ for
-installation. Optionally, If you want to run the tests, you need to install
-`Mock <http://www.voidspace.org.uk/python/mock/>`_.
-
-You can either `download a stable version
-<http://bitbucket.org/scherfke/django-lastfm/downloads/>`_ or use the latest
-version from the `repository <http://bitbucket.org/scherfke/django-lastfm/src/>`_.
-
-If you downloaded the stable version, unpack it and open a terminal. Change to
-the directory that contains *django-lastfm’s* ``setup.py`` and execute it as
-follows:
-
-.. sourcecode:: bash
-
-    $ cd where/you/put/django-lastfm/
-    $ sudo python setup.py install
-    
-If you want the bleeding edge, clone the repository and install it in
-development mode. This will create just a link in your ``site packages`` that
-points to your local repository:
-
-.. sourcecode:: bash
-
-    $ hg clone http://bitbucket.org/scherfke/django-lastfm/
-    $ cd django-lastfm/
-    $ sudo python setup.py develop
-    
-With this done, all you need to do to upgrade your installation of *django-lastfm* is to type:
-
-.. sourcecode:: bash
-
-   $ hg pull -u
-   
-
-Setup
------
-   
-Add ``'lastfm'`` to your ``INSTALLED_APPS`` within your 
-``settings.py`` and add the following line to your project’s ``urls.py``:
-   
-.. sourcecode:: python
-
-    url(r'^lastfm/', 'lastfm.views.lastfm_data', name='lastfm'),
-
-
-Configuration
--------------
-
-Add the following variables to your ``settings.py``::
-
-    LASTFM_USER = 'your_lastfm_username'
-    LASTFM_API_KEY = 'your_api_key'
-    # Available types: recent_tracks, weekly_top_artists, top_artists
-    LASTFM_CHART_TYPE = 'top_artists'
-    LASTFM_WIDGET_TITLE = 'Weekly Top Artists'
-    LASTFM_NUM_IMAGES = '12'
-    LASTFM_TOP_ARTISTS_PERIOD = '7day'
-    # Available sizes: small, medium, large, extralarge
-    LASTFM_IMG_SIZE = 'large'
-    
-Most of them should be very self-explanatory. ``LASTFM_TOP_ARTISTS_PERIOD`` is
-only required for the ``top_artist`` chart type.
-
-
-Add the widget to your templates
---------------------------------
-
-*Django-lastfm* provides a template tag that inserts the widget to the context
-of your template (e.g. ``base.html``):
-
-.. sourcecode:: html+django
-
-    {% load lastfm_widget %}
-    
-    <!-- ... -->
-    
-    {% get_lastfm_widget as lastfm_widget %}
-    <h2>{{ lastfm_widget.title }}</h2>
-    {{ lastfm_widget.content }}
-    
-    <!-- ... -->
-    
-The template tag ``get_lastfm_widget`` creates a new context variable whose name
-can be chosen as you want (e.g. ``lastfm_widget``). It has two attributes:
-``title`` contains the string, that you specified in your ``settings.py``;
-``content`` contains a ``<div>`` container and some AJAX code that retrieves the
-Last.fm data from the corresponding view and creates something like this:
-
-.. sourcecode:: html
-
-    <div class="lastfm">
-        <div><a><img /></a></div>
-        <div><a><img /></a></div>
-        <!-- ... -->
-    </div>
-    
-The surrounding ``<div>`` has the CSS class *lastfm*. You can use this to
-customize the style of the widget. Here is an example:
-
-.. sourcecode:: css
-
-    #sidebar > #lastfm {
-        min-height: 225px; /* required due to "float: left" in the next sec. */
-    }
-
-    #sidebar #lastfm div {
-        width: 54px;
-        height: 39px;
-        overflow: hidden;
-        float: left;
-        border: 1px solid white;
-        -moz-border-radius: 2px;
-        -khtml-border-radius: 2px;
-        border-radius: 2px;
-        margin: 0px 2px 4px 2px;
-    }
-
-    #sidebar #lastfm div:active, #sidebar #lastfm div:hover {
-        border-color: #9FC765;
-    }
-
-    #sidebar #lastfm img {
-        width: 54px;
-        min-height: 39px;
-    }
-    
-A word on caching
------------------
-
-*TODO*
-
-
-That’s it!
-----------
-
-Reload your webserver and that’s it!

doc/ref/index.txt

-.. _ref-index:
-
-API-Reference
-=============
-
-.. toctree::
-    :maxdepth: 1
-    
-    templatetags
-    views

doc/ref/templatetags.txt

-.. ref-templatetags:
-
-Template Tags
-=============
-
-Django-lastfm contains only one template tag in :mod:`lastfm.templatetags.lastfm_widget` that is used to load a context object
-with all necessary data.
-
-Usage of the template tag
--------------------------
-
-.. automodule:: lastfm.templatetags.lastfm_widget
-
-
-Implementation
---------------
-
-As for every template tag, there is a compilation function (:func:`get_lastfm_widget`) and a renderer (:class:`LastfmWidgetNode`) that do all the work.
-
-.. autoclass:: LastfmWidgetNode
-
-.. autofunction:: get_lastfm_widget

doc/ref/views.txt

-.. _ref-views:
-
-Views
-=====
-
-.. automodule:: lastfm.views
-
-.. autofunction:: lastfm_data
-
-.. autoclass:: RecentTracks
-
-.. autoclass:: WeeklyTopArtists
-
-.. autoclass:: TopArtists
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html      to make standalone HTML files"
+	@echo "  dirhtml   to make HTML files named index.html in directories"
+	@echo "  pickle    to make pickle files"
+	@echo "  json      to make JSON files"
+	@echo "  htmlhelp  to make HTML files and a HTML help project"
+	@echo "  qthelp    to make HTML files and a qthelp project"
+	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  changes   to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck to check all external links for integrity"
+	@echo "  doctest   to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/django-lastfm.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/django-lastfm.qhc"
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+	      "run these through (pdf)latex."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
+# -*- coding: utf-8 -*-
+#
+# django-lastfm documentation build configuration file, created by
+# sphinx-quickstart on Fri Nov 27 10:35:57 2009.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# 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
+from django.conf import settings
+settings.configure()
+
+# If extensions (or modules to document with 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('.'))
+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 = '.txt'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'django-lastfm'
+copyright = u'2009, Stefan Scherfke'
+
+# 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'
+# The full version, including alpha/beta/rc tags.
+release = '0.1'
+
+# 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'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> 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, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> 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-lastfmdoc'
+
+
+# -- 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, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'django-lastfm.tex', u'django-lastfm Documentation',
+   u'Stefan Scherfke', '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
+.. django-lastfm documentation master file, created by
+   sphinx-quickstart on Fri Nov 27 10:35:57 2009.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to django-lastfm's documentation!
+=========================================
+
+Contents:
+
+.. toctree::
+    :maxdepth: 2
+   
+    quickstart
+    ref/index
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+

docs/quickstart.txt

+.. _quickstart:
+
+Quickstart Guide
+================
+
+This guide assumes that you already have a `Django
+<http://www.djangoproject.com/>`_ installation up and running. If this is not
+the case, you should work through the `Django tutorial
+<http://docs.djangoproject.com/en/dev/intro/install/#intro-install>`_ first.
+
+
+Get a Last.fm API key
+---------------------
+
+In order to use the Last.fm web services, you’ll need an API key. You can get
+one `here <http://www.last.fm/api/account>`_ – it’s free for non-commercial use.
+
+
+Installation
+------------
+
+This app requires `Setuptools <http://pypi.python.org/pypi/setuptools>`_ for
+installation. Optionally, If you want to run the tests, you need to install
+`Mock <http://www.voidspace.org.uk/python/mock/>`_.
+
+You can either `download a stable version
+<http://bitbucket.org/scherfke/django-lastfm/downloads/>`_ or use the latest
+version from the `repository <http://bitbucket.org/scherfke/django-lastfm/src/>`_.
+
+If you downloaded the stable version, unpack it and open a terminal. Change to
+the directory that contains *django-lastfm’s* ``setup.py`` and execute it as
+follows:
+
+.. sourcecode:: bash
+
+    $ cd where/you/put/django-lastfm/
+    $ sudo python setup.py install
+    
+If you want the bleeding edge, clone the repository and install it in
+development mode. This will create just a link in your ``site packages`` that
+points to your local repository:
+
+.. sourcecode:: bash
+
+    $ hg clone http://bitbucket.org/scherfke/django-lastfm/
+    $ cd django-lastfm/
+    $ sudo python setup.py develop
+    
+With this done, all you need to do to upgrade your installation of *django-lastfm* is to type:
+
+.. sourcecode:: bash
+
+   $ hg pull -u
+   
+
+Setup
+-----
+   
+Add ``'lastfm'`` to your ``INSTALLED_APPS`` within your 
+``settings.py`` and add the following line to your project’s ``urls.py``:
+   
+.. sourcecode:: python
+
+    url(r'^lastfm/', 'lastfm.views.lastfm_data', name='lastfm'),
+
+
+Configuration
+-------------
+
+Add the following variables to your ``settings.py``::
+
+    LASTFM_USER = 'your_lastfm_username'
+    LASTFM_API_KEY = 'your_api_key'
+    # Available types: recent_tracks, weekly_top_artists, top_artists
+    LASTFM_CHART_TYPE = 'top_artists'
+    LASTFM_WIDGET_TITLE = 'Weekly Top Artists'
+    LASTFM_NUM_IMAGES = '12'
+    LASTFM_TOP_ARTISTS_PERIOD = '7day'
+    # Available sizes: small, medium, large, extralarge
+    LASTFM_IMG_SIZE = 'large'
+    
+Most of them should be very self-explanatory. ``LASTFM_TOP_ARTISTS_PERIOD`` is
+only required for the ``top_artist`` chart type.
+
+
+Add the widget to your templates
+--------------------------------
+
+*Django-lastfm* provides a template tag that inserts the widget to the context
+of your template (e.g. ``base.html``):
+
+.. sourcecode:: html+django
+
+    {% load lastfm_widget %}
+    
+    <!-- ... -->
+    
+    {% get_lastfm_widget as lastfm_widget %}
+    <h2>{{ lastfm_widget.title }}</h2>
+    {{ lastfm_widget.content }}
+    
+    <!-- ... -->
+    
+The template tag ``get_lastfm_widget`` creates a new context variable whose name
+can be chosen as you want (e.g. ``lastfm_widget``). It has two attributes:
+``title`` contains the string, that you specified in your ``settings.py``;
+``content`` contains a ``<div>`` container and some AJAX code that retrieves the
+Last.fm data from the corresponding view and creates something like this:
+
+.. sourcecode:: html
+
+    <div class="lastfm">
+        <div><a><img /></a></div>
+        <div><a><img /></a></div>
+        <!-- ... -->
+    </div>
+    
+The surrounding ``<div>`` has the CSS class *lastfm*. You can use this to
+customize the style of the widget. Here is an example:
+
+.. sourcecode:: css
+
+    #sidebar > #lastfm {
+        min-height: 225px; /* required due to "float: left" in the next sec. */
+    }
+
+    #sidebar #lastfm div {
+        width: 54px;
+        height: 39px;
+        overflow: hidden;
+        float: left;
+        border: 1px solid white;
+        -moz-border-radius: 2px;
+        -khtml-border-radius: 2px;
+        border-radius: 2px;
+        margin: 0px 2px 4px 2px;
+    }
+
+    #sidebar #lastfm div:active, #sidebar #lastfm div:hover {
+        border-color: #9FC765;
+    }
+
+    #sidebar #lastfm img {
+        width: 54px;
+        min-height: 39px;
+    }
+    
+A word on caching
+-----------------
+
+*TODO*
+
+
+That’s it!
+----------
+
+Reload your webserver and that’s it!

docs/ref/index.txt

+.. _ref-index:
+
+API-Reference
+=============
+
+.. toctree::
+    :maxdepth: 1
+    
+    templatetags
+    views

docs/ref/templatetags.txt

+.. ref-templatetags:
+
+Template Tags
+=============
+
+Django-lastfm contains only one template tag in :mod:`lastfm.templatetags.lastfm_widget` that is used to load a context object
+with all necessary data.
+
+Usage of the template tag
+-------------------------
+
+.. automodule:: lastfm.templatetags.lastfm_widget
+
+
+Implementation
+--------------
+
+As for every template tag, there is a compilation function (:func:`get_lastfm_widget`) and a renderer (:class:`LastfmWidgetNode`) that do all the work.
+
+.. autoclass:: LastfmWidgetNode
+
+.. autofunction:: get_lastfm_widget

docs/ref/views.txt

+.. _ref-views:
+
+Views
+=====
+
+.. automodule:: lastfm.views
+
+.. autofunction:: lastfm_data
+
+.. autoclass:: RecentTracks
+
+.. autoclass:: WeeklyTopArtists
+
+.. autoclass:: TopArtists

lastfm/__init__.py

-# encoding: utf-8
-
-__version__ = '0.1.2'
 #! /usr/bin/env python
 # encoding: utf-8
 
-from setuptools import setup, find_packages
+from distutils.core import setup
 
 
-import lastfm
-
-
-setup(name='django-lastfm',
-    version=lastfm.__version__,
+setup(
+    name='django-lastfm',
+    version='0.1.3',
+    author='Stefan Scherfke',
+    author_email='stefan at sofa-rockers.org',
     description='Access Last.fm from your Django site.',
-    author='Stefan Scherfke',
-    author_email='',
-    license='BSD',
+    long_description=open('README.txt').read(),
     url='http://stefan.sofa-rockers.org/django-lastfm/',
     download_url='http://bitbucket.org/scherfke/django-lastfm/downloads/',
-    packages=find_packages(),
-    include_package_data=True,
-    zip_safe=False,
+    license='BSD',
+    packages=[
+        'lastfm', 
+        'lastfm.templatetags',
+    ],
+    package_data={
+        'lastfm': ['templates/lastfm_widget/*'],
+    },
     classifiers=[
         'Development Status :: 4 - Beta',
         'Environment :: Web Environment',
         'Operating System :: OS Independent',
         'Programming Language :: Python',
         'Topic :: Software Development :: Libraries :: Python Modules',
-        'Topic :: Utilities'],
+        'Topic :: Utilities',
+    ],
 )
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.