3
0
Fork 0
mirror of https://github.com/nanoy42/coope synced 2024-11-21 19:03:12 +00:00
This commit is contained in:
Yoann Pétri 2019-02-28 13:18:41 +01:00
parent 84e2a529c6
commit 3a79cfb0ce
182 changed files with 64005 additions and 917 deletions

View file

@ -2,26 +2,28 @@ from django.contrib.auth.decorators import user_passes_test
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.shortcuts import redirect, get_object_or_404 from django.shortcuts import redirect, get_object_or_404
from django.urls import reverse from django.urls import reverse
from functools import wraps
from preferences.models import GeneralPreferences from preferences.models import GeneralPreferences
def admin_required(view): def admin_required(view):
""" """
Test if the user is staff Test if the user is staff.
""" """
return user_passes_test(lambda u: u.is_staff)(view) return user_passes_test(lambda u: u.is_staff)(view)
def superuser_required(view): def superuser_required(view):
""" """
Test if the user is superuser Test if the user is superuser.
""" """
return user_passes_test(lambda u: u.is_superuser)(view) return user_passes_test(lambda u: u.is_superuser)(view)
def self_or_has_perm(pkName, perm): def self_or_has_perm(pkName, perm):
""" """
Test if the user is the request user (pk) or has perm permission Test if the user is the request user (pk) or has perm permission.
""" """
def decorator(view): def decorator(view):
@wraps(view)
def wrapper(request, *args, **kwargs): def wrapper(request, *args, **kwargs):
user = get_object_or_404(User, pk=kwargs[pkName]) user = get_object_or_404(User, pk=kwargs[pkName])
if(user == request.user or request.user.has_perm(perm)): if(user == request.user or request.user.has_perm(perm)):
@ -32,6 +34,10 @@ def self_or_has_perm(pkName, perm):
return decorator return decorator
def active_required(view): def active_required(view):
"""
Test if the site is active (:attr:`preferences.models.GeneralPreferences.is_active`).
"""
@wraps(view)
def wrapper(request, *args, **kwargs): def wrapper(request, *args, **kwargs):
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
if(not gp.is_active): if(not gp.is_active):
@ -40,7 +46,11 @@ def active_required(view):
return wrapper return wrapper
def acl_or(*perms): def acl_or(*perms):
"""
Test if a user has one of perms
"""
def decorator(view): def decorator(view):
@wraps(view)
def wrapper(request,*args, **kwargs): def wrapper(request,*args, **kwargs):
can_pass = request.user.has_perm(perms[0]) can_pass = request.user.has_perm(perms[0])
for perm in perms: for perm in perms:
@ -53,7 +63,11 @@ def acl_or(*perms):
return decorator return decorator
def acl_and(*perms): def acl_and(*perms):
"""
Test if a user has all perms
"""
def decorator(view): def decorator(view):
@wraps(view)
def wrapper(request,*args, **kwargs): def wrapper(request,*args, **kwargs):
can_pass = request.user.has_perm(perms[0]) can_pass = request.user.has_perm(perms[0])
for perm in perms: for perm in perms:

View file

@ -30,7 +30,6 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'django.contrib.admindocs',
'gestion', 'gestion',
'users', 'users',
'preferences', 'preferences',

View file

