PKqC#Ai..+django-periodicals-latest/installation.html Installation — django-periodicals 0.5.0 documentation

Installation

You can install from PyPi and manually add some packages or install from a GitHub checkout and use pip and a requirement.txt file.

Installing from PyPi

Simple to install from a package using pip which will install most of it’s dependencies:

$ pip install django-periodicals

Install two packages/applications manually to get newer versions than are currently in PyPi:

$ pip install -e git://github.com/saschwarz/django-recaptcha.git#egg=django-recaptcha

$ pip install -e git://github.com/nemith/django-tagging.git@dev-django1.5#egg=django_tagging-dev

Continue installing with Install a Haystack Backend below.

Installing from GitHub

This lets you install all the requirements using pip and the requirements.txt file:

$ git clone https://github.com/saschwarz/django-periodicals.git

$ cd django-periodicals

$ pip install -r requirements.txt

$ python setup.py install

Install a Haystack Backend

Install a search backend for use by Haystack. To start install Whoosh:

$ pip install Whoosh

Try the Demo Project!

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqC*PQ$$&django-periodicals-latest/history.html History — django-periodicals 0.5.0 documentation

History

0.5.0 (2013-10-06)

  • Migrated to Django 1.6 using class based views.
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqC,II%django-periodicals-latest/readme.html django-periodicals — django-periodicals 0.5.0 documentation

django-periodicals

https://badge.fury.io/py/django-periodicals.png https://travis-ci.org/saschwarz/django-periodicals.png?branch=master https://coveralls.io/repos/saschwarz/django-periodicals/badge.png?branch=master https://pypip.in/d/django-periodicals/badge.png

A Django application for periodical/magazine websites with fully cross linked indices on Periodical, Issue, Article, Author, Article Series and Tags. Provides full text search of article titles and descriptions. A complete set of templates are provided. A sitemap is also dynamically generated.

Documentation

The full documentation is at http://django-periodicals.rtfd.org.

Quickstart

Simple to install from a package using pip which will install all it’s dependencies (coming soon). For now see installing-from-github.

pip install django-periodicals

Install two packages manually to get newer versions than are currently in PyPi:

$ pip install -e git://github.com/saschwarz/django-recaptcha.git#egg=django-recaptcha

$ pip install -e git://github.com/nemith/django-tagging.git@dev-django1.5#egg=django_tagging-dev

Install a search backend for use by Haystack. To start install Whoosh:

$ pip install Whoosh

settings.py

Add periodicals and the other applications it uses to INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'haystack',
    'tagging',
    'captcha',
    'periodicals',
)

Configure your Haystack backend. Here is an example using Whoosh:

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'whoosh_periodicals_index'),
        'STORAGE': 'file',
        'POST_LIMIT': 128 * 1024 * 1024,
        'INCLUDE_SPELLING': True,
        'BATCH_SIZE': 100,
    },
}

Configure your reCAPTCHA keys - only used when users add links to Articles or Issues:

RECAPTCHA_PRIVATE_KEY = "your-recaptcha-private-key"
RECAPTCHA_PUBLIC_KEY = "your-recaptcha-public-key"

urls.py

Choose a URL prefix at which to base the application:

...
import periodicals

urlpatterns = patterns('',
    ...
    url(r'^admin/', include(admin.site.urls)),
    url(r'^periodicals/', include(periodicals.urls)),
)

Management Commands

$ python manage.py syncdb

Features

I developed django-periodicals to provide a searchable index for a printed/online magazine. I wanted all the meta data to be fully cross linked. So users can easily browse all articles for an author, all articles in an issue, all articles in a series/category, all articles tagged with a keyword and so forth.

I turned it in to a standalone application when I ported it to Django 1.5. Here are the features:

  • Provides Django models for Periodicals, Issues, Articles, Authors, Tags and Links to external material.
  • A full set of templates are provided including:
    • Individual Periodical pages with yearly indices.
    • Fully cross-linked indexes of Authors, Issues, Article Series, Tags, and Articles.
    • Search across Article titles and descriptions.
    • Tagging:
      • Per article.
      • Index pages per tag.
      • Tag cloud.
  • Moderated user added links of blog posts and other web resources to each Issue and Article. Spam protection by reCAPTCHA and requiring approval by the admin. This feature can be disabled via setting.
  • Django admin forms for data entry.
  • Sitemap support.
  • Support for Python 2.6, 2.7 and Django 1.5 and 1.6.
  • Travis CI unit tests.
  • See django-periodicals in action at Googility.
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqC$E3__$django-periodicals-latest/usage.html Usage — django-periodicals 0.5.0 documentation

Usage

django-periodicals integrates a couple other applications to provide it’s features.

settings.py

Add periodicals and the other applications it uses to INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'haystack',
    'tagging',
    'captcha',
    'periodicals',
)

Configure your Haystack backend. Here is an example using Whoosh:

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'whoosh_periodicals_index'),
        'STORAGE': 'file',
        'POST_LIMIT': 128 * 1024 * 1024,
        'INCLUDE_SPELLING': True,
        'BATCH_SIZE': 100,
    },
}

Configure your reCAPTCHA keys - only used when users add links to Articles or Issues (this feature can be disabled):

RECAPTCHA_PRIVATE_KEY = "your-recaptcha-private-key"
RECAPTCHA_PUBLIC_KEY = "your-recaptcha-public-key"

Configure you Site in the Django Site application - only used when users add links to Articles or Issues and when you haven’t disabled email notifications.

urls.py

Choose a URL prefix at which to base the application:

...
import periodicals

urlpatterns = patterns('',
    ...
    url(r'^admin/', include(admin.site.urls)),
    url(r'^periodicals/', include(periodicals.urls)),
)

Database Setup

$ python manage.py syncdb

Optional Settings

You can control the display format for Author, Periodical, and Issue instances and their URL slugs through the following settings.py values. The default values are shown below:

PERIODICALS_AUTHOR_FORMAT = "%(last_name)s, %(first_name)s %(middle_name)s %(postnomial)s"
PERIODICALS_AUTHOR_SLUG_FORMAT = "%(last_name)s %(first_name)s %(middle_name)s %(postnomial)s"

PERIODICALS_PERIODICAL_FORMAT = "%(name)s"
PERIODICALS_PERIODICAL_SLUG_FORMAT = "%(name)s"

PERIODICALS_ISSUE_FORMAT = "Vol. %(volume)s No. %(issue)s"
PERIODICALS_ISSUE_SLUG_FORMAT = "%(volume)s %(issue)s"
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqCh;&;&&django-periodicals-latest/authors.html Credits — django-periodicals 0.5.0 documentation

Credits

Development Lead

Contributors

None yet. Why not be the first?

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqCt(django-periodicals-latest/searchindex.jsSearch.setIndex({objects:{},terms:{all:[3,6,4,1],periodicals_email_notifi:6,whoever:3,steve:5,prefix:[6,4],runserv:2,dirnam:[6,4],follow:[6,2],content:[6,0],privat:[6,4],depend:[4,1],periodicals_links_en:6,send:3,articl:[3,6,4],visitor:6,sent:6,sourc:2,everi:3,fals:6,volum:6,django_tag:[4,1],brows:4,list:3,last_nam:6,"try":[0,1,2],saschwarz:[3,4,1],div:6,readthedoc:[],pleas:3,whoosh_periodicals_index:[6,4],bugfix:3,design:[6,2],pass:3,port:4,even:3,index:[6,4],periodicals_author_format:6,section:6,current:[4,1],version:[3,4,1],"new":3,"public":[6,4],full:[6,4],gener:4,here:[3,6,4],let:1,locat:6,method:6,sinc:6,valu:6,box:6,search:[6,4,1],credit:[3,0,5],action:4,chang:3,narrow:3,periodical_detail:6,via:[6,4],volunt:3,app:[],instal:[0,1,2,3,4,6],txt:[2,1],select:6,from:[6,0,4,1,2],describ:2,would:3,visit:2,two:[4,1],websit:[3,4],readi:3,call:2,scope:3,type:[3,0],more:[3,6],batch_siz:[6,4],abspath:[6,4],notif:6,indic:4,easiest:6,none:5,join:[6,4],setup:[3,0,1,6],work:3,dev:[4,1],histori:[0,7],can:[3,2,4,1,6],lightli:6,meet:3,root:6,control:6,quickstart:[4,0],give:6,templat:[6,2,4],captcha:[6,4],tag:[3,6,4,1],want:[3,4],onlin:4,alwai:3,first_nam:6,write:3,how:[3,2],simpl:[4,1],css:6,updat:[3,6],issue_detail:6,resourc:4,haven:6,clone:[3,1],django1:[4,1],diagram:6,befor:3,commit:3,mai:[],data:[6,4],github:[3,0,4,1,2],bootstrap:2,django:[0,1,2,3,4,6,7],issu:[3,6,4],incorpor:6,enter:6,egg:[4,1],order:6,oper:[3,6],help:3,offici:3,approv:[6,4],soon:4,own:6,through:[3,6],dynam:4,style:2,fix:3,periodical_list:6,might:[3,6],easier:3,wouldn:2,them:3,googil:4,thei:[3,6],proce:6,demoenv:2,now:[3,2,4],name:[3,6],anyth:3,troubleshoot:3,easili:4,magazin:4,each:[6,4],fulli:[4,2],flake8:3,subset:3,individu:4,continu:1,contributor:[0,5],meta:4,expect:6,out:[6,2],shown:6,base_period:6,whoosh:[6,4,1],categori:4,rewrit:6,post_limit:[6,4],print:4,forth:4,urlpattern:[6,4],migrat:7,tox:3,standalon:4,base:[6,2,4,7],put:[3,6],org:[3,4],author_detail:6,update_index:[6,2],could:3,keep:3,turn:4,place:6,first:5,origin:3,major:6,onc:6,done:3,installed_app:[6,4],open:3,given:3,mkdir:6,system:3,option:6,relationship:6,travi:[3,4],copi:3,part:3,rst:3,than:[4,1],your_name_her:3,keyword:4,periodicals_periodical_slug_format:6,emac:6,project:[3,0,1,2],mkvirtualenv:3,seri:4,fork:3,beforehand:6,argument:6,packag:[4,1],have:3,need:6,issue_year:6,nemith:[4,1],engin:[6,4],periodicals_issue_format:6,also:[4,2],without:6,which:[6,4,1],sure:3,agilitynerd:5,most:1,plai:[],regular:6,why:5,url:[6,0,4],doc:3,request:[3,0],doe:2,pattern:[6,4],occasion:6,latest:[],show:2,text:4,sitemaps_at:6,loaddata:2,trivial:2,find:[],feedback:3,xml:6,onli:[6,4],layout:6,just:[3,6],copyright:6,explain:3,configur:[6,2,4],activ:2,should:3,local:3,indepth:[],contribut:[3,0],get:[3,0,4,1],"__file__":[6,4],express:6,pypi:[3,0,4,1],repo:3,report:3,requir:[4,2,1],rtfd:4,across:4,provid:[6,4],integr:6,contain:[6,2],where:6,view:[6,7],set:[3,0,4,6],demo_period:2,see:4,best:3,kei:[6,4],databas:[6,0],"import":[6,4],email:6,popup:[],appreci:3,extend:6,numer:6,periodicals_author_slug_format:6,recaptcha_private_kei:[6,4],article_detail:6,come:4,protect:4,admin:[6,4],instanc:6,whoosh_backend:[6,4],mani:3,com:[3,4,1,5],postnomi:6,load:6,haystack_connect:[6,4],guidelin:[3,0],unittest:3,period:[0,1,2,3,4,6],read_onlin:6,yearli:4,path:[6,4],assum:3,backend:[6,0,4,1],coupl:6,json:2,ani:3,look:3,defin:6,overrid:6,endblock:6,virtualenvwrapp:3,vol:6,demo:[0,1,2],readm:3,site:[6,2,4],myapp:6,develop:[3,0,4,5],welcom:[3,0],author:[6,4],make:3,cross:4,same:6,python:[3,2,4,1,6],html:[6,2],document:[3,0,4],complet:4,finish:6,http:[3,2,4,1],recaptcha_public_kei:[6,4],driven:3,user:[6,4],extern:4,implement:3,appropri:6,moder:[6,4],entri:4,searchabl:4,inherit:6,series_detail:6,exampl:[6,4],command:[6,4],thi:[3,2,4,1,6],choos:[6,4],model:[6,4],propos:3,execut:6,when:[3,6,4],glue:6,yet:5,web:[3,4],unstyl:2,littl:3,blog:[3,4],add:[3,6,4,1],article_tag_detail:6,haystack:[6,0,4,1],bin:2,applic:[6,2,4,1],around:[],format:6,recaptcha:[6,4,1],link_add:6,pull_request:3,bit:3,author_list:6,link_success:6,like:6,manual:[6,4,1],schwarz:5,page:[6,2,4],sitemap:[6,4],right:6,twitter:2,some:[2,1],syncdb:[6,2,4],virtualenv:[3,2,6],lead:[0,5],per:[6,4],unit:4,reproduc:3,run:3,usag:[6,0],step:[3,2],post:[3,4],slug:6,about:3,greatli:3,breadcrumb:6,materi:4,periodicals_issue_slug_format:6,manag:[6,2,4],discard:6,disabl:[6,0,4],block:6,test_period:3,within:6,easy_instal:[],whooshengin:[6,4],overrod:2,contrib:6,storag:[6,4],your:[3,2,4,6],git:[3,4,1],wai:3,spam:4,support:[3,6,4],submit:3,"class":[6,7],start:[3,0,4,1],includ:[3,6,4],"function":[3,2],form:4,cloud:4,link:[6,0,4],newer:[4,1],branch:3,innercont:6,line:[],"true":[6,4],bug:3,pull:[3,0],middle_nam:6,possibl:3,whether:3,checkout:[3,2,1],displai:[6,0],below:[6,1],featur:[3,0,4,6],creat:[3,6],series_list:6,exist:6,file:[3,6,4,1],pip:[3,2,4,1],check:[3,2],titl:[6,4],tip:[3,0],detail:3,"default":[6,4],other:[3,6,4],rememb:3,test:[3,2,4],you:[3,2,1,6],docstr:3,periodicals_periodical_format:6,include_spel:[6,4],directori:2,descript:[3,4],demo_tag:2,time:6,push:3},objtypes:{},titles:["Welcome to django-periodicals’s documentation!","Installation","Try the Demo Project!","Contributing","django-periodicals","Credits","Usage","History"],objnames:{},filenames:["index","installation","demo","contributing","readme","authors","usage","history"]})PKqCӈX]d#d#%django-periodicals-latest/search.html Search — django-periodicals 0.5.0 documentation

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqCl}$django-periodicals-latest/.buildinfo# Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. config: 7e75e6d8601d713d3a3577ee96891fbf tags: fbb0d17656682115ca4d033fb2f83ba1 PKqC,9,9+django-periodicals-latest/contributing.html Contributing — django-periodicals 0.5.0 documentation

Contributing

Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.

You can contribute in many ways:

Types of Contributions

Report Bugs

Report bugs at https://github.com/saschwarz/django-periodicals/issues.

If you are reporting a bug, please include:

  • Your operating system name and version.
  • Any details about your local setup that might be helpful in troubleshooting.
  • Detailed steps to reproduce the bug.

Fix Bugs

Look through the GitHub issues for bugs. Anything tagged with “bug” is open to whoever wants to implement it.

Implement Features

Look through the GitHub issues for features. Anything tagged with “feature” is open to whoever wants to implement it.

Write Documentation

django-periodicals could always use more documentation, whether as part of the official django-periodicals docs, in docstrings, or even on the web in blog posts, articles, and such.

Submit Feedback

The best way to send feedback is to file an issue at https://github.com/saschwarz/django-periodicals/issues.

If you are proposing a feature:

  • Explain in detail how it would work.
  • Keep the scope as narrow as possible, to make it easier to implement.
  • Remember that this is a volunteer-driven project, and that contributions are welcome :)

Get Started!

Ready to contribute? Here’s how to set up django-periodicals for local development.

  1. Fork the django-periodicals repo on GitHub.

  2. Clone your fork locally:

    $ git clone git@github.com:your_name_here/django-periodicals.git
  3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:

    $ mkvirtualenv django-periodicals
    $ cd django-periodicals/
    $ python setup.py develop
  4. Create a branch for local development:

    $ git checkout -b name-of-your-bugfix-or-feature

Now you can make your changes locally.

5. When you’re done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:

$ flake8 periodicals tests
    $ python setup.py test
$ tox

To get flake8 and tox, just pip install them into your virtualenv.

  1. Commit your changes and push your branch to GitHub:

    $ git add .
    $ git commit -m "Your detailed description of your changes."
    $ git push origin name-of-your-bugfix-or-feature
  2. Submit a pull request through the GitHub website.

Pull Request Guidelines

Before you submit a pull request, check that it meets these guidelines:

  1. The pull request should include tests.
  2. If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.
  3. The pull request should work for Python 2.6, 2.7, and 3.3, and for PyPy. Check https://travis-ci.org/saschwarz/django-periodicals/pull_requests and make sure that the tests pass for all supported Python versions.

Tips

To run a subset of tests:

$ python -m unittest tests.test_periodicals
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqCܩX))#django-periodicals-latest/demo.html Try the Demo Project! — django-periodicals 0.5.0 documentation

Try the Demo Project!

Check out django-periodicals as described in Installing from GitHub. There is a directory called demo in the checkout directory that contains a fully functional installation.

It is designed to show how to configured your project to use this application.

I also overrode the base.html template and added in some trivial Twitter Bootstrap styling so the pages wouldn’t be unstyled. django-periodicals does not require the use of Bootstrap.

Follow these steps:

$ cd django-periodicals
$ virtualenv demoenv
$ source demoenv/bin/activate
$ pip install -r requirements-test.txt
$ pip install Django
$ cd demo
$ python manage.py syncdb
$ python manage.py loaddata demo_tagging.json
$ python manage.py loaddata demo_periodicals.json
$ python manage.py update_index
$ python manage.py runserver

So now you can visit the demo site at http://127.0.0.1:8000/.

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqC !!'django-periodicals-latest/genindex.html Index — django-periodicals 0.5.0 documentation