@ -6,48 +6,75 @@ register = template.Library()
@register.simple_tag @register.simple_tag
def president(): def president():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.president`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
return gp.president return gp.president
@register.simple_tag @register.simple_tag
def vice_president(): def vice_president():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.vice_president`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
return gp.vice_president return gp.vice_president
@register.simple_tag @register.simple_tag
def treasurer(): def treasurer():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.treasurer`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
return gp.treasurer return gp.treasurer
@register.simple_tag @register.simple_tag
def secretary(): def secretary():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.secretary`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
return gp.secretary return gp.secretary
@register.simple_tag @register.simple_tag
def brewer(): def brewer():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.brewer`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
return gp.brewer return gp.brewer
@register.simple_tag @register.simple_tag
def grocer(): def grocer():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.grocer`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
return gp.grocer return gp.grocer
@register.simple_tag @register.simple_tag
def global_message(): def global_message():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.global_message`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
messages = gp.global_message.split("\n") messages = gp.global_message.split("\n")
return random.choice(messages) return random.choice(messages)
@register.simple_tag @register.simple_tag
def logout_time(): def logout_time():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.automatic_logout_time`.
"""
gp, _ = GeneralPreferences.objects.get_or_create(pk=1) gp, _ = GeneralPreferences.objects.get_or_create(pk=1)
logout_time = gp.automatic_logout_time logout_time = gp.automatic_logout_time
return logout_time return logout_time
@register.simple_tag @register.simple_tag
def statutes(): def statutes():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.statutes`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
try: try:
return '<a target="_blank" href="' + gp.statutes.url + '">' + str(gp.statutes) + '</a>' return '<a target="_blank" href="' + gp.statutes.url + '">' + str(gp.statutes) + '</a>'
@ -56,6 +83,9 @@ def statutes():
@register.simple_tag @register.simple_tag
def rules(): def rules():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.rules`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
try: try:
return '<a target="_blank" href="' + gp.rules.url + '">' + str(gp.rules) + '</a>' return '<a target="_blank" href="' + gp.rules.url + '">' + str(gp.rules) + '</a>'
@ -64,6 +94,9 @@ def rules():
@register.simple_tag @register.simple_tag
def menu(): def menu():
"""
A tag which returns :attr:`preferences.models.GeneralPreferences.menu`.
"""
gp,_ = GeneralPreferences.objects.get_or_create(pk=1) gp,_ = GeneralPreferences.objects.get_or_create(pk=1)
try: try:
return '<a target="_blank" href="' + gp.menu.url + '">' + str(gp.menu) + '</a>' return '<a target="_blank" href="' + gp.menu.url + '">' + str(gp.menu) + '</a>'

View file

@ -5,6 +5,9 @@ from preferences.models import GeneralPreferences
from gestion.models import Keg from gestion.models import Keg
def home(request): def home(request):
"""
Redirect the user either to :func:`~gestion.views.manage` view (if connected and staff) or :func:`~coopeV3.views.homepage` view (if connected and not staff) or :func:`~users.views.loginView` view (if not connected).
"""
if request.user.is_authenticated: if request.user.is_authenticated:
if(request.user.has_perm('gestion.can_manage')): if(request.user.has_perm('gestion.can_manage')):
return redirect(reverse('gestion:manage')) return redirect(reverse('gestion:manage'))
@ -14,9 +17,15 @@ def home(request):
return redirect(reverse('users:login')) return redirect(reverse('users:login'))
def homepage(request): def homepage(request):
"""
View which displays the :attr:`~preferences.models.GeneralPreferences.home_text` and active :class:`Kegs <gestion.models.Keg>`.
"""
gp, _ = GeneralPreferences.objects.get_or_create(pk=1) gp, _ = GeneralPreferences.objects.get_or_create(pk=1)
kegs = Keg.objects.filter(is_active=True) kegs = Keg.objects.filter(is_active=True)
return render(request, "home.html", {"home_text": gp.home_text, "kegs": kegs}) return render(request, "home.html", {"home_text": gp.home_text, "kegs": kegs})
def coope_runner(request): def coope_runner(request):
"""
Just an easter egg
"""
return render(request, "coope-runner.html") return render(request, "coope-runner.html")

View file

@ -1,11 +0,0 @@
from django.forms.widgets import Select, Input
from django.template import Context, Template
from django.template.loader import get_template
class SearchField(Input):
def render(self, name, value, attrs=None):
#super().render(name, value, attrs)
template = get_template('search_field.html')
context = Context({})
return template.render(context)

View file

@ -11,6 +11,9 @@ from django.conf import settings
DEFAULT_INTERPRETER = 'lualatex' DEFAULT_INTERPRETER = 'lualatex'
def run_tex(source): def run_tex(source):
"""
Copy the source to temp dict and run latex.
"""
with tempfile.TemporaryDirectory() as tempdir: with tempfile.TemporaryDirectory() as tempdir:
filename = os.path.join(tempdir, 'texput.tex') filename = os.path.join(tempdir, 'texput.tex')
with open(filename, 'x', encoding='utf-8') as f: with open(filename, 'x', encoding='utf-8') as f:
@ -32,9 +35,15 @@ def run_tex(source):
return pdf return pdf
def compile_template_to_pdf(template_name, context): def compile_template_to_pdf(template_name, context):
"""
Compile the source with :func:`~django_tex.core.render_template_with_context` and :func:`~django_tex.core.run_tex`.
"""
source = render_template_with_context(template_name, context) source = render_template_with_context(template_name, context)
return run_tex(source) return run_tex(source)
def render_template_with_context(template_name, context): def render_template_with_context(template_name, context):
"""
Render the template
"""
template = get_template(template_name, using='tex') template = get_template(template_name, using='tex')
return template.render(context) return template.render(context)

19
docs/Makefile Normal file
View file

@ -0,0 +1,19 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SOURCEDIR = .
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

BIN
docs/_build/doctrees/coopeV3.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
docs/_build/doctrees/django_tex.doctree vendored Normal file

Binary file not shown.

BIN
docs/_build/doctrees/environment.pickle vendored Normal file

Binary file not shown.

BIN
docs/_build/doctrees/gestion.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
docs/_build/doctrees/index.doctree vendored Normal file

Binary file not shown.

BIN
docs/_build/doctrees/manage.doctree vendored Normal file

Binary file not shown.

BIN
docs/_build/doctrees/modules.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/_build/doctrees/preferences.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
docs/_build/doctrees/users.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

4
docs/_build/html/.buildinfo vendored Normal file
View file

@ -0,0 +1,4 @@
# 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: 43e23fa5fc0f672f16886307c22e1325
tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -0,0 +1,85 @@
coopeV3 package
===============
Subpackages
-----------
.. toctree::
coopeV3.templatetags
Submodules
----------
coopeV3.acl module
------------------
.. automodule:: coopeV3.acl
:members:
:undoc-members:
:show-inheritance:
coopeV3.local\_settings.example module
--------------------------------------
.. automodule:: coopeV3.local_settings.example
:members:
:undoc-members:
:show-inheritance:
coopeV3.local\_settings module
------------------------------
.. automodule:: coopeV3.local_settings
:members:
:undoc-members:
:show-inheritance:
coopeV3.settings module
-----------------------
.. automodule:: coopeV3.settings
:members:
:undoc-members:
:show-inheritance:
coopeV3.urls module
-------------------
.. automodule:: coopeV3.urls
:members:
:undoc-members:
:show-inheritance:
coopeV3.views module
--------------------
.. automodule:: coopeV3.views
:members:
:undoc-members:
:show-inheritance:
coopeV3.widgets module
----------------------
.. automodule:: coopeV3.widgets
:members:
:undoc-members:
:show-inheritance:
coopeV3.wsgi module
-------------------
.. automodule:: coopeV3.wsgi
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: coopeV3
:members:
:undoc-members:
:show-inheritance:

View file

@ -0,0 +1,22 @@
coopeV3.templatetags package
============================
Submodules
----------
coopeV3.templatetags.vip module
-------------------------------
.. automodule:: coopeV3.templatetags.vip
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: coopeV3.templatetags
:members:
:undoc-members:
:show-inheritance:

View file

@ -0,0 +1,70 @@
django\_tex package
===================
Submodules
----------
django\_tex.core module
-----------------------
.. automodule:: django_tex.core
:members:
:undoc-members:
:show-inheritance:
django\_tex.engine module
-------------------------
.. automodule:: django_tex.engine
:members:
:undoc-members:
:show-inheritance:
django\_tex.environment module
------------------------------
.. automodule:: django_tex.environment
:members:
:undoc-members:
:show-inheritance:
django\_tex.exceptions module
-----------------------------
.. automodule:: django_tex.exceptions
:members:
:undoc-members:
:show-inheritance:
django\_tex.filters module
--------------------------
.. automodule:: django_tex.filters
:members:
:undoc-members:
:show-inheritance:
django\_tex.models module
-------------------------
.. automodule:: django_tex.models
:members:
:undoc-members:
:show-inheritance:
django\_tex.views module
------------------------
.. automodule:: django_tex.views
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: django_tex
:members:
:undoc-members:
:show-inheritance:

View file

@ -0,0 +1,62 @@
gestion.migrations package
==========================
Submodules
----------
gestion.migrations.0001\_initial module
---------------------------------------
.. automodule:: gestion.migrations.0001_initial
:members:
:undoc-members:
:show-inheritance:
gestion.migrations.0002\_pinte module
-------------------------------------
.. automodule:: gestion.migrations.0002_pinte
:members:
:undoc-members:
:show-inheritance:
gestion.migrations.0003\_historicalpinte module
-----------------------------------------------
.. automodule:: gestion.migrations.0003_historicalpinte
:members:
:undoc-members:
:show-inheritance:
gestion.migrations.0004\_auto\_20181223\_1830 module
----------------------------------------------------
.. automodule:: gestion.migrations.0004_auto_20181223_1830
:members:
:undoc-members:
:show-inheritance:
gestion.migrations.0005\_auto\_20190106\_0018 module
----------------------------------------------------
.. automodule:: gestion.migrations.0005_auto_20190106_0018
:members:
:undoc-members:
:show-inheritance:
gestion.migrations.0006\_auto\_20190227\_0859 module
----------------------------------------------------
.. automodule:: gestion.migrations.0006_auto_20190227_0859
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: gestion.migrations
:members:
:undoc-members:
:show-inheritance:

View file

@ -0,0 +1,83 @@
gestion package
===============
Subpackages
-----------
.. toctree::
Submodules
----------
gestion.admin module
--------------------
.. automodule:: gestion.admin
:members:
:undoc-members:
:show-inheritance:
gestion.apps module
-------------------
.. automodule:: gestion.apps
:members:
:undoc-members:
:show-inheritance:
gestion.environment module
--------------------------
.. automodule:: gestion.environment
:members:
:undoc-members:
:show-inheritance:
gestion.forms module
--------------------
.. automodule:: gestion.forms
:members:
:undoc-members:
:show-inheritance:
gestion.models module
---------------------
.. automodule:: gestion.models
:members:
:undoc-members:
:show-inheritance:
gestion.tests module
--------------------
.. automodule:: gestion.tests
:members:
:undoc-members:
:show-inheritance:
gestion.urls module
-------------------
.. automodule:: gestion.urls
:members:
:undoc-members:
:show-inheritance:
gestion.views module
--------------------
.. automodule:: gestion.views
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: gestion
:members:
:undoc-members:
:show-inheritance:

25
docs/_build/html/_sources/index.rst.txt vendored Normal file
View file

@ -0,0 +1,25 @@
.. CoopeV3 documentation master file, created by
sphinx-quickstart on Wed Feb 27 09:11:01 2019.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
CoopeV3 documentation
===================================
.. toctree::
:maxdepth: 2
:caption: Contents:
modules/views.rst
modules/models.rst
modules/admin.rst
modules/forms.rst
modules/utils.rst
modules/django_tex.rst
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View file

@ -0,0 +1,7 @@
manage module
=============
.. automodule:: manage
:members:
:undoc-members:
:show-inheritance:

View file

@ -0,0 +1,12 @@
coopeV3
=======
.. toctree::
:maxdepth: 4
coopeV3
django_tex
gestion
manage
preferences
users

View file

@ -0,0 +1,24 @@
===================
Admin documentation
===================
Gestion app admin
=================
.. automodule:: gestion.admin
:members:
:undoc-members:
Users app admin
===============
.. automodule:: users.admin
:members:
:undoc-members:
Preferences app admin
=====================
.. automodule:: preferences.admin
:members:
:undoc-members:

View file

@ -0,0 +1,52 @@
========================
Django_tex documentation
========================
Core
====
.. automodule:: django_tex.core
:members:
:undoc-members:
Engine
======
.. automodule:: django_tex.engine
:members:
:undoc-members:
Environment
===========
.. automodule:: django_tex.environment
:members:
:undoc-members:
Exceptions
==========
.. automodule:: django_tex.exceptions
:members:
:undoc-members:
Filters
=======
.. automodule:: django_tex.filters
:members:
:undoc-members:
Models
======
.. automodule:: django_tex.models
:members:
:undoc-members:
Views
=====
.. automodule:: django_tex.views
:members:
:undoc-members:

View file

@ -0,0 +1,24 @@
===================
Forms documentation
===================
Gestion app forms
=================
.. automodule:: gestion.forms
:members:
:undoc-members:
Users app forms
===============
.. automodule:: users.forms
:members:
:undoc-members:
Preferences app forms
=====================
.. automodule:: preferences.forms
:members:
:undoc-members:

View file

@ -0,0 +1,24 @@
====================
Models documentation
====================
Gestion app models
==================
.. automodule:: gestion.models
:members:
:undoc-members:
Users app models
================
.. automodule:: users.models
:members:
:undoc-members:
Preferences app models
======================
.. automodule:: preferences.models
:members:
:undoc-members:

View file

@ -0,0 +1,24 @@
===================
Utils documentation
===================
ACL
===
.. automodule:: coopeV3.acl
:members:
:undoc-members:
CoopeV3 templatetags
====================
.. automodule:: coopeV3.templatetags.vip
:members:
:undoc-members:
Users templatetags
==================
.. automodule:: users.templatetags.users_extra
:members:
:undoc-members:

View file

@ -0,0 +1,31 @@
===================
Views documentation
===================
Gestion app views
=================
.. automodule:: gestion.views
:members:
:undoc-members:
Users app views
===============
.. automodule:: users.views
:members:
:undoc-members:
Preferences app views
=====================
.. automodule:: preferences.views
:members:
:undoc-members:
coopeV3 app views
=================
.. automodule:: coopeV3.views
:members:
:undoc-members:

View file

@ -0,0 +1,86 @@
preferences.migrations package
==============================
Submodules
----------
preferences.migrations.0001\_initial module
-------------------------------------------
.. automodule:: preferences.migrations.0001_initial
:members:
:undoc-members:
:show-inheritance:
preferences.migrations.0002\_auto\_20181221\_2151 module
--------------------------------------------------------
.. automodule:: preferences.migrations.0002_auto_20181221_2151
:members:
:undoc-members:
:show-inheritance:
preferences.migrations.0003\_auto\_20181223\_1440 module
--------------------------------------------------------
.. automodule:: preferences.migrations.0003_auto_20181223_1440
:members:
:undoc-members:
:show-inheritance:
preferences.migrations.0004\_auto\_20190106\_0452 module
--------------------------------------------------------
.. automodule:: preferences.migrations.0004_auto_20190106_0452
:members:
:undoc-members:
:show-inheritance:
preferences.migrations.0005\_auto\_20190106\_0513 module
--------------------------------------------------------
.. automodule:: preferences.migrations.0005_auto_20190106_0513
:members:
:undoc-members:
:show-inheritance:
preferences.migrations.0006\_auto\_20190119\_2326 module
--------------------------------------------------------
.. automodule:: preferences.migrations.0006_auto_20190119_2326
:members:
:undoc-members:
:show-inheritance:
preferences.migrations.0007\_auto\_20190120\_1208 module
--------------------------------------------------------
.. automodule:: preferences.migrations.0007_auto_20190120_1208
:members:
:undoc-members:
:show-inheritance:
preferences.migrations.0008\_auto\_20190218\_1802 module
--------------------------------------------------------
.. automodule:: preferences.migrations.0008_auto_20190218_1802
:members:
:undoc-members:
:show-inheritance:
preferences.migrations.0009\_auto\_20190227\_0859 module
--------------------------------------------------------
.. automodule:: preferences.migrations.0009_auto_20190227_0859
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: preferences.migrations
:members:
:undoc-members:
:show-inheritance:

View file

@ -0,0 +1,75 @@
preferences package
===================
Subpackages
-----------
.. toctree::
Submodules
----------
preferences.admin module
------------------------
.. automodule:: preferences.admin
:members:
:undoc-members:
:show-inheritance:
preferences.apps module
-----------------------
.. automodule:: preferences.apps
:members:
:undoc-members:
:show-inheritance:
preferences.forms module
------------------------
.. automodule:: preferences.forms
:members:
:undoc-members:
:show-inheritance:
preferences.models module
-------------------------
.. automodule:: preferences.models
:members:
:undoc-members:
:show-inheritance:
preferences.tests module
------------------------
.. automodule:: preferences.tests
:members:
:undoc-members:
:show-inheritance:
preferences.urls module
-----------------------
.. automodule:: preferences.urls
:members:
:undoc-members:
:show-inheritance:
preferences.views module
------------------------
.. automodule:: preferences.views
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: preferences
:members:
:undoc-members:
:show-inheritance:

View file

@ -0,0 +1,54 @@
users.migrations package
========================
Submodules
----------
users.migrations.0001\_initial module
-------------------------------------
.. automodule:: users.migrations.0001_initial
:members:
:undoc-members:
:show-inheritance:
users.migrations.0002\_auto\_20190218\_2231 module
--------------------------------------------------
.. automodule:: users.migrations.0002_auto_20190218_2231
:members:
:undoc-members:
:show-inheritance:
users.migrations.0003\_auto\_20190219\_1921 module
--------------------------------------------------
.. automodule:: users.migrations.0003_auto_20190219_1921
:members:
:undoc-members:
:show-inheritance:
users.migrations.0004\_auto\_20190226\_2313 module
--------------------------------------------------
.. automodule:: users.migrations.0004_auto_20190226_2313
:members:
:undoc-members:
:show-inheritance:
users.migrations.0005\_auto\_20190227\_0859 module
--------------------------------------------------
.. automodule:: users.migrations.0005_auto_20190227_0859
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: users.migrations
:members:
:undoc-members:
:show-inheritance:

75
docs/_build/html/_sources/users.rst.txt vendored Normal file
View file

@ -0,0 +1,75 @@
users package
=============
Subpackages
-----------
.. toctree::
Submodules
----------
users.admin module
------------------
.. automodule:: users.admin
:members:
:undoc-members:
:show-inheritance:
users.apps module
-----------------
.. automodule:: users.apps
:members:
:undoc-members:
:show-inheritance:
users.forms module
------------------
.. automodule:: users.forms
:members:
:undoc-members:
:show-inheritance:
users.models module
-------------------
.. automodule:: users.models
:members:
:undoc-members:
:show-inheritance:
users.tests module
------------------
.. automodule:: users.tests
:members:
:undoc-members:
:show-inheritance:
users.urls module
-----------------
.. automodule:: users.urls
:members:
:undoc-members:
:show-inheritance:
users.views module
------------------
.. automodule:: users.views
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: users
:members:
:undoc-members:
:show-inheritance:

3667
docs/_build/html/_static/_stemmer.js vendored Normal file

File diff suppressed because it is too large Load diff

BIN
docs/_build/html/_static/ajax-loader.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

701
docs/_build/html/_static/alabaster.css vendored Normal file
View file

@ -0,0 +1,701 @@
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: Georgia, serif;
font-size: 17px;
background-color: #fff;
color: #000;
margin: 0;
padding: 0;
}
div.document {
width: 940px;
margin: 30px auto 0 auto;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 220px;
}
div.sphinxsidebar {
width: 220px;
font-size: 14px;
line-height: 1.5;
}
hr {
border: 1px solid #B1B4B6;
}
div.body {
background-color: #fff;
color: #3E4349;
padding: 0 30px 0 30px;
}
div.body > .section {
text-align: left;
}
div.footer {
width: 940px;
margin: 20px auto 30px auto;
font-size: 14px;
color: #888;
text-align: right;
}
div.footer a {
color: #888;
}
p.caption {
font-family: inherit;
font-size: inherit;
}
div.relations {
display: none;
}
div.sphinxsidebar a {
color: #444;
text-decoration: none;
border-bottom: 1px dotted #999;
}
div.sphinxsidebar a:hover {
border-bottom: 1px solid #999;
}
div.sphinxsidebarwrapper {
padding: 18px 10px;
}
div.sphinxsidebarwrapper p.logo {
padding: 0;
margin: -10px 0 0 0px;
text-align: center;
}
div.sphinxsidebarwrapper h1.logo {
margin-top: -10px;
text-align: center;
margin-bottom: 5px;
text-align: left;
}
div.sphinxsidebarwrapper h1.logo-name {
margin-top: 0px;
}
div.sphinxsidebarwrapper p.blurb {
margin-top: 0;
font-style: normal;
}
div.sphinxsidebar h3,
div.sphinxsidebar h4 {
font-family: Georgia, serif;
color: #444;
font-size: 24px;
font-weight: normal;
margin: 0 0 5px 0;
padding: 0;
}
div.sphinxsidebar h4 {
font-size: 20px;
}
div.sphinxsidebar h3 a {
color: #444;
}
div.sphinxsidebar p.logo a,
div.sphinxsidebar h3 a,
div.sphinxsidebar p.logo a:hover,
div.sphinxsidebar h3 a:hover {
border: none;
}
div.sphinxsidebar p {
color: #555;
margin: 10px 0;
}
div.sphinxsidebar ul {
margin: 10px 0;
padding: 0;
color: #000;
}
div.sphinxsidebar ul li.toctree-l1 > a {
font-size: 120%;
}
div.sphinxsidebar ul li.toctree-l2 > a {
font-size: 110%;
}
div.sphinxsidebar input {
border: 1px solid #CCC;
font-family: Georgia, serif;
font-size: 1em;
}
div.sphinxsidebar hr {
border: none;
height: 1px;
color: #AAA;
background: #AAA;
text-align: left;
margin-left: 0;
width: 50%;
}
div.sphinxsidebar .badge {
border-bottom: none;
}
div.sphinxsidebar .badge:hover {
border-bottom: none;
}
/* To address an issue with donation coming after search */
div.sphinxsidebar h3.donation {
margin-top: 10px;
}
/* -- body styles ----------------------------------------------------------- */
a {
color: #004B6B;
text-decoration: underline;
}
a:hover {
color: #6D4100;
text-decoration: underline;
}
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: Georgia, serif;
font-weight: normal;
margin: 30px 0px 10px 0px;
padding: 0;
}
div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
div.body h2 { font-size: 180%; }
div.body h3 { font-size: 150%; }
div.body h4 { font-size: 130%; }
div.body h5 { font-size: 100%; }
div.body h6 { font-size: 100%; }
a.headerlink {
color: #DDD;
padding: 0 4px;
text-decoration: none;
}
a.headerlink:hover {
color: #444;
background: #EAEAEA;
}
div.body p, div.body dd, div.body li {
line-height: 1.4em;
}
div.admonition {
margin: 20px 0px;
padding: 10px 30px;
background-color: #EEE;
border: 1px solid #CCC;
}
div.admonition tt.xref, div.admonition code.xref, div.admonition a tt {
background-color: #FBFBFB;
border-bottom: 1px solid #fafafa;
}
div.admonition p.admonition-title {
font-family: Georgia, serif;
font-weight: normal;
font-size: 24px;
margin: 0 0 10px 0;
padding: 0;
line-height: 1;
}
div.admonition p.last {
margin-bottom: 0;
}
div.highlight {
background-color: #fff;
}
dt:target, .highlight {
background: #FAF3E8;
}
div.warning {
background-color: #FCC;
border: 1px solid #FAA;
}
div.danger {
background-color: #FCC;
border: 1px solid #FAA;
-moz-box-shadow: 2px 2px 4px #D52C2C;
-webkit-box-shadow: 2px 2px 4px #D52C2C;
box-shadow: 2px 2px 4px #D52C2C;
}
div.error {
background-color: #FCC;
border: 1px solid #FAA;
-moz-box-shadow: 2px 2px 4px #D52C2C;
-webkit-box-shadow: 2px 2px 4px #D52C2C;
box-shadow: 2px 2px 4px #D52C2C;
}
div.caution {
background-color: #FCC;
border: 1px solid #FAA;
}
div.attention {
background-color: #FCC;
border: 1px solid #FAA;
}
div.important {
background-color: #EEE;
border: 1px solid #CCC;
}
div.note {
background-color: #EEE;
border: 1px solid #CCC;
}
div.tip {
background-color: #EEE;
border: 1px solid #CCC;
}
div.hint {
background-color: #EEE;
border: 1px solid #CCC;
}
div.seealso {
background-color: #EEE;
border: 1px solid #CCC;
}
div.topic {
background-color: #EEE;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre, tt, code {
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
font-size: 0.9em;
}
.hll {
background-color: #FFC;
margin: 0 -12px;
padding: 0 12px;
display: block;
}
img.screenshot {
}
tt.descname, tt.descclassname, code.descname, code.descclassname {
font-size: 0.95em;
}
tt.descname, code.descname {
padding-right: 0.08em;
}
img.screenshot {
-moz-box-shadow: 2px 2px 4px #EEE;
-webkit-box-shadow: 2px 2px 4px #EEE;
box-shadow: 2px 2px 4px #EEE;
}
table.docutils {
border: 1px solid #888;
-moz-box-shadow: 2px 2px 4px #EEE;
-webkit-box-shadow: 2px 2px 4px #EEE;
box-shadow: 2px 2px 4px #EEE;
}
table.docutils td, table.docutils th {
border: 1px solid #888;
padding: 0.25em 0.7em;
}
table.field-list, table.footnote {
border: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
table.footnote {
margin: 15px 0;
width: 100%;
border: 1px solid #EEE;
background: #FDFDFD;
font-size: 0.9em;
}
table.footnote + table.footnote {
margin-top: -15px;
border-top: none;
}
table.field-list th {
padding: 0 0.8em 0 0;
}
table.field-list td {
padding: 0;
}
table.field-list p {
margin-bottom: 0.8em;
}
/* Cloned from
* https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68
*/
.field-name {
-moz-hyphens: manual;
-ms-hyphens: manual;
-webkit-hyphens: manual;
hyphens: manual;
}
table.footnote td.label {
width: .1px;
padding: 0.3em 0 0.3em 0.5em;
}
table.footnote td {
padding: 0.3em 0.5em;
}
dl {
margin: 0;
padding: 0;
}
dl dd {
margin-left: 30px;
}
blockquote {
margin: 0 0 0 30px;
padding: 0;
}
ul, ol {
/* Matches the 30px from the narrow-screen "li > ul" selector below */
margin: 10px 0 10px 30px;
padding: 0;
}
pre {
background: #EEE;
padding: 7px 30px;
margin: 15px 0px;
line-height: 1.3em;
}
div.viewcode-block:target {
background: #ffd;
}
dl pre, blockquote pre, li pre {
margin-left: 0;
padding-left: 30px;
}
tt, code {
background-color: #ecf0f3;
color: #222;
/* padding: 1px 2px; */
}
tt.xref, code.xref, a tt {
background-color: #FBFBFB;
border-bottom: 1px solid #fff;
}
a.reference {
text-decoration: none;
border-bottom: 1px dotted #004B6B;
}
/* Don't put an underline on images */
a.image-reference, a.image-reference:hover {
border-bottom: none;
}
a.reference:hover {
border-bottom: 1px solid #6D4100;
}
a.footnote-reference {
text-decoration: none;
font-size: 0.7em;
vertical-align: top;
border-bottom: 1px dotted #004B6B;
}
a.footnote-reference:hover {
border-bottom: 1px solid #6D4100;
}
a:hover tt, a:hover code {
background: #EEE;
}
@media screen and (max-width: 870px) {
div.sphinxsidebar {
display: none;
}
div.document {
width: 100%;
}
div.documentwrapper {
margin-left: 0;
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
}
div.bodywrapper {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
}
ul {
margin-left: 0;
}
li > ul {
/* Matches the 30px from the "ul, ol" selector above */
margin-left: 30px;
}
.document {
width: auto;
}
.footer {
width: auto;
}
.bodywrapper {
margin: 0;
}
.footer {
width: auto;
}
.github {
display: none;
}
}
@media screen and (max-width: 875px) {
body {
margin: 0;
padding: 20px 30px;
}
div.documentwrapper {
float: none;
background: #fff;
}
div.sphinxsidebar {
display: block;
float: none;
width: 102.5%;
margin: 50px -30px -20px -30px;
padding: 10px 20px;
background: #333;
color: #FFF;
}
div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
div.sphinxsidebar h3 a {
color: #fff;
}
div.sphinxsidebar a {
color: #AAA;
}
div.sphinxsidebar p.logo {
display: none;
}
div.document {
width: 100%;
margin: 0;
}
div.footer {
display: none;
}
div.bodywrapper {
margin: 0;
}
div.body {
min-height: 0;
padding: 0;
}
.rtd_doc_footer {
display: none;
}
.document {
width: auto;
}
.footer {
width: auto;
}
.footer {
width: auto;
}
.github {
display: none;
}
}
/* misc. */
.revsys-inline {
display: none!important;
}
/* Make nested-list/multi-paragraph items look better in Releases changelog
* pages. Without this, docutils' magical list fuckery causes inconsistent
* formatting between different release sub-lists.
*/
div#changelog > div.section > ul > li > p:only-child {
margin-bottom: 0;
}
/* Hide fugly table cell borders in ..bibliography:: directive output */
table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
border: none;
/* Below needed in some edge cases; if not applied, bottom shadows appear */
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
/* relbar */
.related {
line-height: 30px;
width: 100%;
font-size: 0.9rem;
}
.related.top {
border-bottom: 1px solid #EEE;
margin-bottom: 20px;
}
.related.bottom {
border-top: 1px solid #EEE;
}
.related ul {
padding: 0;
margin: 0;
list-style: none;
}
.related li {
display: inline;
}
nav#rellinks {
float: right;
}
nav#rellinks li+li:before {
content: "|";
}
nav#breadcrumbs li+li:before {
content: "\00BB";
}
/* Hide certain items when printing */
@media print {
div.related {
display: none;
}
}

676
docs/_build/html/_static/basic.css vendored Normal file
View file

@ -0,0 +1,676 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
word-wrap: break-word;
overflow-wrap : break-word;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar #searchbox form.search {
overflow: hidden;
}
div.sphinxsidebar #searchbox input[type="text"] {
float: left;
width: 80%;
padding: 0.25em;
box-sizing: border-box;
}
div.sphinxsidebar #searchbox input[type="submit"] {
float: left;
width: 20%;
border-left: none;
padding: 0.25em;
box-sizing: border-box;
}
img {
border: 0;
max-width: 100%;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
margin-left: auto;
margin-right: auto;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable {
width: 100%;
}
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable ul {
margin-top: 0;
margin-bottom: 0;
list-style-type: none;
}
table.indextable > tbody > tr > td > ul {
padding-left: 0em;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
/* -- domain module index --------------------------------------------------- */
table.modindextable td {
padding: 2px;
border-collapse: collapse;
}
/* -- general body styles --------------------------------------------------- */
div.body {
min-width: 450px;
max-width: 800px;
}
div.body p, div.body dd, div.body li, div.body blockquote {
-moz-hyphens: auto;
-ms-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}
a.headerlink {
visibility: hidden;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink,
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.first {
margin-top: 0 !important;
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px 7px 0 7px;
background-color: #ffe;
width: 40%;
float: right;
}
p.sidebar-title {
font-weight: bold;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px 7px 0 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
div.admonition dl {
margin-bottom: 0;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
border: 0;
border-collapse: collapse;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
table caption span.caption-number {
font-style: italic;
}
table caption span.caption-text {
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
}
table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}
table.citation td {
border-bottom: none;
}
/* -- figures --------------------------------------------------------------- */
div.figure {
margin: 0.5em;
padding: 0.5em;
}
div.figure p.caption {
padding: 0.3em;
}
div.figure p.caption span.caption-number {
font-style: italic;
}
div.figure p.caption span.caption-text {
}
/* -- field list styles ----------------------------------------------------- */
table.field-list td, table.field-list th {
border: 0 !important;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.field-name {
-moz-hyphens: manual;
-ms-hyphens: manual;
-webkit-hyphens: manual;
hyphens: manual;
}
/* -- hlist styles ---------------------------------------------------------- */
table.hlist td {
vertical-align: top;
}
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
list-style: decimal;
}
ol.loweralpha {
list-style: lower-alpha;
}
ol.upperalpha {
list-style: upper-alpha;
}
ol.lowerroman {
list-style: lower-roman;
}
ol.upperroman {
list-style: upper-roman;
}
dl {
margin-bottom: 15px;
}
dd p {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
dt:target, span.highlighted {
background-color: #fbe54e;
}
rect.highlighted {
fill: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.optional {
font-size: 1.3em;
}
.sig-paren {
font-size: larger;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
.guilabel, .menuselection {
font-family: sans-serif;
}
.accelerator {
text-decoration: underline;
}
.classifier {
font-style: oblique;
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
span.pre {
-moz-hyphens: none;
-ms-hyphens: none;
-webkit-hyphens: none;
hyphens: none;
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
margin-left: 0.5em;
}
table.highlighttable td {
padding: 0 0.5em 0 0.5em;
}
div.code-block-caption {
padding: 2px 5px;
font-size: small;
}
div.code-block-caption code {
background-color: transparent;
}
div.code-block-caption + div > div.highlight > pre {
margin-top: 0;
}
div.code-block-caption span.caption-number {
padding: 0.1em 0.3em;
font-style: italic;
}
div.code-block-caption span.caption-text {
}
div.literal-block-wrapper {
padding: 1em 1em 0;
}
div.literal-block-wrapper div.highlight {
margin: 0;
}
code.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
code.descclassname {
background-color: transparent;
}
code.xref, a code {
background-color: transparent;
font-weight: bold;
}
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
background-color: transparent;
}
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family: sans-serif;
}
div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
span.eqno a.headerlink {
position: relative;
left: 0px;
z-index: 1;
}
div.math:hover a.headerlink {
visibility: visible;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 B

BIN
docs/_build/html/_static/comment.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

View file

@ -0,0 +1 @@
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}

File diff suppressed because one or more lines are too long

1
docs/_build/html/_static/custom.css vendored Normal file
View file

@ -0,0 +1 @@
/* This file intentionally left blank. */

315
docs/_build/html/_static/doctools.js vendored Normal file
View file

@ -0,0 +1,315 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Sphinx JavaScript utilities for all documentation.
*
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/**
* select a different prefix for underscore
*/
$u = _.noConflict();
/**
* make the code below compatible with browsers without
* an installed firebug like debugger
if (!window.console || !console.firebug) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
"profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {};
}
*/
/**
* small helper function to urldecode strings
*/
jQuery.urldecode = function(x) {
return decodeURIComponent(x).replace(/\+/g, ' ');
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
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);
if (isInSVG) {
var bbox = span.getBBox();
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
var parentOfText = node.parentNode.parentNode;
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}
/**
* Small JavaScript module for the documentation.
*/
var Documentation = {
init : function() {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
this.initOnKeyListeners();
}
},
/**
* 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() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this headline')).
appendTo(this);
});
$('dt[id]').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this definition')).
appendTo(this);
});
},
/**
* workaround a firefox stupidity
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
*/
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');
if (!body.length) {
body = $('body');
}
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
});
}, 10);
$('<p class="highlight-link"><a href="javascript:Documentation.' +
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
.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);
},
initOnKeyListeners: function() {
$(document).keyup(function(event) {
var activeElementType = document.activeElement.tagName;
// don't navigate when in search box or textarea
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
switch (event.keyCode) {
case 37: // left
var prevHref = $('link[rel="prev"]').prop('href');
if (prevHref) {
window.location.href = prevHref;
return false;
}
case 39: // right
var nextHref = $('link[rel="next"]').prop('href');
if (nextHref) {
window.location.href = nextHref;
return false;
}
}
}
});
}
};
// quick alias for translations
_ = Documentation.gettext;
$(document).ready(function() {
Documentation.init();
});

View file

@ -0,0 +1,10 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
VERSION: '3.4.0',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

BIN
docs/_build/html/_static/down.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

BIN
docs/_build/html/_static/file.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

10253
docs/_build/html/_static/jquery-3.2.1.js vendored Normal file

File diff suppressed because it is too large Load diff

4
docs/_build/html/_static/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

3
docs/_build/html/_static/js/theme.js vendored Normal file
View file

@ -0,0 +1,3 @@
/* sphinx_rtd_theme version 0.4.3 | MIT license */
/* Built 20190212 16:02 */
require=function r(s,a,l){function c(e,n){if(!a[e]){if(!s[e]){var i="function"==typeof require&&require;if(!n&&i)return i(e,!0);if(u)return u(e,!0);var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}var o=a[e]={exports:{}};s[e][0].call(o.exports,function(n){return c(s[e][1][n]||n)},o,o.exports,r,s,a,l)}return a[e].exports}for(var u="function"==typeof require&&require,n=0;n<l.length;n++)c(l[n]);return c}({"sphinx-rtd-theme":[function(n,e,i){var jQuery="undefined"!=typeof window?window.jQuery:n("jquery");e.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(e){var i=this;void 0===e&&(e=!0),i.isRunning||(i.isRunning=!0,jQuery(function(n){i.init(n),i.reset(),i.win.on("hashchange",i.reset),e&&i.win.on("scroll",function(){i.linkScroll||i.winScroll||(i.winScroll=!0,requestAnimationFrame(function(){i.onScroll()}))}),i.win.on("resize",function(){i.winResize||(i.winResize=!0,requestAnimationFrame(function(){i.onResize()}))}),i.onResize()}))},enableSticky:function(){this.enable(!0)},init:function(i){i(document);var t=this;this.navBar=i("div.wy-side-scroll:first"),this.win=i(window),i(document).on("click","[data-toggle='wy-nav-top']",function(){i("[data-toggle='wy-nav-shift']").toggleClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift")}).on("click",".wy-menu-vertical .current ul li a",function(){var n=i(this);i("[data-toggle='wy-nav-shift']").removeClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift"),t.toggleCurrent(n),t.hashChange()}).on("click","[data-toggle='rst-current-version']",function(){i("[data-toggle='rst-versions']").toggleClass("shift-up")}),i("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),i("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),i("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var e=i(this);expand=i('<span class="toctree-expand"></span>'),expand.on("click",function(n){return t.toggleCurrent(e),n.stopPropagation(),!1}),e.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}0<i.length&&($(".wy-menu-vertical .current").removeClass("current"),i.addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l1").parent().addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l2").addClass("current"),i.closest("li.toctree-l3").addClass("current"),i.closest("li.toctree-l4").addClass("current"),i[0].scrollIntoView())}catch(o){console.log("Error expanding nav for anchor",o)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,i=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var r=0,n=["ms","moz","webkit","o"],e=0;e<n.length&&!window.requestAnimationFrame;++e)window.requestAnimationFrame=window[n[e]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[n[e]+"CancelAnimationFrame"]||window[n[e]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(n,e){var i=(new Date).getTime(),t=Math.max(0,16-(i-r)),o=window.setTimeout(function(){n(i+t)},t);return r=i+t,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()},{jquery:"jquery"}]},{},["sphinx-rtd-theme"]);

Some files were not shown because too many files have changed in this diff Show more