Index

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqCp##%django-periodicals-latest/objects.inv# Sphinx inventory version 2 # Project: django-periodicals # Version: 0.5.0 # The remainder of this file is compressed using zlib. xmM 0}N1ܺԅP ͘DS)ېtp0>*}abuv'xqA_GyUԆs6h|Q[6sH1|X ;ZͽHl$8-ȆP8[/WZ`nЕz'~e0PKqCW..$django-periodicals-latest/index.html Welcome to django-periodicals’s documentation! — django-periodicals 0.5.0 documentation
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKqCS{a2wOwO8django-periodicals-latest/.doctrees/contributing.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xwrite documentationqNX report bugsqNXtypes of contributionsqNXpull request guidelinesq NX contributingq NXfix bugsq NX get started!q NXsubmit feedbackq NXtipsqNXimplement featuresqNuUsubstitution_defsq}qUparse_messagesq]qcdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhh)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX../CONTRIBUTING.rstq q!}q"bUtagnameq#Usectionq$U attributesq%}q&(Udupnamesq']Uclassesq(]Ubackrefsq)]Uidsq*]q+U contributingq,aUnamesq-]q.h auUlineq/KUdocumentq0hUchildrenq1]q2(cdocutils.nodes title q3)q4}q5(hX Contributingq6hhhh!h#Utitleq7h%}q8(h']h(]h)]h*]h-]uh/Kh0hh1]q9cdocutils.nodes Text q:X Contributingq;q<}q=(hh6hh4ubaubcdocutils.nodes paragraph q>)q?}q@(hXuContributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.qAhhhh!h#U paragraphqBh%}qC(h']h(]h)]h*]h-]uh/Kh0hh1]qDh:XuContributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.qEqF}qG(hhAhh?ubaubh>)qH}qI(hX You can contribute in many ways:qJhhhh!h#hBh%}qK(h']h(]h)]h*]h-]uh/Kh0hh1]qLh:X You can contribute in many ways:qMqN}qO(hhJhhHubaubh)qP}qQ(hUhhhh!h#h$h%}qR(h']h(]h)]h*]qSUtypes-of-contributionsqTah-]qUhauh/K h0hh1]qV(h3)qW}qX(hXTypes of ContributionsqYhhPhh!h#h7h%}qZ(h']h(]h)]h*]h-]uh/K h0hh1]q[h:XTypes of Contributionsq\q]}q^(hhYhhWubaubh)q_}q`(hUhhPhh!h#h$h%}qa(h']h(]h)]h*]qbU report-bugsqcah-]qdhauh/Kh0hh1]qe(h3)qf}qg(hX Report Bugsqhhh_hh!h#h7h%}qi(h']h(]h)]h*]h-]uh/Kh0hh1]qjh:X Report Bugsqkql}qm(hhhhhfubaubh>)qn}qo(hXFReport bugs at https://github.com/saschwarz/django-periodicals/issues.qphh_hh!h#hBh%}qq(h']h(]h)]h*]h-]uh/Kh0hh1]qr(h:XReport bugs at qsqt}qu(hXReport bugs at hhnubcdocutils.nodes reference qv)qw}qx(hX6https://github.com/saschwarz/django-periodicals/issuesqyh%}qz(Urefurihyh*]h)]h']h(]h-]uhhnh1]q{h:X6https://github.com/saschwarz/django-periodicals/issuesq|q}}q~(hUhhwubah#U referencequbh:X.q}q(hX.hhnubeubh>)q}q(hX+If you are reporting a bug, please include:qhh_hh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh0hh1]qh:X+If you are reporting a bug, please include:qq}q(hhhhubaubcdocutils.nodes bullet_list q)q}q(hUhh_hh!h#U bullet_listqh%}q(UbulletqX*h*]h)]h']h(]h-]uh/Kh0hh1]q(cdocutils.nodes list_item q)q}q(hX'Your operating system name and version.qhhhh!h#U list_itemqh%}q(h']h(]h)]h*]h-]uh/Nh0hh1]qh>)q}q(hhhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh1]qh:X'Your operating system name and version.qq}q(hhhhubaubaubh)q}q(hXLAny details about your local setup that might be helpful in troubleshooting.qhhhh!h#hh%}q(h']h(]h)]h*]h-]uh/Nh0hh1]qh>)q}q(hhhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh1]qh:XLAny details about your local setup that might be helpful in troubleshooting.qq}q(hhhhubaubaubh)q}q(hX%Detailed steps to reproduce the bug. hhhh!h#hh%}q(h']h(]h)]h*]h-]uh/Nh0hh1]qh>)q}q(hX$Detailed steps to reproduce the bug.qhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh1]qh:X$Detailed steps to reproduce the bug.qq}q(hhhhubaubaubeubeubh)q}q(hUhhPhh!h#h$h%}q(h']h(]h)]h*]qUfix-bugsqah-]qh auh/Kh0hh1]q(h3)q}q(hXFix Bugsqhhhh!h#h7h%}q(h']h(]h)]h*]h-]uh/Kh0hh1]qh:XFix BugsqÅq}q(hhhhubaubh>)q}q(hXmLook through the GitHub issues for bugs. Anything tagged with "bug" is open to whoever wants to implement it.qhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh0hh1]qh:XmLook through the GitHub issues for bugs. Anything tagged with "bug" is open to whoever wants to implement it.q˅q}q(hhhhubaubeubh)q}q(hUhhPhh!h#h$h%}q(h']h(]h)]h*]qUimplement-featuresqah-]qhauh/Kh0hh1]q(h3)q}q(hXImplement Featuresqhhhh!h#h7h%}q(h']h(]h)]h*]h-]uh/Kh0hh1]qh:XImplement Featuresqڅq}q(hhhhubaubh>)q}q(hXuLook through the GitHub issues for features. Anything tagged with "feature" is open to whoever wants to implement it.qhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/K!h0hh1]qh:XuLook through the GitHub issues for features. Anything tagged with "feature" is open to whoever wants to implement it.q⅁q}q(hhhhubaubeubh)q}q(hUhhPhh!h#h$h%}q(h']h(]h)]h*]qUwrite-documentationqah-]qhauh/K%h0hh1]q(h3)q}q(hXWrite Documentationqhhhh!h#h7h%}q(h']h(]h)]h*]h-]uh/K%h0hh1]qh:XWrite Documentationqq}q(hhhhubaubh>)q}q(hXdjango-periodicals could always use more documentation, whether as part of the official django-periodicals docs, in docstrings, or even on the web in blog posts, articles, and such.qhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/K'h0hh1]qh:Xdjango-periodicals could always use more documentation, whether as part of the official django-periodicals docs, in docstrings, or even on the web in blog posts, articles, and such.qq}q(hhhhubaubeubh)q}q(hUhhPhh!h#h$h%}q(h']h(]h)]h*]qUsubmit-feedbackrah-]rh auh/K,h0hh1]r(h3)r}r(hXSubmit Feedbackrhhhh!h#h7h%}r(h']h(]h)]h*]h-]uh/K,h0hh1]rh:XSubmit Feedbackrr }r (hjhjubaubh>)r }r (hXlThe best way to send feedback is to file an issue at https://github.com/saschwarz/django-periodicals/issues.r hhhh!h#hBh%}r(h']h(]h)]h*]h-]uh/K.h0hh1]r(h:X5The best way to send feedback is to file an issue at rr}r(hX5The best way to send feedback is to file an issue at hj ubhv)r}r(hX6https://github.com/saschwarz/django-periodicals/issuesrh%}r(Urefurijh*]h)]h']h(]h-]uhj h1]rh:X6https://github.com/saschwarz/django-periodicals/issuesrr}r(hUhjubah#hubh:X.r}r(hX.hj ubeubh>)r}r(hXIf you are proposing a feature:rhhhh!h#hBh%}r (h']h(]h)]h*]h-]uh/K0h0hh1]r!h:XIf you are proposing a feature:r"r#}r$(hjhjubaubh)r%}r&(hUhhhh!h#hh%}r'(hX*h*]h)]h']h(]h-]uh/K2h0hh1]r((h)r)}r*(hX$Explain in detail how it would work.r+hj%hh!h#hh%}r,(h']h(]h)]h*]h-]uh/Nh0hh1]r-h>)r.}r/(hj+hj)hh!h#hBh%}r0(h']h(]h)]h*]h-]uh/K2h1]r1h:X$Explain in detail how it would work.r2r3}r4(hj+hj.ubaubaubh)r5}r6(hXEKeep the scope as narrow as possible, to make it easier to implement.r7hj%hh!h#hh%}r8(h']h(]h)]h*]h-]uh/Nh0hh1]r9h>)r:}r;(hj7hj5hh!h#hBh%}r<(h']h(]h)]h*]h-]uh/K3h1]r=h:XEKeep the scope as narrow as possible, to make it easier to implement.r>r?}r@(hj7hj:ubaubaubh)rA}rB(hXXRemember that this is a volunteer-driven project, and that contributions are welcome :) hj%hh!h#hh%}rC(h']h(]h)]h*]h-]uh/Nh0hh1]rDh>)rE}rF(hXWRemember that this is a volunteer-driven project, and that contributions are welcome :)rGhjAhh!h#hBh%}rH(h']h(]h)]h*]h-]uh/K4h1]rIh:XWRemember that this is a volunteer-driven project, and that contributions are welcome :)rJrK}rL(hjGhjEubaubaubeubeubeubhh)rM}rN(hUhhhh!h#h$h%}rO(h']h(]h)]h*]rPUpull-request-guidelinesrQah-]rRh auh/K_h0hh1]rS(h3)rT}rU(hXPull Request GuidelinesrVhjMhh!h#h7h%}rW(h']h(]h)]h*]h-]uh/K_h0hh1]rXh:XPull Request GuidelinesrYrZ}r[(hjVhjTubaubh>)r\}r](hXGBefore you submit a pull request, check that it meets these guidelines:r^hjMhh!h#hBh%}r_(h']h(]h)]h*]h-]uh/Kah0hh1]r`h:XGBefore you submit a pull request, check that it meets these guidelines:rarb}rc(hj^hj\ubaubcdocutils.nodes enumerated_list rd)re}rf(hUhjMhh!h#Uenumerated_listrgh%}rh(UsuffixriU.h*]h)]h']UprefixrjUh(]h-]UenumtyperkUarabicrluh/Kch0hh1]rm(h)rn}ro(hX&The pull request should include tests.rphjehh!h#hh%}rq(h']h(]h)]h*]h-]uh/Nh0hh1]rrh>)rs}rt(hjphjnhh!h#hBh%}ru(h']h(]h)]h*]h-]uh/Kch1]rvh:X&The pull request should include tests.rwrx}ry(hjphjsubaubaubh)rz}r{(hXIf the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.hjehh!h#hh%}r|(h']h(]h)]h*]h-]uh/Nh0hh1]r}h>)r~}r(hXIf the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.rhjzhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Kdh1]rh:XIf the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.rr}r(hjhj~ubaubaubh)r}r(hXThe pull request should work for Python 2.6, 2.7, and 3.3, and for PyPy. Check https://travis-ci.org/saschwarz/django-periodicals/pull_requests and make sure that the tests pass for all supported Python versions. hjehh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]rh>)r}r(hXThe pull request should work for Python 2.6, 2.7, and 3.3, and for PyPy. Check https://travis-ci.org/saschwarz/django-periodicals/pull_requests and make sure that the tests pass for all supported Python versions.hjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Kgh1]r(h:XOThe pull request should work for Python 2.6, 2.7, and 3.3, and for PyPy. Check rr}r(hXOThe pull request should work for Python 2.6, 2.7, and 3.3, and for PyPy. Check hjubhv)r}r(hX@https://travis-ci.org/saschwarz/django-periodicals/pull_requestsrh%}r(Urefurijh*]h)]h']h(]h-]uhjh1]rh:X@https://travis-ci.org/saschwarz/django-periodicals/pull_requestsrr}r(hUhjubah#hubh:XE and make sure that the tests pass for all supported Python versions.rr}r(hXE and make sure that the tests pass for all supported Python versions.hjubeubaubeubeubh)r}r(hUhhhh!h#h$h%}r(h']h(]h)]h*]rUtipsrah-]rhauh/Klh0hh1]r(h3)r}r(hXTipsrhjhh!h#h7h%}r(h']h(]h)]h*]h-]uh/Klh0hh1]rh:XTipsrr}r(hjhjubaubh>)r}r(hXTo run a subset of tests::rhjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Knh0hh1]rh:XTo run a subset of tests:rr}r(hXTo run a subset of tests:hjubaubcdocutils.nodes literal_block r)r}r(hX+$ python -m unittest tests.test_periodicalshjhX*internal padding after ../CONTRIBUTING.rstrh#U literal_blockrh%}r(U xml:spacerUpreserverh*]h)]h']h(]h-]uh/Krh0hh1]rh:X+$ python -m unittest tests.test_periodicalsrr}r(hUhjubaubeubeubhh!h#h$h%}r(h']h(]h)]h*]rU get-startedrah-]rh auh/K8h0hh1]r(h3)r}r(hX Get Started!rhhhh!h#h7h%}r(h']h(]h)]h*]h-]uh/K8h0hh1]rh:X Get Started!rr}r(hjhjubaubh>)r}r(hXUReady to contribute? Here's how to set up `django-periodicals` for local development.rhhhh!h#hBh%}r(h']h(]h)]h*]h-]uh/K:h0hh1]r(h:X*Ready to contribute? Here's how to set up rr}r(hX*Ready to contribute? Here's how to set up hjubcdocutils.nodes title_reference r)r}r(hX`django-periodicals`h%}r(h']h(]h)]h*]h-]uhjh1]rh:Xdjango-periodicalsrr}r(hUhjubah#Utitle_referencerubh:X for local development.rr}r(hX for local development.hjubeubjd)r}r(hUhhhh!h#jgh%}r(jiU.h*]h)]h']jjUh(]h-]jkjluh/K)r}r(hjhjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/K)r}r(hXClone your fork locally::hjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/K=h1]rh:XClone your fork locally:rr}r(hXClone your fork locally:hjubaubj)r}r(hX@$ git clone git@github.com:your_name_here/django-periodicals.githjh#jh%}r(jjh*]h)]h']h(]h-]uh/KAh1]rh:X@$ git clone git@github.com:your_name_here/django-periodicals.gitr r }r (hUhjubaubeubh)r }r (hXInstall your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:: $ mkvirtualenv django-periodicals $ cd django-periodicals/ $ python setup.py develop hjhh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]r(h>)r}r(hXInstall your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development::hj hh!h#hBh%}r(h']h(]h)]h*]h-]uh/KAh1]rh:XInstall your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:rr}r(hXInstall your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:hjubaubj)r}r(hXT$ mkvirtualenv django-periodicals $ cd django-periodicals/ $ python setup.py develophj h#jh%}r(jjh*]h)]h']h(]h-]uh/KEh1]rh:XT$ mkvirtualenv django-periodicals $ cd django-periodicals/ $ python setup.py developrr}r(hUhjubaubeubh)r}r(hX[Create a branch for local development:: $ git checkout -b name-of-your-bugfix-or-feature hjhh!h#hh%}r (h']h(]h)]h*]h-]uh/Nh0hh1]r!(h>)r"}r#(hX'Create a branch for local development::hjhh!h#hBh%}r$(h']h(]h)]h*]h-]uh/KGh1]r%h:X&Create a branch for local development:r&r'}r((hX&Create a branch for local development:hj"ubaubj)r)}r*(hX0$ git checkout -b name-of-your-bugfix-or-featurehjh#jh%}r+(jjh*]h)]h']h(]h-]uh/KKh1]r,h:X0$ git checkout -b name-of-your-bugfix-or-featurer-r.}r/(hUhj)ubaubeubeubh>)r0}r1(hX&Now you can make your changes locally.r2hhhh!h#hBh%}r3(h']h(]h)]h*]h-]uh/KKh0hh1]r4h:X&Now you can make your changes locally.r5r6}r7(hj2hj0ubaubh>)r8}r9(hX5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox::hhhh!h#hBh%}r:(h']h(]h)]h*]h-]uh/KMh0hh1]r;h:X5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:r<r=}r>(hX5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:hj8ubaubj)r?}r@(hX;$ flake8 periodicals tests $ python setup.py test $ toxhhhh!h#jh%}rA(jjh*]h)]h']h(]h-]uh/KRh0hh1]rBh:X;$ flake8 periodicals tests $ python setup.py test $ toxrCrD}rE(hUhj?ubaubh>)rF}rG(hXBTo get flake8 and tox, just pip install them into your virtualenv.rHhhhh!h#hBh%}rI(h']h(]h)]h*]h-]uh/KTh0hh1]rJh:XBTo get flake8 and tox, just pip install them into your virtualenv.rKrL}rM(hjHhjFubaubjd)rN}rO(hUhhhh!h#jgh%}rP(jiU.UstartrQKh*]h)]h']jjUh(]h-]jkjluh/KVh0hh1]rR(h)rS}rT(hXCommit your changes and push your branch to GitHub:: $ git add . $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-feature hjNhh!h#hh%}rU(h']h(]h)]h*]h-]uh/Nh0hh1]rV(h>)rW}rX(hX4Commit your changes and push your branch to GitHub::hjShh!h#hBh%}rY(h']h(]h)]h*]h-]uh/KVh1]rZh:X3Commit your changes and push your branch to GitHub:r[r\}r](hX3Commit your changes and push your branch to GitHub:hjWubaubj)r^}r_(hXy$ git add . $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-featurehjSh#jh%}r`(jjh*]h)]h']h(]h-]uh/KZh1]rah:Xy$ git add . $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-featurerbrc}rd(hUhj^ubaubeubh)re}rf(hX2Submit a pull request through the GitHub website. hjNhh!h#hh%}rg(h']h(]h)]h*]h-]uh/Nh0hh1]rhh>)ri}rj(hX1Submit a pull request through the GitHub website.rkhjehh!h#hBh%}rl(h']h(]h)]h*]h-]uh/K\h1]rmh:X1Submit a pull request through the GitHub website.rnro}rp(hjkhjiubaubaubeubeubhh!h#Usystem_messagerqh%}rr(h']UlevelKh*]h)]Usourceh!h(]h-]UlineKVUtypeUINFOrsuh/KVh0hh1]rth>)ru}rv(hUh%}rw(h']h(]h)]h*]h-]uhhh1]rxh:X:Enumerated list start value not ordinal-1: "6" (ordinal 6)ryrz}r{(hUhjuubah#hBubaubaUcurrent_sourcer|NU decorationr}NUautofootnote_startr~KUnameidsr}r(hhhhchhTh jQh h,h hh jh jhjhhuh1]rhahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh0hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrKUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh7NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUP/var/build/user_builds/django-periodicals/checkouts/latest/docs/contributing.rstrUgettext_compactrU generatorrNUdump_internalsrNU pep_base_urlrUhttp://www.python.org/dev/peps/rUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrKU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(jhjQjMhch_h,hhhhhjhjjhhhThPuUsubstitution_namesr}rh#h0h%}r(h']h*]h)]UsourcehXP/var/build/user_builds/django-periodicals/checkouts/latest/docs/contributing.rstrr}rbh(]h-]uU footnotesr]rUrefidsr}rub.PKqCX Installationq?q@}qA(h"h:h#h8ubaubcdocutils.nodes paragraph qB)qC}qD(h"XYou can install from `PyPi `_ and manually add some packages or install from a GitHub checkout and use ``pip`` and a ``requirement.txt`` file.qEh#h h$h'h)U paragraphqFh+}qG(h-]h.]h/]h0]h2]uh4Kh5hh]qH(h>XYou can install from qIqJ}qK(h"XYou can install from h#hCubcdocutils.nodes reference qL)qM}qN(h"X&`PyPi `_h+}qO(UnameXPyPiUrefuriqPXhttps://pypi.python.org/pypiqQh0]h/]h-]h.]h2]uh#hCh]qRh>XPyPiqSqT}qU(h"Uh#hMubah)U referenceqVubcdocutils.nodes target qW)qX}qY(h"X h+}qZ(UrefurihQh0]q[hah/]h-]h.]h2]q\hauh#hCh]h)Utargetq]ubh>XJ and manually add some packages or install from a GitHub checkout and use q^q_}q`(h"XJ and manually add some packages or install from a GitHub checkout and use h#hCubcdocutils.nodes literal qa)qb}qc(h"X``pip``h+}qd(h-]h.]h/]h0]h2]uh#hCh]qeh>Xpipqfqg}qh(h"Uh#hbubah)Uliteralqiubh>X and a qjqk}ql(h"X and a h#hCubha)qm}qn(h"X``requirement.txt``h+}qo(h-]h.]h/]h0]h2]uh#hCh]qph>Xrequirement.txtqqqr}qs(h"Uh#hmubah)hiubh>X file.qtqu}qv(h"X file.h#hCubeubh)qw}qx(h"Uh#h h$h'h)h*h+}qy(h-]h.]h/]h0]qzhah2]q{h auh4K h5hh]q|(h7)q}}q~(h"XInstalling from PyPiqh#hwh$h'h)h;h+}q(h-]h.]h/]h0]h2]uh4K h5hh]qh>XInstalling from PyPiqq}q(h"hh#h}ubaubhB)q}q(h"X\Simple to install from a package using ``pip`` which will install most of it's dependencies:qh#hwh$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4K h5hh]q(h>X'Simple to install from a package using qq}q(h"X'Simple to install from a package using h#hubha)q}q(h"X``pip``h+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xpipqq}q(h"Uh#hubah)hiubh>X. which will install most of it's dependencies:qq}q(h"X. which will install most of it's dependencies:h#hubeubcdocutils.nodes literal_block q)q}q(h"X $ pip install django-periodicalsh#hwh$h'h)U literal_blockqh+}q(UlinenosqUlanguageqXbashU xml:spaceqUpreserveqh0]h/]h-]h.]h2]uh4K h5hh]qh>X $ pip install django-periodicalsqq}q(h"Uh#hubaubhB)q}q(h"X\Install two packages/applications manually to get newer versions than are currently in PyPi:qh#hwh$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>X\Install two packages/applications manually to get newer versions than are currently in PyPi:qq}q(h"hh#hubaubh)q}q(h"X$ pip install -e git://github.com/saschwarz/django-recaptcha.git#egg=django-recaptcha $ pip install -e git://github.com/nemith/django-tagging.git@dev-django1.5#egg=django_tagging-devh#hwh$h'h)hh+}q(hhXbashhhh0]h/]h-]h.]h2]uh4Kh5hh]qh>X$ pip install -e git://github.com/saschwarz/django-recaptcha.git#egg=django-recaptcha $ pip install -e git://github.com/nemith/django-tagging.git@dev-django1.5#egg=django_tagging-devqq}q(h"Uh#hubaubhB)q}q(h"X=Continue installing with `Install a Haystack Backend`_ below.qh#hwh$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]q(h>XContinue installing with qq}q(h"XContinue installing with h#hubhL)q}q(h"X`Install a Haystack Backend`_UresolvedqKh#hh)hVh+}q(UnameXInstall a Haystack Backendh0]h/]h-]h.]h2]Urefidqhuh]qh>XInstall a Haystack Backendqq}q(h"Uh#hubaubh>X below.qąq}q(h"X below.h#hubeubhW)q}q(h"X.. _installing-from-github:h#hwh$h'h)h]h+}q(h0]h/]h-]h.]h2]hhuh4Kh5hh]ubeubh)q}q(h"Uh#h h$h'Uexpect_referenced_by_nameq}qh hsh)h*h+}q(h-]h.]h/]h0]q(hheh2]q(h h euh4Kh5hUexpect_referenced_by_idq}qhhsh]q(h7)q}q(h"XInstalling from GitHubqh#hh$h'h)h;h+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>XInstalling from GitHubqمq}q(h"hh#hubaubhB)q}q(h"X[This lets you install all the requirements using ``pip`` and the ``requirements.txt`` file:qh#hh$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4K!h5hh]q(h>X1This lets you install all the requirements using qᅁq}q(h"X1This lets you install all the requirements using h#hubha)q}q(h"X``pip``h+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xpipq腁q}q(h"Uh#hubah)hiubh>X and the q녁q}q(h"X and the h#hubha)q}q(h"X``requirements.txt``h+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xrequirements.txtqq}q(h"Uh#hubah)hiubh>X file:qq}q(h"X file:h#hubeubh)q}q(h"X$ git clone https://github.com/saschwarz/django-periodicals.git $ cd django-periodicals $ pip install -r requirements.txt $ python setup.py installh#hh$h'h)hh+}q(hhXbashhhh0]h/]h-]h.]h2]uh4K#h5hh]qh>X$ git clone https://github.com/saschwarz/django-periodicals.git $ cd django-periodicals $ pip install -r requirements.txt $ python setup.py installqq}q(h"Uh#hubaubeubh)q}r(h"UU referencedrKh#h h$h'h)h*h+}r(h-]h.]h/]h0]rhah2]rhauh4K0h5hh]r(h7)r}r(h"XInstall a Haystack Backendrh#hh$h'h)h;h+}r (h-]h.]h/]h0]h2]uh4K0h5hh]r h>XInstall a Haystack Backendr r }r (h"jh#jubaubhB)r}r(h"XfInstall a search backend for use by `Haystack `_. To start install Whoosh:rh#hh$h'h)hFh+}r(h-]h.]h/]h0]h2]uh4K2h5hh]r(h>X$Install a search backend for use by rr}r(h"X$Install a search backend for use by h#jubhL)r}r(h"X(`Haystack `_h+}r(UnameXHaystackhPXhttp://haystacksearch.org/rh0]h/]h-]h.]h2]uh#jh]rh>XHaystackrr}r(h"Uh#jubah)hVubhW)r}r(h"X h+}r (Urefurijh0]r!hah/]h-]h.]h2]r"h auh#jh]h)h]ubh>X. To start install Whoosh:r#r$}r%(h"X. To start install Whoosh:h#jubeubh)r&}r'(h"X$ pip install Whooshh#hh$h'h)hh+}r((hhXbashhhh0]h/]h-]h.]h2]uh4K4h5hh]r)h>X$ pip install Whooshr*r+}r,(h"Uh#j&ubaubhB)r-}r.(h"X:ref:`try-the-demo-project`r/h#hh$h'h)hFh+}r0(h-]h.]h/]h0]h2]uh4K8h5hh]r1csphinx.addnodes pending_xref r2)r3}r4(h"j/h#j-h$h'h)U pending_xrefr5h+}r6(UreftypeXrefUrefwarnr7U reftargetr8Xtry-the-demo-projectU refdomainXstdr9h0]h/]U refexplicith-]h.]h2]Urefdocr:U installationr;uh4K8h]r<cdocutils.nodes emphasis r=)r>}r?(h"j/h+}r@(h-]h.]rA(UxrefrBj9Xstd-refrCeh/]h0]h2]uh#j3h]rDh>Xtry-the-demo-projectrErF}rG(h"Uh#j>ubah)UemphasisrHubaubaubeubeubah"UU transformerrINU footnote_refsrJ}rKUrefnamesrL}rMXinstall a haystack backend]rNhasUsymbol_footnotesrO]rPUautofootnote_refsrQ]rRUsymbol_footnote_refsrS]rTU citationsrU]rVh5hU current_linerWNUtransform_messagesrX]rY(cdocutils.nodes system_message rZ)r[}r\(h"Uh+}r](h-]UlevelKh0]h/]Usourceh'h.]h2]UlineKUtypeUINFOr^uh]r_hB)r`}ra(h"Uh+}rb(h-]h.]h/]h0]h2]uh#j[h]rch>X*Hyperlink target "pypi" is not referenced.rdre}rf(h"Uh#j`ubah)hFubah)Usystem_messagergubjZ)rh}ri(h"Uh+}rj(h-]UlevelKh0]h/]Usourceh'h.]h2]UlineKUtypej^uh]rkhB)rl}rm(h"Uh+}rn(h-]h.]h/]h0]h2]uh#jhh]roh>X<Hyperlink target "installing-from-github" is not referenced.rprq}rr(h"Uh#jlubah)hFubah)jgubjZ)rs}rt(h"Uh+}ru(h-]UlevelKh0]h/]Usourceh'h.]h2]UlineK2Utypej^uh]rvhB)rw}rx(h"Uh+}ry(h-]h.]h/]h0]h2]uh#jsh]rzh>X.Hyperlink target "haystack" is not referenced.r{r|}r}(h"Uh#jwubah)hFubah)jgubeUreporterr~NUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrKUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh;NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUP/var/build/user_builds/django-periodicals/checkouts/latest/docs/installation.rstrUgettext_compactrU generatorrNUdump_internalsrNU pep_base_urlrUhttp://www.python.org/dev/peps/rUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrKU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hh hhwhhXhhhhhhhjuUsubstitution_namesr}rh)h5h+}r(h-]h0]h/]Usourceh'h.]h2]uU footnotesr]rUrefidsr}rh]rhasub.PKqCZ=dd2django-periodicals-latest/.doctrees/readme.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X documentationqNX quickstartqNXwhooshqKX recaptchaq KXdjango-periodicalsq NXpypiq KXinstalling-from-githubq KX googilityq KXurls.pyqNX settings.pyqNXhaystackqKXmanagement commandsqNXfeaturesqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU documentationqhU quickstartqhUwhooshqh U recaptchaqh Udjango-periodicalsq h Upypiq!h Uinstalling-from-githubq"h U googilityq#hUurls-pyq$hU settings-pyq%hUhaystackq&hUmanagement-commandsq'hUfeaturesq(uUchildrenq)]q*cdocutils.nodes section q+)q,}q-(U rawsourceq.UUparentq/hUsourceq0cdocutils.nodes reprunicode q1X ../README.rstq2q3}q4bUtagnameq5Usectionq6U attributesq7}q8(Udupnamesq9]Uclassesq:]Ubackrefsq;]Uidsq<]q=h aUnamesq>]q?h auUlineq@KUdocumentqAhh)]qB(cdocutils.nodes title qC)qD}qE(h.Xdjango-periodicalsqFh/h,h0h3h5UtitleqGh7}qH(h9]h:]h;]h<]h>]uh@KhAhh)]qIcdocutils.nodes Text qJXdjango-periodicalsqKqL}qM(h.hFh/hDubaubcdocutils.nodes reference qN)qO}qP(h.Uh/h,h0h3h5U referenceqQh7}qR(UrefuriX*http://badge.fury.io/py/django-periodicalsh<]h;]h9]h:]h>]uh@NhAhh)]qScdocutils.nodes image qT)qU}qV(h.Xs.. image:: https://badge.fury.io/py/django-periodicals.png :target: http://badge.fury.io/py/django-periodicals h7}qW(UuriX/https://badge.fury.io/py/django-periodicals.pngqXh<]h;]h9]h:]U candidatesqY}qZU?hXsh>]uh/hOh)]h5Uimageq[ubaubhN)q\}q](h.Uh/h,h0h3h5hQh7}q^(UrefuriX2https://travis-ci.org/saschwarz/django-periodicalsh<]h;]h9]h:]h>]uh@NhAhh)]q_hT)q`}qa(h.X.. image:: https://travis-ci.org/saschwarz/django-periodicals.png?branch=master :target: https://travis-ci.org/saschwarz/django-periodicals h7}qb(UuriXDhttps://travis-ci.org/saschwarz/django-periodicals.png?branch=masterqch<]h;]h9]h:]hY}qdU?hcsh>]uh/h\h)]h5h[ubaubhN)qe}qf(h.Uh/h,h0h3h5hQh7}qg(UrefuriXAhttps://coveralls.io/r/saschwarz/django-periodicals?branch=masterh<]h;]h9]h:]h>]uh@NhAhh)]qhhT)qi}qj(h.X.. image:: https://coveralls.io/repos/saschwarz/django-periodicals/badge.png?branch=master :target: https://coveralls.io/r/saschwarz/django-periodicals?branch=master h7}qk(UuriXOhttps://coveralls.io/repos/saschwarz/django-periodicals/badge.png?branch=masterqlh<]h;]h9]h:]hY}qmU?hlsh>]uh/heh)]h5h[ubaubhN)qn}qo(h.Uh/h,h0h3h5hQh7}qp(UrefuriX;https://crate.io/packages/django-periodicals?version=latesth<]h;]h9]h:]h>]uh@NhAhh)]qqhT)qr}qs(h.X.. image:: https://pypip.in/d/django-periodicals/badge.png :target: https://crate.io/packages/django-periodicals?version=latest h7}qt(UuriX/https://pypip.in/d/django-periodicals/badge.pngquh<]h;]h9]h:]hY}qvU?hush>]uh/hnh)]h5h[ubaubcdocutils.nodes paragraph qw)qx}qy(h.X&A Django application for periodical/magazine websites with fully cross linked indices on Periodical, Issue, Article, Author, Article Series and Tags. Provides full text search of article titles and descriptions. A complete set of templates are provided. A sitemap is also dynamically generated.qzh/h,h0h3h5U paragraphq{h7}q|(h9]h:]h;]h<]h>]uh@KhAhh)]q}hJX&A Django application for periodical/magazine websites with fully cross linked indices on Periodical, Issue, Article, Author, Article Series and Tags. Provides full text search of article titles and descriptions. A complete set of templates are provided. A sitemap is also dynamically generated.q~q}q(h.hzh/hxubaubh+)q}q(h.Uh/h,h0h3h5h6h7}q(h9]h:]h;]h<]qhah>]qhauh@KhAhh)]q(hC)q}q(h.X Documentationqh/hh0h3h5hGh7}q(h9]h:]h;]h<]h>]uh@KhAhh)]qhJX Documentationqq}q(h.hh/hubaubhw)q}q(h.X@The full documentation is at http://django-periodicals.rtfd.org.qh/hh0h3h5h{h7}q(h9]h:]h;]h<]h>]uh@KhAhh)]q(hJXThe full documentation is at qq}q(h.XThe full documentation is at h/hubhN)q}q(h.X"http://django-periodicals.rtfd.orgqh7}q(Urefurihh<]h;]h9]h:]h>]uh/hh)]qhJX"http://django-periodicals.rtfd.orgqq}q(h.Uh/hubah5hQubhJX.q}q(h.X.h/hubeubeubh+)q}q(h.Uh/h,h0h3h5h6h7}q(h9]h:]h;]h<]qhah>]qhauh@KhAhh)]q(hC)q}q(h.X Quickstartqh/hh0h3h5hGh7}q(h9]h:]h;]h<]h>]uh@KhAhh)]qhJX Quickstartqq}q(h.hh/hubaubhw)q}q(h.XSimple to install from a package using ``pip`` which will install all it's dependencies (coming soon). For now see `installing-from-github `_.qh/hh0h3h5h{h7}q(h9]h:]h;]h<]h>]uh@KhAhh)]q(hJX'Simple to install from a package using qq}q(h.X'Simple to install from a package using h/hubcdocutils.nodes literal q)q}q(h.X``pip``h7}q(h9]h:]h;]h<]h>]uh/hh)]qhJXpipqq}q(h.Uh/hubah5UliteralqubhJXE which will install all it's dependencies (coming soon). For now see qq}q(h.XE which will install all it's dependencies (coming soon). For now see h/hubhN)q}q(h.Xx`installing-from-github `_h7}q(Unameh UrefuriqX\http://django-periodicals.readthedocs.org/en/latest/installation.html#installing-from-githubqh<]h;]h9]h:]h>]uh/hh)]qhJXinstalling-from-githubqɅq}q(h.Uh/hubah5hQubcdocutils.nodes target q)q}q(h.X_ h7}q(Urefurihh<]qh"ah;]h9]h:]h>]qh auh/hh)]h5UtargetqubhJX.q}q(h.X.h/hubeubcdocutils.nodes literal_block q)q}q(h.Xpip install django-periodicalsh/hh0h3h5U literal_blockqh7}q(UlinenosqډUlanguageqXbashU xml:spaceqUpreserveqh<]h;]h9]h:]h>]uh@KhAhh)]qhJXpip install django-periodicalsq߅q}q(h.Uh/hubaubhw)q}q(h.XqInstall two packages manually to get newer versions than are currently in `PyPi `_:qh/hh0h3h5h{h7}q(h9]h:]h;]h<]h>]uh@K"hAhh)]q(hJXJInstall two packages manually to get newer versions than are currently in q煁q}q(h.XJInstall two packages manually to get newer versions than are currently in h/hubhN)q}q(h.X&`PyPi `_h7}q(UnameXPyPihXhttps://pypi.python.org/pypiqh<]h;]h9]h:]h>]uh/hh)]qhJXPyPiqq}q(h.Uh/hubah5hQubh)q}q(h.X h7}q(Urefurihh<]qh!ah;]h9]h:]h>]qh auh/hh)]h5hubhJX:q}q(h.X:h/hubeubh)q}q(h.X$ pip install -e git://github.com/saschwarz/django-recaptcha.git#egg=django-recaptcha $ pip install -e git://github.com/nemith/django-tagging.git@dev-django1.5#egg=django_tagging-devh/hh0h3h5hh7}q(hډhXbashhhh<]h;]h9]h:]h>]uh@K$hAhh)]qhJX$ pip install -e git://github.com/saschwarz/django-recaptcha.git#egg=django-recaptcha $ pip install -e git://github.com/nemith/django-tagging.git@dev-django1.5#egg=django_tagging-devqq}q(h.Uh/hubaubhw)r}r(h.XfInstall a search backend for use by `Haystack `_. To start install Whoosh:rh/hh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@K+hAhh)]r(hJX$Install a search backend for use by rr}r(h.X$Install a search backend for use by h/jubhN)r}r (h.X(`Haystack `_h7}r (UnameXHaystackhXhttp://haystacksearch.org/r h<]h;]h9]h:]h>]uh/jh)]r hJXHaystackr r}r(h.Uh/jubah5hQubh)r}r(h.X h7}r(Urefurij h<]rh&ah;]h9]h:]h>]rhauh/jh)]h5hubhJX. To start install Whoosh:rr}r(h.X. To start install Whoosh:h/jubeubh)r}r(h.X$ pip install Whooshh/hh0h3h5hh7}r(hډhXbashhhh<]h;]h9]h:]h>]uh@K-hAhh)]rhJX$ pip install Whooshrr}r(h.Uh/jubaubh+)r}r (h.Uh/hh0h3h5h6h7}r!(h9]h:]h;]h<]r"h%ah>]r#hauh@K2hAhh)]r$(hC)r%}r&(h.X settings.pyr'h/jh0h3h5hGh7}r((h9]h:]h;]h<]h>]uh@K2hAhh)]r)hJX settings.pyr*r+}r,(h.j'h/j%ubaubhw)r-}r.(h.XMAdd ``periodicals`` and the other applications it uses to ``INSTALLED_APPS``:r/h/jh0h3h5h{h7}r0(h9]h:]h;]h<]h>]uh@K4hAhh)]r1(hJXAdd r2r3}r4(h.XAdd h/j-ubh)r5}r6(h.X``periodicals``h7}r7(h9]h:]h;]h<]h>]uh/j-h)]r8hJX periodicalsr9r:}r;(h.Uh/j5ubah5hubhJX' and the other applications it uses to r<r=}r>(h.X' and the other applications it uses to h/j-ubh)r?}r@(h.X``INSTALLED_APPS``h7}rA(h9]h:]h;]h<]h>]uh/j-h)]rBhJXINSTALLED_APPSrCrD}rE(h.Uh/j?ubah5hubhJX:rF}rG(h.X:h/j-ubeubh)rH}rI(h.X]INSTALLED_APPS = ( ... 'haystack', 'tagging', 'captcha', 'periodicals', )h/jh0h3h5hh7}rJ(hډhXpythonhhh<]h;]h9]h:]h>]uh@K6hAhh)]rKhJX]INSTALLED_APPS = ( ... 'haystack', 'tagging', 'captcha', 'periodicals', )rLrM}rN(h.Uh/jHubaubhw)rO}rP(h.XuConfigure your Haystack backend. Here is an example using `Whoosh `_:rQh/jh0h3h5h{h7}rR(h9]h:]h;]h<]h>]uh@K@hAhh)]rS(hJX:Configure your Haystack backend. Here is an example using rTrU}rV(h.X:Configure your Haystack backend. Here is an example using h/jOubhN)rW}rX(h.X:`Whoosh `_h7}rY(UnameXWhooshhX.https://bitbucket.org/mchaput/whoosh/wiki/HomerZh<]h;]h9]h:]h>]uh/jOh)]r[hJXWhooshr\r]}r^(h.Uh/jWubah5hQubh)r_}r`(h.X1 h7}ra(UrefurijZh<]rbhah;]h9]h:]h>]rchauh/jOh)]h5hubhJX:rd}re(h.X:h/jOubeubh)rf}rg(h.X\HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'whoosh_periodicals_index'), 'STORAGE': 'file', 'POST_LIMIT': 128 * 1024 * 1024, 'INCLUDE_SPELLING': True, 'BATCH_SIZE': 100, }, }h/jh0h3h5hh7}rh(hډhXpythonhhh<]h;]h9]h:]h>]uh@KBhAhh)]rihJX\HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'whoosh_periodicals_index'), 'STORAGE': 'file', 'POST_LIMIT': 128 * 1024 * 1024, 'INCLUDE_SPELLING': True, 'BATCH_SIZE': 100, }, }rjrk}rl(h.Uh/jfubaubhw)rm}rn(h.XUConfigure your reCAPTCHA keys - only used when users add links to Articles or Issues:roh/jh0h3h5h{h7}rp(h9]h:]h;]h<]h>]uh@KOhAhh)]rqhJXUConfigure your reCAPTCHA keys - only used when users add links to Articles or Issues:rrrs}rt(h.joh/jmubaubh)ru}rv(h.XgRECAPTCHA_PRIVATE_KEY = "your-recaptcha-private-key" RECAPTCHA_PUBLIC_KEY = "your-recaptcha-public-key"h/jh0h3h5hh7}rw(hډhXpythonhhh<]h;]h9]h:]h>]uh@KQhAhh)]rxhJXgRECAPTCHA_PRIVATE_KEY = "your-recaptcha-private-key" RECAPTCHA_PUBLIC_KEY = "your-recaptcha-public-key"ryrz}r{(h.Uh/juubaubeubh+)r|}r}(h.Uh/hh0h3h5h6h7}r~(h9]h:]h;]h<]rh$ah>]rhauh@KXhAhh)]r(hC)r}r(h.Xurls.pyrh/j|h0h3h5hGh7}r(h9]h:]h;]h<]h>]uh@KXhAhh)]rhJXurls.pyrr}r(h.jh/jubaubhw)r}r(h.X5Choose a URL prefix at which to base the application:rh/j|h0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@KZhAhh)]rhJX5Choose a URL prefix at which to base the application:rr}r(h.jh/jubaubh)r}r(h.X... import periodicals urlpatterns = patterns('', ... url(r'^admin/', include(admin.site.urls)), url(r'^periodicals/', include(periodicals.urls)), )h/j|h0h3h5hh7}r(hډhXpythonhhh<]h;]h9]h:]h>]uh@K\hAhh)]rhJX... import periodicals urlpatterns = patterns('', ... url(r'^admin/', include(admin.site.urls)), url(r'^periodicals/', include(periodicals.urls)), )rr}r(h.Uh/jubaubeubh+)r}r(h.Uh/hh0h3h5h6h7}r(h9]h:]h;]h<]rh'ah>]rhauh@KhhAhh)]r(hC)r}r(h.XManagement Commandsrh/jh0h3h5hGh7}r(h9]h:]h;]h<]h>]uh@KhhAhh)]rhJXManagement Commandsrr}r(h.jh/jubaubh)r}r(h.X$ python manage.py syncdbh/jh0h3h5hh7}r(hډhXbashhhh<]h;]h9]h:]h>]uh@KjhAhh)]rhJX$ python manage.py syncdbrr}r(h.Uh/jubaubeubeubh+)r}r(h.Uh/h,h0h3h5h6h7}r(h9]h:]h;]h<]rh(ah>]rhauh@KphAhh)]r(hC)r}r(h.XFeaturesrh/jh0h3h5hGh7}r(h9]h:]h;]h<]h>]uh@KphAhh)]rhJXFeaturesrr}r(h.jh/jubaubhw)r}r(h.X9I developed ``django-periodicals`` to provide a searchable index for a printed/online magazine. I wanted all the meta data to be fully cross linked. So users can easily browse all articles for an author, all articles in an issue, all articles in a series/category, all articles tagged with a keyword and so forth.rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@KrhAhh)]r(hJX I developed rr}r(h.X I developed h/jubh)r}r(h.X``django-periodicals``h7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXdjango-periodicalsrr}r(h.Uh/jubah5hubhJX to provide a searchable index for a printed/online magazine. I wanted all the meta data to be fully cross linked. So users can easily browse all articles for an author, all articles in an issue, all articles in a series/category, all articles tagged with a keyword and so forth.rr}r(h.X to provide a searchable index for a printed/online magazine. I wanted all the meta data to be fully cross linked. So users can easily browse all articles for an author, all articles in an issue, all articles in a series/category, all articles tagged with a keyword and so forth.h/jubeubhw)r}r(h.XaI turned it in to a standalone application when I ported it to Django 1.5. Here are the features:rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@KthAhh)]rhJXaI turned it in to a standalone application when I ported it to Django 1.5. Here are the features:rr}r(h.jh/jubaubcdocutils.nodes bullet_list r)r}r(h.Uh/jh0h3h5U bullet_listrh7}r(UbulletrX*h<]h;]h9]h:]h>]uh@KvhAhh)]r(cdocutils.nodes list_item r)r}r(h.XhProvides Django models for Periodicals, Issues, Articles, Authors, Tags and Links to external material. h/jh0h3h5U list_itemrh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhw)r}r(h.XgProvides Django models for Periodicals, Issues, Articles, Authors, Tags and Links to external material.rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@Kvh)]rhJXgProvides Django models for Periodicals, Issues, Articles, Authors, Tags and Links to external material.rr}r(h.jh/jubaubaubj)r}r(h.X4A full set of templates are provided including: * Individual Periodical pages with yearly indices. * Fully cross-linked indexes of Authors, Issues, Article Series, Tags, and Articles. * Search across Article titles and descriptions. * Tagging: * Per article. * Index pages per tag. * Tag cloud. h/jh0Nh5jh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(hw)r}r(h.X/A full set of templates are provided including:rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@Kxh)]rhJX/A full set of templates are provided including:rr}r(h.jh/jubaubj)r}r(h.Uh7}r(jX*h<]h;]h9]h:]h>]uh/jh)]r(j)r}r(h.X1Individual Periodical pages with yearly indices. h7}r(h9]h:]h;]h<]h>]uh/jh)]rhw)r}r(h.X0Individual Periodical pages with yearly indices.rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@Kzh)]rhJX0Individual Periodical pages with yearly indices.rr}r(h.jh/jubaubah5jubj)r}r(h.XSFully cross-linked indexes of Authors, Issues, Article Series, Tags, and Articles. h7}r (h9]h:]h;]h<]h>]uh/jh)]r hw)r }r (h.XRFully cross-linked indexes of Authors, Issues, Article Series, Tags, and Articles.r h/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@K|h)]rhJXRFully cross-linked indexes of Authors, Issues, Article Series, Tags, and Articles.rr}r(h.j h/j ubaubah5jubj)r}r(h.X/Search across Article titles and descriptions. h7}r(h9]h:]h;]h<]h>]uh/jh)]rhw)r}r(h.X.Search across Article titles and descriptions.rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@K~h)]rhJX.Search across Article titles and descriptions.rr}r(h.jh/jubaubah5jubj)r}r (h.X?Tagging: * Per article. * Index pages per tag. * Tag cloud. h7}r!(h9]h:]h;]h<]h>]uh/jh)]r"(hw)r#}r$(h.XTagging:r%h/jh0h3h5h{h7}r&(h9]h:]h;]h<]h>]uh@Kh)]r'hJXTagging:r(r)}r*(h.j%h/j#ubaubj)r+}r,(h.Uh7}r-(jX*h<]h;]h9]h:]h>]uh/jh)]r.(j)r/}r0(h.X Per article. h7}r1(h9]h:]h;]h<]h>]uh/j+h)]r2hw)r3}r4(h.X Per article.r5h/j/h0h3h5h{h7}r6(h9]h:]h;]h<]h>]uh@Kh)]r7hJX Per article.r8r9}r:(h.j5h/j3ubaubah5jubj)r;}r<(h.XIndex pages per tag. h7}r=(h9]h:]h;]h<]h>]uh/j+h)]r>hw)r?}r@(h.XIndex pages per tag.rAh/j;h0h3h5h{h7}rB(h9]h:]h;]h<]h>]uh@Kh)]rChJXIndex pages per tag.rDrE}rF(h.jAh/j?ubaubah5jubj)rG}rH(h.X Tag cloud. h7}rI(h9]h:]h;]h<]h>]uh/j+h)]rJhw)rK}rL(h.X Tag cloud.rMh/jGh0h3h5h{h7}rN(h9]h:]h;]h<]h>]uh@Kh)]rOhJX Tag cloud.rPrQ}rR(h.jMh/jKubaubah5jubeh5jubeh5jubeh5jubeubj)rS}rT(h.XModerated user added links of blog posts and other web resources to each Issue and Article. Spam protection by `reCAPTCHA `_ and requiring approval by the admin. This feature can be disabled via setting. h/jh0h3h5jh7}rU(h9]h:]h;]h<]h>]uh@NhAhh)]rVhw)rW}rX(h.XModerated user added links of blog posts and other web resources to each Issue and Article. Spam protection by `reCAPTCHA `_ and requiring approval by the admin. This feature can be disabled via setting.h/jSh0h3h5h{h7}rY(h9]h:]h;]h<]h>]uh@Kh)]rZ(hJXoModerated user added links of blog posts and other web resources to each Issue and Article. Spam protection by r[r\}r](h.XoModerated user added links of blog posts and other web resources to each Issue and Article. Spam protection by h/jWubhN)r^}r_(h.X.`reCAPTCHA `_h7}r`(UnameX reCAPTCHAhXhttp://www.google.com/recaptcharah<]h;]h9]h:]h>]uh/jWh)]rbhJX reCAPTCHArcrd}re(h.Uh/j^ubah5hQubh)rf}rg(h.X" h7}rh(Urefurijah<]rihah;]h9]h:]h>]rjh auh/jWh)]h5hubhJXO and requiring approval by the admin. This feature can be disabled via setting.rkrl}rm(h.XO and requiring approval by the admin. This feature can be disabled via setting.h/jWubeubaubj)rn}ro(h.X#Django admin forms for data entry. h/jh0h3h5jh7}rp(h9]h:]h;]h<]h>]uh@NhAhh)]rqhw)rr}rs(h.X"Django admin forms for data entry.rth/jnh0h3h5h{h7}ru(h9]h:]h;]h<]h>]uh@Kh)]rvhJX"Django admin forms for data entry.rwrx}ry(h.jth/jrubaubaubj)rz}r{(h.XSitemap support. h/jh0h3h5jh7}r|(h9]h:]h;]h<]h>]uh@NhAhh)]r}hw)r~}r(h.XSitemap support.rh/jzh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@Kh)]rhJXSitemap support.rr}r(h.jh/j~ubaubaubj)r}r(h.X4Support for Python 2.6, 2.7 and Django 1.5 and 1.6. h/jh0h3h5jh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhw)r}r(h.X3Support for Python 2.6, 2.7 and Django 1.5 and 1.6.rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@Kh)]rhJX3Support for Python 2.6, 2.7 and Django 1.5 and 1.6.rr}r(h.jh/jubaubaubj)r}r(h.XTravis CI unit tests. h/jh0h3h5jh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhw)r}r(h.XTravis CI unit tests.rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@Kh)]rhJXTravis CI unit tests.rr}r(h.jh/jubaubaubj)r}r(h.XZSee ``django-periodicals`` in action at `Googility `_. h/jh0X$internal padding after ../README.rstrh5jh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhw)r}r(h.XYSee ``django-periodicals`` in action at `Googility `_.rh/jh0h3h5h{h7}r(h9]h:]h;]h<]h>]uh@Kh)]r(hJXSee rr}r(h.XSee h/jubh)r}r(h.X``django-periodicals``h7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXdjango-periodicalsrr}r(h.Uh/jubah5hubhJX in action at rr}r(h.X in action at h/jubhN)r}r(h.X0`Googility `_h7}r(UnameX GoogilityhX!http://googility.com/periodicals/rh<]h;]h9]h:]h>]uh/jh)]rhJX Googilityrr}r(h.Uh/jubah5hQubh)r}r(h.X$ h7}r(Urefurijh<]rh#ah;]h9]h:]h>]rh auh/jh)]h5hubhJX.r}r(h.X.h/jubeubaubeubeubeubah.UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhAhU current_linerNUtransform_messagesr]r(cdocutils.nodes system_message r)r}r(h.Uh7}r(h9]UlevelKh<]h;]Usourceh3h:]h>]UlineKUtypeUINFOruh)]rhw)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX<Hyperlink target "installing-from-github" is not referenced.rr}r(h.Uh/jubah5h{ubah5Usystem_messagerubj)r}r(h.Uh7}r(h9]UlevelKh<]h;]Usourceh3h:]h>]UlineK"Utypejuh)]rhw)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX*Hyperlink target "pypi" is not referenced.rr}r(h.Uh/jubah5h{ubah5jubj)r}r(h.Uh7}r(h9]UlevelKh<]h;]Usourceh3h:]h>]UlineK+Utypejuh)]rhw)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX.Hyperlink target "haystack" is not referenced.rr}r(h.Uh/jubah5h{ubah5jubj)r}r(h.Uh7}r(h9]UlevelKh<]h;]Usourceh3h:]h>]UlineK@Utypejuh)]rhw)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX,Hyperlink target "whoosh" is not referenced.rr}r(h.Uh/jubah5h{ubah5jubj)r}r(h.Uh7}r(h9]UlevelKh<]h;]Usourceh3h:]h>]UlineKUtypejuh)]rhw)r}r(h.Uh7}r (h9]h:]h;]h<]h>]uh/jh)]r hJX/Hyperlink target "recaptcha" is not referenced.r r }r (h.Uh/jubah5h{ubah5jubj)r}r(h.Uh7}r(h9]UlevelKh<]h;]Usourceh3h:]h>]UlineKUtypejuh)]rhw)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX/Hyperlink target "googility" is not referenced.rr}r(h.Uh/jubah5h{ubah5jubeUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]r Usettingsr!(cdocutils.frontend Values r"or#}r$(Ufootnote_backlinksr%KUrecord_dependenciesr&NU rfc_base_urlr'Uhttp://tools.ietf.org/html/r(U tracebackr)KUpep_referencesr*NUstrip_commentsr+NU toc_backlinksr,Uentryr-U language_coder.Uenr/U datestampr0NU report_levelr1KU _destinationr2NU halt_levelr3KU strip_classesr4NhGNUerror_encoding_error_handlerr5Ubackslashreplacer6Udebugr7NUembed_stylesheetr8Uoutput_encoding_error_handlerr9Ustrictr:U sectnum_xformr;KUdump_transformsr<NU docinfo_xformr=KUwarning_streamr>NUpep_file_url_templater?Upep-%04dr@Uexit_status_levelrAKUconfigrBNUstrict_visitorrCNUcloak_email_addressesrDUtrim_footnote_reference_spacerEUenvrFNUdump_pseudo_xmlrGNUexpose_internalsrHNUsectsubtitle_xformrIU source_linkrJNUrfc_referencesrKNUoutput_encodingrLUutf-8rMU source_urlrNNUinput_encodingrOU utf-8-sigrPU_disable_configrQNU id_prefixrRUU tab_widthrSKUerror_encodingrTUUTF-8rUU_sourcerVUJ/var/build/user_builds/django-periodicals/checkouts/latest/docs/readme.rstrWUgettext_compactrXU generatorrYNUdump_internalsrZNU pep_base_urlr[Uhttp://www.python.org/dev/peps/r\Uinput_encoding_error_handlerr]j:Uauto_id_prefixr^Uidr_Udoctitle_xformr`Ustrip_elements_with_classesraNU _config_filesrb]rcUfile_insertion_enabledrdKU raw_enabledreKU dump_settingsrfNubUsymbol_footnote_startrgKUidsrh}ri(h%jhhhhhj_hjfh h,h!hh"hh'jh&jh$j|h#jh(juUsubstitution_namesrj}rkh5hAh7}rl(h9]h<]h;]Usourceh1XJ/var/build/user_builds/django-periodicals/checkouts/latest/docs/readme.rstrmrn}robh:]h>]uU footnotesrp]rqUrefidsrr}rsub.PKqC]fOfO6django-periodicals-latest/.doctrees/environment.pickle(csphinx.environment BuildEnvironment qoq}q(Udlfilesqcsphinx.util FilenameUniqDict q)qc__builtin__ set q]RqbUappq NU _warnfuncq NUtitlesq }q (Uindexq cdocutils.nodes title q)q}q(U rawsourceqUU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq]Unamesq]uUchildrenq]qcdocutils.nodes Text qX.Welcome to django-periodicals's documentation!qq}q(hX.Welcome to django-periodicals's documentation!qUparentq hubaUtagnameq!Utitleq"ubU installationq#h)q$}q%(hUh}q&(h]h]h]h]h]uh]q'hX Installationq(q)}q*(hX Installationq+h h$ubah!h"ubUdemoq,h)q-}q.(hUh}q/(h]h]h]h]h]uh]q0hXTry the Demo Project!q1q2}q3(hXTry the Demo Project!q4h h-ubah!h"ubU contributingq5h)q6}q7(hUh}q8(h]h]h]h]h]uh]q9hX Contributingq:q;}q<(hX Contributingq=h h6ubah!h"ubUusageq>h)q?}q@(hUh}qA(h]h]h]h]h]uh]qBhXUsageqCqD}qE(hXUsageqFh h?ubah!h"ubUauthorsqGh)qH}qI(hUh}qJ(h]h]h]h]h]uh]qKhXCreditsqLqM}qN(hXCreditsqOh hHubah!h"ubUreadmeqPh)qQ}qR(hUh}qS(h]h]h]h]h]uh]qThXdjango-periodicalsqUqV}qW(hXdjango-periodicalsqXh hQubah!h"ubUhistoryqYh)qZ}q[(hUh}q\(h]h]h]h]h]uh]q]hXHistoryq^q_}q`(hXHistoryqah hZubah!h"ubuU domaindataqb}qc(Ustdqd}qe(UversionqfKU anonlabelsqg}qh(UmodindexqiU py-modindexUUgenindexqjhjUXinstalling-from-githubqkh#Uinstalling-from-githubqlUsearchqmUsearchUXtry-the-demo-projectqnh,Utry-the-demo-projectqouUlabelsqp}qq(hiU py-modindexUcsphinx.locale _TranslationProxy qrcsphinx.locale mygettext qsU Module IndexqtquhshtqvbhjhjUhrhsUIndexqwqxhshwqybhkh#hlXInstalling from GitHubhmhmUhrhsU Search Pageqzq{hshzq|bhnh,hoXTry the Demo Project!uU progoptionsq}}q~Uobjectsq}quUc}q(h}qhfKuUpyq}q(h}qUmodulesq}qhfKuUjsq}q(h}qhfKuUrstq}q(h}qhfKuUcppq}q(h}qhfKuuU glob_toctreesqh]RqU reread_alwaysqh]RqU doctreedirqUU/var/build/user_builds/django-periodicals/checkouts/latest/docs/_build/html/.doctreesqUversioning_conditionqU citationsq}hfK)UsrcdirqU?/var/build/user_builds/django-periodicals/checkouts/latest/docsqUconfigqcsphinx.config Config q)q}q(U html_contextq}q(U github_userU saschwarzUnameqXdjango-periodicalsqUdisplay_githubUversions]qUlatestqU /en/latest/qaU using_themeU downloads]q(UPDFURhttps://media.readthedocs.org/pdf/django-periodicals/latest/django-periodicals.pdfqUHTMLqUVhttps://media.readthedocs.org/htmlzip/django-periodicals/latest/django-periodicals.zipqUEpubUThttps://media.readthedocs.org/epub/django-periodicals/latest/django-periodicals.epubqeU READTHEDOCSUgithub_versionUmasterqU conf_py_pathU/docs/U github_repoUdjango-periodicalsqUanalytics_codeUUPRODUCTION_DOMAINUreadthedocs.orgU html_themeqUsphinx_rtd_themeqU new_themeUcurrent_versionqhUslugqhU MEDIA_URLqUhttps://media.readthedocs.org/uUpygments_styleqUsphinxqUhtmlhelp_basenameqUdjango-periodicalsdochhU master_docqUindexqU source_suffixqU.rstUtexinfo_documentsq]q(UindexqhX django-periodicals DocumentationqX Steve SchwarzqhU One line description of project.U MiscellaneoustqaU copyrightqX2013, Steve SchwarzUexclude_patternsq]qU_buildqahfU0.5.0qU man_pagesq]q(hhh]qhaKtqaU html_styleqNUhtml_theme_optionsq}Utemplates_pathq]q(UA/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinxqU _templatesqeUlatex_documentsq]q(hUdjango-periodicals.texhhUmanualtqaUhtml_static_pathq]q(U_staticqUI/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinx/_staticqeUhtml_theme_pathq]q(U_themesqheUlatex_elementsq}UlanguageqXenqU overridesq}qhhsUprojectqhU extensionsq]q(Usphinx.ext.autodocqUsphinx.ext.viewcodeqUreadthedocs_ext.readthedocsqU"readthedocs_ext.readthedocshtmldirqeUreleaseqhUsetupqNubUmetadataq}q(h }h#}h,}h5}h>}hG}hP}hY}uUversionchangesq}U_viewcode_modulesq}Utoc_num_entriesq}q(h Kh#Kh,Kh5K h>K hGKhPKhYKuUimagesqh)qh]RqbUnumbered_toctreesqh]RqU found_docsqh]q(h h#h,h5hPhGh>hYeRqU longtitlesq}q(h hh#h$h,h-h5h6h>h?hGhHhPhQhYhZuU dependenciesq}q(h5h]qX../CONTRIBUTING.rstqaRqhPh]qX ../README.rstqaRqhYh]qX../HISTORY.rstqaRqhGh]rX../AUTHORS.rstraRruUtoctree_includesr}rh ]r(XreadmerX installationrXusagerXdemor X contributingr Xauthorsr Xhistoryr esU temp_datar }Utocsr}r(h cdocutils.nodes bullet_list r)r}r(hUh}r(h]h]h]h]h]uh]rcdocutils.nodes list_item r)r}r(hUh}r(h]h]h]h]h]uh jh]r(csphinx.addnodes compact_paragraph r)r}r(hUh}r(h]h]h]h]h]uh jh]rcdocutils.nodes reference r)r }r!(hUh}r"(U anchornameUUrefurih h]h]h]h]h]Uinternaluh jh]r#hX.Welcome to django-periodicals's documentation!r$r%}r&(hhh j ubah!U referencer'ubah!Ucompact_paragraphr(ubj)r)}r*(hUh}r+(h]h]h]h]h]uh jh]r,csphinx.addnodes toctree r-)r.}r/(hUh}r0(UnumberedKUparenth U titlesonlyUglobh]h]h]h]h]Uentries]r1(Njr2Njr3Njr4Nj r5Nj r6Nj r7Nj r8eUhiddenU includefiles]r9(jjjj j j j eUmaxdepthKuh j)h]h!Utoctreer:ubah!U bullet_listr;ubeh!U list_itemr<ubah!j;ubh#j)r=}r>(hUh}r?(h]h]h]h]h]uh]r@j)rA}rB(hUh}rC(h]h]h]h]h]uh j=h]rD(j)rE}rF(hUh}rG(h]h]h]h]h]uh jAh]rHj)rI}rJ(hUh}rK(U anchornameUUrefurih#h]h]h]h]h]Uinternaluh jEh]rLhX InstallationrMrN}rO(hh+h jIubah!j'ubah!j(ubj)rP}rQ(hUh}rR(h]h]h]h]h]uh jAh]rS(j)rT}rU(hUh}rV(h]h]h]h]h]uh jPh]rWj)rX}rY(hUh}rZ(h]h]h]h]h]uh jTh]r[j)r\}r](hUh}r^(U anchornameU#installing-from-pypiUrefurih#h]h]h]h]h]Uinternaluh jXh]r_hXInstalling from PyPir`ra}rb(hXInstalling from PyPirch j\ubah!j'ubah!j(ubah!j<ubj)rd}re(hUh}rf(h]h]h]h]h]uh jPh]rgj)rh}ri(hUh}rj(h]h]h]h]h]uh jdh]rkj)rl}rm(hUh}rn(U anchornameU#installing-from-githubUrefurih#h]h]h]h]h]Uinternaluh jhh]rohXInstalling from GitHubrprq}rr(hXInstalling from GitHubrsh jlubah!j'ubah!j(ubah!j<ubj)rt}ru(hUh}rv(h]h]h]h]h]uh jPh]rwj)rx}ry(hUh}rz(h]h]h]h]h]uh jth]r{j)r|}r}(hUh}r~(U anchornameU#install-a-haystack-backendUrefurih#h]h]h]h]h]Uinternaluh jxh]rhXInstall a Haystack Backendrr}r(hXInstall a Haystack Backendrh j|ubah!j'ubah!j(ubah!j<ubeh!j;ubeh!j<ubah!j;ubh,j)r}r(hUh}r(h]h]h]h]h]uh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameUUrefurih,h]h]h]h]h]Uinternaluh jh]rhXTry the Demo Project!rr}r(hh4h jubah!j'ubah!j(ubah!j<ubah!j;ubh5j)r}r(hUh}r(h]h]h]h]h]uh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameUUrefurih5h]h]h]h]h]Uinternaluh jh]rhX Contributingrr}r(hh=h jubah!j'ubah!j(ubj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#types-of-contributionsUrefurih5h]h]h]h]h]Uinternaluh jh]rhXTypes of Contributionsrr}r(hXTypes of Contributionsrh jubah!j'ubah!j(ubj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU #report-bugsUrefurih5h]h]h]h]h]Uinternaluh jh]rhX Report Bugsrr}r(hX Report Bugsrh jubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU #fix-bugsUrefurih5h]h]h]h]h]Uinternaluh jh]rhXFix Bugsrr}r(hXFix Bugsrh jubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#implement-featuresUrefurih5h]h]h]h]h]Uinternaluh jh]rhXImplement Featuresrr}r(hXImplement Featuresrh jubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#write-documentationUrefurih5h]h]h]h]h]Uinternaluh jh]rhXWrite Documentationrr}r(hXWrite Documentationrh jubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]r j)r }r (hUh}r (U anchornameU#submit-feedbackUrefurih5h]h]h]h]h]Uinternaluh jh]r hXSubmit Feedbackrr}r(hXSubmit Feedbackrh j ubah!j'ubah!j(ubah!j<ubeh!j;ubeh!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU #get-startedUrefurih5h]h]h]h]h]Uinternaluh jh]rhX Get Started!rr}r (hX Get Started!r!h jubah!j'ubah!j(ubah!j<ubj)r"}r#(hUh}r$(h]h]h]h]h]uh jh]r%j)r&}r'(hUh}r((h]h]h]h]h]uh j"h]r)j)r*}r+(hUh}r,(U anchornameU#pull-request-guidelinesUrefurih5h]h]h]h]h]Uinternaluh j&h]r-hXPull Request Guidelinesr.r/}r0(hXPull Request Guidelinesr1h j*ubah!j'ubah!j(ubah!j<ubj)r2}r3(hUh}r4(h]h]h]h]h]uh jh]r5j)r6}r7(hUh}r8(h]h]h]h]h]uh j2h]r9j)r:}r;(hUh}r<(U anchornameU#tipsUrefurih5h]h]h]h]h]Uinternaluh j6h]r=hXTipsr>r?}r@(hXTipsrAh j:ubah!j'ubah!j(ubah!j<ubeh!j;ubeh!j<ubah!j;ubh>j)rB}rC(hUh}rD(h]h]h]h]h]uh]rEj)rF}rG(hUh}rH(h]h]h]h]h]uh jBh]rI(j)rJ}rK(hUh}rL(h]h]h]h]h]uh jFh]rMj)rN}rO(hUh}rP(U anchornameUUrefurih>h]h]h]h]h]Uinternaluh jJh]rQhXUsagerRrS}rT(hhFh jNubah!j'ubah!j(ubj)rU}rV(hUh}rW(h]h]h]h]h]uh jFh]rX(j)rY}rZ(hUh}r[(h]h]h]h]h]uh jUh]r\j)r]}r^(hUh}r_(h]h]h]h]h]uh jYh]r`j)ra}rb(hUh}rc(U anchornameU #settings-pyUrefurih>h]h]h]h]h]Uinternaluh j]h]rdhX settings.pyrerf}rg(hX settings.pyrhh jaubah!j'ubah!j(ubah!j<ubj)ri}rj(hUh}rk(h]h]h]h]h]uh jUh]rlj)rm}rn(hUh}ro(h]h]h]h]h]uh jih]rpj)rq}rr(hUh}rs(U anchornameU#urls-pyUrefurih>h]h]h]h]h]Uinternaluh jmh]rthXurls.pyrurv}rw(hXurls.pyrxh jqubah!j'ubah!j(ubah!j<ubj)ry}rz(hUh}r{(h]h]h]h]h]uh jUh]r|(j)r}}r~(hUh}r(h]h]h]h]h]uh jyh]rj)r}r(hUh}r(U anchornameU#database-setupUrefurih>h]h]h]h]h]Uinternaluh j}h]rhXDatabase Setuprr}r(hXDatabase Setuprh jubah!j'ubah!j(ubj)r}r(hUh}r(h]h]h]h]h]uh jyh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#optional-settingsUrefurih>h]h]h]h]h]Uinternaluh jh]rhXOptional Settingsrr}r(hXOptional Settingsrh jubah!j'ubah!j(ubah!j<ubah!j;ubeh!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jUh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU"#disabling-adding-displaying-linksUrefurih>h]h]h]h]h]Uinternaluh jh]rhX!Disabling Adding/Displaying Linksrr}r(hX!Disabling Adding/Displaying Linksrh jubah!j'ubah!j(ubj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#entering-dataUrefurih>h]h]h]h]h]Uinternaluh jh]rhX Entering Datarr}r(hX Entering Datarh jubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#update-search-indexUrefurih>h]h]h]h]h]Uinternaluh jh]rhXUpdate Search Indexrr}r(hXUpdate Search Indexrh jubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#sitemap-supportUrefurih>h]h]h]h]h]Uinternaluh jh]rhXSitemap Supportrr}r(hXSitemap Supportrh jubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#override-templates-blocksUrefurih>h]h]h]h]h]Uinternaluh jh]rhXOverride Templates/Blocksrr}r(hXOverride Templates/Blocksrh jubah!j'ubah!j(ubah!j<ubeh!j;ubeh!j<ubeh!j;ubeh!j<ubah!j;ubhGj)r}r(hUh}r(h]h]h]h]h]uh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameUUrefurihGh]h]h]h]h]Uinternaluh jh]rhXCreditsrr}r(hhOh jubah!j'ubah!j(ubj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r (hUh}r (h]h]h]h]h]uh jh]r j)r }r (hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#development-leadUrefurihGh]h]h]h]h]Uinternaluh j h]rhXDevelopment Leadrr}r(hXDevelopment Leadrh jubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r }r!(hUh}r"(U anchornameU #contributorsUrefurihGh]h]h]h]h]Uinternaluh jh]r#hX Contributorsr$r%}r&(hX Contributorsr'h j ubah!j'ubah!j(ubah!j<ubeh!j;ubeh!j<ubah!j;ubhPj)r(}r)(hUh}r*(h]h]h]h]h]uh]r+j)r,}r-(hUh}r.(h]h]h]h]h]uh j(h]r/(j)r0}r1(hUh}r2(h]h]h]h]h]uh j,h]r3j)r4}r5(hUh}r6(U anchornameUUrefurihPh]h]h]h]h]Uinternaluh j0h]r7hXdjango-periodicalsr8r9}r:(hhXh j4ubah!j'ubah!j(ubj)r;}r<(hUh}r=(h]h]h]h]h]uh j,h]r>(j)r?}r@(hUh}rA(h]h]h]h]h]uh j;h]rBj)rC}rD(hUh}rE(h]h]h]h]h]uh j?h]rFj)rG}rH(hUh}rI(U anchornameU#documentationUrefurihPh]h]h]h]h]Uinternaluh jCh]rJhX DocumentationrKrL}rM(hX DocumentationrNh jGubah!j'ubah!j(ubah!j<ubj)rO}rP(hUh}rQ(h]h]h]h]h]uh j;h]rR(j)rS}rT(hUh}rU(h]h]h]h]h]uh jOh]rVj)rW}rX(hUh}rY(U anchornameU #quickstartUrefurihPh]h]h]h]h]Uinternaluh jSh]rZhX Quickstartr[r\}r](hX Quickstartr^h jWubah!j'ubah!j(ubj)r_}r`(hUh}ra(h]h]h]h]h]uh jOh]rb(j)rc}rd(hUh}re(h]h]h]h]h]uh j_h]rfj)rg}rh(hUh}ri(h]h]h]h]h]uh jch]rjj)rk}rl(hUh}rm(U anchornameU #settings-pyUrefurihPh]h]h]h]h]Uinternaluh jgh]rnhX settings.pyrorp}rq(hX settings.pyrrh jkubah!j'ubah!j(ubah!j<ubj)rs}rt(hUh}ru(h]h]h]h]h]uh j_h]rvj)rw}rx(hUh}ry(h]h]h]h]h]uh jsh]rzj)r{}r|(hUh}r}(U anchornameU#urls-pyUrefurihPh]h]h]h]h]Uinternaluh jwh]r~hXurls.pyrr}r(hXurls.pyrh j{ubah!j'ubah!j(ubah!j<ubj)r}r(hUh}r(h]h]h]h]h]uh j_h]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#management-commandsUrefurihPh]h]h]h]h]Uinternaluh jh]rhXManagement Commandsrr}r(hXManagement Commandsrh jubah!j'ubah!j(ubah!j<ubeh!j;ubeh!j<ubj)r}r(hUh}r(h]h]h]h]h]uh j;h]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU #featuresUrefurihPh]h]h]h]h]Uinternaluh jh]rhXFeaturesrr}r(hXFeaturesrh jubah!j'ubah!j(ubah!j<ubeh!j;ubeh!j<ubah!j;ubhYj)r}r(hUh}r(h]h]h]h]h]uh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameUUrefurihYh]h]h]h]h]Uinternaluh jh]rhXHistoryrr}r(hhah jubah!j'ubah!j(ubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#id1UrefurihYh]h]h]h]h]Uinternaluh jh]rhX0.5.0 (2013-10-06)rr}r(hX0.5.0 (2013-10-06)rh jubah!j'ubah!j(ubah!j<ubah!j;ubeh!j<ubah!j;ubuU indexentriesr}r(h ]h#]h,]h5]h>]hG]hP]hY]uUall_docsr}r(h GAԫ.Yh#GAԫ.ՌCh,GAԫ.2h5GAԫ.Clh>GAԫ.6hGGAԫ.KfhPGAԫ.بhYGAԫ.ӳuUsettingsr}r(Ucloak_email_addressesrUtrim_footnote_reference_spacerU halt_levelrKUsectsubtitle_xformrUembed_stylesheetrU pep_base_urlrUhttp://www.python.org/dev/peps/rUdoctitle_xformrUwarning_streamrcsphinx.util.nodes WarningStream r)r}r(U_rercre _compile rU+\((DEBUG|INFO|WARNING|ERROR|SEVERE)/[0-4]\)rKRrUwarnfuncrNubUenvrhU rfc_base_urlrUhttp://tools.ietf.org/html/rUgettext_compactrUinput_encodingrU utf-8-sigruUfiles_to_rebuildr}r(jh]rh aRrj h]rh aRrj h]rh aRrjh]rh aRrj h]rh aRrjh]rh aRrj h]rh aRruUtoc_secnumbersr}U_nitpick_ignorerh]Rrub.PKqCP3django-periodicals-latest/.doctrees/authors.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XcreditsqNX contributorsqNXdevelopment leadqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUcreditsqhU contributorsqhUdevelopment-leadquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qX../AUTHORS.rstqq}q bUtagnameq!Usectionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]q)haUnamesq*]q+hauUlineq,KUdocumentq-hh]q.(cdocutils.nodes title q/)q0}q1(hXCreditsq2hhhhh!Utitleq3h#}q4(h%]h&]h']h(]h*]uh,Kh-hh]q5cdocutils.nodes Text q6XCreditsq7q8}q9(hh2hh0ubaubh)q:}q;(hUhhhhh!h"h#}q<(h%]h&]h']h(]q=hah*]q>hauh,Kh-hh]q?(h/)q@}qA(hXDevelopment LeadqBhh:hhh!h3h#}qC(h%]h&]h']h(]h*]uh,Kh-hh]qDh6XDevelopment LeadqEqF}qG(hhBhh@ubaubcdocutils.nodes bullet_list qH)qI}qJ(hUhh:hhh!U bullet_listqKh#}qL(UbulletqMX*h(]h']h%]h&]h*]uh,Kh-hh]qNcdocutils.nodes list_item qO)qP}qQ(hX&Steve Schwarz hhIhhh!U list_itemqRh#}qS(h%]h&]h']h(]h*]uh,Nh-hh]qTcdocutils.nodes paragraph qU)qV}qW(hX%Steve Schwarz qXhhPhhh!U paragraphqYh#}qZ(h%]h&]h']h(]h*]uh,Kh]q[(h6XSteve Schwarz qh}qi(hX>hhVubeubaubaubeubh)qj}qk(hUhhhhh!h"h#}ql(h%]h&]h']h(]qmhah*]qnhauh,K h-hh]qo(h/)qp}qq(hX Contributorsqrhhjhhh!h3h#}qs(h%]h&]h']h(]h*]uh,K h-hh]qth6X Contributorsquqv}qw(hhrhhpubaubhU)qx}qy(hXNone yet. Why not be the first?qzhhjhhh!hYh#}q{(h%]h&]h']h(]h*]uh,K h-hh]q|h6XNone yet. Why not be the first?q}q~}q(hhzhhxubaubeubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh-hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqKUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh3NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUK/var/build/user_builds/django-periodicals/checkouts/latest/docs/authors.rstqUgettext_compactqψU generatorqNUdump_internalsqNU pep_base_urlqUhttp://www.python.org/dev/peps/qUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformq׉Ustrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqKU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhhhjhh:uUsubstitution_namesq}qh!h-h#}q(h%]h(]h']UsourcehXK/var/build/user_builds/django-periodicals/checkouts/latest/docs/authors.rstqㅁq}qbh&]h*]uU footnotesq]qUrefidsq}qub.PKqCrG  0django-periodicals-latest/.doctrees/demo.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xtry the demo project!qNXtwitter bootstrapqKXtry-the-demo-projectqKuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUid1qhUtwitter-bootstrapqhUtry-the-demo-projectquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX.. _try-the-demo-project:UparentqhUsourceqcdocutils.nodes reprunicode qXH/var/build/user_builds/django-periodicals/checkouts/latest/docs/demo.rstqq}q bUtagnameq!Utargetq"U attributesq#}q$(Uidsq%]Ubackrefsq&]Udupnamesq']Uclassesq(]Unamesq)]Urefidq*huUlineq+KUdocumentq,hh]ubcdocutils.nodes section q-)q.}q/(hUhhhhUexpect_referenced_by_nameq0}q1hhsh!Usectionq2h#}q3(h']h(]h&]h%]q4(hheh)]q5(hheuh+Kh,hUexpect_referenced_by_idq6}q7hhsh]q8(cdocutils.nodes title q9)q:}q;(hXTry the Demo Project!q(h']h(]h&]h%]h)]uh+Kh,hh]q?cdocutils.nodes Text q@XTry the Demo Project!qAqB}qC(hh`_ styling so the pages wouldn't be unstyled. ``django-periodicals`` does not require the use of Bootstrap.qhh.hhh!hHh#}q(h']h(]h&]h%]h)]uh+K h,hh]q(h@XAI also overrode the base.html template and added in some trivial qq}q(hXAI also overrode the base.html template and added in some trivial hhubcdocutils.nodes reference q)q}q(hX/`Twitter Bootstrap `_h#}q(UnameXTwitter BootstrapUrefuriqXhttp://getbootstrap.com/qh%]h&]h']h(]h)]uhhh]qh@XTwitter Bootstrapqq}q(hUhhubah!U referencequbh)q}q(hX h#}q(Urefurihh%]qhah&]h']h(]h)]qhauhhh]h!h"ubh@X, styling so the pages wouldn't be unstyled. qq}q(hX, styling so the pages wouldn't be unstyled. hhubhN)q}q(hX``django-periodicals``h#}q(h']h(]h&]h%]h)]uhhh]qh@Xdjango-periodicalsqq}q(hUhhubah!hVubh@X' does not require the use of Bootstrap.qq}q(hX' does not require the use of Bootstrap.hhubeubhD)q}q(hXFollow these steps::qhh.hhh!hHh#}q(h']h(]h&]h%]h)]uh+K h,hh]qh@XFollow these steps:qq}q(hXFollow these steps:hhubaubcdocutils.nodes literal_block q)q}q(hXG$ cd django-periodicals $ virtualenv demoenv $ source demoenv/bin/activate $ pip install -r requirements-test.txt $ pip install Django $ cd demo $ python manage.py syncdb $ python manage.py loaddata demo_tagging.json $ python manage.py loaddata demo_periodicals.json $ python manage.py update_index $ python manage.py runserverhh.hhh!U literal_blockqh#}q(U xml:spaceqUpreserveqh%]h&]h']h(]h)]uh+Kh,hh]qh@XG$ cd django-periodicals $ virtualenv demoenv $ source demoenv/bin/activate $ pip install -r requirements-test.txt $ pip install Django $ cd demo $ python manage.py syncdb $ python manage.py loaddata demo_tagging.json $ python manage.py loaddata demo_periodicals.json $ python manage.py update_index $ python manage.py runserverqq}q(hUhhubaubhD)q}q(hX=So now you can visit the demo site at http://127.0.0.1:8000/.qhh.hhh!hHh#}q(h']h(]h&]h%]h)]uh+Kh,hh]q(h@X&So now you can visit the demo site at qąq}q(hX&So now you can visit the demo site at hhubh)q}q(hXhttp://127.0.0.1:8000/qh#}q(Urefurihh%]h&]h']h(]h)]uhhh]qh@Xhttp://127.0.0.1:8000/q̅q}q(hUhhubah!hubh@X.q}q(hX.hhubeubeubehUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh,hU current_lineqNUtransform_messagesq]q(cdocutils.nodes system_message q)q}q(hUh#}q(h']UlevelKh%]h&]Usourcehh(]h)]UlineKUtypeUINFOquh]qhD)q}q(hUh#}q(h']h(]h&]h%]h)]uhhh]qh@X:Hyperlink target "try-the-demo-project" is not referenced.q녁q}q(hUhhubah!hHubah!Usystem_messagequbh)q}q(hUh#}q(h']UlevelKh%]h&]Usourcehh(]h)]UlineK Utypehuh]qhD)q}q(hUh#}q(h']h(]h&]h%]h)]uhhh]qh@X7Hyperlink target "twitter bootstrap" is not referenced.qq}q(hUhhubah!hHubah!hubeUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/r U tracebackr KUpep_referencesr NUstrip_commentsr NU toc_backlinksr UentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh=NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templater Upep-%04dr!Uexit_status_levelr"KUconfigr#NUstrict_visitorr$NUcloak_email_addressesr%Utrim_footnote_reference_spacer&Uenvr'NUdump_pseudo_xmlr(NUexpose_internalsr)NUsectsubtitle_xformr*U source_linkr+NUrfc_referencesr,NUoutput_encodingr-Uutf-8r.U source_urlr/NUinput_encodingr0U utf-8-sigr1U_disable_configr2NU id_prefixr3UU tab_widthr4KUerror_encodingr5UUTF-8r6U_sourcer7UH/var/build/user_builds/django-periodicals/checkouts/latest/docs/demo.rstr8Ugettext_compactr9U generatorr:NUdump_internalsr;NU pep_base_urlr<Uhttp://www.python.org/dev/peps/r=Uinput_encoding_error_handlerr>jUauto_id_prefixr?Uidr@Udoctitle_xformrAUstrip_elements_with_classesrBNU _config_filesrC]rDUfile_insertion_enabledrEKU raw_enabledrFKU dump_settingsrGNubUsymbol_footnote_startrHKUidsrI}rJ(hh.hhhh.uUsubstitution_namesrK}rLh!h,h#}rM(h']h%]h&]Usourcehh(]h)]uU footnotesrN]rOUrefidsrP}rQh]rRhasub.PKqCvww1django-periodicals-latest/.doctrees/usage.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xoptional settingsqNX!disabling adding/displaying linksqNXdatabase setupqNXwhooshq KXupdate search indexq NXoverride templates/blocksq NXsitemap supportq NXdjango.contrib.sitemapsq KXurls.pyqNX entering dataqNXusageqNX settings.pyqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUoptional-settingsqhU!disabling-adding-displaying-linksqhUdatabase-setupqh Uwhooshqh Uupdate-search-indexqh Uoverride-templates-blocksq h Usitemap-supportq!h Udjango-contrib-sitemapsq"hUurls-pyq#hU entering-dataq$hUusageq%hU settings-pyq&uUchildrenq']q(cdocutils.nodes section q))q*}q+(U rawsourceq,UUparentq-hUsourceq.cdocutils.nodes reprunicode q/XI/var/build/user_builds/django-periodicals/checkouts/latest/docs/usage.rstq0q1}q2bUtagnameq3Usectionq4U attributesq5}q6(Udupnamesq7]Uclassesq8]Ubackrefsq9]Uidsq:]q;h%aUnamesq<]q=hauUlineq>KUdocumentq?hh']q@(cdocutils.nodes title qA)qB}qC(h,XUsageqDh-h*h.h1h3UtitleqEh5}qF(h7]h8]h9]h:]h<]uh>Kh?hh']qGcdocutils.nodes Text qHXUsageqIqJ}qK(h,hDh-hBubaubcdocutils.nodes paragraph qL)qM}qN(h,XW``django-periodicals`` integrates a couple other applications to provide it's features.qOh-h*h.h1h3U paragraphqPh5}qQ(h7]h8]h9]h:]h<]uh>Kh?hh']qR(cdocutils.nodes literal qS)qT}qU(h,X``django-periodicals``h5}qV(h7]h8]h9]h:]h<]uh-hMh']qWhHXdjango-periodicalsqXqY}qZ(h,Uh-hTubah3Uliteralq[ubhHXA integrates a couple other applications to provide it's features.q\q]}q^(h,XA integrates a couple other applications to provide it's features.h-hMubeubh))q_}q`(h,Uh-h*h.h1h3h4h5}qa(h7]h8]h9]h:]qbh&ah<]qchauh>K h?hh']qd(hA)qe}qf(h,X settings.pyqgh-h_h.h1h3hEh5}qh(h7]h8]h9]h:]h<]uh>K h?hh']qihHX settings.pyqjqk}ql(h,hgh-heubaubhL)qm}qn(h,XMAdd ``periodicals`` and the other applications it uses to ``INSTALLED_APPS``:qoh-h_h.h1h3hPh5}qp(h7]h8]h9]h:]h<]uh>K h?hh']qq(hHXAdd qrqs}qt(h,XAdd h-hmubhS)qu}qv(h,X``periodicals``h5}qw(h7]h8]h9]h:]h<]uh-hmh']qxhHX periodicalsqyqz}q{(h,Uh-huubah3h[ubhHX' and the other applications it uses to q|q}}q~(h,X' and the other applications it uses to h-hmubhS)q}q(h,X``INSTALLED_APPS``h5}q(h7]h8]h9]h:]h<]uh-hmh']qhHXINSTALLED_APPSqq}q(h,Uh-hubah3h[ubhHX:q}q(h,X:h-hmubeubcdocutils.nodes literal_block q)q}q(h,X]INSTALLED_APPS = ( ... 'haystack', 'tagging', 'captcha', 'periodicals', )h-h_h.h1h3U literal_blockqh5}q(UlinenosqUlanguageqXpythonU xml:spaceqUpreserveqh:]h9]h7]h8]h<]uh>K h?hh']qhHX]INSTALLED_APPS = ( ... 'haystack', 'tagging', 'captcha', 'periodicals', )qq}q(h,Uh-hubaubhL)q}q(h,XuConfigure your Haystack backend. Here is an example using `Whoosh `_:qh-h_h.h1h3hPh5}q(h7]h8]h9]h:]h<]uh>Kh?hh']q(hHX:Configure your Haystack backend. Here is an example using qq}q(h,X:Configure your Haystack backend. Here is an example using h-hubcdocutils.nodes reference q)q}q(h,X:`Whoosh `_h5}q(UnameXWhooshUrefuriqX.https://bitbucket.org/mchaput/whoosh/wiki/Homeqh:]h9]h7]h8]h<]uh-hh']qhHXWhooshqq}q(h,Uh-hubah3U referencequbcdocutils.nodes target q)q}q(h,X1 h5}q(Urefurihh:]qhah9]h7]h8]h<]qh auh-hh']h3UtargetqubhHX:q}q(h,X:h-hubeubh)q}q(h,X\HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'whoosh_periodicals_index'), 'STORAGE': 'file', 'POST_LIMIT': 128 * 1024 * 1024, 'INCLUDE_SPELLING': True, 'BATCH_SIZE': 100, }, }h-h_h.h1h3hh5}q(hhXpythonhhh:]h9]h7]h8]h<]uh>Kh?hh']qhHX\HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'whoosh_periodicals_index'), 'STORAGE': 'file', 'POST_LIMIT': 128 * 1024 * 1024, 'INCLUDE_SPELLING': True, 'BATCH_SIZE': 100, }, }qq}q(h,Uh-hubaubhL)q}q(h,XtConfigure your reCAPTCHA keys - only used when users add links to Articles or Issues (this feature can be disabled):qh-h_h.h1h3hPh5}q(h7]h8]h9]h:]h<]uh>K&h?hh']qhHXtConfigure your reCAPTCHA keys - only used when users add links to Articles or Issues (this feature can be disabled):qq}q(h,hh-hubaubh)q}q(h,XgRECAPTCHA_PRIVATE_KEY = "your-recaptcha-private-key" RECAPTCHA_PUBLIC_KEY = "your-recaptcha-public-key"h-h_h.h1h3hh5}q(hhXpythonhhh:]h9]h7]h8]h<]uh>K(h?hh']qhHXgRECAPTCHA_PRIVATE_KEY = "your-recaptcha-private-key" RECAPTCHA_PUBLIC_KEY = "your-recaptcha-public-key"qąq}q(h,Uh-hubaubhL)q}q(h,XConfigure you Site in the Django Site application - only used when users add links to Articles or Issues *and* when you haven't disabled email notifications.qh-h_h.h1h3hPh5}q(h7]h8]h9]h:]h<]uh>K-h?hh']q(hHXiConfigure you Site in the Django Site application - only used when users add links to Articles or Issues q̅q}q(h,XiConfigure you Site in the Django Site application - only used when users add links to Articles or Issues h-hubcdocutils.nodes emphasis q)q}q(h,X*and*h5}q(h7]h8]h9]h:]h<]uh-hh']qhHXandqԅq}q(h,Uh-hubah3UemphasisqubhHX/ when you haven't disabled email notifications.q؅q}q(h,X/ when you haven't disabled email notifications.h-hubeubeubh))q}q(h,Uh-h*h.h1h3h4h5}q(h7]h8]h9]h:]qh#ah<]qhauh>K1h?hh']q(hA)q}q(h,Xurls.pyqh-hh.h1h3hEh5}q(h7]h8]h9]h:]h<]uh>K1h?hh']qhHXurls.pyq慁q}q(h,hh-hubaubhL)q}q(h,X5Choose a URL prefix at which to base the application:qh-hh.h1h3hPh5}q(h7]h8]h9]h:]h<]uh>K3h?hh']qhHX5Choose a URL prefix at which to base the application:qq}q(h,hh-hubaubh)q}q(h,X... import periodicals urlpatterns = patterns('', ... url(r'^admin/', include(admin.site.urls)), url(r'^periodicals/', include(periodicals.urls)), )h-hh.h1h3hh5}q(hhXpythonhhh:]h9]h7]h8]h<]uh>K5h?hh']qhHX... import periodicals urlpatterns = patterns('', ... url(r'^admin/', include(admin.site.urls)), url(r'^periodicals/', include(periodicals.urls)), )qq}q(h,Uh-hubaubeubh))q}q(h,Uh-h*h.h1h3h4h5}q(h7]h8]h9]h:]qhah<]qhauh>KAh?hh']q(hA)q}q(h,XDatabase Setuprh-hh.h1h3hEh5}r(h7]h8]h9]h:]h<]uh>KAh?hh']rhHXDatabase Setuprr}r(h,jh-hubaubh)r}r(h,X$ python manage.py syncdbh-hh.h1h3hh5}r(hhXbashhhh:]h9]h7]h8]h<]uh>KCh?hh']r hHX$ python manage.py syncdbr r }r (h,Uh-jubaubh))r }r(h,Uh-hh.h1h3h4h5}r(h7]h8]h9]h:]rhah<]rhauh>KIh?hh']r(hA)r}r(h,XOptional Settingsrh-j h.h1h3hEh5}r(h7]h8]h9]h:]h<]uh>KIh?hh']rhHXOptional Settingsrr}r(h,jh-jubaubhL)r}r(h,XYou can control the display format for Author, Periodical, and Issue instances and their URL slugs through the following ``settings.py`` values. The default values are shown below:rh-j h.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>KKh?hh']r(hHXyYou can control the display format for Author, Periodical, and Issue instances and their URL slugs through the following r r!}r"(h,XyYou can control the display format for Author, Periodical, and Issue instances and their URL slugs through the following h-jubhS)r#}r$(h,X``settings.py``h5}r%(h7]h8]h9]h:]h<]uh-jh']r&hHX settings.pyr'r(}r)(h,Uh-j#ubah3h[ubhHX, values. The default values are shown below:r*r+}r,(h,X, values. The default values are shown below:h-jubeubh)r-}r.(h,XPERIODICALS_AUTHOR_FORMAT = "%(last_name)s, %(first_name)s %(middle_name)s %(postnomial)s" PERIODICALS_AUTHOR_SLUG_FORMAT = "%(last_name)s %(first_name)s %(middle_name)s %(postnomial)s" PERIODICALS_PERIODICAL_FORMAT = "%(name)s" PERIODICALS_PERIODICAL_SLUG_FORMAT = "%(name)s" PERIODICALS_ISSUE_FORMAT = "Vol. %(volume)s No. %(issue)s" PERIODICALS_ISSUE_SLUG_FORMAT = "%(volume)s %(issue)s"h-j h.h1h3hh5}r/(hhXpythonhhh:]h9]h7]h8]h<]uh>KMh?hh']r0hHXPERIODICALS_AUTHOR_FORMAT = "%(last_name)s, %(first_name)s %(middle_name)s %(postnomial)s" PERIODICALS_AUTHOR_SLUG_FORMAT = "%(last_name)s %(first_name)s %(middle_name)s %(postnomial)s" PERIODICALS_PERIODICAL_FORMAT = "%(name)s" PERIODICALS_PERIODICAL_SLUG_FORMAT = "%(name)s" PERIODICALS_ISSUE_FORMAT = "Vol. %(volume)s No. %(issue)s" PERIODICALS_ISSUE_SLUG_FORMAT = "%(volume)s %(issue)s"r1r2}r3(h,Uh-j-ubaubeubeubh))r4}r5(h,Uh-h*h.h1h3h4h5}r6(h7]h8]h9]h:]r7hah<]r8hauh>KZh?hh']r9(hA)r:}r;(h,X!Disabling Adding/Displaying Linksr<h-j4h.h1h3hEh5}r=(h7]h8]h9]h:]h<]uh>KZh?hh']r>hHX!Disabling Adding/Displaying Linksr?r@}rA(h,j<h-j:ubaubhL)rB}rC(h,XBy default visitors can add moderated links to each Issue or Article. Once approved via the admin they are displayed on the appropriate Issue/Article page. To disable this feature and the sections within pages displaying links add this to ``settings.py``:rDh-j4h.h1h3hPh5}rE(h7]h8]h9]h:]h<]uh>K\h?hh']rF(hHXBy default visitors can add moderated links to each Issue or Article. Once approved via the admin they are displayed on the appropriate Issue/Article page. To disable this feature and the sections within pages displaying links add this to rGrH}rI(h,XBy default visitors can add moderated links to each Issue or Article. Once approved via the admin they are displayed on the appropriate Issue/Article page. To disable this feature and the sections within pages displaying links add this to h-jBubhS)rJ}rK(h,X``settings.py``h5}rL(h7]h8]h9]h:]h<]uh-jBh']rMhHX settings.pyrNrO}rP(h,Uh-jJubah3h[ubhHX:rQ}rR(h,X:h-jBubeubh)rS}rT(h,X!PERIODICALS_LINKS_ENABLED = Falseh-j4h.h1h3hh5}rU(hhXpythonhhh:]h9]h7]h8]h<]uh>K^h?hh']rVhHX!PERIODICALS_LINKS_ENABLED = FalserWrX}rY(h,Uh-jSubaubhL)rZ}r[(h,XBy default when links are added an email is sent to managers configured for the Site in the Django admin. To disable this feature add this to ``settings.py``:r\h-j4h.h1h3hPh5}r](h7]h8]h9]h:]h<]uh>Kbh?hh']r^(hHXBy default when links are added an email is sent to managers configured for the Site in the Django admin. To disable this feature add this to r_r`}ra(h,XBy default when links are added an email is sent to managers configured for the Site in the Django admin. To disable this feature add this to h-jZubhS)rb}rc(h,X``settings.py``h5}rd(h7]h8]h9]h:]h<]uh-jZh']rehHX settings.pyrfrg}rh(h,Uh-jbubah3h[ubhHX:ri}rj(h,X:h-jZubeubh)rk}rl(h,X PERIODICALS_EMAIL_NOTIFY = Falseh-j4h.h1h3hh5}rm(hhXpythonhhh:]h9]h7]h8]h<]uh>Kdh?hh']rnhHX PERIODICALS_EMAIL_NOTIFY = Falserorp}rq(h,Uh-jkubaubh))rr}rs(h,Uh-j4h.h1h3h4h5}rt(h7]h8]h9]h:]ruh$ah<]rvhauh>Kih?hh']rw(hA)rx}ry(h,X Entering Datarzh-jrh.h1h3hEh5}r{(h7]h8]h9]h:]h<]uh>Kih?hh']r|hHX Entering Datar}r~}r(h,jzh-jxubaubhL)r}r(h,XpUse the Django admin pages for the Periodical application to enter data. It is easiest to proceed in this order:rh-jrh.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kkh?hh']rhHXpUse the Django admin pages for the Periodical application to enter data. It is easiest to proceed in this order:rr}r(h,jh-jubaubcdocutils.nodes enumerated_list r)r}r(h,Uh-jrh.h1h3Uenumerated_listrh5}r(UsuffixrU.h:]h9]h7]UprefixrUh8]h<]UenumtyperUarabicruh>Kmh?hh']r(cdocutils.nodes list_item r)r}r(h,XCreate a Periodical. h-jh.h1h3U list_itemrh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhL)r}r(h,XCreate a Periodical.rh-jh.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kmh']rhHXCreate a Periodical.rr}r(h,jh-jubaubaubj)r}r(h,X3Create an Issue and select the created Periodical. h-jh.h1h3jh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhL)r}r(h,X2Create an Issue and select the created Periodical.rh-jh.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Koh']rhHX2Create an Issue and select the created Periodical.rr}r(h,jh-jubaubaubj)r}r(h,XCreate Articles and select the created Issue. Authors can be created at the same time or create one or more Author's beforehand. h-jh.h1h3jh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhL)r}r(h,XCreate Articles and select the created Issue. Authors can be created at the same time or create one or more Author's beforehand.rh-jh.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kqh']rhHXCreate Articles and select the created Issue. Authors can be created at the same time or create one or more Author's beforehand.rr}r(h,jh-jubaubaubeubeubh))r}r(h,Uh-j4h.h1h3h4h5}r(h7]h8]h9]h:]rhah<]rh auh>Kth?hh']r(hA)r}r(h,XUpdate Search Indexrh-jh.h1h3hEh5}r(h7]h8]h9]h:]h<]uh>Kth?hh']rhHXUpdate Search Indexrr}r(h,jh-jubaubhL)r}r(h,X Since adding Articles will likely be an occasional operation ``django-periodicals`` expects the Haystack index to be updated manually. Once you've finished entering all the Articles for an Issue execute this command in your virtualenv when your site is lightly loaded:rh-jh.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kvh?hh']r(hHX=Since adding Articles will likely be an occasional operation rr}r(h,X=Since adding Articles will likely be an occasional operation h-jubhS)r}r(h,X``django-periodicals``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXdjango-periodicalsrr}r(h,Uh-jubah3h[ubhHX expects the Haystack index to be updated manually. Once you've finished entering all the Articles for an Issue execute this command in your virtualenv when your site is lightly loaded:rr}r(h,X expects the Haystack index to be updated manually. Once you've finished entering all the Articles for an Issue execute this command in your virtualenv when your site is lightly loaded:h-jubeubh)r}r(h,X$ python manage.py update_indexh-jh.h1h3hh5}r(hhXbashhhh:]h9]h7]h8]h<]uh>Kxh?hh']rhHX$ python manage.py update_indexrr}r(h,Uh-jubaubeubh))r}r(h,Uh-j4h.h1h3h4h5}r(h7]h8]h9]h:]rh!ah<]rh auh>K~h?hh']r(hA)r}r(h,XSitemap Supportrh-jh.h1h3hEh5}r(h7]h8]h9]h:]h<]uh>K~h?hh']rhHXSitemap Supportrr}r(h,jh-jubaubhL)r}r(h,X``django-periodicals`` provides sitemap.xml support via `django.contrib.sitemaps `_.rh-jh.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kh?hh']r(hS)r}r(h,X``django-periodicals``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXdjango-periodicalsrr}r(h,Uh-jubah3h[ubhHX" provides sitemap.xml support via rr}r(h,X" provides sitemap.xml support via h-jubh)r}r(h,XX`django.contrib.sitemaps `_h5}r(Unameh hX;https://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/rh:]h9]h7]h8]h<]uh-jh']rhHXdjango.contrib.sitemapsrr}r(h,Uh-jubah3hubh)r}r(h,X> h5}r(Urefurijh:]rh"ah9]h7]h8]h<]rh auh-jh']h3hubhHX.r }r (h,X.h-jubeubj)r }r (h,Uh-jh.h1h3jh5}r (jU.h:]h9]h7]jUh8]h<]jjuh>Kh?hh']rj)r}r(h,X<Install ``django'contrib.sitemaps`` in you ``settings.py``: h-j h.h1h3jh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhL)r}r(h,X;Install ``django'contrib.sitemaps`` in you ``settings.py``:h-jh.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kh']r(hHXInstall rr}r(h,XInstall h-jubhS)r}r(h,X``django'contrib.sitemaps``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXdjango'contrib.sitemapsrr}r (h,Uh-jubah3h[ubhHX in you r!r"}r#(h,X in you h-jubhS)r$}r%(h,X``settings.py``h5}r&(h7]h8]h9]h:]h<]uh-jh']r'hHX settings.pyr(r)}r*(h,Uh-j$ubah3h[ubhHX:r+}r,(h,X:h-jubeubaubaubh)r-}r.(h,X{INSTALLED_APPS = ( 'django.contrib.sitemaps', ... 'haystack', 'tagging', 'captcha', 'periodicals', )h-jh.h1h3hh5}r/(hhXpythonhhh:]h9]h7]h8]h<]uh>Kh?hh']r0hHX{INSTALLED_APPS = ( 'django.contrib.sitemaps', ... 'haystack', 'tagging', 'captcha', 'periodicals', )r1r2}r3(h,Uh-j-ubaubj)r4}r5(h,Uh-jh.h1h3jh5}r6(jU.h:]h9]h7]jUh8]h<]jjuh>Kh?hh']r7j)r8}r9(h,XIn your ``urls.py`` import the ``sitemaps_at`` method from ``periodicals.sitemaps``, add the ``sitemap.xml`` regular expression and place the url location where you put the root of the periodicals application as the argument to ``sitemaps_at``: h-j4h.h1h3jh5}r:(h7]h8]h9]h:]h<]uh>Nh?hh']r;hL)r<}r=(h,XIn your ``urls.py`` import the ``sitemaps_at`` method from ``periodicals.sitemaps``, add the ``sitemap.xml`` regular expression and place the url location where you put the root of the periodicals application as the argument to ``sitemaps_at``:r>h-j8h.h1h3hPh5}r?(h7]h8]h9]h:]h<]uh>Kh']r@(hHXIn your rArB}rC(h,XIn your h-j<ubhS)rD}rE(h,X ``urls.py``h5}rF(h7]h8]h9]h:]h<]uh-j<h']rGhHXurls.pyrHrI}rJ(h,Uh-jDubah3h[ubhHX import the rKrL}rM(h,X import the h-j<ubhS)rN}rO(h,X``sitemaps_at``h5}rP(h7]h8]h9]h:]h<]uh-j<h']rQhHX sitemaps_atrRrS}rT(h,Uh-jNubah3h[ubhHX method from rUrV}rW(h,X method from h-j<ubhS)rX}rY(h,X``periodicals.sitemaps``h5}rZ(h7]h8]h9]h:]h<]uh-j<h']r[hHXperiodicals.sitemapsr\r]}r^(h,Uh-jXubah3h[ubhHX , add the r_r`}ra(h,X , add the h-j<ubhS)rb}rc(h,X``sitemap.xml``h5}rd(h7]h8]h9]h:]h<]uh-j<h']rehHX sitemap.xmlrfrg}rh(h,Uh-jbubah3h[ubhHXx regular expression and place the url location where you put the root of the periodicals application as the argument to rirj}rk(h,Xx regular expression and place the url location where you put the root of the periodicals application as the argument to h-j<ubhS)rl}rm(h,X``sitemaps_at``h5}rn(h7]h8]h9]h:]h<]uh-j<h']rohHX sitemaps_atrprq}rr(h,Uh-jlubah3h[ubhHX:rs}rt(h,X:h-j<ubeubaubaubh)ru}rv(h,Xfrom periodicals.sitemaps import sitemaps_at urlpatterns = patterns('', ... (r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps_at('/periodicals')}), )h-jh.h1h3hh5}rw(hhXpythonhhh:]h9]h7]h8]h<]uh>Kh?hh']rxhHXfrom periodicals.sitemaps import sitemaps_at urlpatterns = patterns('', ... (r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps_at('/periodicals')}), )ryrz}r{(h,Uh-juubaubeubh))r|}r}(h,Uh-j4h.h1h3h4h5}r~(h7]h8]h9]h:]rh ah<]rh auh>Kh?hh']r(hA)r}r(h,XOverride Templates/Blocksrh-j|h.h1h3hEh5}r(h7]h8]h9]h:]h<]uh>Kh?hh']rhHXOverride Templates/Blocksrr}r(h,jh-jubaubhL)r}r(h,X``django-periodicals`` provides a full set of templates for displaying the data models and their relationships, searching and adding moderated links. So you can just use it right out of the box.rh-j|h.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kh?hh']r(hS)r}r(h,X``django-periodicals``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXdjango-periodicalsrr}r(h,Uh-jubah3h[ubhHX provides a full set of templates for displaying the data models and their relationships, searching and adding moderated links. So you can just use it right out of the box.rr}r(h,X provides a full set of templates for displaying the data models and their relationships, searching and adding moderated links. So you can just use it right out of the box.h-jubeubhL)r}r(h,X(``django-periodicals`` defines major template blocks: ``title``, ``breadcrumbs``, ``innercontent`` and ``copyright`` that you can incorporate into your own ``base.html``. There are numerous CSS classes and container ``divs`` to give design layout options without needing to rewrite the templates.rh-j|h.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kh?hh']r(hS)r}r(h,X``django-periodicals``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXdjango-periodicalsrr}r(h,Uh-jubah3h[ubhHX defines major template blocks: rr}r(h,X defines major template blocks: h-jubhS)r}r(h,X ``title``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXtitlerr}r(h,Uh-jubah3h[ubhHX, rr}r(h,X, h-jubhS)r}r(h,X``breadcrumbs``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX breadcrumbsrr}r(h,Uh-jubah3h[ubhHX, rr}r(h,X, h-jubhS)r}r(h,X``innercontent``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX innercontentrr}r(h,Uh-jubah3h[ubhHX and rr}r(h,X and h-jubhS)r}r(h,X ``copyright``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX copyrightrr}r(h,Uh-jubah3h[ubhHX( that you can incorporate into your own rr}r(h,X( that you can incorporate into your own h-jubhS)r}r(h,X ``base.html``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX base.htmlrr}r(h,Uh-jubah3h[ubhHX/. There are numerous CSS classes and container rr}r(h,X/. There are numerous CSS classes and container h-jubhS)r}r(h,X``divs``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXdivsrr}r(h,Uh-jubah3h[ubhHXH to give design layout options without needing to rewrite the templates.rr}r(h,XH to give design layout options without needing to rewrite the templates.h-jubeubhL)r}r(h,X*Here is the template inheritance diagram::rh-j|h.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kh?hh']rhHX)Here is the template inheritance diagram:rr}r(h,X)Here is the template inheritance diagram:h-jubaubh)r}r(h,XQ /---base.html-- /----- \-- /----- \- /----- \-- --- \ base_periodicals.html article_tag_detail.html (adds search) author_detail.html | --- author_list.html | \--- link_add.html | \--- link_success.html | \---- search.html | \--- tags.html | \--- | \ base_periodical.html periodical_list.html (adds copyright per periodical) | | article_detail.html issue_detail.html issue_year.html links.html periodical_detail.html read_online.html series_detail.html series_list.htmlh-j|h.h1h3hh5}r(hhh:]h9]h7]h8]h<]uh>Kh?hh']rhHXQ /---base.html-- /----- \-- /----- \- /----- \-- --- \ base_periodicals.html article_tag_detail.html (adds search) author_detail.html | --- author_list.html | \--- link_add.html | \--- link_success.html | \---- search.html | \--- tags.html | \--- | \ base_periodical.html periodical_list.html (adds copyright per periodical) | | article_detail.html issue_detail.html issue_year.html links.html periodical_detail.html read_online.html series_detail.html series_list.htmlrr}r(h,Uh-jubaubhL)r}r(h,XEYou might override ``base.html`` in your existing "glue" application:rh-j|h.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kh?hh']r(hHXYou might override rr}r(h,XYou might override h-jubhS)r}r(h,X ``base.html``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX base.htmlrr}r(h,Uh-jubah3h[ubhHX% in your existing "glue" application:rr}r(h,X% in your existing "glue" application:h-jubeubh)r}r(h,X@$ cd myapp $ mkdir -p templates/periodicals/ $ emacs base.htmlh-j|h.h1h3hh5}r(hhXbashhhh:]h9]h7]h8]h<]uh>Kh?hh']rhHX@$ cd myapp $ mkdir -p templates/periodicals/ $ emacs base.htmlr r }r (h,Uh-jubaubhL)r }r (h,XYou might override it as follows to use your application's base template and to discard the ``breadcrumbs`` block from the ``content`` block.rh-j|h.h1h3hPh5}r(h7]h8]h9]h:]h<]uh>Kh?hh']r(hHX\You might override it as follows to use your application's base template and to discard the rr}r(h,X\You might override it as follows to use your application's base template and to discard the h-j ubhS)r}r(h,X``breadcrumbs``h5}r(h7]h8]h9]h:]h<]uh-j h']rhHX breadcrumbsrr}r(h,Uh-jubah3h[ubhHX block from the rr}r(h,X block from the h-j ubhS)r}r(h,X ``content``h5}r (h7]h8]h9]h:]h<]uh-j h']r!hHXcontentr"r#}r$(h,Uh-jubah3h[ubhHX block.r%r&}r'(h,X block.h-j ubeubh)r(}r)(h,X{% extends myapp/base.html %} {% block content %} {% block innercontent %}{% endblock innercontent %} {% block copyright %}{% endblock copyright %} {% endblock content %}h-j|h.h1h3hh5}r*(hhXhtmlhhh:]h9]h7]h8]h<]uh>Kh?hh']r+hHX{% extends myapp/base.html %} {% block content %} {% block innercontent %}{% endblock innercontent %} {% block copyright %}{% endblock copyright %} {% endblock content %}r,r-}r.(h,Uh-j(ubaubeubeubeubah,UU transformerr/NU footnote_refsr0}r1Urefnamesr2}r3Usymbol_footnotesr4]r5Uautofootnote_refsr6]r7Usymbol_footnote_refsr8]r9U citationsr:]r;h?hU current_liner<NUtransform_messagesr=]r>(cdocutils.nodes system_message r?)r@}rA(h,Uh5}rB(h7]UlevelKh:]h9]Usourceh1h8]h<]UlineKUtypeUINFOrCuh']rDhL)rE}rF(h,Uh5}rG(h7]h8]h9]h:]h<]uh-j@h']rHhHX,Hyperlink target "whoosh" is not referenced.rIrJ}rK(h,Uh-jEubah3hPubah3Usystem_messagerLubj?)rM}rN(h,Uh5}rO(h7]UlevelKh:]h9]Usourceh1h8]h<]UlineKUtypejCuh']rPhL)rQ}rR(h,Uh5}rS(h7]h8]h9]h:]h<]uh-jMh']rThHX=Hyperlink target "django.contrib.sitemaps" is not referenced.rUrV}rW(h,Uh-jQubah3hPubah3jLubeUreporterrXNUid_startrYKU autofootnotesrZ]r[U citation_refsr\}r]Uindirect_targetsr^]r_Usettingsr`(cdocutils.frontend Values raorb}rc(Ufootnote_backlinksrdKUrecord_dependenciesreNU rfc_base_urlrfUhttp://tools.ietf.org/html/rgU tracebackrhKUpep_referencesriNUstrip_commentsrjNU toc_backlinksrkUentryrlU language_codermUenrnU datestamproNU report_levelrpKU _destinationrqNU halt_levelrrKU strip_classesrsNhENUerror_encoding_error_handlerrtUbackslashreplaceruUdebugrvNUembed_stylesheetrwUoutput_encoding_error_handlerrxUstrictryU sectnum_xformrzKUdump_transformsr{NU docinfo_xformr|KUwarning_streamr}NUpep_file_url_templater~Upep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUI/var/build/user_builds/django-periodicals/checkouts/latest/docs/usage.rstrUgettext_compactrU generatorrNUdump_internalsrNU pep_base_urlrUhttp://www.python.org/dev/peps/rUinput_encoding_error_handlerrjyUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrKU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhh&h_h"jhj4hhh j|hjh%h*h!jh$jrhj h#huUsubstitution_namesr}rh3h?h5}r(h7]h:]h9]Usourceh1h8]h<]uU footnotesr]rUrefidsr}rub.PKqC*m1django-periodicals-latest/.doctrees/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qX.welcome to django-periodicals's documentation!qNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU-welcome-to-django-periodicals-s-documentationqsUchildrenq]q(cdocutils.nodes comment q)q}q(U rawsourceqXcomplexity documentation master file, created by sphinx-quickstart on Tue Jul 9 22:26:36 2013. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive.UparentqhUsourceqcdocutils.nodes reprunicode qXI/var/build/user_builds/django-periodicals/checkouts/latest/docs/index.rstqq}qbUtagnameqUcommentqU attributesq}q (U xml:spaceq!Upreserveq"Uidsq#]Ubackrefsq$]Udupnamesq%]Uclassesq&]Unamesq']uUlineq(KUdocumentq)hh]q*cdocutils.nodes Text q+Xcomplexity documentation master file, created by sphinx-quickstart on Tue Jul 9 22:26:36 2013. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive.q,q-}q.(hUhhubaubcdocutils.nodes section q/)q0}q1(hUhhhhhUsectionq2h}q3(h%]h&]h$]h#]q4hah']q5hauh(Kh)hh]q6(cdocutils.nodes title q7)q8}q9(hX.Welcome to django-periodicals's documentation!q:hh0hhhUtitleq;h}q<(h%]h&]h$]h#]h']uh(Kh)hh]q=h+X.Welcome to django-periodicals's documentation!q>q?}q@(hh:hh8ubaubcdocutils.nodes paragraph qA)qB}qC(hX Contents:qDhh0hhhU paragraphqEh}qF(h%]h&]h$]h#]h']uh(K h)hh]qGh+X Contents:qHqI}qJ(hhDhhBubaubcdocutils.nodes compound qK)qL}qM(hUhh0hhhUcompoundqNh}qO(h%]h&]qPUtoctree-wrapperqQah$]h#]h']uh(Nh)hh]qRcsphinx.addnodes toctree qS)qT}qU(hUhhLhhhUtoctreeqVh}qW(UnumberedqXKhUindexqYU titlesonlyqZUglobq[h#]h$]h%]h&]h']Uentriesq\]q](NXreadmeq^q_NX installationq`qaNXusageqbqcNXdemoqdqeNX contributingqfqgNXauthorsqhqiNXhistoryqjqkeUhiddenqlU includefilesqm]qn(h^h`hbhdhfhhhjeUmaxdepthqoKuh(K h]ubaubeubehUU transformerqpNU footnote_refsqq}qrUrefnamesqs}qtUsymbol_footnotesqu]qvUautofootnote_refsqw]qxUsymbol_footnote_refsqy]qzU citationsq{]q|h)hU current_lineq}NUtransform_messagesq~]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqKUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh;NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUI/var/build/user_builds/django-periodicals/checkouts/latest/docs/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU pep_base_urlqUhttp://www.python.org/dev/peps/qUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqljUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqKU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhh0sUsubstitution_namesq}qhh)h}q(h%]h#]h$]Usourcehh&]h']uU footnotesq]qUrefidsq}qub.PKqCq q 3django-periodicals-latest/.doctrees/history.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X0.5.0 (2013-10-06)qNXhistoryqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUid1qhUhistoryquUchildrenq]q(cdocutils.nodes comment q)q}q(U rawsourceqX :changelog:UparentqhUsourceqcdocutils.nodes reprunicode qX../HISTORY.rstqq}qbUtagnameqUcommentq U attributesq!}q"(U xml:spaceq#Upreserveq$Uidsq%]Ubackrefsq&]Udupnamesq']Uclassesq(]Unamesq)]uUlineq*KUdocumentq+hh]q,cdocutils.nodes Text q-X :changelog:q.q/}q0(hUhhubaubcdocutils.nodes section q1)q2}q3(hUhhhhhUsectionq4h!}q5(h']h(]h&]h%]q6hah)]q7hauh*Kh+hh]q8(cdocutils.nodes title q9)q:}q;(hXHistoryq(h']h(]h&]h%]h)]uh*Kh+hh]q?h-XHistoryq@qA}qB(hhz(BpipPc |IENDB`PKqCkl\\.django-periodicals-latest/_static/pygments.css.highlight .hll { background-color: #ffffcc } .highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ .highlight .o { color: #666666 } /* Operator */ .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ .highlight .cp { color: #007020 } /* Comment.Preproc */ .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ .highlight .go { color: #333333 } /* Generic.Output */ .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .highlight .gt { color: #0044DD } /* Generic.Traceback */ .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #007020 } /* Keyword.Pseudo */ .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #902000 } /* Keyword.Type */ .highlight .m { color: #208050 } /* Literal.Number */ .highlight .s { color: #4070a0 } /* Literal.String */ .highlight .na { color: #4070a0 } /* Name.Attribute */ .highlight .nb { color: #007020 } /* Name.Builtin */ .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ .highlight .no { color: #60add5 } /* Name.Constant */ .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ .highlight .ne { color: #007020 } /* Name.Exception */ .highlight .nf { color: #06287e } /* Name.Function */ .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #bb60d5 } /* Name.Variable */ .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mf { color: #208050 } /* Literal.Number.Float */ .highlight .mh { color: #208050 } /* Literal.Number.Hex */ .highlight .mi { color: #208050 } /* Literal.Number.Integer */ .highlight .mo { color: #208050 } /* Literal.Number.Oct */ .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ .highlight .sc { color: #4070a0 } /* Literal.String.Char */ .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ .highlight .sx { color: #c65d09 } /* Literal.String.Other */ .highlight .sr { color: #235388 } /* Literal.String.Regex */ .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ .highlight .ss { color: #517918 } /* Literal.String.Symbol */ .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */PKCDUkk(django-periodicals-latest/_static/up.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME!.<̓EIDAT8͓NABP\EG{%<|xc  cr6@t;b$;3&)h1!﫳Hzz@=)p 3۵e2/ߴ ( %^ND^ }3H1DoǪISFұ?, G`{v^X[b]&HC3{:sO& ?,[eL#IENDB`PKBFCVR>>)django-periodicals-latest/_static/rtd.css/* * rtd.css * ~~~~~~~~~~~~~~~ * * Sphinx stylesheet -- sphinxdoc theme. Originally created by * Armin Ronacher for Werkzeug. * * Customized for ReadTheDocs by Eric Pierce & Eric Holscher * * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /* RTD colors * light blue: #e8ecef * medium blue: #8ca1af * dark blue: #465158 * dark grey: #444444 * * white hover: #d1d9df; * medium blue hover: #697983; * green highlight: #8ecc4c * light blue (project bar): #e8ecef */ @import url("basic.css"); /* PAGE LAYOUT -------------------------------------------------------------- */ body { font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; text-align: center; color: black; background-color: #465158; padding: 0; margin: 0; } div.document { text-align: left; background-color: #e8ecef; } div.bodywrapper { background-color: #ffffff; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; margin: 0 0 0 16em; } div.body { margin: 0; padding: 0.5em 1.3em; min-width: 20em; } div.related { font-size: 1em; background-color: #465158; } div.documentwrapper { float: left; width: 100%; background-color: #e8ecef; } /* HEADINGS --------------------------------------------------------------- */ h1 { margin: 0; padding: 0.7em 0 0.3em 0; font-size: 1.5em; line-height: 1.15; color: #111; clear: both; } h2 { margin: 2em 0 0.2em 0; font-size: 1.35em; padding: 0; color: #465158; } h3 { margin: 1em 0 -0.3em 0; font-size: 1.2em; color: #6c818f; } div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { color: black; } h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { display: none; margin: 0 0 0 0.3em; padding: 0 0.2em 0 0.2em; color: #aaa !important; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { display: inline; } h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, h5 a.anchor:hover, h6 a.anchor:hover { color: #777; background-color: #eee; } /* LINKS ------------------------------------------------------------------ */ /* Normal links get a pseudo-underline */ a { color: #444; text-decoration: none; border-bottom: 1px solid #ccc; } /* Links in sidebar, TOC, index trees and tables have no underline */ .sphinxsidebar a, .toctree-wrapper a, .indextable a, #indices-and-tables a { color: #444; text-decoration: none; /* border-bottom: none; */ } /* Search box size */ div.sphinxsidebar #searchbox input[type="submit"] { width: 50px; } /* Most links get an underline-effect when hovered */ a:hover, div.toctree-wrapper a:hover, .indextable a:hover, #indices-and-tables a:hover { color: #111; text-decoration: none; border-bottom: 1px solid #111; } /* Footer links */ div.footer a { color: #86989B; text-decoration: none; border: none; } div.footer a:hover { color: #a6b8bb; text-decoration: underline; border: none; } /* Permalink anchor (subtle grey with a red hover) */ div.body a.headerlink { color: #ccc; font-size: 1em; margin-left: 6px; padding: 0 4px 0 4px; text-decoration: none; border: none; } div.body a.headerlink:hover { color: #c60f0f; border: none; } /* NAVIGATION BAR --------------------------------------------------------- */ div.related ul { height: 2.5em; } div.related ul li { margin: 0; padding: 0.65em 0; float: left; display: block; color: white; /* For the >> separators */ font-size: 0.8em; } div.related ul li.right { float: right; margin-right: 5px; color: transparent; /* Hide the | separators */ } /* "Breadcrumb" links in nav bar */ div.related ul li a { order: none; background-color: inherit; font-weight: bold; margin: 6px 0 6px 4px; line-height: 1.75em; color: #ffffff; padding: 0.4em 0.8em; border: none; border-radius: 3px; } /* previous / next / modules / index links look more like buttons */ div.related ul li.right a { margin: 0.375em 0; background-color: #697983; text-shadow: 0 1px rgba(0, 0, 0, 0.5); border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* All navbar links light up as buttons when hovered */ div.related ul li a:hover { background-color: #8ca1af; color: #ffffff; text-decoration: none; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* Take extra precautions for tt within links */ a tt, div.related ul li a tt { background: inherit !important; color: inherit !important; } /* SIDEBAR ---------------------------------------------------------------- */ div.sphinxsidebarwrapper { padding: 0; } div.sphinxsidebar { margin: 0; margin-left: -100%; float: left; top: 3em; left: 0; padding: 0 1em; width: 14em; font-size: 1em; text-align: left; background-color: #e8ecef; } div.sphinxsidebar img { max-width: 12em; } div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p.logo { margin: 1.2em 0 0.3em 0; font-size: 1em; padding: 0; color: #222222; font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; } div.sphinxsidebar h3 a { color: #444444; } div.sphinxsidebar ul, div.sphinxsidebar p { margin-top: 0; padding-left: 0; line-height: 130%; background-color: #e8ecef; } /* No bullets for nested lists, but a little extra indentation */ div.sphinxsidebar ul ul { list-style-type: none; margin-left: 1.5em; padding: 0; } /* A little top/bottom padding to prevent adjacent links' borders * from overlapping each other */ div.sphinxsidebar ul li { padding: 1px 0; } /* A little left-padding to make these align with the ULs */ div.sphinxsidebar p.topless { padding-left: 0 0 0 1em; } /* Make these into hidden one-liners */ div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: nowrap; overflow: hidden; } /* ...which become visible when hovered */ div.sphinxsidebar ul li:hover, div.sphinxsidebar p.topless:hover { overflow: visible; } /* Search text box and "Go" button */ #searchbox { margin-top: 2em; margin-bottom: 1em; background: #ddd; padding: 0.5em; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } #searchbox h3 { margin-top: 0; } /* Make search box and button abut and have a border */ input, div.sphinxsidebar input { border: 1px solid #999; float: left; } /* Search textbox */ input[type="text"] { margin: 0; padding: 0 3px; height: 20px; width: 144px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-topleft: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; } /* Search button */ input[type="submit"] { margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ height: 22px; color: #444; background-color: #e8ecef; padding: 1px 4px; font-weight: bold; border-top-right-radius: 3px; border-bottom-right-radius: 3px; -moz-border-radius-topright: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; } input[type="submit"]:hover { color: #ffffff; background-color: #8ecc4c; } div.sphinxsidebar p.searchtip { clear: both; padding: 0.5em 0 0 0; background: #ddd; color: #666; font-size: 0.9em; } /* Sidebar links are unusual */ div.sphinxsidebar li a, div.sphinxsidebar p a { background: #e8ecef; /* In case links overlap main content */ border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border: 1px solid transparent; /* To prevent things jumping around on hover */ padding: 0 5px 0 5px; } div.sphinxsidebar li a:hover, div.sphinxsidebar p a:hover { color: #111; text-decoration: none; border: 1px solid #888; } div.sphinxsidebar p.logo a { border: 0; } /* Tweak any link appearing in a heading */ div.sphinxsidebar h3 a { } /* OTHER STUFF ------------------------------------------------------------ */ cite, code, tt { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.01em; } tt { background-color: #f2f2f2; color: #444; } tt.descname, tt.descclassname, tt.xref { border: 0; } hr { border: 1px solid #abc; margin: 2em; } pre, #_fontwidthtest { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; margin: 1em 2em; font-size: 0.95em; letter-spacing: 0.015em; line-height: 120%; padding: 0.5em; border: 1px solid #ccc; background-color: #eee; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } pre a { color: inherit; text-decoration: underline; } td.linenos pre { margin: 1em 0em; } td.code pre { margin: 1em 0em; } div.quotebar { background-color: #f8f8f8; max-width: 250px; float: right; padding: 2px 7px; border: 1px solid #ccc; } div.topic { background-color: #f8f8f8; } table { border-collapse: collapse; margin: 0 -0.5em 0 -0.5em; } table td, table th { padding: 0.2em 0.5em 0.2em 0.5em; } /* ADMONITIONS AND WARNINGS ------------------------------------------------- */ /* Shared by admonitions, warnings and sidebars */ div.admonition, div.warning, div.sidebar { font-size: 0.9em; margin: 2em; padding: 0; /* border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; */ } div.admonition p, div.warning p, div.sidebar p { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre, div.sidebar pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-title, div.sidebar p.sidebar-title { margin: 0; padding: 0.1em 0 0.1em 0.5em; color: white; font-weight: bold; font-size: 1.1em; text-shadow: 0 1px rgba(0, 0, 0, 0.5); } div.admonition ul, div.admonition ol, div.warning ul, div.warning ol, div.sidebar ul, div.sidebar ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } /* Admonitions and sidebars only */ div.admonition, div.sidebar { border: 1px solid #609060; background-color: #e9ffe9; } div.admonition p.admonition-title, div.sidebar p.sidebar-title { background-color: #70A070; border-bottom: 1px solid #609060; } /* Warnings only */ div.warning { border: 1px solid #900000; background-color: #ffe9e9; } div.warning p.admonition-title { background-color: #b04040; border-bottom: 1px solid #900000; } /* Sidebars only */ div.sidebar { max-width: 30%; } div.versioninfo { margin: 1em 0 0 0; border: 1px solid #ccc; background-color: #DDEAF0; padding: 8px; line-height: 1.3em; font-size: 0.9em; } .viewcode-back { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; } div.viewcode-block:target { background-color: #f4debf; border-top: 1px solid #ac9; border-bottom: 1px solid #ac9; } dl { margin: 1em 0 2.5em 0; } dl dt { font-style: italic; } dl dd { color: rgb(68, 68, 68); font-size: 0.95em; } /* Highlight target when you click an internal link */ dt:target { background: #ffe080; } /* Don't highlight whole divs */ div.highlight { background: transparent; } /* But do highlight spans (so search results can be highlighted) */ span.highlight { background: #ffe080; } div.footer { background-color: #465158; color: #eeeeee; padding: 0 2em 2em 2em; clear: both; font-size: 0.8em; text-align: center; } p { margin: 0.8em 0 0.5em 0; } .section p img.math { margin: 0; } .section p img { margin: 1em 2em; } table.docutils td, table.docutils th { padding: 1px 8px 1px 5px; } /* MOBILE LAYOUT -------------------------------------------------------------- */ @media screen and (max-width: 600px) { h1, h2, h3, h4, h5 { position: relative; } ul { padding-left: 1.25em; } div.bodywrapper a.headerlink, #indices-and-tables h1 a { color: #e6e6e6; font-size: 80%; float: right; line-height: 1.8; position: absolute; right: -0.7em; visibility: inherit; } div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { line-height: 1.5; } pre { font-size: 0.7em; overflow: auto; word-wrap: break-word; white-space: pre-wrap; } div.related ul { height: 2.5em; padding: 0; text-align: left; } div.related ul li { clear: both; color: #465158; padding: 0.2em 0; } div.related ul li:last-child { border-bottom: 1px dotted #8ca1af; padding-bottom: 0.4em; margin-bottom: 1em; width: 100%; } div.related ul li a { color: #465158; padding-right: 0; } div.related ul li a:hover { background: inherit; color: inherit; } div.related ul li.right { clear: none; padding: 0.65em 0; margin-bottom: 0.5em; } div.related ul li.right a { color: #fff; padding-right: 0.8em; } div.related ul li.right a:hover { background-color: #8ca1af; } div.body { clear: both; min-width: 0; word-wrap: break-word; } div.bodywrapper { margin: 0 0 0 0; } div.sphinxsidebar { float: none; margin: 0; width: auto; } div.sphinxsidebar input[type="text"] { height: 2em; line-height: 2em; width: 70%; } div.sphinxsidebar input[type="submit"] { height: 2em; margin-left: 0.5em; width: 20%; } div.sphinxsidebar p.searchtip { background: inherit; margin-bottom: 1em; } div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: normal; } .bodywrapper img { display: block; margin-left: auto; margin-right: auto; max-width: 100%; } div.documentwrapper { float: none; } div.admonition, div.warning, pre, blockquote { margin-left: 0em; margin-right: 0em; } .body p img { margin: 0; } #searchbox { background: transparent; } .related:not(:first-child) li { display: none; } .related:not(:first-child) li.right { display: block; } div.footer { padding: 1em; } .rtd_doc_footer .rtd-badge { float: none; margin: 1em auto; position: static; } .rtd_doc_footer .rtd-badge.revsys-inline { margin-right: auto; margin-bottom: 2em; } table.indextable { display: block; width: auto; } .indextable tr { display: block; } .indextable td { display: block; padding: 0; width: auto !important; } .indextable td dt { margin: 1em 0; } ul.search { margin-left: 0.25em; } ul.search li div.context { font-size: 90%; line-height: 1.1; margin-bottom: 1; margin-left: 0; } } PKC2,~~!~!/django-periodicals-latest/_static/underscore.js// Underscore.js 0.5.5 // (c) 2009 Jeremy Ashkenas, DocumentCloud Inc. // Underscore is freely distributable under the terms of the MIT license. // Portions of Underscore are inspired by or borrowed from Prototype.js, // Oliver Steele's Functional, and John Resig's Micro-Templating. // For all details and documentation: // http://documentcloud.github.com/underscore/ (function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;gf?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)}); return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length); var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false; if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length== 0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&& a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g, " ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments); o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})(); PKqCq4django-periodicals-latest/_static/readthedocs-ext.js // Intenionally left blank PKC<>1django-periodicals-latest/_static/ajax-loader.gifGIF89aU|NU|l!Created with ajaxload.info! ! NETSCAPE2.0,30Ikc:Nf E1º.`q-[9ݦ9 JkH! ,4N!  DqBQT`1 `LE[|ua C%$*! ,62#+AȐ̔V/cNIBap ̳ƨ+Y2d! ,3b%+2V_ ! 1DaFbR]=08,Ȥr9L! ,2r'+JdL &v`\bThYB)@<&,ȤR! ,3 9tڞ0!.BW1  sa50 m)J! ,2 ٜU]qp`a4AF0` @1Α! ,20IeBԜ) q10ʰPaVڥ ub[;PKCPu u -django-periodicals-latest/_static/comment.pngPNG  IHDRa OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME 1;VIDAT8ukU?sg4h`G1 RQܸp%Bn"bЍXJ .4V iZ##T;m!4bP~7r>ιbwc;m;oӍAΆ ζZ^/|s{;yR=9(rtVoG1w#_ө{*E&!(LVuoᲵ‘D PG4 :&~*ݳreu: S-,U^E&JY[P!RB ŖޞʖR@_ȐdBfNvHf"2T]R j'B1ddAak/DIJD D2H&L`&L $Ex,6|~_\P $MH`I=@Z||ttvgcЕWTZ'3rje"ܵx9W> mb|byfFRx{w%DZC$wdցHmWnta(M<~;9]C/_;Տ#}o`zSڷ_>:;x컓?yݩ|}~wam-/7=0S5RP"*֯ IENDB`PKChkk*django-periodicals-latest/_static/down.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME"U{IDAT8ҡNCAJ, ++@4>/U^,~T&3M^^^PM6ٹs*RJa)eG*W<"F Fg78G>q OIp:sAj5GنyD^+yU:p_%G@D|aOs(yM,"msx:.b@D|`Vٟ۲иeKſ/G!IENDB`PKC+0*django-periodicals-latest/_static/file.pngPNG  IHDRabKGD pHYs  tIME  )TIDAT8˭J@Ir('[ "&xYZ X0!i|_@tD] #xjv YNaEi(əy@D&`6PZk$)5%"z.NA#Aba`Vs_3c,2mj [klvy|!Iմy;v "߮a?A7`c^nk?Bg}TЙD# "RD1yER*6MJ3K_Ut8F~IENDB`PKC[{gtt0django-periodicals-latest/_static/up-pressed.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME ,ZeIDAT8͓jA*WKk-,By@- و/`cXYh!6jf GrOlXvvfk2!p!GOOԲ &zf 6|M~%`]* ΛM]K ZĆ1Er%ȶcm1`= 0 && !jQuery(node.parentNode).hasClass(className)) { var span = document.createElement("span"); span.className = className; span.appendChild(document.createTextNode(val.substr(pos, text.length))); node.parentNode.insertBefore(span, node.parentNode.insertBefore( document.createTextNode(val.substr(pos + text.length)), node.nextSibling)); node.nodeValue = val.substr(0, pos); } } else if (!jQuery(node).is("button, select, textarea")) { jQuery.each(node.childNodes, function() { highlight(this); }); } } return this.each(function() { highlight(this); }); }; /** * Small JavaScript module for the documentation. */ var Documentation = { init : function() { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); }, /** * i18n support */ TRANSLATIONS : {}, PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, LOCALE : 'unknown', // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) gettext : function(string) { var translated = Documentation.TRANSLATIONS[string]; if (typeof translated == 'undefined') return string; return (typeof translated == 'string') ? translated : translated[0]; }, ngettext : function(singular, plural, n) { var translated = Documentation.TRANSLATIONS[singular]; if (typeof translated == 'undefined') return (n == 1) ? singular : plural; return translated[Documentation.PLURALEXPR(n)]; }, addTranslations : function(catalog) { for (var key in catalog.messages) this.TRANSLATIONS[key] = catalog.messages[key]; this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); this.LOCALE = catalog.locale; }, /** * add context elements like header anchor links */ addContextElements : function() { $('div[id] > :header:first').each(function() { $('\u00B6'). attr('href', '#' + this.id). attr('title', _('Permalink to this headline')). appendTo(this); }); $('dt[id]').each(function() { $('\u00B6'). attr('href', '#' + this.id). attr('title', _('Permalink to this definition')). appendTo(this); }); }, /** * workaround a firefox stupidity */ fixFirefoxAnchorBug : function() { if (document.location.hash && $.browser.mozilla) window.setTimeout(function() { document.location.href += ''; }, 10); }, /** * highlight the search words provided in the url in the text */ highlightSearchWords : function() { var params = $.getQueryParameters(); var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; if (terms.length) { var body = $('div.body'); window.setTimeout(function() { $.each(terms, function() { body.highlightText(this.toLowerCase(), 'highlighted'); }); }, 10); $('') .appendTo($('#searchbox')); } }, /** * init the domain index toggle buttons */ initIndexTable : function() { var togglers = $('img.toggler').click(function() { var src = $(this).attr('src'); var idnum = $(this).attr('id').substr(7); $('tr.cg-' + idnum).toggle(); if (src.substr(-9) == 'minus.png') $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); else $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); }).css('display', ''); if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { togglers.click(); } }, /** * helper function to hide the search marks again */ hideSearchWords : function() { $('#searchbox .highlight-link').fadeOut(300); $('span.highlighted').removeClass('highlighted'); }, /** * make the url absolute */ makeURL : function(relativeURL) { return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; }, /** * get the current relative url */ getCurrentURL : function() { var path = document.location.pathname; var parts = path.split(/\//); $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { if (this == '..') parts.pop(); }); var url = parts.join('/'); return path.substring(url.lastIndexOf('/') + 1, path.length - 1); } }; // quick alias for translations _ = Documentation.gettext; $(document).ready(function() { Documentation.init(); }); PKqC:>>>0django-periodicals-latest/_static/searchtools.js/* * searchtools.js_t * ~~~~~~~~~~~~~~~~ * * Sphinx JavaScript utilties for the full-text search. * * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /** * helper function to return a node containing the * search summary for a given text. keywords is a list * of stemmed words, hlwords is the list of normal, unstemmed * words. the first one is used to find the occurance, the * latter for highlighting it. */ jQuery.makeSearchSummary = function(text, keywords, hlwords) { var textLower = text.toLowerCase(); var start = 0; $.each(keywords, function() { var i = textLower.indexOf(this.toLowerCase()); if (i > -1) start = i; }); start = Math.max(start - 120, 0); var excerpt = ((start > 0) ? '...' : '') + $.trim(text.substr(start, 240)) + ((start + 240 - text.length) ? '...' : ''); var rv = $('
').text(excerpt); $.each(hlwords, function() { rv = rv.highlightText(this, 'highlighted'); }); return rv; } /** * Porter Stemmer */ var Stemmer = function() { var step2list = { ational: 'ate', tional: 'tion', enci: 'ence', anci: 'ance', izer: 'ize', bli: 'ble', alli: 'al', entli: 'ent', eli: 'e', ousli: 'ous', ization: 'ize', ation: 'ate', ator: 'ate', alism: 'al', iveness: 'ive', fulness: 'ful', ousness: 'ous', aliti: 'al', iviti: 'ive', biliti: 'ble', logi: 'log' }; var step3list = { icate: 'ic', ative: '', alize: 'al', iciti: 'ic', ical: 'ic', ful: '', ness: '' }; var c = "[^aeiou]"; // consonant var v = "[aeiouy]"; // vowel var C = c + "[^aeiouy]*"; // consonant sequence var V = v + "[aeiou]*"; // vowel sequence var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 var s_v = "^(" + C + ")?" + v; // vowel in stem this.stemWord = function (w) { var stem; var suffix; var firstch; var origword = w; if (w.length < 3) return w; var re; var re2; var re3; var re4; firstch = w.substr(0,1); if (firstch == "y") w = firstch.toUpperCase() + w.substr(1); // Step 1a re = /^(.+?)(ss|i)es$/; re2 = /^(.+?)([^s])s$/; if (re.test(w)) w = w.replace(re,"$1$2"); else if (re2.test(w)) w = w.replace(re2,"$1$2"); // Step 1b re = /^(.+?)eed$/; re2 = /^(.+?)(ed|ing)$/; if (re.test(w)) { var fp = re.exec(w); re = new RegExp(mgr0); if (re.test(fp[1])) { re = /.$/; w = w.replace(re,""); } } else if (re2.test(w)) { var fp = re2.exec(w); stem = fp[1]; re2 = new RegExp(s_v); if (re2.test(stem)) { w = stem; re2 = /(at|bl|iz)$/; re3 = new RegExp("([^aeiouylsz])\\1$"); re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); if (re2.test(w)) w = w + "e"; else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } else if (re4.test(w)) w = w + "e"; } } // Step 1c re = /^(.+?)y$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(s_v); if (re.test(stem)) w = stem + "i"; } // Step 2 re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; suffix = fp[2]; re = new RegExp(mgr0); if (re.test(stem)) w = stem + step2list[suffix]; } // Step 3 re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; suffix = fp[2]; re = new RegExp(mgr0); if (re.test(stem)) w = stem + step3list[suffix]; } // Step 4 re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; re2 = /^(.+?)(s|t)(ion)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(mgr1); if (re.test(stem)) w = stem; } else if (re2.test(w)) { var fp = re2.exec(w); stem = fp[1] + fp[2]; re2 = new RegExp(mgr1); if (re2.test(stem)) w = stem; } // Step 5 re = /^(.+?)e$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(mgr1); re2 = new RegExp(meq1); re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) w = stem; } re = /ll$/; re2 = new RegExp(mgr1); if (re.test(w) && re2.test(w)) { re = /.$/; w = w.replace(re,""); } // and turn initial Y back to y if (firstch == "y") w = firstch.toLowerCase() + w.substr(1); return w; } } /** * Search Module */ var Search = { _index : null, _queued_query : null, _pulse_status : -1, init : function() { var params = $.getQueryParameters(); if (params.q) { var query = params.q[0]; $('input[name="q"]')[0].value = query; this.performSearch(query); } }, loadIndex : function(url) { $.ajax({type: "GET", url: url, data: null, success: null, dataType: "script", cache: true}); }, setIndex : function(index) { var q; this._index = index; if ((q = this._queued_query) !== null) { this._queued_query = null; Search.query(q); } }, hasIndex : function() { return this._index !== null; }, deferQuery : function(query) { this._queued_query = query; }, stopPulse : function() { this._pulse_status = 0; }, startPulse : function() { if (this._pulse_status >= 0) return; function pulse() { Search._pulse_status = (Search._pulse_status + 1) % 4; var dotString = ''; for (var i = 0; i < Search._pulse_status; i++) dotString += '.'; Search.dots.text(dotString); if (Search._pulse_status > -1) window.setTimeout(pulse, 500); }; pulse(); }, /** * perform a search for something */ performSearch : function(query) { // create the required interface elements this.out = $('#search-results'); this.title = $('

' + _('Searching') + '

').appendTo(this.out); this.dots = $('').appendTo(this.title); this.status = $('

').appendTo(this.out); this.output = $('