diff --git a/.gitignore b/.gitignore index b6332fc..80eb75b 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ tags venv static/ Pipfile +mediafiles diff --git a/CHANGELOG.md b/CHANGELOG.md index 91b4501..09c9d3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## v3.4.0 +* Fix bugs et améliorations +* Réparation de la génération de documents en latex +* Ajout des bulletions d'adhésion et certificats d'adhésion générés en latex +* Ajout des documents sur le site (statuts, règlement intérieur et menu) +* Changement de validation, invalidation des cotisations en supression simple +* Amélioration de l'admin +* Amélioration du classement par produit ## v3.3.3 * fix commande (moyen de paiment n'affectant pas le solde) ## v3.3.2 diff --git a/coopeV3/acl.py b/coopeV3/acl.py index 9539565..1e80d82 100644 --- a/coopeV3/acl.py +++ b/coopeV3/acl.py @@ -2,26 +2,28 @@ from django.contrib.auth.decorators import user_passes_test from django.contrib.auth.models import User from django.shortcuts import redirect, get_object_or_404 from django.urls import reverse +from functools import wraps from preferences.models import GeneralPreferences 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) 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) 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): + @wraps(view) def wrapper(request, *args, **kwargs): user = get_object_or_404(User, pk=kwargs[pkName]) if(user == request.user or request.user.has_perm(perm)): @@ -32,6 +34,10 @@ def self_or_has_perm(pkName, perm): return decorator def active_required(view): + """ + Test if the site is active (:attr:`preferences.models.GeneralPreferences.is_active`). + """ + @wraps(view) def wrapper(request, *args, **kwargs): gp,_ = GeneralPreferences.objects.get_or_create(pk=1) if(not gp.is_active): @@ -40,7 +46,11 @@ def active_required(view): return wrapper def acl_or(*perms): + """ + Test if a user has one of perms + """ def decorator(view): + @wraps(view) def wrapper(request,*args, **kwargs): can_pass = request.user.has_perm(perms[0]) for perm in perms: @@ -53,7 +63,11 @@ def acl_or(*perms): return decorator def acl_and(*perms): + """ + Test if a user has all perms + """ def decorator(view): + @wraps(view) def wrapper(request,*args, **kwargs): can_pass = request.user.has_perm(perms[0]) for perm in perms: diff --git a/coopeV3/settings.py b/coopeV3/settings.py index cea493e..089e45c 100644 --- a/coopeV3/settings.py +++ b/coopeV3/settings.py @@ -30,7 +30,6 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'django.contrib.admindocs', 'gestion', 'users', 'preferences', @@ -124,3 +123,7 @@ STATICFILES_DIRS = [ STATIC_ROOT = os.path.join(BASE_DIR, 'static') LOGIN_URL = '/users/login' + +MEDIA_ROOT = 'mediafiles/' +MEDIA_URL = '/media/' + diff --git a/coopeV3/templatetags/vip.py b/coopeV3/templatetags/vip.py index 436cb03..2f95e12 100644 --- a/coopeV3/templatetags/vip.py +++ b/coopeV3/templatetags/vip.py @@ -6,42 +6,99 @@ register = template.Library() @register.simple_tag def president(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.president`. + """ gp,_ = GeneralPreferences.objects.get_or_create(pk=1) return gp.president @register.simple_tag def vice_president(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.vice_president`. + """ gp,_ = GeneralPreferences.objects.get_or_create(pk=1) return gp.vice_president @register.simple_tag def treasurer(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.treasurer`. + """ gp,_ = GeneralPreferences.objects.get_or_create(pk=1) return gp.treasurer @register.simple_tag def secretary(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.secretary`. + """ gp,_ = GeneralPreferences.objects.get_or_create(pk=1) return gp.secretary @register.simple_tag def brewer(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.brewer`. + """ gp,_ = GeneralPreferences.objects.get_or_create(pk=1) return gp.brewer @register.simple_tag def grocer(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.grocer`. + """ gp,_ = GeneralPreferences.objects.get_or_create(pk=1) return gp.grocer @register.simple_tag def global_message(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.global_message`. + """ gp,_ = GeneralPreferences.objects.get_or_create(pk=1) messages = gp.global_message.split("\n") return random.choice(messages) @register.simple_tag def logout_time(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.automatic_logout_time`. + """ gp, _ = GeneralPreferences.objects.get_or_create(pk=1) logout_time = gp.automatic_logout_time - return logout_time \ No newline at end of file + return logout_time + +@register.simple_tag +def statutes(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.statutes`. + """ + gp,_ = GeneralPreferences.objects.get_or_create(pk=1) + try: + return '' + str(gp.statutes) + '' + except: + return "Pas de document" + +@register.simple_tag +def rules(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.rules`. + """ + gp,_ = GeneralPreferences.objects.get_or_create(pk=1) + try: + return '' + str(gp.rules) + '' + except: + return "Pas de document" + +@register.simple_tag +def menu(): + """ + A tag which returns :attr:`preferences.models.GeneralPreferences.menu`. + """ + gp,_ = GeneralPreferences.objects.get_or_create(pk=1) + try: + return '' + str(gp.menu) + '' + except: + return "Pas de document" diff --git a/coopeV3/urls.py b/coopeV3/urls.py index ec4148f..a4768a3 100644 --- a/coopeV3/urls.py +++ b/coopeV3/urls.py @@ -15,6 +15,8 @@ Including another URLconf """ from django.contrib import admin from django.urls import path, include +from django.conf.urls.static import static +from django.conf import settings from . import views @@ -27,4 +29,4 @@ urlpatterns = [ path('users/', include('users.urls')), path('gestion/', include('gestion.urls')), path('preferences/', include('preferences.urls')), -] +] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/coopeV3/views.py b/coopeV3/views.py index 612a342..39fc9e8 100644 --- a/coopeV3/views.py +++ b/coopeV3/views.py @@ -5,6 +5,9 @@ from preferences.models import GeneralPreferences from gestion.models import Keg 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.has_perm('gestion.can_manage')): return redirect(reverse('gestion:manage')) @@ -14,9 +17,15 @@ def home(request): return redirect(reverse('users:login')) def homepage(request): + """ + View which displays the :attr:`~preferences.models.GeneralPreferences.home_text` and active :class:`Kegs `. + """ gp, _ = GeneralPreferences.objects.get_or_create(pk=1) kegs = Keg.objects.filter(is_active=True) return render(request, "home.html", {"home_text": gp.home_text, "kegs": kegs}) def coope_runner(request): + """ + Just an easter egg + """ return render(request, "coope-runner.html") diff --git a/coopeV3/widgets.py b/coopeV3/widgets.py deleted file mode 100644 index 750e2f2..0000000 --- a/coopeV3/widgets.py +++ /dev/null @@ -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) diff --git a/django_tex/core.py b/django_tex/core.py index 1c4d409..9a3a927 100644 --- a/django_tex/core.py +++ b/django_tex/core.py @@ -11,12 +11,15 @@ from django.conf import settings DEFAULT_INTERPRETER = 'lualatex' def run_tex(source): + """ + Copy the source to temp dict and run latex. + """ with tempfile.TemporaryDirectory() as tempdir: filename = os.path.join(tempdir, 'texput.tex') with open(filename, 'x', encoding='utf-8') as f: f.write(source) latex_interpreter = getattr(settings, 'LATEX_INTERPRETER', DEFAULT_INTERPRETER) - latex_command = f'cd "{tempdir}" && {latex_interpreter} -interaction=batchmode {os.path.basename(filename)}' + latex_command = 'cd "{tempdir}" && {latex_interpreter} -interaction=batchmode {path}'.format(tempdir=tempdir, latex_interpreter=latex_interpreter, path=os.path.basename(filename)) process = run(latex_command, shell=True, stdout=PIPE, stderr=PIPE) try: if process.returncode == 1: @@ -32,9 +35,15 @@ def run_tex(source): return pdf 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) return run_tex(source) def render_template_with_context(template_name, context): + """ + Render the template + """ template = get_template(template_name, using='tex') return template.render(context) diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..298ea9e --- /dev/null +++ b/docs/Makefile @@ -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) \ No newline at end of file diff --git a/docs/_build/doctrees/coopeV3.doctree b/docs/_build/doctrees/coopeV3.doctree new file mode 100644 index 0000000..0bd21cb Binary files /dev/null and b/docs/_build/doctrees/coopeV3.doctree differ diff --git a/docs/_build/doctrees/coopeV3.templatetags.doctree b/docs/_build/doctrees/coopeV3.templatetags.doctree new file mode 100644 index 0000000..419ad73 Binary files /dev/null and b/docs/_build/doctrees/coopeV3.templatetags.doctree differ diff --git a/docs/_build/doctrees/django_tex.doctree b/docs/_build/doctrees/django_tex.doctree new file mode 100644 index 0000000..e159101 Binary files /dev/null and b/docs/_build/doctrees/django_tex.doctree differ diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle new file mode 100644 index 0000000..c4bc5ee Binary files /dev/null and b/docs/_build/doctrees/environment.pickle differ diff --git a/docs/_build/doctrees/gestion.doctree b/docs/_build/doctrees/gestion.doctree new file mode 100644 index 0000000..8b792ff Binary files /dev/null and b/docs/_build/doctrees/gestion.doctree differ diff --git a/docs/_build/doctrees/gestion.migrations.doctree b/docs/_build/doctrees/gestion.migrations.doctree new file mode 100644 index 0000000..3bcb236 Binary files /dev/null and b/docs/_build/doctrees/gestion.migrations.doctree differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree new file mode 100644 index 0000000..ec79209 Binary files /dev/null and b/docs/_build/doctrees/index.doctree differ diff --git a/docs/_build/doctrees/manage.doctree b/docs/_build/doctrees/manage.doctree new file mode 100644 index 0000000..2f5743c Binary files /dev/null and b/docs/_build/doctrees/manage.doctree differ diff --git a/docs/_build/doctrees/modules.doctree b/docs/_build/doctrees/modules.doctree new file mode 100644 index 0000000..3b796f5 Binary files /dev/null and b/docs/_build/doctrees/modules.doctree differ diff --git a/docs/_build/doctrees/modules/admin.doctree b/docs/_build/doctrees/modules/admin.doctree new file mode 100644 index 0000000..a68d41c Binary files /dev/null and b/docs/_build/doctrees/modules/admin.doctree differ diff --git a/docs/_build/doctrees/modules/django_tex.doctree b/docs/_build/doctrees/modules/django_tex.doctree new file mode 100644 index 0000000..b7100a8 Binary files /dev/null and b/docs/_build/doctrees/modules/django_tex.doctree differ diff --git a/docs/_build/doctrees/modules/forms.doctree b/docs/_build/doctrees/modules/forms.doctree new file mode 100644 index 0000000..c2abfd0 Binary files /dev/null and b/docs/_build/doctrees/modules/forms.doctree differ diff --git a/docs/_build/doctrees/modules/models.doctree b/docs/_build/doctrees/modules/models.doctree new file mode 100644 index 0000000..31e56ee Binary files /dev/null and b/docs/_build/doctrees/modules/models.doctree differ diff --git a/docs/_build/doctrees/modules/utils.doctree b/docs/_build/doctrees/modules/utils.doctree new file mode 100644 index 0000000..7368f0c Binary files /dev/null and b/docs/_build/doctrees/modules/utils.doctree differ diff --git a/docs/_build/doctrees/modules/views.doctree b/docs/_build/doctrees/modules/views.doctree new file mode 100644 index 0000000..6f8ac50 Binary files /dev/null and b/docs/_build/doctrees/modules/views.doctree differ diff --git a/docs/_build/doctrees/preferences.doctree b/docs/_build/doctrees/preferences.doctree new file mode 100644 index 0000000..93ff30d Binary files /dev/null and b/docs/_build/doctrees/preferences.doctree differ diff --git a/docs/_build/doctrees/preferences.migrations.doctree b/docs/_build/doctrees/preferences.migrations.doctree new file mode 100644 index 0000000..cffb33b Binary files /dev/null and b/docs/_build/doctrees/preferences.migrations.doctree differ diff --git a/docs/_build/doctrees/users.doctree b/docs/_build/doctrees/users.doctree new file mode 100644 index 0000000..27c46bf Binary files /dev/null and b/docs/_build/doctrees/users.doctree differ diff --git a/docs/_build/doctrees/users.migrations.doctree b/docs/_build/doctrees/users.migrations.doctree new file mode 100644 index 0000000..01df5d8 Binary files /dev/null and b/docs/_build/doctrees/users.migrations.doctree differ diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo new file mode 100644 index 0000000..c388c68 --- /dev/null +++ b/docs/_build/html/.buildinfo @@ -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 diff --git a/docs/_build/html/_sources/coopeV3.rst.txt b/docs/_build/html/_sources/coopeV3.rst.txt new file mode 100644 index 0000000..8a5d5cc --- /dev/null +++ b/docs/_build/html/_sources/coopeV3.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/coopeV3.templatetags.rst.txt b/docs/_build/html/_sources/coopeV3.templatetags.rst.txt new file mode 100644 index 0000000..932e35e --- /dev/null +++ b/docs/_build/html/_sources/coopeV3.templatetags.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/django_tex.rst.txt b/docs/_build/html/_sources/django_tex.rst.txt new file mode 100644 index 0000000..a6efb23 --- /dev/null +++ b/docs/_build/html/_sources/django_tex.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/gestion.migrations.rst.txt b/docs/_build/html/_sources/gestion.migrations.rst.txt new file mode 100644 index 0000000..19c33e4 --- /dev/null +++ b/docs/_build/html/_sources/gestion.migrations.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/gestion.rst.txt b/docs/_build/html/_sources/gestion.rst.txt new file mode 100644 index 0000000..5df1db4 --- /dev/null +++ b/docs/_build/html/_sources/gestion.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt new file mode 100644 index 0000000..200f589 --- /dev/null +++ b/docs/_build/html/_sources/index.rst.txt @@ -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` diff --git a/docs/_build/html/_sources/manage.rst.txt b/docs/_build/html/_sources/manage.rst.txt new file mode 100644 index 0000000..de5c950 --- /dev/null +++ b/docs/_build/html/_sources/manage.rst.txt @@ -0,0 +1,7 @@ +manage module +============= + +.. automodule:: manage + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_build/html/_sources/modules.rst.txt b/docs/_build/html/_sources/modules.rst.txt new file mode 100644 index 0000000..951d499 --- /dev/null +++ b/docs/_build/html/_sources/modules.rst.txt @@ -0,0 +1,12 @@ +coopeV3 +======= + +.. toctree:: + :maxdepth: 4 + + coopeV3 + django_tex + gestion + manage + preferences + users diff --git a/docs/_build/html/_sources/modules/admin.rst.txt b/docs/_build/html/_sources/modules/admin.rst.txt new file mode 100644 index 0000000..d81a271 --- /dev/null +++ b/docs/_build/html/_sources/modules/admin.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/modules/django_tex.rst.txt b/docs/_build/html/_sources/modules/django_tex.rst.txt new file mode 100644 index 0000000..c18bf26 --- /dev/null +++ b/docs/_build/html/_sources/modules/django_tex.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/modules/forms.rst.txt b/docs/_build/html/_sources/modules/forms.rst.txt new file mode 100644 index 0000000..d6e79bd --- /dev/null +++ b/docs/_build/html/_sources/modules/forms.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/modules/models.rst.txt b/docs/_build/html/_sources/modules/models.rst.txt new file mode 100644 index 0000000..6830c9c --- /dev/null +++ b/docs/_build/html/_sources/modules/models.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/modules/utils.rst.txt b/docs/_build/html/_sources/modules/utils.rst.txt new file mode 100644 index 0000000..eb2f398 --- /dev/null +++ b/docs/_build/html/_sources/modules/utils.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/modules/views.rst.txt b/docs/_build/html/_sources/modules/views.rst.txt new file mode 100644 index 0000000..6d068b4 --- /dev/null +++ b/docs/_build/html/_sources/modules/views.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/preferences.migrations.rst.txt b/docs/_build/html/_sources/preferences.migrations.rst.txt new file mode 100644 index 0000000..a5c6668 --- /dev/null +++ b/docs/_build/html/_sources/preferences.migrations.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/preferences.rst.txt b/docs/_build/html/_sources/preferences.rst.txt new file mode 100644 index 0000000..e7e28c5 --- /dev/null +++ b/docs/_build/html/_sources/preferences.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/users.migrations.rst.txt b/docs/_build/html/_sources/users.migrations.rst.txt new file mode 100644 index 0000000..db04b76 --- /dev/null +++ b/docs/_build/html/_sources/users.migrations.rst.txt @@ -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: diff --git a/docs/_build/html/_sources/users.rst.txt b/docs/_build/html/_sources/users.rst.txt new file mode 100644 index 0000000..87df370 --- /dev/null +++ b/docs/_build/html/_sources/users.rst.txt @@ -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: diff --git a/docs/_build/html/_static/_stemmer.js b/docs/_build/html/_static/_stemmer.js new file mode 100644 index 0000000..3b3c060 --- /dev/null +++ b/docs/_build/html/_static/_stemmer.js @@ -0,0 +1,3667 @@ +// generatedy by JSX compiler 0.9.89 (2014-05-20 06:01:03 +0900; 8e8c6105f36f3dfe440ea026a3c93a3444977102) +var JSX = {}; +(function (JSX) { +/** + * extends the class + */ +function $__jsx_extend(derivations, base) { + var ctor = function () {}; + ctor.prototype = base.prototype; + var proto = new ctor(); + for (var i in derivations) { + derivations[i].prototype = proto; + } +} + +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +var $__jsx_imul = Math.imul; +if (typeof $__jsx_imul === "undefined") { + $__jsx_imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); + }; +} + +/** + * fused int-ops with side-effects + */ +function $__jsx_ipadd(o, p, r) { + return o[p] = (o[p] + r) | 0; +} +function $__jsx_ipsub(o, p, r) { + return o[p] = (o[p] - r) | 0; +} +function $__jsx_ipmul(o, p, r) { + return o[p] = $__jsx_imul(o[p], r); +} +function $__jsx_ipdiv(o, p, r) { + return o[p] = (o[p] / r) | 0; +} +function $__jsx_ipmod(o, p, r) { + return o[p] = (o[p] % r) | 0; +} +function $__jsx_ippostinc(o, p) { + var v = o[p]; + o[p] = (v + 1) | 0; + return v; +} +function $__jsx_ippostdec(o, p) { + var v = o[p]; + o[p] = (v - 1) | 0; + return v; +} + +/** + * non-inlined version of Array#each + */ +function $__jsx_forEach(o, f) { + var l = o.length; + for (var i = 0; i < l; ++i) + f(o[i]); +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +function $__jsx_isNaN(n) { return n !== n; } +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +var GeneratorFunction$0 = +(function () { + try { + return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); + } catch (e) { + return function GeneratorFunction () {}; + } +})(); +var __jsx_generator_object$0 = +(function () { + function __jsx_generator_object() { + this.__next = 0; + this.__loop = null; + this.__seed = null; + this.__value = undefined; + this.__status = 0; // SUSPENDED: 0, ACTIVE: 1, DEAD: 2 + } + + __jsx_generator_object.prototype.next = function (seed) { + switch (this.__status) { + case 0: + this.__status = 1; + this.__seed = seed; + + // go next! + this.__loop(this.__next); + + var done = false; + if (this.__next != -1) { + this.__status = 0; + } else { + this.__status = 2; + done = true; + } + return { value: this.__value, done: done }; + case 1: + throw new Error("Generator is already running"); + case 2: + throw new Error("Generator is already finished"); + default: + throw new Error("Unexpected generator internal state"); + } + }; + + return __jsx_generator_object; +}()); +function Among(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +function Among$0(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +$__jsx_extend([Among, Among$0], Object); +function Stemmer() { +}; + +$__jsx_extend([Stemmer], Object); +function BaseStemmer() { + var current$0; + var cursor$0; + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +$__jsx_extend([BaseStemmer], Stemmer); +BaseStemmer.prototype.setCurrent$S = function (value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + + +function BaseStemmer$setCurrent$LBaseStemmer$S($this, value) { + var current$0; + var cursor$0; + var limit$0; + current$0 = $this.current = value; + cursor$0 = $this.cursor = 0; + limit$0 = $this.limit = current$0.length; + $this.limit_backward = 0; + $this.bra = cursor$0; + $this.ket = limit$0; +}; + +BaseStemmer.setCurrent$LBaseStemmer$S = BaseStemmer$setCurrent$LBaseStemmer$S; + +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + + +function BaseStemmer$getCurrent$LBaseStemmer$($this) { + return $this.current; +}; + +BaseStemmer.getCurrent$LBaseStemmer$ = BaseStemmer$getCurrent$LBaseStemmer$; + +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + + +function BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$($this, other) { + $this.current = other.current; + $this.cursor = other.cursor; + $this.limit = other.limit; + $this.limit_backward = other.limit_backward; + $this.bra = other.bra; + $this.ket = other.ket; +}; + +BaseStemmer.copy_from$LBaseStemmer$LBaseStemmer$ = BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$; + +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping$LBaseStemmer$AIII = BaseStemmer$in_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_grouping_b$LBaseStemmer$AIII = BaseStemmer$in_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping$LBaseStemmer$AIII = BaseStemmer$out_grouping$LBaseStemmer$AIII; + +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + + +function BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, s, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; + } + return false; +}; + +BaseStemmer.out_grouping_b$LBaseStemmer$AIII = BaseStemmer$out_grouping_b$LBaseStemmer$AIII; + +BaseStemmer.prototype.in_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range$LBaseStemmer$II = BaseStemmer$in_range$LBaseStemmer$II; + +BaseStemmer.prototype.in_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$in_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.in_range_b$LBaseStemmer$II = BaseStemmer$in_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.out_range$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor >= $this.limit) { + return false; + } + ch = $this.current.charCodeAt($this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range$LBaseStemmer$II = BaseStemmer$out_range$LBaseStemmer$II; + +BaseStemmer.prototype.out_range_b$II = function (min, max) { + var ch; + var $__jsx_postinc_t; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + + +function BaseStemmer$out_range_b$LBaseStemmer$II($this, min, max) { + var ch; + var $__jsx_postinc_t; + if ($this.cursor <= $this.limit_backward) { + return false; + } + ch = $this.current.charCodeAt($this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + return true; +}; + +BaseStemmer.out_range_b$LBaseStemmer$II = BaseStemmer$out_range_b$LBaseStemmer$II; + +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + var cursor$0; + if (((this.limit - this.cursor) | 0) < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + this.cursor = (this.cursor + s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.limit - $this.cursor) | 0) < s_size) { + return false; + } + if ($this.current.slice(cursor$0 = $this.cursor, ((cursor$0 + s_size) | 0)) !== s) { + return false; + } + $this.cursor = ($this.cursor + s_size) | 0; + return true; +}; + +BaseStemmer.eq_s$LBaseStemmer$IS = BaseStemmer$eq_s$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + var cursor$0; + if (((this.cursor - this.limit_backward) | 0) < s_size) { + return false; + } + if (this.current.slice((((cursor$0 = this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + this.cursor = (this.cursor - s_size) | 0; + return true; +}; + + +function BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s_size, s) { + var cursor$0; + if ((($this.cursor - $this.limit_backward) | 0) < s_size) { + return false; + } + if ($this.current.slice((((cursor$0 = $this.cursor) - s_size) | 0), cursor$0) !== s) { + return false; + } + $this.cursor = ($this.cursor - s_size) | 0; + return true; +}; + +BaseStemmer.eq_s_b$LBaseStemmer$IS = BaseStemmer$eq_s_b$LBaseStemmer$IS; + +BaseStemmer.prototype.eq_v$S = function (s) { + return BaseStemmer$eq_s$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v$LBaseStemmer$S = BaseStemmer$eq_v$LBaseStemmer$S; + +BaseStemmer.prototype.eq_v_b$S = function (s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS(this, s.length, s); +}; + + +function BaseStemmer$eq_v_b$LBaseStemmer$S($this, s) { + return BaseStemmer$eq_s_b$LBaseStemmer$IS($this, s.length, s); +}; + +BaseStemmer.eq_v_b$LBaseStemmer$S = BaseStemmer$eq_v_b$LBaseStemmer$S; + +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var l; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + l = $this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + $this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among$LBaseStemmer$ALAmong$I = BaseStemmer$find_among$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + + +function BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, v, v_size) { + var i; + var j; + var c; + var lb; + var common_i; + var common_j; + var first_key_inspected; + var k; + var diff; + var common; + var w; + var i2; + var res; + i = 0; + j = v_size; + c = $this.cursor; + lb = $this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = $this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + $this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method($this); + $this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +BaseStemmer.find_among_b$LBaseStemmer$ALAmong$I = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I; + +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit = (this.limit + adjustment) | 0; + if (this.cursor >= c_ket) { + this.cursor = (this.cursor + adjustment) | 0; + } else if (this.cursor > c_bra) { + this.cursor = c_bra; + } + return (adjustment | 0); +}; + + +function BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = ((s.length - (((c_ket - c_bra) | 0))) | 0); + $this.current = $this.current.slice(0, c_bra) + s + $this.current.slice(c_ket); + $this.limit = ($this.limit + adjustment) | 0; + if ($this.cursor >= c_ket) { + $this.cursor = ($this.cursor + adjustment) | 0; + } else if ($this.cursor > c_bra) { + $this.cursor = c_bra; + } + return (adjustment | 0); +}; + +BaseStemmer.replace_s$LBaseStemmer$IIS = BaseStemmer$replace_s$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_check$ = function () { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + + +function BaseStemmer$slice_check$LBaseStemmer$($this) { + var bra$0; + var ket$0; + var limit$0; + return ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true); +}; + +BaseStemmer.slice_check$LBaseStemmer$ = BaseStemmer$slice_check$LBaseStemmer$; + +BaseStemmer.prototype.slice_from$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS(this, this.bra, this.ket, s); + result = true; + } + return result; +}; + + +function BaseStemmer$slice_from$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = false; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + BaseStemmer$replace_s$LBaseStemmer$IIS($this, $this.bra, $this.ket, s); + result = true; + } + return result; +}; + +BaseStemmer.slice_from$LBaseStemmer$S = BaseStemmer$slice_from$LBaseStemmer$S; + +BaseStemmer.prototype.slice_del$ = function () { + return BaseStemmer$slice_from$LBaseStemmer$S(this, ""); +}; + + +function BaseStemmer$slice_del$LBaseStemmer$($this) { + return BaseStemmer$slice_from$LBaseStemmer$S($this, ""); +}; + +BaseStemmer.slice_del$LBaseStemmer$ = BaseStemmer$slice_del$LBaseStemmer$; + +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS(this, c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra = (this.bra + adjustment) | 0; + } + if (c_bra <= this.ket) { + this.ket = (this.ket + adjustment) | 0; + } +}; + + +function BaseStemmer$insert$LBaseStemmer$IIS($this, c_bra, c_ket, s) { + var adjustment; + adjustment = BaseStemmer$replace_s$LBaseStemmer$IIS($this, c_bra, c_ket, s); + if (c_bra <= $this.bra) { + $this.bra = ($this.bra + adjustment) | 0; + } + if (c_bra <= $this.ket) { + $this.ket = ($this.ket + adjustment) | 0; + } +}; + +BaseStemmer.insert$LBaseStemmer$IIS = BaseStemmer$insert$LBaseStemmer$IIS; + +BaseStemmer.prototype.slice_to$S = function (s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + + +function BaseStemmer$slice_to$LBaseStemmer$S($this, s) { + var result; + var bra$0; + var ket$0; + var limit$0; + result = ''; + if ((bra$0 = $this.bra) < 0 || bra$0 > (ket$0 = $this.ket) || ket$0 > (limit$0 = $this.limit) || limit$0 > $this.current.length ? false : true) { + result = $this.current.slice($this.bra, $this.ket); + } + return result; +}; + +BaseStemmer.slice_to$LBaseStemmer$S = BaseStemmer$slice_to$LBaseStemmer$S; + +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + + +function BaseStemmer$assign_to$LBaseStemmer$S($this, s) { + return $this.current.slice(0, $this.limit); +}; + +BaseStemmer.assign_to$LBaseStemmer$S = BaseStemmer$assign_to$LBaseStemmer$S; + +BaseStemmer.prototype.stem$ = function () { + return false; +}; + + +BaseStemmer.prototype.stemWord$S = function (word) { + var result; + var current$0; + var cursor$0; + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +BaseStemmer.prototype.stemWord = BaseStemmer.prototype.stemWord$S; + +BaseStemmer.prototype.stemWords$AS = function (words) { + var results; + var i; + var word; + var result; + var current$0; + var cursor$0; + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +BaseStemmer.prototype.stemWords = BaseStemmer.prototype.stemWords$AS; + +function FrenchStemmer() { + BaseStemmer.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +$__jsx_extend([FrenchStemmer], BaseStemmer); +FrenchStemmer.prototype.copy_from$LFrenchStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer$copy_from$LBaseStemmer$LBaseStemmer$(this, other); +}; + +FrenchStemmer.prototype.copy_from = FrenchStemmer.prototype.copy_from$LFrenchStemmer$; + +FrenchStemmer.prototype.r_prelude$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var lab1; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var cursor$0; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + this.bra = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_4 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "u")) { + break lab7; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "U")) { + return false; + } + break lab6; + } + this.cursor = v_4; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "i")) { + break lab8; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "I")) { + return false; + } + break lab6; + } + this.cursor = v_4; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + break lab5; + } + this.ket = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + } + break lab4; + } + this.cursor = v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "y")) { + break lab9; + } + this.ket = this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab9; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "Y")) { + return false; + } + break lab4; + } + this.cursor = v_3; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "q")) { + break lab3; + } + this.bra = this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS(this, 1, "u")) { + break lab3; + } + this.ket = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "U")) { + return false; + } + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +FrenchStemmer.prototype.r_prelude = FrenchStemmer.prototype.r_prelude$; + +function FrenchStemmer$r_prelude$LFrenchStemmer$($this) { + var v_1; + var v_2; + var v_3; + var v_4; + var lab1; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var cursor$0; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = $this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = $this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + $this.bra = $this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_4 = $this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "u")) { + break lab7; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab7; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "U")) { + return false; + } + break lab6; + } + $this.cursor = v_4; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "i")) { + break lab8; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "I")) { + return false; + } + break lab6; + } + $this.cursor = v_4; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "y")) { + break lab5; + } + $this.ket = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "Y")) { + return false; + } + } + break lab4; + } + $this.cursor = v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "y")) { + break lab9; + } + $this.ket = $this.cursor; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab9; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "Y")) { + return false; + } + break lab4; + } + $this.cursor = v_3; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "q")) { + break lab3; + } + $this.bra = $this.cursor; + if (! BaseStemmer$eq_s$LBaseStemmer$IS($this, 1, "u")) { + break lab3; + } + $this.ket = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "U")) { + return false; + } + } + $this.cursor = v_2; + break golab2; + } + cursor$0 = $this.cursor = v_2; + if (cursor$0 >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +FrenchStemmer.r_prelude$LFrenchStemmer$ = FrenchStemmer$r_prelude$LFrenchStemmer$; + +FrenchStemmer.prototype.r_mark_regions$ = function () { + var v_1; + var v_2; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var lab5; + var lab6; + var lab8; + var lab10; + var lab12; + var lab14; + var cursor$0; + var limit$0; + var cursor$1; + var $__jsx_postinc_t; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (this.cursor >= this.limit) { + break lab2; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break lab1; + } + this.cursor = v_2; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_0, 3) === 0) { + break lab3; + } + break lab1; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + break golab4; + } + if (this.cursor >= this.limit) { + break lab0; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + this.I_pV = this.cursor; + } + cursor$1 = this.cursor = v_1; + v_4 = cursor$1; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p1 = this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab14; + } + break golab13; + } + if (this.cursor >= this.limit) { + break lab6; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + this.I_p2 = this.cursor; + } + this.cursor = v_4; + return true; +}; + +FrenchStemmer.prototype.r_mark_regions = FrenchStemmer.prototype.r_mark_regions$; + +function FrenchStemmer$r_mark_regions$LFrenchStemmer$($this) { + var v_1; + var v_2; + var v_4; + var lab0; + var lab1; + var lab2; + var lab3; + var lab5; + var lab6; + var lab8; + var lab10; + var lab12; + var lab14; + var cursor$0; + var limit$0; + var cursor$1; + var $__jsx_postinc_t; + $this.I_pV = limit$0 = $this.limit; + $this.I_p1 = limit$0; + $this.I_p2 = limit$0; + v_1 = $this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = $this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if ($this.cursor >= $this.limit) { + break lab2; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break lab1; + } + $this.cursor = v_2; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_0, 3) === 0) { + break lab3; + } + break lab1; + } + cursor$0 = $this.cursor = v_2; + if (cursor$0 >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + break golab4; + } + if ($this.cursor >= $this.limit) { + break lab0; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + } + $this.I_pV = $this.cursor; + } + cursor$1 = $this.cursor = v_1; + v_4 = cursor$1; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + break golab7; + } + if ($this.cursor >= $this.limit) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab10; + } + break golab9; + } + if ($this.cursor >= $this.limit) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p1 = $this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! BaseStemmer$in_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab12; + } + break golab11; + } + if ($this.cursor >= $this.limit) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! BaseStemmer$out_grouping$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab14; + } + break golab13; + } + if ($this.cursor >= $this.limit) { + break lab6; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + } + $this.I_p2 = $this.cursor; + } + $this.cursor = v_4; + return true; +}; + +FrenchStemmer.r_mark_regions$LFrenchStemmer$ = FrenchStemmer$r_mark_regions$LFrenchStemmer$; + +FrenchStemmer.prototype.r_postlude$ = function () { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_1, 4); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "y")) { + return false; + } + break; + case 4: + if (this.cursor >= this.limit) { + break lab1; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +FrenchStemmer.prototype.r_postlude = FrenchStemmer.prototype.r_postlude$; + +function FrenchStemmer$r_postlude$LFrenchStemmer$($this) { + var among_var; + var v_1; + var lab1; + var $__jsx_postinc_t; +replab0: + while (true) { + v_1 = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + $this.bra = $this.cursor; + among_var = BaseStemmer$find_among$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_1, 4); + if (among_var === 0) { + break lab1; + } + $this.ket = $this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "y")) { + return false; + } + break; + case 4: + if ($this.cursor >= $this.limit) { + break lab1; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t + 1) | 0, $__jsx_postinc_t); + break; + } + continue replab0; + } + $this.cursor = v_1; + break replab0; + } + return true; +}; + +FrenchStemmer.r_postlude$LFrenchStemmer$ = FrenchStemmer$r_postlude$LFrenchStemmer$; + +FrenchStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +FrenchStemmer.prototype.r_RV = FrenchStemmer.prototype.r_RV$; + +function FrenchStemmer$r_RV$LFrenchStemmer$($this) { + return (! ($this.I_pV <= $this.cursor) ? false : true); +}; + +FrenchStemmer.r_RV$LFrenchStemmer$ = FrenchStemmer$r_RV$LFrenchStemmer$; + +FrenchStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +FrenchStemmer.prototype.r_R1 = FrenchStemmer.prototype.r_R1$; + +function FrenchStemmer$r_R1$LFrenchStemmer$($this) { + return (! ($this.I_p1 <= $this.cursor) ? false : true); +}; + +FrenchStemmer.r_R1$LFrenchStemmer$ = FrenchStemmer$r_R1$LFrenchStemmer$; + +FrenchStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +FrenchStemmer.prototype.r_R2 = FrenchStemmer.prototype.r_R2$; + +function FrenchStemmer$r_R2$LFrenchStemmer$($this) { + return (! ($this.I_p2 <= $this.cursor) ? false : true); +}; + +FrenchStemmer.r_R2$LFrenchStemmer$ = FrenchStemmer$r_R2$LFrenchStemmer$; + +FrenchStemmer.prototype.r_standard_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_4, 43); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ic")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab1; + } + this.cursor = ((this.limit - v_2) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "iqU")) { + return false; + } + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ent")) { + return false; + } + break; + case 6: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_2, 6); + if (among_var === 0) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_3) | 0); + break lab3; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_4 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab4; + } + cursor$1 = this.cursor = ((this.limit - v_4) | 0); + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "eux")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 4: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_5 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_3, 3); + if (among_var === 0) { + this.cursor = ((this.limit - v_5) | 0); + break lab6; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = ((this.limit - v_5) | 0); + break lab6; + case 1: + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab7; + } + this.cursor = ((this.limit - v_6) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "abl")) { + return false; + } + } + break; + case 2: + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = ((this.limit - this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab10; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab9; + } + this.cursor = ((this.limit - v_7) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "iqU")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = ((this.limit - v_5) | 0); + break lab6; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_8 = ((this.limit - this.cursor) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "at")) { + this.cursor = ((this.limit - v_8) | 0); + break lab11; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = ((this.limit - v_8) | 0); + break lab11; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "ic")) { + this.cursor = ((this.limit - v_8) | 0); + break lab11; + } + this.bra = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_9 = ((this.limit - this.cursor) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab13; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab12; + } + this.cursor = ((this.limit - v_9) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "iqU")) { + return false; + } + } + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "eau")) { + return false; + } + break; + case 10: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "al")) { + return false; + } + break; + case 11: + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_10 = ((this.limit - this.cursor) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab15; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break lab14; + } + cursor$3 = this.cursor = ((this.limit - v_10) | 0); + if (! (! (this.I_p1 <= cursor$3) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "eux")) { + return false; + } + } + break; + case 12: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 13: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ant")) { + return false; + } + return false; + case 14: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "ent")) { + return false; + } + return false; + case 15: + v_11 = ((this.limit - this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + this.cursor = ((this.limit - v_11) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + return false; + } + return true; +}; + +FrenchStemmer.prototype.r_standard_suffix = FrenchStemmer.prototype.r_standard_suffix$; + +function FrenchStemmer$r_standard_suffix$LFrenchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_10; + var v_11; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var lab14; + var lab15; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_4, 43); + if (among_var === 0) { + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ic")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = $this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab2; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab1; + } + $this.cursor = (($this.limit - v_2) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "iqU")) { + return false; + } + } + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "log")) { + return false; + } + break; + case 4: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "u")) { + return false; + } + break; + case 5: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ent")) { + return false; + } + break; + case 6: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_2, 6); + if (among_var === 0) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + $this.bra = cursor$0 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$0) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_4 = (($this.limit - $this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab5; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab4; + } + cursor$1 = $this.cursor = (($this.limit - v_4) | 0); + if (! (! ($this.I_p1 <= cursor$1) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "eux")) { + return false; + } + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 4: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_3) | 0); + break lab3; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_5 = (($this.limit - $this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + $this.ket = $this.cursor; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_3, 3); + if (among_var === 0) { + $this.cursor = (($this.limit - v_5) | 0); + break lab6; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.cursor = (($this.limit - v_5) | 0); + break lab6; + case 1: + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = (($this.limit - $this.cursor) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab8; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab7; + } + $this.cursor = (($this.limit - v_6) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "abl")) { + return false; + } + } + break; + case 2: + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = (($this.limit - $this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab10; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab9; + } + $this.cursor = (($this.limit - v_7) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "iqU")) { + return false; + } + } + break; + case 3: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.cursor = (($this.limit - v_5) | 0); + break lab6; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_8 = (($this.limit - $this.cursor) | 0); + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "at")) { + $this.cursor = (($this.limit - v_8) | 0); + break lab11; + } + $this.bra = cursor$2 = $this.cursor; + if (! (! ($this.I_p2 <= cursor$2) ? false : true)) { + $this.cursor = (($this.limit - v_8) | 0); + break lab11; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "ic")) { + $this.cursor = (($this.limit - v_8) | 0); + break lab11; + } + $this.bra = $this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_9 = (($this.limit - $this.cursor) | 0); + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab13; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab12; + } + $this.cursor = (($this.limit - v_9) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "iqU")) { + return false; + } + } + } + break; + case 9: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "eau")) { + return false; + } + break; + case 10: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "al")) { + return false; + } + break; + case 11: + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_10 = (($this.limit - $this.cursor) | 0); + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + break lab15; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break lab14; + } + cursor$3 = $this.cursor = (($this.limit - v_10) | 0); + if (! (! ($this.I_p1 <= cursor$3) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "eux")) { + return false; + } + } + break; + case 12: + if (! (! ($this.I_p1 <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 13: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ant")) { + return false; + } + return false; + case 14: + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "ent")) { + return false; + } + return false; + case 15: + v_11 = (($this.limit - $this.cursor) | 0); + if (! BaseStemmer$in_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! (! ($this.I_pV <= $this.cursor) ? false : true)) { + return false; + } + $this.cursor = (($this.limit - v_11) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + return false; + } + return true; +}; + +FrenchStemmer.r_standard_suffix$LFrenchStemmer$ = FrenchStemmer$r_standard_suffix$LFrenchStemmer$; + +FrenchStemmer.prototype.r_i_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_5, 35); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + this.limit_backward = v_2; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +FrenchStemmer.prototype.r_i_verb_suffix = FrenchStemmer.prototype.r_i_verb_suffix$; + +function FrenchStemmer$r_i_verb_suffix$LFrenchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_5, 35); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_2; + return false; + case 1: + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + $this.limit_backward = v_2; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + $this.limit_backward = v_2; + return true; +}; + +FrenchStemmer.r_i_verb_suffix$LFrenchStemmer$ = FrenchStemmer$r_i_verb_suffix$LFrenchStemmer$; + +FrenchStemmer.prototype.r_verb_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = ((this.limit - (cursor$0 = this.cursor)) | 0); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_6, 38); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.limit_backward = v_2; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + v_3 = ((this.limit - this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "e")) { + this.cursor = ((this.limit - v_3) | 0); + break lab0; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + break; + } + this.limit_backward = v_2; + return true; +}; + +FrenchStemmer.prototype.r_verb_suffix = FrenchStemmer.prototype.r_verb_suffix$; + +function FrenchStemmer$r_verb_suffix$LFrenchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var lab0; + var cursor$0; + var cursor$1; + var cursor$2; + v_1 = (($this.limit - (cursor$0 = $this.cursor)) | 0); + if (cursor$0 < $this.I_pV) { + return false; + } + cursor$1 = $this.cursor = $this.I_pV; + v_2 = $this.limit_backward; + $this.limit_backward = cursor$1; + cursor$2 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$2; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_6, 38); + if (among_var === 0) { + $this.limit_backward = v_2; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_2; + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.limit_backward = v_2; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + v_3 = (($this.limit - $this.cursor) | 0); + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "e")) { + $this.cursor = (($this.limit - v_3) | 0); + break lab0; + } + $this.bra = $this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + break; + } + $this.limit_backward = v_2; + return true; +}; + +FrenchStemmer.r_verb_suffix$LFrenchStemmer$ = FrenchStemmer$r_verb_suffix$LFrenchStemmer$; + +FrenchStemmer.prototype.r_residual_suffix$ = function () { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab0; + var lab1; + var lab2; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + v_1 = ((this.limit - this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "s")) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.bra = cursor$0 = this.cursor; + v_2 = ((this.limit - cursor$0) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_keep_with_s, 97, 232)) { + this.cursor = ((this.limit - v_1) | 0); + break lab0; + } + this.cursor = ((this.limit - v_2) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + } + v_3 = ((this.limit - (cursor$1 = this.cursor)) | 0); + if (cursor$1 < this.I_pV) { + return false; + } + cursor$2 = this.cursor = this.I_pV; + v_4 = this.limit_backward; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = ((this.limit - v_3) | 0); + this.ket = cursor$3; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_7, 7); + if (among_var === 0) { + this.limit_backward = v_4; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_4; + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.limit_backward = v_4; + return false; + } + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "s")) { + break lab2; + } + break lab1; + } + this.cursor = ((this.limit - v_5) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "t")) { + this.limit_backward = v_4; + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + case 4: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 2, "gu")) { + this.limit_backward = v_4; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "")) { + return false; + } + break; + } + this.limit_backward = v_4; + return true; +}; + +FrenchStemmer.prototype.r_residual_suffix = FrenchStemmer.prototype.r_residual_suffix$; + +function FrenchStemmer$r_residual_suffix$LFrenchStemmer$($this) { + var among_var; + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var lab0; + var lab1; + var lab2; + var cursor$0; + var cursor$1; + var cursor$2; + var cursor$3; + v_1 = (($this.limit - $this.cursor) | 0); + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + $this.ket = $this.cursor; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "s")) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.bra = cursor$0 = $this.cursor; + v_2 = (($this.limit - cursor$0) | 0); + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_keep_with_s, 97, 232)) { + $this.cursor = (($this.limit - v_1) | 0); + break lab0; + } + $this.cursor = (($this.limit - v_2) | 0); + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + } + v_3 = (($this.limit - (cursor$1 = $this.cursor)) | 0); + if (cursor$1 < $this.I_pV) { + return false; + } + cursor$2 = $this.cursor = $this.I_pV; + v_4 = $this.limit_backward; + $this.limit_backward = cursor$2; + cursor$3 = $this.cursor = (($this.limit - v_3) | 0); + $this.ket = cursor$3; + among_var = BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_7, 7); + if (among_var === 0) { + $this.limit_backward = v_4; + return false; + } + $this.bra = $this.cursor; + switch (among_var) { + case 0: + $this.limit_backward = v_4; + return false; + case 1: + if (! (! ($this.I_p2 <= $this.cursor) ? false : true)) { + $this.limit_backward = v_4; + return false; + } + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = (($this.limit - $this.cursor) | 0); + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "s")) { + break lab2; + } + break lab1; + } + $this.cursor = (($this.limit - v_5) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "t")) { + $this.limit_backward = v_4; + return false; + } + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 2: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "i")) { + return false; + } + break; + case 3: + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + case 4: + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 2, "gu")) { + $this.limit_backward = v_4; + return false; + } + if (! BaseStemmer$slice_from$LBaseStemmer$S($this, "")) { + return false; + } + break; + } + $this.limit_backward = v_4; + return true; +}; + +FrenchStemmer.r_residual_suffix$LFrenchStemmer$ = FrenchStemmer$r_residual_suffix$LFrenchStemmer$; + +FrenchStemmer.prototype.r_un_double$ = function () { + var v_1; + var cursor$0; + var $__jsx_postinc_t; + v_1 = ((this.limit - this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I(this, FrenchStemmer.a_8, 5) === 0) { + return false; + } + cursor$0 = this.cursor = ((this.limit - v_1) | 0); + this.ket = cursor$0; + if (cursor$0 <= this.limit_backward) { + return false; + } + ($__jsx_postinc_t = this.cursor, this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + this.bra = this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "") ? false : true); +}; + +FrenchStemmer.prototype.r_un_double = FrenchStemmer.prototype.r_un_double$; + +function FrenchStemmer$r_un_double$LFrenchStemmer$($this) { + var v_1; + var cursor$0; + var $__jsx_postinc_t; + v_1 = (($this.limit - $this.cursor) | 0); + if (BaseStemmer$find_among_b$LBaseStemmer$ALAmong$I($this, FrenchStemmer.a_8, 5) === 0) { + return false; + } + cursor$0 = $this.cursor = (($this.limit - v_1) | 0); + $this.ket = cursor$0; + if (cursor$0 <= $this.limit_backward) { + return false; + } + ($__jsx_postinc_t = $this.cursor, $this.cursor = ($__jsx_postinc_t - 1) | 0, $__jsx_postinc_t); + $this.bra = $this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "") ? false : true); +}; + +FrenchStemmer.r_un_double$LFrenchStemmer$ = FrenchStemmer$r_un_double$LFrenchStemmer$; + +FrenchStemmer.prototype.r_un_accent$ = function () { + var v_3; + var v_1; + var lab1; + var lab2; + var lab3; + v_1 = 1; +replab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII(this, FrenchStemmer.g_v, 97, 251)) { + break lab1; + } + v_1--; + continue replab0; + } + break replab0; + } + if (v_1 > 0) { + return false; + } + this.ket = this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = ((this.limit - this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00E9")) { + break lab3; + } + break lab2; + } + this.cursor = ((this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00E8")) { + return false; + } + } + this.bra = this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S(this, "e") ? false : true); +}; + +FrenchStemmer.prototype.r_un_accent = FrenchStemmer.prototype.r_un_accent$; + +function FrenchStemmer$r_un_accent$LFrenchStemmer$($this) { + var v_3; + var v_1; + var lab1; + var lab2; + var lab3; + v_1 = 1; +replab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! BaseStemmer$out_grouping_b$LBaseStemmer$AIII($this, FrenchStemmer.g_v, 97, 251)) { + break lab1; + } + v_1--; + continue replab0; + } + break replab0; + } + if (v_1 > 0) { + return false; + } + $this.ket = $this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = (($this.limit - $this.cursor) | 0); + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00E9")) { + break lab3; + } + break lab2; + } + $this.cursor = (($this.limit - v_3) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS($this, 1, "\u00E8")) { + return false; + } + } + $this.bra = $this.cursor; + return (! BaseStemmer$slice_from$LBaseStemmer$S($this, "e") ? false : true); +}; + +FrenchStemmer.r_un_accent$LFrenchStemmer$ = FrenchStemmer$r_un_accent$LFrenchStemmer$; + +FrenchStemmer.prototype.stem$ = function () { + var v_1; + var v_2; + var v_3; + var v_4; + var v_5; + var v_6; + var v_7; + var v_8; + var v_9; + var v_11; + var lab0; + var lab1; + var lab2; + var lab3; + var lab4; + var lab5; + var lab6; + var lab7; + var lab8; + var lab9; + var lab10; + var lab11; + var lab12; + var lab13; + var cursor$0; + var limit$0; + var cursor$1; + var cursor$2; + var limit$1; + var cursor$3; + var limit$2; + var cursor$4; + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! FrenchStemmer$r_prelude$LFrenchStemmer$(this)) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! FrenchStemmer$r_mark_regions$LFrenchStemmer$(this)) { + break lab1; + } + } + cursor$2 = this.cursor = v_2; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = limit$1 = this.limit; + v_3 = ((limit$1 - cursor$3) | 0); + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = ((this.limit - this.cursor) | 0); + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = ((this.limit - this.cursor) | 0); + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = ((this.limit - this.cursor) | 0); + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! FrenchStemmer$r_standard_suffix$LFrenchStemmer$(this)) { + break lab6; + } + break lab5; + } + this.cursor = ((this.limit - v_6) | 0); + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! FrenchStemmer$r_i_verb_suffix$LFrenchStemmer$(this)) { + break lab7; + } + break lab5; + } + this.cursor = ((this.limit - v_6) | 0); + if (! FrenchStemmer$r_verb_suffix$LFrenchStemmer$(this)) { + break lab4; + } + } + cursor$1 = this.cursor = (((limit$0 = this.limit) - v_5) | 0); + v_7 = ((limit$0 - cursor$1) | 0); + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_8 = ((this.limit - this.cursor) | 0); + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "Y")) { + break lab10; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "i")) { + return false; + } + break lab9; + } + this.cursor = ((this.limit - v_8) | 0); + if (! BaseStemmer$eq_s_b$LBaseStemmer$IS(this, 1, "\u00E7")) { + this.cursor = ((this.limit - v_7) | 0); + break lab8; + } + this.bra = this.cursor; + if (! BaseStemmer$slice_from$LBaseStemmer$S(this, "c")) { + return false; + } + } + } + break lab3; + } + this.cursor = ((this.limit - v_4) | 0); + if (! FrenchStemmer$r_residual_suffix$LFrenchStemmer$(this)) { + break lab2; + } + } + } + cursor$4 = this.cursor = (((limit$2 = this.limit) - v_3) | 0); + v_9 = ((limit$2 - cursor$4) | 0); + lab11 = true; +lab11: + while (lab11 === true) { + lab11 = false; + if (! FrenchStemmer$r_un_double$LFrenchStemmer$(this)) { + break lab11; + } + } + this.cursor = ((this.limit - v_9) | 0); + lab12 = true; +lab12: + while (lab12 === true) { + lab12 = false; + if (! FrenchStemmer$r_un_accent$LFrenchStemmer$(this)) { + break lab12; + } + } + cursor$5 = this.cursor = this.limit_backward; + v_11 = cursor$5; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + if (! FrenchStemmer$r_postlude$LFrenchStemmer$(this)) { + break lab13; + } + } + this.cursor = v_11; + return true; +}; + +FrenchStemmer.prototype.stem = FrenchStemmer.prototype.stem$; + +FrenchStemmer.prototype.equals$X = function (o) { + return o instanceof FrenchStemmer; +}; + +FrenchStemmer.prototype.equals = FrenchStemmer.prototype.equals$X; + +function FrenchStemmer$equals$LFrenchStemmer$X($this, o) { + return o instanceof FrenchStemmer; +}; + +FrenchStemmer.equals$LFrenchStemmer$X = FrenchStemmer$equals$LFrenchStemmer$X; + +FrenchStemmer.prototype.hashCode$ = function () { + var classname; + var hash; + var i; + var char; + classname = "FrenchStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +FrenchStemmer.prototype.hashCode = FrenchStemmer.prototype.hashCode$; + +function FrenchStemmer$hashCode$LFrenchStemmer$($this) { + var classname; + var hash; + var i; + var char; + classname = "FrenchStemmer"; + hash = 0; + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +FrenchStemmer.hashCode$LFrenchStemmer$ = FrenchStemmer$hashCode$LFrenchStemmer$; + +FrenchStemmer.serialVersionUID = 1; +$__jsx_lazy_init(FrenchStemmer, "methodObject", function () { + return new FrenchStemmer(); +}); +$__jsx_lazy_init(FrenchStemmer, "a_0", function () { + return [ new Among("col", -1, -1), new Among("par", -1, -1), new Among("tap", -1, -1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_1", function () { + return [ new Among("", -1, 4), new Among("I", 0, 1), new Among("U", 0, 2), new Among("Y", 0, 3) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_2", function () { + return [ new Among("iqU", -1, 3), new Among("abl", -1, 3), new Among("I\u00E8r", -1, 4), new Among("i\u00E8r", -1, 4), new Among("eus", -1, 2), new Among("iv", -1, 1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_3", function () { + return [ new Among("ic", -1, 2), new Among("abil", -1, 1), new Among("iv", -1, 3) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_4", function () { + return [ new Among("iqUe", -1, 1), new Among("atrice", -1, 2), new Among("ance", -1, 1), new Among("ence", -1, 5), new Among("logie", -1, 3), new Among("able", -1, 1), new Among("isme", -1, 1), new Among("euse", -1, 11), new Among("iste", -1, 1), new Among("ive", -1, 8), new Among("if", -1, 8), new Among("usion", -1, 4), new Among("ation", -1, 2), new Among("ution", -1, 4), new Among("ateur", -1, 2), new Among("iqUes", -1, 1), new Among("atrices", -1, 2), new Among("ances", -1, 1), new Among("ences", -1, 5), new Among("logies", -1, 3), new Among("ables", -1, 1), new Among("ismes", -1, 1), new Among("euses", -1, 11), new Among("istes", -1, 1), new Among("ives", -1, 8), new Among("ifs", -1, 8), new Among("usions", -1, 4), new Among("ations", -1, 2), new Among("utions", -1, 4), new Among("ateurs", -1, 2), new Among("ments", -1, 15), new Among("ements", 30, 6), new Among("issements", 31, 12), new Among("it\u00E9s", -1, 7), new Among("ment", -1, 15), new Among("ement", 34, 6), new Among("issement", 35, 12), new Among("amment", 34, 13), new Among("emment", 34, 14), new Among("aux", -1, 10), new Among("eaux", 39, 9), new Among("eux", -1, 1), new Among("it\u00E9", -1, 7) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_5", function () { + return [ new Among("ira", -1, 1), new Among("ie", -1, 1), new Among("isse", -1, 1), new Among("issante", -1, 1), new Among("i", -1, 1), new Among("irai", 4, 1), new Among("ir", -1, 1), new Among("iras", -1, 1), new Among("ies", -1, 1), new Among("\u00EEmes", -1, 1), new Among("isses", -1, 1), new Among("issantes", -1, 1), new Among("\u00EEtes", -1, 1), new Among("is", -1, 1), new Among("irais", 13, 1), new Among("issais", 13, 1), new Among("irions", -1, 1), new Among("issions", -1, 1), new Among("irons", -1, 1), new Among("issons", -1, 1), new Among("issants", -1, 1), new Among("it", -1, 1), new Among("irait", 21, 1), new Among("issait", 21, 1), new Among("issant", -1, 1), new Among("iraIent", -1, 1), new Among("issaIent", -1, 1), new Among("irent", -1, 1), new Among("issent", -1, 1), new Among("iront", -1, 1), new Among("\u00EEt", -1, 1), new Among("iriez", -1, 1), new Among("issiez", -1, 1), new Among("irez", -1, 1), new Among("issez", -1, 1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_6", function () { + return [ new Among("a", -1, 3), new Among("era", 0, 2), new Among("asse", -1, 3), new Among("ante", -1, 3), new Among("\u00E9e", -1, 2), new Among("ai", -1, 3), new Among("erai", 5, 2), new Among("er", -1, 2), new Among("as", -1, 3), new Among("eras", 8, 2), new Among("\u00E2mes", -1, 3), new Among("asses", -1, 3), new Among("antes", -1, 3), new Among("\u00E2tes", -1, 3), new Among("\u00E9es", -1, 2), new Among("ais", -1, 3), new Among("erais", 15, 2), new Among("ions", -1, 1), new Among("erions", 17, 2), new Among("assions", 17, 3), new Among("erons", -1, 2), new Among("ants", -1, 3), new Among("\u00E9s", -1, 2), new Among("ait", -1, 3), new Among("erait", 23, 2), new Among("ant", -1, 3), new Among("aIent", -1, 3), new Among("eraIent", 26, 2), new Among("\u00E8rent", -1, 2), new Among("assent", -1, 3), new Among("eront", -1, 2), new Among("\u00E2t", -1, 3), new Among("ez", -1, 2), new Among("iez", 32, 2), new Among("eriez", 33, 2), new Among("assiez", 33, 3), new Among("erez", 32, 2), new Among("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_7", function () { + return [ new Among("e", -1, 3), new Among("I\u00E8re", 0, 2), new Among("i\u00E8re", 0, 2), new Among("ion", -1, 1), new Among("Ier", -1, 2), new Among("ier", -1, 2), new Among("\u00EB", -1, 4) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_8", function () { + return [ new Among("ell", -1, -1), new Among("eill", -1, -1), new Among("enn", -1, -1), new Among("onn", -1, -1), new Among("ett", -1, -1) ]; +}); +FrenchStemmer.g_v = [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 ]; +FrenchStemmer.g_keep_with_s = [ 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; + +var $__jsx_classMap = { + "src/among.jsx": { + Among: Among, + Among$SII: Among, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$0 + }, + "src/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer + }, + "src/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer + }, + "src/french-stemmer.jsx": { + FrenchStemmer: FrenchStemmer, + FrenchStemmer$: FrenchStemmer + } +}; + + +})(JSX); + +var Among = JSX.require("src/among.jsx").Among; +var Among$SII = JSX.require("src/among.jsx").Among$SII; +var Stemmer = JSX.require("src/stemmer.jsx").Stemmer; +var BaseStemmer = JSX.require("src/base-stemmer.jsx").BaseStemmer; +var FrenchStemmer = JSX.require("src/french-stemmer.jsx").FrenchStemmer; diff --git a/docs/_build/html/_static/ajax-loader.gif b/docs/_build/html/_static/ajax-loader.gif new file mode 100644 index 0000000..61faf8c Binary files /dev/null and b/docs/_build/html/_static/ajax-loader.gif differ diff --git a/docs/_build/html/_static/alabaster.css b/docs/_build/html/_static/alabaster.css new file mode 100644 index 0000000..0eddaeb --- /dev/null +++ b/docs/_build/html/_static/alabaster.css @@ -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; + } +} \ No newline at end of file diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css new file mode 100644 index 0000000..0807176 --- /dev/null +++ b/docs/_build/html/_static/basic.css @@ -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; + } +} \ No newline at end of file diff --git a/docs/_build/html/_static/comment-bright.png b/docs/_build/html/_static/comment-bright.png new file mode 100644 index 0000000..15e27ed Binary files /dev/null and b/docs/_build/html/_static/comment-bright.png differ diff --git a/docs/_build/html/_static/comment-close.png b/docs/_build/html/_static/comment-close.png new file mode 100644 index 0000000..4d91bcf Binary files /dev/null and b/docs/_build/html/_static/comment-close.png differ diff --git a/docs/_build/html/_static/comment.png b/docs/_build/html/_static/comment.png new file mode 100644 index 0000000..dfbc0cb Binary files /dev/null and b/docs/_build/html/_static/comment.png differ diff --git a/docs/_build/html/_static/css/badge_only.css b/docs/_build/html/_static/css/badge_only.css new file mode 100644 index 0000000..3c33cef --- /dev/null +++ b/docs/_build/html/_static/css/badge_only.css @@ -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}} diff --git a/docs/_build/html/_static/css/theme.css b/docs/_build/html/_static/css/theme.css new file mode 100644 index 0000000..aed8cef --- /dev/null +++ b/docs/_build/html/_static/css/theme.css @@ -0,0 +1,6 @@ +/* sphinx_rtd_theme version 0.4.3 | MIT license */ +/* Built 20190212 16:02 */ +*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content .code-block-caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.wy-menu-vertical li span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.rst-content .fa-pull-left.admonition-title,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content dl dt .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.rst-content code.download span.fa-pull-left:first-child,.fa-pull-left.icon{margin-right:.3em}.fa.fa-pull-right,.wy-menu-vertical li span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.rst-content .fa-pull-right.admonition-title,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content dl dt .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.rst-content code.download span.fa-pull-right:first-child,.fa-pull-right.icon{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content .code-block-caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content .code-block-caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content .code-block-caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content table>caption .headerlink,.rst-content table>caption a .headerlink,a .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content table>caption .headerlink,.rst-content table>caption .btn .headerlink,.btn .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content table>caption .headerlink,.rst-content table>caption .nav .headerlink,.nav .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.btn .rst-content .code-block-caption .fa-large.headerlink,.rst-content .code-block-caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.nav .rst-content .code-block-caption .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.btn .rst-content .code-block-caption .fa-spin.headerlink,.rst-content .code-block-caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.nav .rst-content .code-block-caption .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo,.rst-content .wy-alert-warning.admonition{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.admonition{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{position:absolute;content:"";display:block;left:0;top:0;width:36px;height:12px;border-radius:4px;background:#ccc;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27AE60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:before,.wy-breadcrumbs:after{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#3a7ca8;height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin:12px 0 0 0;display:block;font-weight:bold;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a{color:#404040}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980B9;text-align:center;padding:.809em;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:gray}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:gray}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{width:100%}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:before,.rst-breadcrumbs-buttons:after{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1100px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.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,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-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,.rst-versions.rst-badge .icon-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,.rst-versions.rst-badge.shift-up .rst-current-version .icon-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}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;display:block;overflow:auto}.rst-content pre.literal-block,.rst-content div[class^='highlight']{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px 0}.rst-content pre.literal-block div[class^='highlight'],.rst-content div[class^='highlight'] div[class^='highlight']{padding:0px;border:none;margin:0}.rst-content div[class^='highlight'] td.code{width:100%}.rst-content .linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;display:block;overflow:auto}.rst-content div[class^='highlight'] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content pre.literal-block,.rst-content div[class^='highlight'] pre,.rst-content .linenodiv pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.4}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^='highlight'],.rst-content div[class^='highlight'] pre{white-space:pre-wrap}}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .section ol p:last-child,.rst-content .section ul p:last-child{margin-bottom:24px}.rst-content .line-block{margin-left:0px;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content .code-block-caption .headerlink{visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after,.rst-content .code-block-caption .headerlink:after{content:"";font-family:FontAwesome}.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after,.rst-content .code-block-caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:baseline;position:relative;top:-0.4em;line-height:0;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:gray}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.docutils td .last,.rst-content table.docutils td .last :last-child{margin-bottom:0}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content tt,.rst-content tt,.rst-content code{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content pre,.rst-content kbd,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold;margin-bottom:12px}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-weight:normal;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child,.rst-content code.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-regular.eot");src:url("../fonts/Lato/lato-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-regular.woff2") format("woff2"),url("../fonts/Lato/lato-regular.woff") format("woff"),url("../fonts/Lato/lato-regular.ttf") format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bold.eot");src:url("../fonts/Lato/lato-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bold.woff2") format("woff2"),url("../fonts/Lato/lato-bold.woff") format("woff"),url("../fonts/Lato/lato-bold.ttf") format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bolditalic.eot");src:url("../fonts/Lato/lato-bolditalic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bolditalic.woff2") format("woff2"),url("../fonts/Lato/lato-bolditalic.woff") format("woff"),url("../fonts/Lato/lato-bolditalic.ttf") format("truetype");font-weight:700;font-style:italic}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-italic.eot");src:url("../fonts/Lato/lato-italic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-italic.woff2") format("woff2"),url("../fonts/Lato/lato-italic.woff") format("woff"),url("../fonts/Lato/lato-italic.ttf") format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:url("../fonts/RobotoSlab/roboto-slab.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.ttf") format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.ttf") format("truetype")} diff --git a/docs/_build/html/_static/custom.css b/docs/_build/html/_static/custom.css new file mode 100644 index 0000000..2a924f1 --- /dev/null +++ b/docs/_build/html/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js new file mode 100644 index 0000000..344db17 --- /dev/null +++ b/docs/_build/html/_static/doctools.js @@ -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() { + $('\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 + * 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); + $('') + .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(); +}); diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js new file mode 100644 index 0000000..5511bf0 --- /dev/null +++ b/docs/_build/html/_static/documentation_options.js @@ -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, +}; \ No newline at end of file diff --git a/docs/_build/html/_static/down-pressed.png b/docs/_build/html/_static/down-pressed.png new file mode 100644 index 0000000..5756c8c Binary files /dev/null and b/docs/_build/html/_static/down-pressed.png differ diff --git a/docs/_build/html/_static/down.png b/docs/_build/html/_static/down.png new file mode 100644 index 0000000..1b3bdad Binary files /dev/null and b/docs/_build/html/_static/down.png differ diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/docs/_build/html/_static/file.png differ diff --git a/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf b/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf new file mode 100644 index 0000000..809c1f5 Binary files /dev/null and b/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf differ diff --git a/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf b/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf new file mode 100644 index 0000000..fc981ce Binary files /dev/null and b/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf differ diff --git a/docs/_build/html/_static/fonts/Inconsolata.ttf b/docs/_build/html/_static/fonts/Inconsolata.ttf new file mode 100644 index 0000000..4b8a36d Binary files /dev/null and b/docs/_build/html/_static/fonts/Inconsolata.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato-Bold.ttf b/docs/_build/html/_static/fonts/Lato-Bold.ttf new file mode 100644 index 0000000..1d23c70 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato-Bold.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato-Regular.ttf b/docs/_build/html/_static/fonts/Lato-Regular.ttf new file mode 100644 index 0000000..0f3d0f8 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato-Regular.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.eot b/docs/_build/html/_static/fonts/Lato/lato-bold.eot new file mode 100644 index 0000000..3361183 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bold.eot differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.ttf b/docs/_build/html/_static/fonts/Lato/lato-bold.ttf new file mode 100644 index 0000000..29f691d Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bold.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.woff b/docs/_build/html/_static/fonts/Lato/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bold.woff differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 b/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot new file mode 100644 index 0000000..3d41549 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf new file mode 100644 index 0000000..f402040 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.eot b/docs/_build/html/_static/fonts/Lato/lato-italic.eot new file mode 100644 index 0000000..3f82642 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-italic.eot differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.ttf b/docs/_build/html/_static/fonts/Lato/lato-italic.ttf new file mode 100644 index 0000000..b4bfc9b Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-italic.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.woff b/docs/_build/html/_static/fonts/Lato/lato-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-italic.woff differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 b/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.eot b/docs/_build/html/_static/fonts/Lato/lato-regular.eot new file mode 100644 index 0000000..11e3f2a Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-regular.eot differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.ttf b/docs/_build/html/_static/fonts/Lato/lato-regular.ttf new file mode 100644 index 0000000..74decd9 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-regular.ttf differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.woff b/docs/_build/html/_static/fonts/Lato/lato-regular.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-regular.woff differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 b/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf b/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf new file mode 100644 index 0000000..df5d1df Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf b/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf new file mode 100644 index 0000000..eb52a79 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot new file mode 100644 index 0000000..79dc8ef Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf new file mode 100644 index 0000000..df5d1df Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot new file mode 100644 index 0000000..2f7ca78 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf new file mode 100644 index 0000000..eb52a79 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 differ diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.eot b/docs/_build/html/_static/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/docs/_build/html/_static/fonts/fontawesome-webfont.eot differ diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.svg b/docs/_build/html/_static/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/docs/_build/html/_static/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.ttf b/docs/_build/html/_static/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/docs/_build/html/_static/fonts/fontawesome-webfont.ttf differ diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.woff b/docs/_build/html/_static/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/docs/_build/html/_static/fonts/fontawesome-webfont.woff differ diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.woff2 b/docs/_build/html/_static/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/docs/_build/html/_static/fonts/fontawesome-webfont.woff2 differ diff --git a/docs/_build/html/_static/jquery-3.2.1.js b/docs/_build/html/_static/jquery-3.2.1.js new file mode 100644 index 0000000..d2d8ca4 --- /dev/null +++ b/docs/_build/html/_static/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

coopeV3 package

+ +
+

Submodules

+
+
+

coopeV3.acl module

+
+
+coopeV3.acl.acl_and(*perms)
+
+ +
+
+coopeV3.acl.acl_or(*perms)
+
+ +
+
+coopeV3.acl.active_required(view)
+
+ +
+
+coopeV3.acl.admin_required(view)
+

Test if the user is staff

+
+ +
+
+coopeV3.acl.self_or_has_perm(pkName, perm)
+

Test if the user is the request user (pk) or has perm permission

+
+ +
+
+coopeV3.acl.superuser_required(view)
+

Test if the user is superuser

+
+ +
+
+

coopeV3.local_settings.example module

+
+
+

coopeV3.local_settings module

+
+
+

coopeV3.settings module

+

Django settings for coopeV3 project.

+

Generated by “django-admin startproject” using Django 2.1.

+

For more information on this file, see +https://docs.djangoproject.com/en/2.1/topics/settings/

+

For the full list of settings and their values, see +https://docs.djangoproject.com/en/2.1/ref/settings/

+
+
+

coopeV3.urls module

+

coopeV3 URL Configuration

+
+
The urlpatterns list routes URLs to views. For more information please see:
+
https://docs.djangoproject.com/en/2.1/topics/http/urls/
+
+

Examples: +Function views

+
+
    +
  1. Add an import: from my_app import views
  2. +
  3. Add a URL to urlpatterns: path(“”, views.home, name=”home”)
  4. +
+
+
+
Class-based views
+
    +
  1. Add an import: from other_app.views import Home
  2. +
  3. Add a URL to urlpatterns: path(“”, Home.as_view(), name=”home”)
  4. +
+
+
Including another URLconf
+
    +
  1. Import the include() function: from django.urls import include, path
  2. +
  3. Add a URL to urlpatterns: path(“blog/”, include(“blog.urls”))
  4. +
+
+
+
+
+coopeV3.urls.path(route, view, kwargs=None, name=None, *, Pattern=<class 'django.urls.resolvers.RoutePattern'>)
+
+ +
+
+

coopeV3.views module

+
+
+coopeV3.views.coope_runner(request)
+
+ +
+
+coopeV3.views.home(request)
+
+ +
+
+coopeV3.views.homepage(request)
+
+ +
+
+

coopeV3.widgets module

+
+
+class coopeV3.widgets.SearchField(attrs=None)
+

Bases : django.forms.widgets.Input

+
+
+media
+
+ +
+
+render(name, value, attrs=None)
+

Render the widget as an HTML string.

+
+ +
+ +
+
+

coopeV3.wsgi module

+

WSGI config for coopeV3 project.

+

It exposes the WSGI callable as a module-level variable named application.

+

For more information on this file, see +https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/

+
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/coopeV3.templatetags.html b/docs/_build/html/coopeV3.templatetags.html new file mode 100644 index 0000000..75adb6e --- /dev/null +++ b/docs/_build/html/coopeV3.templatetags.html @@ -0,0 +1,169 @@ + + + + + + + + coopeV3.templatetags package — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

coopeV3.templatetags package

+
+

Submodules

+
+
+

coopeV3.templatetags.vip module

+
+
+coopeV3.templatetags.vip.brewer()
+
+ +
+
+coopeV3.templatetags.vip.global_message()
+
+ +
+
+coopeV3.templatetags.vip.grocer()
+
+ +
+
+coopeV3.templatetags.vip.logout_time()
+
+ +
+
+coopeV3.templatetags.vip.menu()
+
+ +
+
+coopeV3.templatetags.vip.president()
+
+ +
+
+coopeV3.templatetags.vip.rules()
+
+ +
+
+coopeV3.templatetags.vip.secretary()
+
+ +
+
+coopeV3.templatetags.vip.statutes()
+
+ +
+
+coopeV3.templatetags.vip.treasurer()
+
+ +
+
+coopeV3.templatetags.vip.vice_president()
+
+ +
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/django_tex.html b/docs/_build/html/django_tex.html new file mode 100644 index 0000000..a5962dc --- /dev/null +++ b/docs/_build/html/django_tex.html @@ -0,0 +1,237 @@ + + + + + + + + django_tex package — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

django_tex package

+
+

Submodules

+
+
+

django_tex.core module

+
+
+django_tex.core.compile_template_to_pdf(template_name, context)
+
+ +
+
+django_tex.core.render_template_with_context(template_name, context)
+
+ +
+
+django_tex.core.run_tex(source)
+
+ +
+
+

django_tex.engine module

+
+
+class django_tex.engine.TeXEngine(params)
+

Bases : django.template.backends.jinja2.Jinja2

+
+
+app_dirname = 'templates'
+
+ +
+ +
+
+

django_tex.environment module

+
+
+django_tex.environment.environment(**options)
+
+ +
+
+

django_tex.exceptions module

+
+
+exception django_tex.exceptions.TexError(log, source)
+

Bases : Exception

+
+
+get_message()
+
+ +
+ +
+
+django_tex.exceptions.prettify_message(message)
+

Helper methods that removes consecutive whitespaces and newline characters

+
+ +
+
+django_tex.exceptions.tokenizer(code)
+
+ +
+
+

django_tex.filters module

+
+
+django_tex.filters.do_linebreaks(value)
+
+ +
+
+

django_tex.models module

+
+
+class django_tex.models.TeXTemplateFile(*args, **kwargs)
+

Bases : django.db.models.base.Model

+
+
+class Meta
+

Bases : object

+
+
+abstract = False
+
+ +
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+title
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+django_tex.models.validate_template_path(name)
+
+ +
+
+

django_tex.views module

+
+
+class django_tex.views.PDFResponse(content, filename=None)
+

Bases : django.http.response.HttpResponse

+
+ +
+
+django_tex.views.render_to_pdf(request, template_name, context=None, filename=None)
+
+ +
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html new file mode 100644 index 0000000..5cee815 --- /dev/null +++ b/docs/_build/html/genindex.html @@ -0,0 +1,3091 @@ + + + + + + + + + + + + Index — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Index
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + +

Index

+ +
+ A + | B + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + +
+

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

I

+ + + +
+ +

K

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
+ +

Q

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + + +
+ +

W

+ + +
+ + + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/gestion.html b/docs/_build/html/gestion.html new file mode 100644 index 0000000..a21f83b --- /dev/null +++ b/docs/_build/html/gestion.html @@ -0,0 +1,4286 @@ + + + + + + + + gestion package — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

gestion package

+
+

Subpackages

+
+
+
+
+

Submodules

+
+
+

gestion.admin module

+
+
+class gestion.admin.ConsumptionAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('customer', 'product', 'quantity')
+
+ +
+
+media
+
+ +
+
+ordering = ('-quantity',)
+
+ +
+
+search_fields = ('customer', 'product')
+
+ +
+ +
+
+class gestion.admin.ConsumptionHistoryAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('customer', 'product', 'quantity', 'paymentMethod', 'date', 'amount')
+
+ +
+
+list_filter = ('paymentMethod',)
+
+ +
+
+media
+
+ +
+
+ordering = ('-date',)
+
+ +
+
+search_fields = ('customer', 'product')
+
+ +
+ +
+
+class gestion.admin.KegAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('name', 'stockHold', 'capacity', 'is_active')
+
+ +
+
+list_filter = ('capacity', 'is_active')
+
+ +
+
+media
+
+ +
+
+ordering = ('name',)
+
+ +
+
+search_fields = ('name',)
+
+ +
+ +
+
+class gestion.admin.KegHistoryAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('keg', 'openingDate', 'closingDate', 'isCurrentKegHistory', 'quantitySold')
+
+ +
+
+list_filter = ('isCurrentKegHistory', 'keg')
+
+ +
+
+media
+
+ +
+
+ordering = ('-openingDate', 'quantitySold')
+
+ +
+
+search_fields = ('keg',)
+
+ +
+ +
+
+class gestion.admin.MenuAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('name', 'amount', 'is_active')
+
+ +
+
+list_filter = ('is_active',)
+
+ +
+
+media
+
+ +
+
+ordering = ('name', 'amount')
+
+ +
+
+search_fields = ('name',)
+
+ +
+ +
+
+class gestion.admin.MenuHistoryAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('customer', 'menu', 'paymentMethod', 'date', 'quantity', 'amount')
+
+ +
+
+media
+
+ +
+
+ordering = ('-date',)
+
+ +
+
+search_fields = ('customer', 'menu')
+
+ +
+ +
+
+class gestion.admin.ProductAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('name', 'amount', 'is_active', 'category', 'adherentRequired', 'stockHold', 'stockBar', 'volume', 'deg')
+
+ +
+
+list_filter = ('is_active', 'adherentRequired', 'category')
+
+ +
+
+media
+
+ +
+
+ordering = ('name', 'amount', 'stockHold', 'stockBar', 'deg')
+
+ +
+
+search_fields = ('name',)
+
+ +
+ +
+
+class gestion.admin.RefundAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('customer', 'amount', 'date')
+
+ +
+
+media
+
+ +
+
+ordering = ('-date', 'amount', 'customer')
+
+ +
+
+search_fields = ('customer',)
+
+ +
+ +
+
+class gestion.admin.ReloadAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('customer', 'amount', 'date', 'PaymentMethod')
+
+ +
+
+list_filter = ('PaymentMethod',)
+
+ +
+
+media
+
+ +
+
+ordering = ('-date', 'amount', 'customer')
+
+ +
+
+search_fields = ('customer',)
+
+ +
+ +
+
+

gestion.apps module

+
+
+class gestion.apps.GestionConfig(app_name, app_module)
+

Bases : django.apps.config.AppConfig

+
+
+name = 'gestion'
+
+ +
+ +
+
+

gestion.environment module

+
+
+gestion.environment.latex_safe(value)
+
+ +
+
+gestion.environment.my_environment(**options)
+
+ +
+
+

gestion.forms module

+
+
+class gestion.forms.GenerateReleveForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+
+
+base_fields = {'begin': <django.forms.fields.DateTimeField object>, 'end': <django.forms.fields.DateTimeField object>}
+
+ +
+
+declared_fields = {'begin': <django.forms.fields.DateTimeField object>, 'end': <django.forms.fields.DateTimeField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.GestionForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+
+
+base_fields = {'client': <django.forms.models.ModelChoiceField object>, 'product': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'client': <django.forms.models.ModelChoiceField object>, 'product': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.KegForm(*args, **kwargs)
+

Bases : django.forms.models.ModelForm

+
+
+class Meta
+

Bases : object

+
+
+exclude = ('is_active',)
+
+ +
+
+model
+

alias de gestion.models.Keg

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>}
+
+ +
+ +
+
+base_fields = {'amount': <django.forms.fields.DecimalField object>, 'barcode': <django.forms.fields.CharField object>, 'capacity': <django.forms.fields.IntegerField object>, 'demi': <django.forms.models.ModelChoiceField object>, 'galopin': <django.forms.models.ModelChoiceField object>, 'name': <django.forms.fields.CharField object>, 'pinte': <django.forms.models.ModelChoiceField object>, 'stockHold': <django.forms.fields.IntegerField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.MenuForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+
+
+class Meta
+

Bases : object

+
+
+fields = '__all__'
+
+ +
+
+model
+

alias de gestion.models.Menu

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>}
+
+ +
+ +
+
+base_fields = {'amount': <django.forms.fields.DecimalField object>, 'articles': <django.forms.models.ModelMultipleChoiceField object>, 'barcode': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.PinteForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+
+
+base_fields = {'begin': <django.forms.fields.IntegerField object>, 'end': <django.forms.fields.IntegerField object>, 'ids': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {'begin': <django.forms.fields.IntegerField object>, 'end': <django.forms.fields.IntegerField object>, 'ids': <django.forms.fields.CharField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.ProductForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+
+
+class Meta
+

Bases : object

+
+
+fields = '__all__'
+
+ +
+
+model
+

alias de gestion.models.Product

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>}
+
+ +
+ +
+
+base_fields = {'adherentRequired': <django.forms.fields.BooleanField object>, 'amount': <django.forms.fields.DecimalField object>, 'barcode': <django.forms.fields.CharField object>, 'category': <django.forms.fields.TypedChoiceField object>, 'deg': <django.forms.fields.DecimalField object>, 'is_active': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>, 'needQuantityButton': <django.forms.fields.BooleanField object>, 'showingMultiplier': <django.forms.fields.IntegerField object>, 'stockBar': <django.forms.fields.IntegerField object>, 'stockHold': <django.forms.fields.IntegerField object>, 'volume': <django.forms.fields.IntegerField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.RefundForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+
+
+class Meta
+

Bases : object

+
+
+fields = ('customer', 'amount')
+
+ +
+
+model
+

alias de gestion.models.Refund

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>, 'customer': <dal_select2.widgets.ModelSelect2 object>}
+
+ +
+ +
+
+base_fields = {'amount': <django.forms.fields.DecimalField object>, 'customer': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.ReloadForm(*args, **kwargs)
+

Bases : django.forms.models.ModelForm

+
+
+class Meta
+

Bases : object

+
+
+fields = ('customer', 'amount', 'PaymentMethod')
+
+ +
+
+model
+

alias de gestion.models.Reload

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>, 'customer': <dal_select2.widgets.ModelSelect2 object>}
+
+ +
+ +
+
+base_fields = {'PaymentMethod': <django.forms.models.ModelChoiceField object>, 'amount': <django.forms.fields.DecimalField object>, 'customer': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.SearchMenuForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+
+
+base_fields = {'menu': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'menu': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.SearchProductForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+
+
+base_fields = {'product': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'product': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.SelectActiveKegForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+
+
+base_fields = {'keg': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'keg': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.SelectPositiveKegForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+
+
+base_fields = {'keg': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'keg': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+

gestion.models module

+
+
+class gestion.models.Consumption(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores total consumptions

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+product
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+product_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.ConsumptionHistory(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores consumption history related to Product

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+product
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+product_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.HistoricalConsumption(id, quantity, customer, product, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Consumption

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+product
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+product_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalConsumptionHistory(id, quantity, date, amount, customer, paymentMethod, product, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de ConsumptionHistory

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+product
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+product_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalKeg(id, name, stockHold, barcode, amount, capacity, is_active, pinte, demi, galopin, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+capacity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+demi
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+demi_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+galopin
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+galopin_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Keg

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+pinte
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+pinte_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+stockHold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class gestion.models.HistoricalKegHistory(id, openingDate, quantitySold, amountSold, closingDate, isCurrentKegHistory, keg, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amountSold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+closingDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_openingDate(*, field=<django.db.models.fields.DateTimeField: openingDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_openingDate(*, field=<django.db.models.fields.DateTimeField: openingDate>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de KegHistory

+
+ +
+
+isCurrentKegHistory
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+keg
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+keg_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+openingDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+quantitySold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalMenu(id, name, amount, barcode, is_active, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Menu

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalMenuHistory(id, quantity, date, amount, customer, paymentMethod, menu, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de MenuHistory

+
+ +
+
+menu
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+menu_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalPinte(id, last_update_date, current_owner, previous_owner, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+current_owner
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+current_owner_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_last_update_date(*, field=<django.db.models.fields.DateTimeField: last_update_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_last_update_date(*, field=<django.db.models.fields.DateTimeField: last_update_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Pinte

+
+ +
+
+last_update_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+previous_owner
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+previous_owner_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalProduct(id, name, amount, stockHold, stockBar, barcode, category, needQuantityButton, is_active, volume, deg, adherentRequired, showingMultiplier, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+adherentRequired
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+category
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+deg
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_category_display(*, field=<django.db.models.fields.CharField: category>)
+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Product

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+needQuantityButton
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+showingMultiplier
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+stockBar
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+stockHold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+volume
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class gestion.models.HistoricalRefund(id, date, amount, customer, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Refund

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalReload(id, amount, date, customer, PaymentMethod, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+PaymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+PaymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Reload

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.Keg(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores a keg

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+capacity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+demi
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+demi_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+galopin
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+galopin_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+keghistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+pinte
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+pinte_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+stockHold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class gestion.models.KegHistory(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores a keg history, related to keg

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amountSold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+closingDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_openingDate(*, field=<django.db.models.fields.DateTimeField: openingDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_openingDate(*, field=<django.db.models.fields.DateTimeField: openingDate>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+isCurrentKegHistory
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+keg
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+keg_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+openingDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantitySold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.Menu(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores menus

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+adherent_required
+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+articles
+

Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation.

+

In the example:

+
class Pizza(Model):
+    toppings = ManyToManyField(Topping, related_name='pizzas')
+
+
+

Pizza.toppings and Topping.pizzas are ManyToManyDescriptor +instances.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+menuhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.MenuHistory(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores MenuHistory related to Menu

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+menu
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+menu_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.Pinte(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores a physical pinte

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+current_owner
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+current_owner_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_last_update_date(*, field=<django.db.models.fields.DateTimeField: last_update_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_last_update_date(*, field=<django.db.models.fields.DateTimeField: last_update_date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+last_update_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+previous_owner
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+previous_owner_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.Product(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores a product

+
+
+BOTTLE = 'BT'
+
+ +
+
+D_PRESSION = 'DP'
+
+ +
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+FOOD = 'FO'
+
+ +
+
+G_PRESSION = 'GP'
+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+PANINI = 'PA'
+
+ +
+
+P_PRESSION = 'PP'
+
+ +
+
+SOFT = 'SO'
+
+ +
+
+TYPEINPUT_CHOICES_CATEGORIE = (('PP', 'Pinte Pression'), ('DP', 'Demi Pression'), ('GP', 'Galopin pression'), ('BT', 'Bouteille'), ('SO', 'Soft'), ('FO', 'En-cas'), ('PA', 'Ingredients panini'))
+
+ +
+
+adherentRequired
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+category
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+consumption_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+consumptionhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+deg
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+futd
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+futg
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+futp
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+get_category_display(*, field=<django.db.models.fields.CharField: category>)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+menu_set
+

Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation.

+

In the example:

+
class Pizza(Model):
+    toppings = ManyToManyField(Topping, related_name='pizzas')
+
+
+

Pizza.toppings and Topping.pizzas are ManyToManyDescriptor +instances.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+needQuantityButton
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+ranking
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+showingMultiplier
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+stockBar
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+stockHold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+user_ranking(pk)
+
+ +
+
+volume
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class gestion.models.Refund(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores refunds

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.Reload(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores reloads

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+PaymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+PaymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+gestion.models.isDemi(id)
+
+ +
+
+gestion.models.isGalopin(id)
+
+ +
+
+gestion.models.isPinte(id)
+
+ +
+
+

gestion.tests module

+
+
+

gestion.urls module

+
+
+gestion.urls.path(route, view, kwargs=None, name=None, *, Pattern=<class 'django.urls.resolvers.RoutePattern'>)
+
+ +
+
+

gestion.views module

+
+
+class gestion.views.ActiveProductsAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autocomplete view for active products

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+class gestion.views.KegActiveAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autocomplete view for active kegs

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+class gestion.views.KegPositiveAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autocomplete view for kegs with positive stockHold

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+class gestion.views.MenusAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Used as autcomplete for all menus

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+class gestion.views.ProductsAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autocomplete view for all products

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+gestion.views.allocate(pinte_pk, user)
+

Allocate a pinte to a user or release the pinte if user is None

+
+ +
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/gestion.migrations.html b/docs/_build/html/gestion.migrations.html new file mode 100644 index 0000000..d6cad22 --- /dev/null +++ b/docs/_build/html/gestion.migrations.html @@ -0,0 +1,230 @@ + + + + + + + + gestion.migrations package — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

gestion.migrations package

+
+

Submodules

+
+
+

gestion.migrations.0001_initial module

+
+
+class gestion.migrations.0001_initial.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0001_initial'), ('auth', '__first__')]
+
+ +
+
+initial = True
+
+ +
+
+operations = [<CreateModel name='Consumption', fields=[('id', <django.db.models.fields.AutoField>), ('quantity', <django.db.models.fields.PositiveIntegerField>), ('customer', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Consommation totale'}>, <CreateModel name='ConsumptionHistory', fields=[('id', <django.db.models.fields.AutoField>), ('quantity', <django.db.models.fields.PositiveIntegerField>), ('date', <django.db.models.fields.DateTimeField>), ('amount', <django.db.models.fields.DecimalField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('customer', <django.db.models.fields.related.ForeignKey>), ('paymentMethod', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Consommation'}>, <CreateModel name='HistoricalConsumption', fields=[('id', <django.db.models.fields.IntegerField>), ('quantity', <django.db.models.fields.PositiveIntegerField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('customer', <django.db.models.fields.related.ForeignKey>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Consommation totale', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalConsumptionHistory', fields=[('id', <django.db.models.fields.IntegerField>), ('quantity', <django.db.models.fields.PositiveIntegerField>), ('date', <django.db.models.fields.DateTimeField>), ('amount', <django.db.models.fields.DecimalField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('customer', <django.db.models.fields.related.ForeignKey>), ('history_user', <django.db.models.fields.related.ForeignKey>), ('paymentMethod', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Consommation', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalKeg', fields=[('id', <django.db.models.fields.IntegerField>), ('name', <django.db.models.fields.CharField>), ('stockHold', <django.db.models.fields.IntegerField>), ('barcode', <django.db.models.fields.CharField>), ('amount', <django.db.models.fields.DecimalField>), ('capacity', <django.db.models.fields.IntegerField>), ('is_active', <django.db.models.fields.BooleanField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>)], options={'verbose_name': 'historical Fût', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalKegHistory', fields=[('id', <django.db.models.fields.IntegerField>), ('openingDate', <django.db.models.fields.DateTimeField>), ('quantitySold', <django.db.models.fields.DecimalField>), ('amountSold', <django.db.models.fields.DecimalField>), ('closingDate', <django.db.models.fields.DateTimeField>), ('isCurrentKegHistory', <django.db.models.fields.BooleanField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Historique de fût', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalMenu', fields=[('id', <django.db.models.fields.IntegerField>), ('name', <django.db.models.fields.CharField>), ('amount', <django.db.models.fields.DecimalField>), ('barcode', <django.db.models.fields.CharField>), ('is_active', <django.db.models.fields.BooleanField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical menu', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalMenuHistory', fields=[('id', <django.db.models.fields.IntegerField>), ('quantity', <django.db.models.fields.PositiveIntegerField>), ('date', <django.db.models.fields.DateTimeField>), ('amount', <django.db.models.fields.DecimalField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('customer', <django.db.models.fields.related.ForeignKey>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Historique de menu', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalProduct', fields=[('id', <django.db.models.fields.IntegerField>), ('name', <django.db.models.fields.CharField>), ('amount', <django.db.models.fields.DecimalField>), ('stockHold', <django.db.models.fields.IntegerField>), ('stockBar', <django.db.models.fields.IntegerField>), ('barcode', <django.db.models.fields.CharField>), ('category', <django.db.models.fields.CharField>), ('needQuantityButton', <django.db.models.fields.BooleanField>), ('is_active', <django.db.models.fields.BooleanField>), ('volume', <django.db.models.fields.PositiveIntegerField>), ('deg', <django.db.models.fields.DecimalField>), ('adherentRequired', <django.db.models.fields.BooleanField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Produit', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalRefund', fields=[('id', <django.db.models.fields.IntegerField>), ('date', <django.db.models.fields.DateTimeField>), ('amount', <django.db.models.fields.DecimalField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('customer', <django.db.models.fields.related.ForeignKey>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Remboursement', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalReload', fields=[('id', <django.db.models.fields.IntegerField>), ('amount', <django.db.models.fields.DecimalField>), ('date', <django.db.models.fields.DateTimeField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('PaymentMethod', <django.db.models.fields.related.ForeignKey>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('customer', <django.db.models.fields.related.ForeignKey>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Rechargement', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='Keg', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('stockHold', <django.db.models.fields.IntegerField>), ('barcode', <django.db.models.fields.CharField>), ('amount', <django.db.models.fields.DecimalField>), ('capacity', <django.db.models.fields.IntegerField>), ('is_active', <django.db.models.fields.BooleanField>)], options={'verbose_name': 'Fût', 'permissions': (('open_keg', 'Peut percuter les fûts'), ('close_keg', 'Peut fermer les fûts'))}>, <CreateModel name='KegHistory', fields=[('id', <django.db.models.fields.AutoField>), ('openingDate', <django.db.models.fields.DateTimeField>), ('quantitySold', <django.db.models.fields.DecimalField>), ('amountSold', <django.db.models.fields.DecimalField>), ('closingDate', <django.db.models.fields.DateTimeField>), ('isCurrentKegHistory', <django.db.models.fields.BooleanField>), ('keg', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Historique de fût'}>, <CreateModel name='Menu', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('amount', <django.db.models.fields.DecimalField>), ('barcode', <django.db.models.fields.CharField>), ('is_active', <django.db.models.fields.BooleanField>)]>, <CreateModel name='MenuHistory', fields=[('id', <django.db.models.fields.AutoField>), ('quantity', <django.db.models.fields.PositiveIntegerField>), ('date', <django.db.models.fields.DateTimeField>), ('amount', <django.db.models.fields.DecimalField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('customer', <django.db.models.fields.related.ForeignKey>), ('menu', <django.db.models.fields.related.ForeignKey>), ('paymentMethod', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Historique de menu'}>, <CreateModel name='Product', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('amount', <django.db.models.fields.DecimalField>), ('stockHold', <django.db.models.fields.IntegerField>), ('stockBar', <django.db.models.fields.IntegerField>), ('barcode', <django.db.models.fields.CharField>), ('category', <django.db.models.fields.CharField>), ('needQuantityButton', <django.db.models.fields.BooleanField>), ('is_active', <django.db.models.fields.BooleanField>), ('volume', <django.db.models.fields.PositiveIntegerField>), ('deg', <django.db.models.fields.DecimalField>), ('adherentRequired', <django.db.models.fields.BooleanField>)], options={'verbose_name': 'Produit'}>, <CreateModel name='Refund', fields=[('id', <django.db.models.fields.AutoField>), ('date', <django.db.models.fields.DateTimeField>), ('amount', <django.db.models.fields.DecimalField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('customer', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Remboursement'}>, <CreateModel name='Reload', fields=[('id', <django.db.models.fields.AutoField>), ('amount', <django.db.models.fields.DecimalField>), ('date', <django.db.models.fields.DateTimeField>), ('PaymentMethod', <django.db.models.fields.related.ForeignKey>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('customer', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Rechargement'}>, <AddField model_name='menu', name='articles', field=<django.db.models.fields.related.ManyToManyField>>, <AddField model_name='keg', name='demi', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='keg', name='galopin', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='keg', name='pinte', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalmenuhistory', name='menu', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalmenuhistory', name='paymentMethod', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalkeghistory', name='keg', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalkeg', name='demi', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalkeg', name='galopin', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalkeg', name='history_user', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalkeg', name='pinte', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalconsumptionhistory', name='product', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalconsumption', name='product', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='consumptionhistory', name='product', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='consumption', name='product', field=<django.db.models.fields.related.ForeignKey>>]
+
+ +
+ +
+
+

gestion.migrations.0002_pinte module

+
+
+class gestion.migrations.0002_pinte.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('auth', '__first__'), ('gestion', '0001_initial')]
+
+ +
+
+operations = [<CreateModel name='Pinte', fields=[('id', <django.db.models.fields.AutoField>), ('last_update_date', <django.db.models.fields.DateTimeField>), ('current_owner', <django.db.models.fields.related.ForeignKey>), ('previous_owner', <django.db.models.fields.related.ForeignKey>)]>]
+
+ +
+ +
+
+

gestion.migrations.0003_historicalpinte module

+
+
+class gestion.migrations.0003_historicalpinte.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('auth', '__first__'), ('gestion', '0002_pinte')]
+
+ +
+
+operations = [<CreateModel name='HistoricalPinte', fields=[('id', <django.db.models.fields.IntegerField>), ('last_update_date', <django.db.models.fields.DateTimeField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('current_owner', <django.db.models.fields.related.ForeignKey>), ('history_user', <django.db.models.fields.related.ForeignKey>), ('previous_owner', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical pinte', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>]
+
+ +
+ +
+
+

gestion.migrations.0004_auto_20181223_1830 module

+
+
+class gestion.migrations.0004_auto_20181223_1830.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('gestion', '0003_historicalpinte')]
+
+ +
+
+operations = [<AlterField model_name='pinte', name='current_owner', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='pinte', name='previous_owner', field=<django.db.models.fields.related.ForeignKey>>]
+
+ +
+ +
+
+

gestion.migrations.0005_auto_20190106_0018 module

+
+
+class gestion.migrations.0005_auto_20190106_0018.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('gestion', '0004_auto_20181223_1830')]
+
+ +
+
+operations = [<AddField model_name='historicalproduct', name='showingMultiplier', field=<django.db.models.fields.PositiveIntegerField>>, <AddField model_name='product', name='showingMultiplier', field=<django.db.models.fields.PositiveIntegerField>>]
+
+ +
+ +
+
+

gestion.migrations.0006_auto_20190227_0859 module

+
+
+class gestion.migrations.0006_auto_20190227_0859.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('gestion', '0005_auto_20190106_0018')]
+
+ +
+
+operations = [<AlterField model_name='consumption', name='customer', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='consumption', name='product', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='consumption', name='quantity', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='consumptionhistory', name='amount', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='consumptionhistory', name='customer', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='consumptionhistory', name='paymentMethod', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='consumptionhistory', name='product', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='consumptionhistory', name='quantity', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='historicalconsumption', name='quantity', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='historicalconsumptionhistory', name='amount', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='historicalconsumptionhistory', name='quantity', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='historicalkeghistory', name='amountSold', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='historicalkeghistory', name='closingDate', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='historicalkeghistory', name='isCurrentKegHistory', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='historicalkeghistory', name='openingDate', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='historicalkeghistory', name='quantitySold', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='historicalmenuhistory', name='amount', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='historicalmenuhistory', name='quantity', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='historicalproduct', name='category', field=<django.db.models.fields.CharField>>, <AlterField model_name='keghistory', name='amountSold', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='keghistory', name='closingDate', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='keghistory', name='isCurrentKegHistory', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='keghistory', name='keg', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='keghistory', name='openingDate', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='keghistory', name='quantitySold', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='menuhistory', name='amount', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='menuhistory', name='customer', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='menuhistory', name='paymentMethod', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='menuhistory', name='quantity', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='product', name='category', field=<django.db.models.fields.CharField>>]
+
+ +
+ +
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html new file mode 100644 index 0000000..f09fccc --- /dev/null +++ b/docs/_build/html/index.html @@ -0,0 +1,259 @@ + + + + + + + + + + + CoopeV3 documentation — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+ + + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/manage.html b/docs/_build/html/manage.html new file mode 100644 index 0000000..a78884a --- /dev/null +++ b/docs/_build/html/manage.html @@ -0,0 +1,105 @@ + + + + + + + + manage module — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

manage module

+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/modules.html b/docs/_build/html/modules.html new file mode 100644 index 0000000..cc2a3d9 --- /dev/null +++ b/docs/_build/html/modules.html @@ -0,0 +1,190 @@ + + + + + + + + coopeV3 — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/modules/admin.html b/docs/_build/html/modules/admin.html new file mode 100644 index 0000000..db68400 --- /dev/null +++ b/docs/_build/html/modules/admin.html @@ -0,0 +1,670 @@ + + + + + + + + + + + Admin documentation — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Admin documentation

+
+

Gestion app admin

+
+
+class gestion.admin.ConsumptionAdmin(model, admin_site)
+

The admin class for Consumptions.

+
+
+list_display = ('customer', 'product', 'quantity')
+
+ +
+
+media
+
+ +
+
+ordering = ('-quantity',)
+
+ +
+
+search_fields = ('customer', 'product')
+
+ +
+ +
+
+class gestion.admin.ConsumptionHistoryAdmin(model, admin_site)
+

The admin class for Consumption Histories.

+
+
+list_display = ('customer', 'product', 'quantity', 'paymentMethod', 'date', 'amount')
+
+ +
+
+list_filter = ('paymentMethod',)
+
+ +
+
+media
+
+ +
+
+ordering = ('-date',)
+
+ +
+
+search_fields = ('customer', 'product')
+
+ +
+ +
+
+class gestion.admin.KegAdmin(model, admin_site)
+

The admin class for Kegs.

+
+
+list_display = ('name', 'stockHold', 'capacity', 'is_active')
+
+ +
+
+list_filter = ('capacity', 'is_active')
+
+ +
+
+media
+
+ +
+
+ordering = ('name',)
+
+ +
+
+search_fields = ('name',)
+
+ +
+ +
+
+class gestion.admin.KegHistoryAdmin(model, admin_site)
+

The admin class for Keg Histories.

+
+
+list_display = ('keg', 'openingDate', 'closingDate', 'isCurrentKegHistory', 'quantitySold')
+
+ +
+
+list_filter = ('isCurrentKegHistory', 'keg')
+
+ +
+
+media
+
+ +
+
+ordering = ('-openingDate', 'quantitySold')
+
+ +
+
+search_fields = ('keg',)
+
+ +
+ +
+
+class gestion.admin.MenuAdmin(model, admin_site)
+

The admin class for Menu.

+
+
+list_display = ('name', 'amount', 'is_active')
+
+ +
+
+list_filter = ('is_active',)
+
+ +
+
+media
+
+ +
+
+ordering = ('name', 'amount')
+
+ +
+
+search_fields = ('name',)
+
+ +
+ +
+
+class gestion.admin.MenuHistoryAdmin(model, admin_site)
+

The admin class for Menu Histories.

+
+
+list_display = ('customer', 'menu', 'paymentMethod', 'date', 'quantity', 'amount')
+
+ +
+
+media
+
+ +
+
+ordering = ('-date',)
+
+ +
+
+search_fields = ('customer', 'menu')
+
+ +
+ +
+
+class gestion.admin.ProductAdmin(model, admin_site)
+

The admin class for Products.

+
+
+list_display = ('name', 'amount', 'is_active', 'category', 'adherentRequired', 'stockHold', 'stockBar', 'volume', 'deg')
+
+ +
+
+list_filter = ('is_active', 'adherentRequired', 'category')
+
+ +
+
+media
+
+ +
+
+ordering = ('name', 'amount', 'stockHold', 'stockBar', 'deg')
+
+ +
+
+search_fields = ('name',)
+
+ +
+ +
+
+class gestion.admin.RefundAdmin(model, admin_site)
+

The admin class for Refunds.

+
+
+list_display = ('customer', 'amount', 'date')
+
+ +
+
+media
+
+ +
+
+ordering = ('-date', 'amount', 'customer')
+
+ +
+
+search_fields = ('customer',)
+
+ +
+ +
+
+class gestion.admin.ReloadAdmin(model, admin_site)
+

The admin class for Reloads.

+
+
+list_display = ('customer', 'amount', 'date', 'PaymentMethod')
+
+ +
+
+list_filter = ('PaymentMethod',)
+
+ +
+
+media
+
+ +
+
+ordering = ('-date', 'amount', 'customer')
+
+ +
+
+search_fields = ('customer',)
+
+ +
+ +
+
+

Users app admin

+
+
+class users.admin.BalanceFilter(request, params, model, model_admin)
+

A filter which filters according to the sign of the balance

+
+
+lookups(request, model_admin)
+

Must be overridden to return a list of tuples (value, verbose value)

+
+ +
+
+parameter_name = 'solde'
+
+ +
+
+queryset(request, queryset)
+

Return the filtered queryset.

+
+ +
+
+title = 'Solde'
+
+ +
+ +
+
+class users.admin.CotisationHistoryAdmin(model, admin_site)
+

The admin class for Consumptions.

+
+
+list_display = ('user', 'amount', 'duration', 'paymentDate', 'endDate', 'paymentMethod')
+
+ +
+
+list_filter = ('paymentMethod',)
+
+ +
+
+media
+
+ +
+
+ordering = ('user', 'amount', 'duration', 'paymentDate', 'endDate')
+
+ +
+
+search_fields = ('user',)
+
+ +
+ +
+
+class users.admin.ProfileAdmin(model, admin_site)
+

The admin class for Consumptions.

+
+
+list_display = ('user', 'credit', 'debit', 'balance', 'school', 'cotisationEnd', 'is_adherent')
+
+ +
+
+list_filter = ('school', <class 'users.admin.BalanceFilter'>)
+
+ +
+
+media
+
+ +
+
+ordering = ('user', '-credit', '-debit')
+
+ +
+
+search_fields = ('user',)
+
+ +
+ +
+
+class users.admin.WhiteListHistoryAdmin(model, admin_site)
+

The admin class for Consumptions.

+
+
+list_display = ('user', 'paymentDate', 'endDate', 'duration')
+
+ +
+
+media
+
+ +
+
+ordering = ('user', 'duration', 'paymentDate', 'endDate')
+
+ +
+
+search_fields = ('user',)
+
+ +
+ +
+
+

Preferences app admin

+
+
+class preferences.admin.CotisationAdmin(model, admin_site)
+

The admin class for Consumptions.

+
+
+list_display = ('__str__', 'amount', 'duration')
+
+ +
+
+media
+
+ +
+
+ordering = ('-duration', '-amount')
+
+ +
+ +
+
+class preferences.admin.GeneralPreferencesAdmin(model, admin_site)
+

The admin class for Consumptions.

+
+
+list_display = ('is_active', 'president', 'vice_president', 'treasurer', 'secretary', 'brewer', 'grocer', 'use_pinte_monitoring', 'lost_pintes_allowed', 'floating_buttons', 'automatic_logout_time')
+
+ +
+
+media
+
+ +
+ +
+
+class preferences.admin.PaymentMethodAdmin(model, admin_site)
+

The admin class for Consumptions.

+
+
+list_display = ('name', 'is_active', 'is_usable_in_cotisation', 'is_usable_in_reload', 'affect_balance')
+
+ +
+
+list_filter = ('is_active', 'is_usable_in_cotisation', 'is_usable_in_reload', 'affect_balance')
+
+ +
+
+media
+
+ +
+
+ordering = ('name',)
+
+ +
+
+search_fields = ('name',)
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/modules/django_tex.html b/docs/_build/html/modules/django_tex.html new file mode 100644 index 0000000..549ac33 --- /dev/null +++ b/docs/_build/html/modules/django_tex.html @@ -0,0 +1,338 @@ + + + + + + + + + + + Django_tex documentation — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Django_tex documentation

+
+

Core

+
+
+django_tex.core.compile_template_to_pdf(template_name, context)
+

Compile the source with render_template_with_context() and run_tex().

+
+ +
+
+django_tex.core.render_template_with_context(template_name, context)
+

Render the template

+
+ +
+
+django_tex.core.run_tex(source)
+

Copy the source to temp dict and run latex.

+
+ +
+
+

Engine

+
+
+class django_tex.engine.TeXEngine(params)
+
+
+app_dirname = 'templates'
+
+ +
+ +
+
+

Environment

+
+
+django_tex.environment.environment(**options)
+
+ +
+
+

Exceptions

+
+
+exception django_tex.exceptions.TexError(log, source)
+
+
+get_message()
+
+ +
+ +
+
+django_tex.exceptions.prettify_message(message)
+

Helper methods that removes consecutive whitespaces and newline characters

+
+ +
+
+django_tex.exceptions.tokenizer(code)
+
+ +
+
+

Filters

+
+
+django_tex.filters.do_linebreaks(value)
+
+ +
+
+

Models

+
+
+class django_tex.models.TeXTemplateFile(*args, **kwargs)
+
+
+class Meta
+
+
+abstract = False
+
+ +
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+title
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+django_tex.models.validate_template_path(name)
+
+ +
+
+

Views

+
+
+class django_tex.views.PDFResponse(content, filename=None)
+
+ +
+
+django_tex.views.render_to_pdf(request, template_name, context=None, filename=None)
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/modules/forms.html b/docs/_build/html/modules/forms.html new file mode 100644 index 0000000..d3ba44f --- /dev/null +++ b/docs/_build/html/modules/forms.html @@ -0,0 +1,1096 @@ + + + + + + + + + + + Forms documentation — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Forms documentation

+
+

Gestion app forms

+
+
+class gestion.forms.GenerateReleveForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

A form to generate a releve.

+
+
+base_fields = {'begin': <django.forms.fields.DateTimeField object>, 'end': <django.forms.fields.DateTimeField object>}
+
+ +
+
+declared_fields = {'begin': <django.forms.fields.DateTimeField object>, 'end': <django.forms.fields.DateTimeField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.GestionForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

A form for the manage() view.

+
+
+base_fields = {'client': <django.forms.models.ModelChoiceField object>, 'product': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'client': <django.forms.models.ModelChoiceField object>, 'product': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.KegForm(*args, **kwargs)
+

A form to create and edit a Keg.

+
+
+class Meta
+
+
+exclude = ('is_active',)
+
+ +
+
+model
+

alias of gestion.models.Keg

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>}
+
+ +
+ +
+
+base_fields = {'amount': <django.forms.fields.DecimalField object>, 'barcode': <django.forms.fields.CharField object>, 'capacity': <django.forms.fields.IntegerField object>, 'demi': <django.forms.models.ModelChoiceField object>, 'galopin': <django.forms.models.ModelChoiceField object>, 'name': <django.forms.fields.CharField object>, 'pinte': <django.forms.models.ModelChoiceField object>, 'stockHold': <django.forms.fields.IntegerField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.MenuForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

A form to create and edit a Menu.

+
+
+class Meta
+
+
+fields = '__all__'
+
+ +
+
+model
+

alias of gestion.models.Menu

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>}
+
+ +
+ +
+
+base_fields = {'amount': <django.forms.fields.DecimalField object>, 'articles': <django.forms.models.ModelMultipleChoiceField object>, 'barcode': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.PinteForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

A form to free Pints.

+
+
+base_fields = {'begin': <django.forms.fields.IntegerField object>, 'end': <django.forms.fields.IntegerField object>, 'ids': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {'begin': <django.forms.fields.IntegerField object>, 'end': <django.forms.fields.IntegerField object>, 'ids': <django.forms.fields.CharField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.ProductForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

A form to create and edit a Product.

+
+
+class Meta
+
+
+fields = '__all__'
+
+ +
+
+model
+

alias of gestion.models.Product

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>}
+
+ +
+ +
+
+base_fields = {'adherentRequired': <django.forms.fields.BooleanField object>, 'amount': <django.forms.fields.DecimalField object>, 'barcode': <django.forms.fields.CharField object>, 'category': <django.forms.fields.TypedChoiceField object>, 'deg': <django.forms.fields.DecimalField object>, 'is_active': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>, 'needQuantityButton': <django.forms.fields.BooleanField object>, 'showingMultiplier': <django.forms.fields.IntegerField object>, 'stockBar': <django.forms.fields.IntegerField object>, 'stockHold': <django.forms.fields.IntegerField object>, 'volume': <django.forms.fields.IntegerField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.RefundForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

A form to create a Refund.

+
+
+class Meta
+
+
+fields = ('customer', 'amount')
+
+ +
+
+model
+

alias of gestion.models.Refund

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>, 'customer': <dal_select2.widgets.ModelSelect2 object>}
+
+ +
+ +
+
+base_fields = {'amount': <django.forms.fields.DecimalField object>, 'customer': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.ReloadForm(*args, **kwargs)
+

A form to create a Reload.

+
+
+class Meta
+
+
+fields = ('customer', 'amount', 'PaymentMethod')
+
+ +
+
+model
+

alias of gestion.models.Reload

+
+ +
+
+widgets = {'amount': <class 'django.forms.widgets.TextInput'>, 'customer': <dal_select2.widgets.ModelSelect2 object>}
+
+ +
+ +
+
+base_fields = {'PaymentMethod': <django.forms.models.ModelChoiceField object>, 'amount': <django.forms.fields.DecimalField object>, 'customer': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.SearchMenuForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

A form to search a Menu.

+
+
+base_fields = {'menu': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'menu': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.SearchProductForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

A form to search a Product.

+
+
+base_fields = {'product': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'product': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.SelectActiveKegForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

A form to search an active Keg.

+
+
+base_fields = {'keg': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'keg': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class gestion.forms.SelectPositiveKegForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

A form to search a Keg with a positive stockhold.

+
+
+base_fields = {'keg': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'keg': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+

Users app forms

+
+
+class users.forms.CreateGroupForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to create a new group (django.contrib.auth.models.Group).

+
+
+class Meta
+
+
+fields = ('name',)
+
+ +
+
+model
+

alias of django.contrib.auth.models.Group

+
+ +
+ +
+
+base_fields = {'name': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.CreateUserForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to create a new user (django.contrib.auth.models.User).

+
+
+class Meta
+
+
+fields = ('username', 'last_name', 'first_name', 'email')
+
+ +
+
+model
+

alias of django.contrib.auth.models.User

+
+ +
+ +
+
+base_fields = {'email': <django.forms.fields.EmailField object>, 'first_name': <django.forms.fields.CharField object>, 'last_name': <django.forms.fields.CharField object>, 'school': <django.forms.models.ModelChoiceField object>, 'username': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {'school': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.EditGroupForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to edit a group (django.contrib.auth.models.Group).

+
+
+class Meta
+
+
+fields = '__all__'
+
+ +
+
+model
+

alias of django.contrib.auth.models.Group

+
+ +
+ +
+
+base_fields = {'name': <django.forms.fields.CharField object>, 'permissions': <django.forms.models.ModelMultipleChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.EditPasswordForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Form to change the password of a user (django.contrib.auth.models.User).

+
+
+base_fields = {'password': <django.forms.fields.CharField object>, 'password1': <django.forms.fields.CharField object>, 'password2': <django.forms.fields.CharField object>}
+
+ +
+
+clean_password2()
+

Verify if the two new passwords are identical

+
+ +
+
+declared_fields = {'password': <django.forms.fields.CharField object>, 'password1': <django.forms.fields.CharField object>, 'password2': <django.forms.fields.CharField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.ExportForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Form to export list of users (django.contrib.auth.models.User) to csv file

+
+
+FIELDS_CHOICES = (('username', "Nom d'utilisateur"), ('last_name', 'Nom'), ('first_name', 'Prénom'), ('email', 'Adresse mail'), ('school', 'École'), ('balance', 'Solde'), ('credit', 'Crédit'), ('debit', 'Débit'))
+
+ +
+
+QUERY_TYPE_CHOICES = (('all', 'Tous les comptes'), ('all_active', 'Tous les comptes actifs'), ('adherent', 'Tous les adhérents'), ('adherent_active', 'Tous les adhérents actifs'))
+
+ +
+
+base_fields = {'fields': <django.forms.fields.MultipleChoiceField object>, 'group': <django.forms.models.ModelChoiceField object>, 'query_type': <django.forms.fields.ChoiceField object>}
+
+ +
+
+declared_fields = {'fields': <django.forms.fields.MultipleChoiceField object>, 'group': <django.forms.models.ModelChoiceField object>, 'query_type': <django.forms.fields.ChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.GroupsEditForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to edit a user’s list of groups (django.contrib.auth.models.User and django.contrib.auth.models.Group).

+
+
+class Meta
+
+
+fields = ('groups',)
+
+ +
+
+model
+

alias of django.contrib.auth.models.User

+
+ +
+ +
+
+base_fields = {'groups': <django.forms.models.ModelMultipleChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.LoginForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Form to log in.

+
+
+base_fields = {'password': <django.forms.fields.CharField object>, 'username': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {'password': <django.forms.fields.CharField object>, 'username': <django.forms.fields.CharField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.SchoolForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to add and edit a users.models.School.

+
+
+class Meta
+
+
+fields = '__all__'
+
+ +
+
+model
+

alias of users.models.School

+
+ +
+ +
+
+base_fields = {'name': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.SelectNonAdminUserForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Form to select a user from all non-staff users (django.contrib.auth.models.User).

+
+
+base_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.SelectNonSuperUserForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Form to select a user from all non-superuser users (django.contrib.auth.models.User).

+
+
+base_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.SelectUserForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Form to select a user from all users (django.contrib.auth.models.User).

+
+
+base_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.addCotisationHistoryForm(*args, **kwargs)
+

Form to add a users.models.CotisationHistory to user (django.contrib.auth.models.User).

+
+
+class Meta
+
+
+fields = ('cotisation', 'paymentMethod')
+
+ +
+
+model
+

alias of users.models.CotisationHistory

+
+ +
+ +
+
+base_fields = {'cotisation': <django.forms.models.ModelChoiceField object>, 'paymentMethod': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.addWhiteListHistoryForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to add a users.models.WhiteListHistory to user (django.contrib.auth.models.User).

+
+
+class Meta
+
+
+fields = ('duration',)
+
+ +
+
+model
+

alias of users.models.WhiteListHistory

+
+ +
+ +
+
+base_fields = {'duration': <django.forms.fields.IntegerField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+

Preferences app forms

+
+
+class preferences.forms.CotisationForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to add and edit Cotisation.

+
+
+class Meta
+
+
+fields = '__all__'
+
+ +
+
+model
+

alias of preferences.models.Cotisation

+
+ +
+ +
+
+base_fields = {'amount': <django.forms.fields.DecimalField object>, 'duration': <django.forms.fields.IntegerField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class preferences.forms.GeneralPreferencesForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to edit the GeneralPreferences.

+
+
+class Meta
+
+
+fields = '__all__'
+
+ +
+
+model
+

alias of preferences.models.GeneralPreferences

+
+ +
+
+widgets = {'active_message': <django.forms.widgets.Textarea object>, 'brewer': <django.forms.widgets.TextInput object>, 'global_message': <django.forms.widgets.Textarea object>, 'grocer': <django.forms.widgets.TextInput object>, 'home_text': <django.forms.widgets.Textarea object>, 'president': <django.forms.widgets.TextInput object>, 'secretary': <django.forms.widgets.TextInput object>, 'treasurer': <django.forms.widgets.TextInput object>, 'vice_president': <django.forms.widgets.TextInput object>}
+
+ +
+ +
+
+base_fields = {'active_message': <django.forms.fields.CharField object>, 'automatic_logout_time': <django.forms.fields.IntegerField object>, 'brewer': <django.forms.fields.CharField object>, 'floating_buttons': <django.forms.fields.BooleanField object>, 'global_message': <django.forms.fields.CharField object>, 'grocer': <django.forms.fields.CharField object>, 'home_text': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'lost_pintes_allowed': <django.forms.fields.IntegerField object>, 'menu': <django.forms.fields.FileField object>, 'president': <django.forms.fields.CharField object>, 'rules': <django.forms.fields.FileField object>, 'secretary': <django.forms.fields.CharField object>, 'statutes': <django.forms.fields.FileField object>, 'treasurer': <django.forms.fields.CharField object>, 'use_pinte_monitoring': <django.forms.fields.BooleanField object>, 'vice_president': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class preferences.forms.PaymentMethodForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Form to add and edit PaymentMethod.

+
+
+class Meta
+
+
+fields = '__all__'
+
+ +
+
+model
+

alias of preferences.models.PaymentMethod

+
+ +
+ +
+
+base_fields = {'affect_balance': <django.forms.fields.BooleanField object>, 'icon': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'is_usable_in_cotisation': <django.forms.fields.BooleanField object>, 'is_usable_in_reload': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/modules/models.html b/docs/_build/html/modules/models.html new file mode 100644 index 0000000..e48639e --- /dev/null +++ b/docs/_build/html/modules/models.html @@ -0,0 +1,5503 @@ + + + + + + + + + + + Models documentation — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Models documentation

+
+

Gestion app models

+
+
+class gestion.models.Consumption(*args, **kwargs)
+

Stores total consumptions.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+customer
+

Client (django.contrib.auth.models.User).

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+product
+

A gestion.models.Product instance.

+
+ +
+
+product_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

The total number of gestion.models.Consumption.product consumed by the gestion.models.Consumption.consumer.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.ConsumptionHistory(*args, **kwargs)
+

Stores consumption history related to Product

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

Price of the purchase.

+
+ +
+
+coopeman
+

Coopeman (:class:django.contrib.auth.models.User`) who collected the money.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Client (django.contrib.auth.models.User).

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

Date of the purhcase.

+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentMethod
+

Payment Method of the product purchased.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+product
+

gestion.models.product purchased.

+
+ +
+
+product_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

Quantity of gestion.models.ConsumptionHistory.product taken.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.HistoricalConsumption(id, quantity, customer, product, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Consumption

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+product
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+product_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalConsumptionHistory(id, quantity, date, amount, customer, paymentMethod, product, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of ConsumptionHistory

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+product
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+product_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalKeg(id, name, stockHold, barcode, amount, capacity, is_active, pinte, demi, galopin, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+capacity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+demi
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+demi_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+galopin
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+galopin_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Keg

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+pinte
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+pinte_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+stockHold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class gestion.models.HistoricalKegHistory(id, openingDate, quantitySold, amountSold, closingDate, isCurrentKegHistory, keg, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amountSold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+closingDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_openingDate(*, field=<django.db.models.fields.DateTimeField: openingDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_openingDate(*, field=<django.db.models.fields.DateTimeField: openingDate>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of KegHistory

+
+ +
+
+isCurrentKegHistory
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+keg
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+keg_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+openingDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+quantitySold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalMenu(id, name, amount, barcode, is_active, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Menu

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalMenuHistory(id, quantity, date, amount, customer, paymentMethod, menu, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of MenuHistory

+
+ +
+
+menu
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+menu_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+quantity
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalPinte(id, last_update_date, current_owner, previous_owner, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+current_owner
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+current_owner_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_last_update_date(*, field=<django.db.models.fields.DateTimeField: last_update_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_last_update_date(*, field=<django.db.models.fields.DateTimeField: last_update_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Pinte

+
+ +
+
+last_update_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+previous_owner
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+previous_owner_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalProduct(id, name, amount, stockHold, stockBar, barcode, category, needQuantityButton, is_active, volume, deg, adherentRequired, showingMultiplier, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+adherentRequired
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+barcode
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+category
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+deg
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_category_display(*, field=<django.db.models.fields.CharField: category>)
+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Product

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+needQuantityButton
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+showingMultiplier
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+stockBar
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+stockHold
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+volume
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class gestion.models.HistoricalRefund(id, date, amount, customer, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Refund

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.HistoricalReload(id, amount, date, customer, PaymentMethod, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+PaymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+PaymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Reload

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class gestion.models.Keg(*args, **kwargs)
+

Stores a keg.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

The price of the keg.

+
+ +
+
+barcode
+

The barcode of the keg.

+
+ +
+
+capacity
+

The capacity, in liters, of the keg.

+
+ +
+
+demi
+

The related Product for demi.

+
+ +
+
+demi_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+galopin
+

The related Product for galopin.

+
+ +
+
+galopin_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

If True, will be displayed on manage() view

+
+ +
+
+keghistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+name
+

The name of the keg.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+pinte
+

The related Product for pint.

+
+ +
+
+pinte_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+stockHold
+

The number of this keg in the hold.

+
+ +
+ +
+
+class gestion.models.KegHistory(*args, **kwargs)
+

Stores a keg history, related to Keg.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amountSold
+

The quantity, in euros, sold.

+
+ +
+
+closingDate
+

The date when the keg was closed

+
+ +
+
+get_next_by_openingDate(*, field=<django.db.models.fields.DateTimeField: openingDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_openingDate(*, field=<django.db.models.fields.DateTimeField: openingDate>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+isCurrentKegHistory
+

If True, it corresponds to the current Keg history of Keg instance.

+
+ +
+
+keg
+

The Keg instance.

+
+ +
+
+keg_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+openingDate
+

The date when the keg was opened.

+
+ +
+
+quantitySold
+

The quantity, in liters, sold.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.Menu(*args, **kwargs)
+

Stores menus.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+adherent_required
+

Test if the menu contains a restricted Product

+
+ +
+
+amount
+

Price of the menu.

+
+ +
+
+articles
+

Stores Products contained in the menu

+
+ +
+
+barcode
+

Barcode of the menu.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

If True, the menu will be displayed on the gestion.views.manage() view

+
+ +
+
+menuhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+name
+

Name of the menu.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.MenuHistory(*args, **kwargs)
+

Stores MenuHistory related to Menu.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

Price of the purchase.

+
+ +
+
+coopeman
+

Coopeman (:class:django.contrib.auth.models.User`) who collected the money.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

Date of the purhcase.

+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+menu
+

gestion.models.Menu purchased.

+
+ +
+
+menu_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentMethod
+

Payment Method of the Menu purchased.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+quantity
+

Client (django.contrib.auth.models.User).

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.Pinte(*args, **kwargs)
+

Stores a physical pinte

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+current_owner
+

The current owner (django.contrib.auth.models.User).

+
+ +
+
+current_owner_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_last_update_date(*, field=<django.db.models.fields.DateTimeField: last_update_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_last_update_date(*, field=<django.db.models.fields.DateTimeField: last_update_date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+last_update_date
+

The last update date

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+previous_owner
+

The previous owner (django.contrib.auth.models.User).

+
+ +
+
+previous_owner_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.Product(*args, **kwargs)
+

Stores a product.

+
+
+BOTTLE = 'BT'
+
+ +
+
+D_PRESSION = 'DP'
+
+ +
+
+exception DoesNotExist
+
+ +
+
+FOOD = 'FO'
+
+ +
+
+G_PRESSION = 'GP'
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+PANINI = 'PA'
+
+ +
+
+P_PRESSION = 'PP'
+
+ +
+
+SOFT = 'SO'
+
+ +
+
+TYPEINPUT_CHOICES_CATEGORIE = (('PP', 'Pinte Pression'), ('DP', 'Demi Pression'), ('GP', 'Galopin pression'), ('BT', 'Bouteille'), ('SO', 'Soft'), ('FO', 'En-cas'), ('PA', 'Ingredients panini'))
+
+ +
+
+adherentRequired
+

If True, only adherents will be able to buy this product

+
+ +
+
+amount
+

The price of the product.

+
+ +
+
+barcode
+

The barcode of the product.

+
+ +
+
+category
+

The category of the product

+
+ +
+
+consumption_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+consumptionhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+deg
+

Degree of alcohol, if relevant

+
+ +
+
+futd
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+futg
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+futp
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+get_category_display(*, field=<django.db.models.fields.CharField: category>)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

If True, will be displayed on the gestion.views.manage() view.

+
+ +
+
+menu_set
+

Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation.

+

In the example:

+
class Pizza(Model):
+    toppings = ManyToManyField(Topping, related_name='pizzas')
+
+
+

Pizza.toppings and Topping.pizzas are ManyToManyDescriptor +instances.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+name
+

The name of the product.

+
+ +
+
+needQuantityButton
+

If True, a javascript quantity button will be displayed

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+ranking
+

Get the first 25 users with user_ranking()

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+showingMultiplier
+

On the graphs on users.views.profile() view, the number of total consumptions is divised by the showingMultiplier

+
+ +
+
+stockBar
+

Number of product at the bar.

+
+ +
+
+stockHold
+

Number of product in the hold.

+
+ +
+
+user_ranking(pk)
+

Return the user ranking for the product

+
+ +
+
+volume
+

The volume, if relevant, of the product

+
+ +
+ +
+
+class gestion.models.Refund(*args, **kwargs)
+

Stores refunds.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

Amount of the refund.

+
+ +
+
+coopeman
+

Coopeman (django.contrib.auth.models.User) who realized the refund.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Client (django.contrib.auth.models.User).

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

Date of the refund

+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class gestion.models.Reload(*args, **kwargs)
+

Stores reloads.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+PaymentMethod
+

Payment Method of the reload.

+
+ +
+
+PaymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+amount
+

Amount of the reload.

+
+ +
+
+coopeman
+

Coopeman (django.contrib.auth.models.User) who collected the reload.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+customer
+

Client (django.contrib.auth.models.User).

+
+ +
+
+customer_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+date
+

Date of the reload.

+
+ +
+
+get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+gestion.models.isDemi(id)
+
+ +
+
+gestion.models.isGalopin(id)
+
+ +
+
+gestion.models.isPinte(id)
+
+ +
+
+

Users app models

+
+
+class users.models.CotisationHistory(*args, **kwargs)
+

Stores cotisation histories, related to preferences.models.Cotisation.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

Price, in euros, of the cotisation.

+
+ +
+
+coopeman
+

User (django.contrib.auth.models.User) who registered the cotisation.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+cotisation
+

Cotisation related.

+
+ +
+
+cotisation_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

Duration, in days, of the cotisation.

+
+ +
+
+endDate
+

End date of the cotisation.

+
+ +
+
+get_next_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentDate
+

Date of the payment.

+
+ +
+
+paymentMethod
+

Payment method used.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+user
+

Client (django.contrib.auth.models.User).

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.HistoricalCotisationHistory(id, amount, duration, paymentDate, endDate, user, paymentMethod, cotisation, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+cotisation
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+cotisation_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+endDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of CotisationHistory

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.HistoricalProfile(id, credit, debit, cotisationEnd, user, school, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+cotisationEnd
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+credit
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+debit
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Profile

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+school
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+school_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.HistoricalSchool(id, name, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of School

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class users.models.HistoricalWhiteListHistory(id, paymentDate, endDate, duration, user, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+endDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of WhiteListHistory

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.Profile(*args, **kwargs)
+

Stores user profile.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+alcohol
+

Computes ingerated alcohol.

+
+ +
+
+balance
+

Computes client balance (gestion.models.Profile.credit - gestion.models.Profile.debit).

+
+ +
+
+cotisationEnd
+

Date of end of cotisation for the client

+
+ +
+
+credit
+

Amount of money, in euros, put on the account

+
+ +
+
+debit
+

Amount of money, in euros, spent form the account

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_adherent
+

Test if a client is adherent.

+
+ +
+
+nb_pintes
+

Return the number of Pinte(s) currently owned.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+positiveBalance()
+

Test if the client balance is positive or null.

+
+ +
+
+rank
+

Computes the rank (by gestion.models.Profile.debit) of the client.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+school
+

School of the client

+
+ +
+
+school_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+user
+

Client (django.contrib.auth.models.User).

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.School(*args, **kwargs)
+

Stores school.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

The name of the school

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+profile_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class users.models.WhiteListHistory(*args, **kwargs)
+

Stores whitelist history.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+coopeman
+

User (django.contrib.auth.models.User) who registered the cotisation.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

Duration, in days, of the whitelist

+
+ +
+
+endDate
+

End date of the whitelist.

+
+ +
+
+get_next_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentDate
+

Date of the beginning of the whitelist.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+user
+

Client (django.contrib.auth.models.User).

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+users.models.create_user_profile(sender, instance, created, **kwargs)
+

Create profile when user (django.contrib.auth.models.User) is created.

+
+ +
+
+users.models.save_user_profile(sender, instance, **kwargs)
+

Save profile when user (django.contrib.auth.models.User) is saved.

+
+ +
+
+users.models.str_user(self)
+

Rewrite str method for user (django.contrib.auth.models.User).

+
+ +
+
+

Preferences app models

+
+
+class preferences.models.Cotisation(*args, **kwargs)
+

Stores cotisations.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

Price of the cotisation.

+
+ +
+
+cotisationhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+duration
+

Duration (in days) of the cotisation

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class preferences.models.GeneralPreferences(*args, **kwargs)
+

Stores a unique line of general preferences

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+active_message
+

Message displayed on the inactive()

+
+ +
+
+automatic_logout_time
+

Duration after which the user is automatically disconnected if inactive

+
+ +
+
+brewer
+

The name of the brewer

+
+ +
+
+floating_buttons
+

If True, displays floating paymentButtons on the manage() view.

+
+ +
+
+global_message
+

List of messages, separated by a carriage return. One will be chosen randomly at each request on displayed in the header

+
+ +
+
+grocer
+

The name of the grocer

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+home_text
+

Text display on the home page

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

If True, the site will be accessible. If False, all the requests are redirect to inactive().

+
+ +
+
+lost_pintes_allowed
+

If > 0, a user will be blocked if he has losted more pints than the value

+
+ +
+
+menu
+

The file of the menu

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+president
+

The name of the president

+
+ +
+
+rules
+

The file of the internal rules

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+secretary
+

The name of the secretary

+
+ +
+
+statutes
+

The file of the statutes

+
+ +
+
+treasurer
+

The name of the treasurer

+
+ +
+
+use_pinte_monitoring
+

If True, alert will be displayed to allocate pints during order

+
+ +
+
+vice_president
+

The name of the vice-president

+
+ +
+ +
+
+class preferences.models.HistoricalCotisation(id, amount, duration, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of Cotisation

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class preferences.models.HistoricalGeneralPreferences(id, is_active, active_message, global_message, president, vice_president, treasurer, secretary, brewer, grocer, use_pinte_monitoring, lost_pintes_allowed, floating_buttons, home_text, automatic_logout_time, statutes, rules, menu, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+active_message
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+automatic_logout_time
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+brewer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+floating_buttons
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+global_message
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+grocer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+home_text
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of GeneralPreferences

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+lost_pintes_allowed
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+menu
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+president
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+rules
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+secretary
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+statutes
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+treasurer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+use_pinte_monitoring
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+vice_president
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class preferences.models.HistoricalPaymentMethod(id, name, is_active, is_usable_in_cotisation, is_usable_in_reload, affect_balance, icon, history_id, history_change_reason, history_date, history_user, history_type)
+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+affect_balance
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+icon
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias of PaymentMethod

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_usable_in_cotisation
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_usable_in_reload
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class preferences.models.PaymentMethod(*args, **kwargs)
+

Stores payment methods.

+
+
+exception DoesNotExist
+
+ +
+
+exception MultipleObjectsReturned
+
+ +
+
+affect_balance
+

If true, the PaymentMethod will decrease the user’s balance when used.

+
+ +
+
+consumptionhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+cotisationhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+icon
+

A font awesome icon (without the fa)

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

If False, the PaymentMethod can’t be use anywhere.

+
+ +
+
+is_usable_in_cotisation
+

If true, the PaymentMethod can be used to pay cotisation.

+
+ +
+
+is_usable_in_reload
+

If true, the PaymentMethod can be used to reload an user account.

+
+ +
+
+menuhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+name
+

The name of the PaymentMethod.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+reload_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/modules/utils.html b/docs/_build/html/modules/utils.html new file mode 100644 index 0000000..aa5ec7f --- /dev/null +++ b/docs/_build/html/modules/utils.html @@ -0,0 +1,329 @@ + + + + + + + + + + + Utils documentation — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Utils documentation

+
+

ACL

+
+
+coopeV3.acl.acl_and(*perms)
+

Test if a user has all perms

+
+ +
+
+coopeV3.acl.acl_or(*perms)
+

Test if a user has one of perms

+
+ +
+
+coopeV3.acl.active_required(view)
+

Test if the site is active (preferences.models.GeneralPreferences.is_active).

+
+ +
+
+coopeV3.acl.admin_required(view)
+

Test if the user is staff.

+
+ +
+
+coopeV3.acl.self_or_has_perm(pkName, perm)
+

Test if the user is the request user (pk) or has perm permission.

+
+ +
+
+coopeV3.acl.superuser_required(view)
+

Test if the user is superuser.

+
+ +
+
+

CoopeV3 templatetags

+
+
+coopeV3.templatetags.vip.brewer()
+

A tag which returns preferences.models.GeneralPreferences.brewer.

+
+ +
+
+coopeV3.templatetags.vip.global_message()
+

A tag which returns preferences.models.GeneralPreferences.global_message.

+
+ +
+
+coopeV3.templatetags.vip.grocer()
+

A tag which returns preferences.models.GeneralPreferences.grocer.

+
+ +
+
+coopeV3.templatetags.vip.logout_time()
+

A tag which returns preferences.models.GeneralPreferences.automatic_logout_time.

+
+ +
+
+coopeV3.templatetags.vip.menu()
+

A tag which returns preferences.models.GeneralPreferences.menu.

+
+ +
+
+coopeV3.templatetags.vip.president()
+

A tag which returns preferences.models.GeneralPreferences.president.

+
+ +
+
+coopeV3.templatetags.vip.rules()
+

A tag which returns preferences.models.GeneralPreferences.rules.

+
+ +
+
+coopeV3.templatetags.vip.secretary()
+

A tag which returns preferences.models.GeneralPreferences.secretary.

+
+ +
+
+coopeV3.templatetags.vip.statutes()
+

A tag which returns preferences.models.GeneralPreferences.statutes.

+
+ +
+
+coopeV3.templatetags.vip.treasurer()
+

A tag which returns preferences.models.GeneralPreferences.treasurer.

+
+ +
+
+coopeV3.templatetags.vip.vice_president()
+

A tag which returns preferences.models.GeneralPreferences.vice_president.

+
+ +
+
+

Users templatetags

+
+
+users.templatetags.users_extra.random_filter(a, b)
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/modules/views.html b/docs/_build/html/modules/views.html new file mode 100644 index 0000000..e748c2c --- /dev/null +++ b/docs/_build/html/modules/views.html @@ -0,0 +1,998 @@ + + + + + + + + + + + Views documentation — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Views documentation

+
+

Gestion app views

+
+
+class gestion.views.ActiveProductsAutocomplete(**kwargs)
+

Autocomplete view for active products.

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+class gestion.views.KegActiveAutocomplete(**kwargs)
+

Autocomplete view for active kegs.

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+class gestion.views.KegPositiveAutocomplete(**kwargs)
+

Autocomplete view for kegs with positive stockHold.

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+class gestion.views.MenusAutocomplete(**kwargs)
+

Autocomplete view for active menus.

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+class gestion.views.ProductsAutocomplete(**kwargs)
+

Autocomplete view for all products.

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+gestion.views.addKeg(request)
+

Displays a gestion.forms.KegForm to add a gestion.models.Keg.

+
+ +
+
+gestion.views.addMenu(request)
+

Display a gestion.forms.MenuForm to add a gestion.models.Menu.

+
+ +
+
+gestion.views.addProduct(request)
+

Displays a gestion.forms.ProductForm to add a product.

+
+ +
+
+gestion.views.add_pintes(request)
+

Displays a gestion.forms.PinteForm to add one or more gestion.models.Pinte.

+
+ +
+
+gestion.views.allocate(pinte_pk, user)
+

Allocate a gestion.models.Pinte to a user (django.contrib.auth.models.User) or release the pinte if user is None

+
+ +
+
+gestion.views.cancel_consumption(request, pk)
+

Delete a consumption history.

+
+
pk
+
The primary key of the consumption history to delete.
+
+
+ +
+
+gestion.views.cancel_menu(request, pk)
+

Delete a menu history.

+
+
pk
+
The primary key of the menu history to delete.
+
+
+ +
+
+gestion.views.cancel_reload(request, pk)
+

Delete a gestion.models.Reload.

+
+
pk
+
The primary key of the reload to delete.
+
+
+ +
+
+gestion.views.closeDirectKeg(request, pk)
+

Closes a class:gestion.models.Keg.

+
+
pk
+
The primary key of the class:gestion.models.Keg to open.
+
+
+ +
+
+gestion.views.closeKeg(request)
+

Displays a gestion.forms.SelectPositiveKegForm to open a gestion.models.Keg.

+
+ +
+
+gestion.views.editKeg(request, pk)
+

Displays a gestion.forms.KegForm to edit a gestion.models.Keg.

+
+
pk
+
The primary key of the gestion.models.Keg to edit.
+
+
+ +
+
+gestion.views.editProduct(request, pk)
+

Displays a gestion.forms.ProductForm to edit a product.

+
+
pk
+
The primary key of the the gestion.models.Product to edit.
+
+
+ +
+
+gestion.views.edit_menu(request, pk)
+

Displays a gestion.forms.MenuForm to edit a gestion.models.Menu.

+
+
pk
+
The primary key of the gestion.models.Menu to edit.
+
+
+ +
+
+gestion.views.gen_releve(request)
+

Displays a forms.gestion.GenerateReleveForm to generate a releve.

+
+ +
+
+gestion.views.getProduct(request, pk)
+

Get a gestion.models.Product by barcode and return it in JSON format.

+
+
pk
+
The primary key of the gestion.models.Product to get infos.
+
+
+ +
+
+gestion.views.get_menu(request, pk)
+

Get a gestion.models.Menu by pk and return it in JSON format.

+
+
pk
+
The primary key of the gestion.models.Menu.
+
+
+ +
+
+gestion.views.kegH(request, pk)
+

Display the history of requested gestion.models.Keg.

+
+ +
+
+gestion.views.kegsList(request)
+

Display the list of kegs.

+
+ +
+
+gestion.views.manage(request)
+

Displays the manage view.

+
+ +
+
+gestion.views.menus_list(request)
+

Display the list of menus.

+
+ +
+
+gestion.views.openDirectKeg(request, pk)
+

Opens a class:gestion.models.Keg.

+
+
pk
+
The primary key of the class:gestion.models.Keg to open.
+
+
+ +
+
+gestion.views.openKeg(request)
+

Displays a gestion.forms.SelectPositiveKegForm to open a gestion.models.Keg.

+
+ +
+
+gestion.views.order(request)
+

Processes the given order. The order is passed through POST.

+
+ +
+
+gestion.views.pintes_list(request)
+

Displays the list of gestion.models.Pinte

+
+ +
+
+gestion.views.pintes_user_list(request)
+

Displays the list of user, who have unreturned Pinte(s).

+
+ +
+
+gestion.views.productProfile(request, pk)
+

Displays the profile of a gestion.models.Product.

+
+
pk
+
The primary key of the gestion.models.Product to display profile.
+
+
+ +
+
+gestion.views.productsIndex(request)
+

Displays the products manage static page.

+
+ +
+
+gestion.views.productsList(request)
+

Display the list of products.

+
+ +
+
+gestion.views.ranking(request)
+

Displays the ranking page.

+
+ +
+
+gestion.views.refund(request)
+

Displays a Refund form.

+
+ +
+
+gestion.views.release(request, pinte_pk)
+

View to release a gestion.models.Pinte.

+
+
pinte_pk
+
The primary key of the gestion.models.Pinte to release.
+
+
+ +
+
+gestion.views.release_pintes(request)
+

Displays a gestion.forms.PinteForm to release one or more gestion.models.Pinte.

+
+ +
+
+gestion.views.reload(request)
+

Displays a Reload form.

+
+ +
+
+gestion.views.searchMenu(request)
+

Displays a gestion.forms.SearchMenuForm to search a gestion.models.Menu.

+
+ +
+
+gestion.views.searchProduct(request)
+

Displays a gestion.forms.SearchProduct to search a gestion.models.Product.

+
+ +
+
+gestion.views.switch_activate(request, pk)
+

Switch the active status of the requested gestion.models.Product.

+
+
pk
+
The primary key of the gestion.models.Product to display profile.
+
+
+ +
+
+gestion.views.switch_activate_menu(request, pk)
+

Switch active status of a gestion.models.Menu.

+
+ +
+
+

Users app views

+
+
+class users.views.ActiveUsersAutocomplete(**kwargs)
+

Autocomplete for active users (django.contrib.auth.models.User).

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+class users.views.AdherentAutocomplete(**kwargs)
+

Autocomplete for adherents (django.contrib.auth.models.User).

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+class users.views.AllUsersAutocomplete(**kwargs)
+

Autcomplete for all users (django.contrib.auth.models.User).

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+class users.views.NonAdminUserAutocomplete(**kwargs)
+

Autocomplete for non-admin users (django.contrib.auth.models.User).

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+class users.views.NonSuperUserAutocomplete(**kwargs)
+

Autocomplete for non-superuser users (django.contrib.auth.models.User).

+
+
+get_queryset()
+

Filter the queryset with GET[‘q’].

+
+ +
+ +
+
+users.views.addAdmin(request)
+

Displays a users.forms.SelectNonAdminUserForm to select a non admin user (django.contrib.auth.models.User) and add it to the admins.

+
+ +
+
+users.views.addCotisationHistory(request, pk)
+

Displays a users.forms.addCotisationHistoryForm to add a Cotisation History <users.models.CotisationHistory to the requested user (django.contrib.auth.models.User).

+
+
pk
+
The primary key of the user to add a cotisation history
+
+
+ +
+
+users.views.addSuperuser(request)
+

Displays a users.forms.SelectNonAdminUserForm to select a non superuser user (django.contrib.auth.models.User) and add it to the superusers.

+
+ +
+
+users.views.addWhiteListHistory(request, pk)
+

Displays a users.forms.addWhiteListHistoryForm to add a WhiteListHistory to the requested user (django.contrib.auth.models.User).

+
+ +
+
+users.views.adminsIndex(request)
+

Lists the staff (django.contrib.auth.models.User with is_staff True)

+
+ +
+
+users.views.allReloads(request, pk, page)
+

Display all the reloads of the requested user (django.contrib.auth.models.User).

+
+ +
+
+users.views.all_consumptions(request, pk, page)
+

Display all the consumptions <gestion.models.ConsumptionHistory> of the requested user (django.contrib.auth.models.User).

+
+ +
+
+users.views.all_menus(request, pk, page)
+

Display all the menus <gestion.models.MenuHistory> of the requested user (django.contrib.auth.models.User).

+
+ +
+
+users.views.createGroup(request)
+

Displays a CreateGroupForm to create a group (django.contrib.auth.models.Group).

+
+ +
+
+users.views.createSchool(request)
+

Displays SchoolForm to add a School.

+
+ +
+
+users.views.createUser(request)
+

Displays a CreateUserForm to create a user (django.contrib.auth.models.User).

+
+ +
+
+users.views.deleteCotisationHistory(request, pk)
+

Delete the requested CotisationHistory.

+
+
pk
+
The primary key of tthe CotisationHistory to delete.
+
+
+ +
+
+users.views.deleteGroup(request, pk)
+

Deletes the requested group (django.contrib.auth.models.Group).

+
+
pk
+
The primary key of the group to delete
+
+
+ +
+
+users.views.deleteSchool(request, pk)
+

Deletes a users.models.School.

+
+
pk
+
The primary key of the School to delete.
+
+
+ +
+
+users.views.editGroup(request, pk)
+

Displays a EditGroupForm to edit a group (django.contrib.auth.models.Group).

+
+
pk
+
The primary key of the group to edit.
+
+
+ +
+
+users.views.editGroups(request, pk)
+

Displays a users.form.GroupsEditForm to edit the groups of a user (django.contrib.auth.models.User).

+
+ +
+
+users.views.editPassword(request, pk)
+

Displays a users.form.EditPasswordForm to edit the password of a user (django.contrib.auth.models.User).

+
+ +
+
+users.views.editSchool(request, pk)
+

Displays SchoolForm to edit a School.

+
+
pk
+
The primary key of the school to edit.
+
+
+ +
+
+users.views.editUser(request, pk)
+

Displays a CreateUserForm to edit a user (django.contrib.auth.models.User).

+
+ +
+
+users.views.export_csv(request)
+

Displays a users.forms.ExportForm to export csv files of users.

+
+ +
+
+users.views.gen_user_infos(request, pk)
+

Generates a latex document include adhesion certificate and list of cotisations <users.models.CotisationHistory>.

+
+ +
+
+users.views.getUser(request, pk)
+

Get requested user (django.contrib.auth.models.User) and return username, balance and is_adherent in JSON format.

+
+
pk
+
The primary key of the user to get infos.
+
+
+ +
+
+users.views.groupProfile(request, pk)
+

Displays the profile of a group (django.contrib.auth.models.Group).

+
+ +
+
+users.views.groupsIndex(request)
+

Displays all the groups (django.contrib.auth.models.Group).

+
+ +
+
+users.views.index(request)
+

Display the index for user related actions.

+
+ +
+
+users.views.loginView(request)
+

Displays the users.forms.LoginForm.

+
+ +
+
+users.views.logoutView(request)
+

Logout the logged user (django.contrib.auth.models.User).

+
+ +
+
+users.views.profile(request, pk)
+

Displays the profile for the requested user (django.contrib.auth.models.User).

+
+
pk
+
The primary key of the user (django.contrib.auth.models.User) to display profile
+
+
+ +
+
+users.views.removeAdmin(request, pk)
+

Removes an user (django.contrib.auth.models.User) from staff.

+
+
pk
+
The primary key of the user (django.contrib.auth.models.User) to remove from staff
+
+
+ +
+
+users.views.removeRight(request, groupPk, permissionPk)
+

Removes a right from a given group (django.contrib.auth.models.Group).

+
+ +
+
+users.views.removeSuperuser(request, pk)
+

Removes a user (django.contrib.auth.models.User) from superusers.

+
+ +
+
+users.views.removeUser(request, groupPk, userPk)
+

Removes a user (django.contrib.auth.models.User) from a given group (django.contrib.auth.models.Group).

+
+ +
+
+users.views.resetPassword(request, pk)
+

Reset the password of a user (django.contrib.auth.models.User).

+
+ +
+
+users.views.schoolsIndex(request)
+

Lists the Schools.

+
+ +
+
+users.views.searchUser(request)
+

Displays a SelectUserForm to search a user (django.contrib.auth.models.User).

+
+ +
+
+users.views.superusersIndex(request)
+

Lists the superusers (django.contrib.auth.models.User with is_superuser True).

+
+ +
+
+users.views.switch_activate_user(request, pk)
+

Switch the active status of the requested user (django.contrib.auth.models.User).

+
+
pk
+
The primary key of the user to switch status
+
+
+ +
+
+users.views.usersIndex(request)
+

Display the list of all users (django.contrib.auth.models.User).

+
+ +
+
+

Preferences app views

+
+
+preferences.views.addCotisation(request)
+

View which displays a CotisationForm to create a Cotisation.

+
+ +
+
+preferences.views.addPaymentMethod(request)
+

View which displays a PaymentMethodForm to create a PaymentMethod.

+
+ +
+
+preferences.views.cotisationsIndex(request)
+

View which lists all the Cotisation.

+
+ +
+
+preferences.views.deleteCotisation(request, pk)
+

Delete a Cotisation.

+
+
pk
+
The primary key of the Cotisation to delete.
+
+
+ +
+
+preferences.views.deletePaymentMethod(request, pk)
+

Delete a PaymentMethod.

+
+
pk
+
The primary key of the PaymentMethod to delete.
+
+
+ +
+
+preferences.views.editCotisation(request, pk)
+

View which displays a CotisationForm to edit a Cotisation.

+
+
pk
+
The primary key of the Cotisation to edit.
+
+
+ +
+
+preferences.views.editPaymentMethod(request, pk)
+

View which displays a PaymentMethodForm to edit a PaymentMethod.

+
+
pk
+
The primary key of the PaymentMethod to edit.
+
+
+ +
+
+preferences.views.generalPreferences(request)
+

View which displays a GeneralPreferencesForm to edit the GeneralPreferences.

+
+ +
+
+preferences.views.get_config(request)
+

Load the GeneralPreferences and return it in json format (except for statutes, rules and menu)

+
+ +
+
+preferences.views.get_cotisation(request, pk)
+

Return the requested Cotisation in json format.

+
+
pk
+
The primary key of the requested Cotisation.
+
+
+ +
+
+preferences.views.inactive(request)
+

View which displays the inactive message (if the site is inactive).

+
+ +
+
+preferences.views.paymentMethodsIndex(request)
+

View which lists all the PaymentMethod.

+
+ +
+
+

coopeV3 app views

+
+
+coopeV3.views.coope_runner(request)
+

Just an easter egg

+
+ +
+
+coopeV3.views.home(request)
+

Redirect the user either to manage() view (if connected and staff) or homepage() view (if connected and not staff) or loginView() view (if not connected).

+
+ +
+
+coopeV3.views.homepage(request)
+

View which displays the home_text and active Kegs.

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv new file mode 100644 index 0000000..aa1e0c9 Binary files /dev/null and b/docs/_build/html/objects.inv differ diff --git a/docs/_build/html/preferences.html b/docs/_build/html/preferences.html new file mode 100644 index 0000000..066e631 --- /dev/null +++ b/docs/_build/html/preferences.html @@ -0,0 +1,1320 @@ + + + + + + + + preferences package — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

preferences package

+
+

Subpackages

+
+
+
+
+

Submodules

+
+
+

preferences.admin module

+
+
+class preferences.admin.CotisationAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('__str__', 'amount', 'duration')
+
+ +
+
+media
+
+ +
+
+ordering = ('-duration', '-amount')
+
+ +
+ +
+
+class preferences.admin.GeneralPreferencesAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('is_active', 'president', 'vice_president', 'treasurer', 'secretary', 'brewer', 'grocer', 'use_pinte_monitoring', 'lost_pintes_allowed', 'floating_buttons', 'automatic_logout_time')
+
+ +
+
+media
+
+ +
+ +
+
+class preferences.admin.PaymentMethodAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('name', 'is_active', 'is_usable_in_cotisation', 'is_usable_in_reload', 'affect_balance')
+
+ +
+
+list_filter = ('is_active', 'is_usable_in_cotisation', 'is_usable_in_reload', 'affect_balance')
+
+ +
+
+media
+
+ +
+
+ordering = ('name',)
+
+ +
+
+search_fields = ('name',)
+
+ +
+ +
+
+

preferences.apps module

+
+
+class preferences.apps.PreferencesConfig(app_name, app_module)
+

Bases : django.apps.config.AppConfig

+
+
+name = 'preferences'
+
+ +
+ +
+
+

preferences.forms module

+
+
+class preferences.forms.CotisationForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to add and edit cotisations

+
+
+class Meta
+

Bases : object

+
+
+fields = '__all__'
+
+ +
+
+model
+

alias de preferences.models.Cotisation

+
+ +
+ +
+
+base_fields = {'amount': <django.forms.fields.DecimalField object>, 'duration': <django.forms.fields.IntegerField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class preferences.forms.GeneralPreferencesForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to edit the general preferences

+
+
+class Meta
+

Bases : object

+
+
+fields = '__all__'
+
+ +
+
+model
+

alias de preferences.models.GeneralPreferences

+
+ +
+
+widgets = {'active_message': <django.forms.widgets.Textarea object>, 'brewer': <django.forms.widgets.TextInput object>, 'global_message': <django.forms.widgets.Textarea object>, 'grocer': <django.forms.widgets.TextInput object>, 'home_text': <django.forms.widgets.Textarea object>, 'president': <django.forms.widgets.TextInput object>, 'secretary': <django.forms.widgets.TextInput object>, 'treasurer': <django.forms.widgets.TextInput object>, 'vice_president': <django.forms.widgets.TextInput object>}
+
+ +
+ +
+
+base_fields = {'active_message': <django.forms.fields.CharField object>, 'automatic_logout_time': <django.forms.fields.IntegerField object>, 'brewer': <django.forms.fields.CharField object>, 'floating_buttons': <django.forms.fields.BooleanField object>, 'global_message': <django.forms.fields.CharField object>, 'grocer': <django.forms.fields.CharField object>, 'home_text': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'lost_pintes_allowed': <django.forms.fields.IntegerField object>, 'menu': <django.forms.fields.FileField object>, 'president': <django.forms.fields.CharField object>, 'rules': <django.forms.fields.FileField object>, 'secretary': <django.forms.fields.CharField object>, 'statutes': <django.forms.fields.FileField object>, 'treasurer': <django.forms.fields.CharField object>, 'use_pinte_monitoring': <django.forms.fields.BooleanField object>, 'vice_president': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class preferences.forms.PaymentMethodForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to add and edit payment methods

+
+
+class Meta
+

Bases : object

+
+
+fields = '__all__'
+
+ +
+
+model
+

alias de preferences.models.PaymentMethod

+
+ +
+ +
+
+base_fields = {'affect_balance': <django.forms.fields.BooleanField object>, 'icon': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'is_usable_in_cotisation': <django.forms.fields.BooleanField object>, 'is_usable_in_reload': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+

preferences.models module

+
+
+class preferences.models.Cotisation(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores cotisations

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+cotisationhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class preferences.models.GeneralPreferences(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores a unique line of general preferences

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+active_message
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+automatic_logout_time
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+brewer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+floating_buttons
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+global_message
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+grocer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+home_text
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+lost_pintes_allowed
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+menu
+

The descriptor for the file attribute on the model instance. Return a +FieldFile when accessed so you can write code like:

+
>>> from myapp.models import MyModel
+>>> instance = MyModel.objects.get(pk=1)
+>>> instance.file.size
+
+
+

Assign a file object on assignment so you can do:

+
>>> with open('/path/to/hello.world', 'r') as f:
+...     instance.file = File(f)
+
+
+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+president
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+rules
+

The descriptor for the file attribute on the model instance. Return a +FieldFile when accessed so you can write code like:

+
>>> from myapp.models import MyModel
+>>> instance = MyModel.objects.get(pk=1)
+>>> instance.file.size
+
+
+

Assign a file object on assignment so you can do:

+
>>> with open('/path/to/hello.world', 'r') as f:
+...     instance.file = File(f)
+
+
+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+secretary
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+statutes
+

The descriptor for the file attribute on the model instance. Return a +FieldFile when accessed so you can write code like:

+
>>> from myapp.models import MyModel
+>>> instance = MyModel.objects.get(pk=1)
+>>> instance.file.size
+
+
+

Assign a file object on assignment so you can do:

+
>>> with open('/path/to/hello.world', 'r') as f:
+...     instance.file = File(f)
+
+
+
+ +
+
+treasurer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+use_pinte_monitoring
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+vice_president
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class preferences.models.HistoricalCotisation(id, amount, duration, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Cotisation

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class preferences.models.HistoricalGeneralPreferences(id, is_active, active_message, global_message, president, vice_president, treasurer, secretary, brewer, grocer, use_pinte_monitoring, lost_pintes_allowed, floating_buttons, home_text, automatic_logout_time, statutes, rules, menu, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+active_message
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+automatic_logout_time
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+brewer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+floating_buttons
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+global_message
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+grocer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+home_text
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de GeneralPreferences

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+lost_pintes_allowed
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+menu
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+president
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+rules
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+secretary
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+statutes
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+treasurer
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+use_pinte_monitoring
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+vice_president
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class preferences.models.HistoricalPaymentMethod(id, name, is_active, is_usable_in_cotisation, is_usable_in_reload, affect_balance, icon, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+affect_balance
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+icon
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de PaymentMethod

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_usable_in_cotisation
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_usable_in_reload
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class preferences.models.PaymentMethod(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores payment methods

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+affect_balance
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+consumptionhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+cotisationhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+icon
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_active
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_usable_in_cotisation
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_usable_in_reload
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+menuhistory_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+reload_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+

preferences.tests module

+
+
+

preferences.urls module

+
+
+preferences.urls.path(route, view, kwargs=None, name=None, *, Pattern=<class 'django.urls.resolvers.RoutePattern'>)
+
+ +
+
+

preferences.views module

+
+
+preferences.views.get_config(request)
+

Load the config and return it in a json format

+
+ +
+
+preferences.views.inactive(request)
+

Displays inactive view

+
+ +
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/preferences.migrations.html b/docs/_build/html/preferences.migrations.html new file mode 100644 index 0000000..68e418b --- /dev/null +++ b/docs/_build/html/preferences.migrations.html @@ -0,0 +1,287 @@ + + + + + + + + preferences.migrations package — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

preferences.migrations package

+
+

Submodules

+
+
+

preferences.migrations.0001_initial module

+
+
+class preferences.migrations.0001_initial.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('auth', '__first__')]
+
+ +
+
+initial = True
+
+ +
+
+operations = [<CreateModel name='Cotisation', fields=[('id', <django.db.models.fields.AutoField>), ('amount', <django.db.models.fields.DecimalField>), ('duration', <django.db.models.fields.PositiveIntegerField>)]>, <CreateModel name='GeneralPreferences', fields=[('id', <django.db.models.fields.AutoField>), ('is_active', <django.db.models.fields.BooleanField>), ('active_message', <django.db.models.fields.TextField>), ('global_message', <django.db.models.fields.TextField>), ('president', <django.db.models.fields.CharField>), ('vice_president', <django.db.models.fields.CharField>), ('treasurer', <django.db.models.fields.CharField>), ('secretary', <django.db.models.fields.CharField>), ('brewer', <django.db.models.fields.CharField>), ('grocer', <django.db.models.fields.CharField>)]>, <CreateModel name='HistoricalCotisation', fields=[('id', <django.db.models.fields.IntegerField>), ('amount', <django.db.models.fields.DecimalField>), ('duration', <django.db.models.fields.PositiveIntegerField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical cotisation', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalGeneralPreferences', fields=[('id', <django.db.models.fields.IntegerField>), ('is_active', <django.db.models.fields.BooleanField>), ('active_message', <django.db.models.fields.TextField>), ('global_message', <django.db.models.fields.TextField>), ('president', <django.db.models.fields.CharField>), ('vice_president', <django.db.models.fields.CharField>), ('treasurer', <django.db.models.fields.CharField>), ('secretary', <django.db.models.fields.CharField>), ('brewer', <django.db.models.fields.CharField>), ('grocer', <django.db.models.fields.CharField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical general preferences', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalPaymentMethod', fields=[('id', <django.db.models.fields.IntegerField>), ('name', <django.db.models.fields.CharField>), ('is_active', <django.db.models.fields.BooleanField>), ('is_usable_in_cotisation', <django.db.models.fields.BooleanField>), ('is_usable_in_reload', <django.db.models.fields.BooleanField>), ('affect_balance', <django.db.models.fields.BooleanField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical payment method', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='PaymentMethod', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('is_active', <django.db.models.fields.BooleanField>), ('is_usable_in_cotisation', <django.db.models.fields.BooleanField>), ('is_usable_in_reload', <django.db.models.fields.BooleanField>), ('affect_balance', <django.db.models.fields.BooleanField>)]>]
+
+ +
+ +
+
+

preferences.migrations.0002_auto_20181221_2151 module

+
+
+class preferences.migrations.0002_auto_20181221_2151.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0001_initial')]
+
+ +
+
+operations = [<AddField model_name='generalpreferences', name='use_pinte_monitoring', field=<django.db.models.fields.BooleanField>>, <AddField model_name='historicalgeneralpreferences', name='use_pinte_monitoring', field=<django.db.models.fields.BooleanField>>]
+
+ +
+ +
+
+

preferences.migrations.0003_auto_20181223_1440 module

+
+
+class preferences.migrations.0003_auto_20181223_1440.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0002_auto_20181221_2151')]
+
+ +
+
+operations = [<AddField model_name='generalpreferences', name='lost_pintes_allowed', field=<django.db.models.fields.PositiveIntegerField>>, <AddField model_name='historicalgeneralpreferences', name='lost_pintes_allowed', field=<django.db.models.fields.PositiveIntegerField>>]
+
+ +
+ +
+
+

preferences.migrations.0004_auto_20190106_0452 module

+
+
+class preferences.migrations.0004_auto_20190106_0452.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0003_auto_20181223_1440')]
+
+ +
+
+operations = [<AddField model_name='historicalpaymentmethod', name='icon', field=<django.db.models.fields.CharField>>, <AddField model_name='paymentmethod', name='icon', field=<django.db.models.fields.CharField>>]
+
+ +
+ +
+
+

preferences.migrations.0005_auto_20190106_0513 module

+
+
+class preferences.migrations.0005_auto_20190106_0513.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0004_auto_20190106_0452')]
+
+ +
+
+operations = [<AddField model_name='generalpreferences', name='floating_buttons', field=<django.db.models.fields.BooleanField>>, <AddField model_name='historicalgeneralpreferences', name='floating_buttons', field=<django.db.models.fields.BooleanField>>]
+
+ +
+ +
+
+

preferences.migrations.0006_auto_20190119_2326 module

+
+
+class preferences.migrations.0006_auto_20190119_2326.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0005_auto_20190106_0513')]
+
+ +
+
+operations = [<AddField model_name='generalpreferences', name='home_text', field=<django.db.models.fields.TextField>>, <AddField model_name='historicalgeneralpreferences', name='home_text', field=<django.db.models.fields.TextField>>]
+
+ +
+ +
+
+

preferences.migrations.0007_auto_20190120_1208 module

+
+
+class preferences.migrations.0007_auto_20190120_1208.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0006_auto_20190119_2326')]
+
+ +
+
+operations = [<AddField model_name='generalpreferences', name='automatic_logout_time', field=<django.db.models.fields.PositiveIntegerField>>, <AddField model_name='historicalgeneralpreferences', name='automatic_logout_time', field=<django.db.models.fields.PositiveIntegerField>>]
+
+ +
+ +
+
+

preferences.migrations.0008_auto_20190218_1802 module

+
+
+class preferences.migrations.0008_auto_20190218_1802.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0007_auto_20190120_1208')]
+
+ +
+
+operations = [<AddField model_name='generalpreferences', name='menu', field=<django.db.models.fields.files.FileField>>, <AddField model_name='generalpreferences', name='rules', field=<django.db.models.fields.files.FileField>>, <AddField model_name='generalpreferences', name='statutes', field=<django.db.models.fields.files.FileField>>, <AddField model_name='historicalgeneralpreferences', name='menu', field=<django.db.models.fields.TextField>>, <AddField model_name='historicalgeneralpreferences', name='rules', field=<django.db.models.fields.TextField>>, <AddField model_name='historicalgeneralpreferences', name='statutes', field=<django.db.models.fields.TextField>>]
+
+ +
+ +
+
+

preferences.migrations.0009_auto_20190227_0859 module

+
+
+class preferences.migrations.0009_auto_20190227_0859.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0008_auto_20190218_1802')]
+
+ +
+
+operations = [<AlterModelOptions name='generalpreferences', options={'verbose_name': 'Préférences générales', 'verbose_name_plural': 'Préférences générales'}>, <AlterModelOptions name='historicalgeneralpreferences', options={'get_latest_by': 'history_date', 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Préférences générales'}>, <AlterModelOptions name='historicalpaymentmethod', options={'get_latest_by': 'history_date', 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Moyen de paiement'}>, <AlterModelOptions name='paymentmethod', options={'verbose_name': 'Moyen de paiement', 'verbose_name_plural': 'Moyens de paiement'}>, <AlterField model_name='generalpreferences', name='active_message', field=<django.db.models.fields.TextField>>, <AlterField model_name='generalpreferences', name='automatic_logout_time', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='generalpreferences', name='brewer', field=<django.db.models.fields.CharField>>, <AlterField model_name='generalpreferences', name='floating_buttons', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='generalpreferences', name='global_message', field=<django.db.models.fields.TextField>>, <AlterField model_name='generalpreferences', name='grocer', field=<django.db.models.fields.CharField>>, <AlterField model_name='generalpreferences', name='home_text', field=<django.db.models.fields.TextField>>, <AlterField model_name='generalpreferences', name='is_active', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='generalpreferences', name='lost_pintes_allowed', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='generalpreferences', name='menu', field=<django.db.models.fields.files.FileField>>, <AlterField model_name='generalpreferences', name='president', field=<django.db.models.fields.CharField>>, <AlterField model_name='generalpreferences', name='rules', field=<django.db.models.fields.files.FileField>>, <AlterField model_name='generalpreferences', name='secretary', field=<django.db.models.fields.CharField>>, <AlterField model_name='generalpreferences', name='statutes', field=<django.db.models.fields.files.FileField>>, <AlterField model_name='generalpreferences', name='treasurer', field=<django.db.models.fields.CharField>>, <AlterField model_name='generalpreferences', name='use_pinte_monitoring', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='generalpreferences', name='vice_president', field=<django.db.models.fields.CharField>>, <AlterField model_name='historicalgeneralpreferences', name='active_message', field=<django.db.models.fields.TextField>>, <AlterField model_name='historicalgeneralpreferences', name='automatic_logout_time', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='historicalgeneralpreferences', name='brewer', field=<django.db.models.fields.CharField>>, <AlterField model_name='historicalgeneralpreferences', name='floating_buttons', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='historicalgeneralpreferences', name='global_message', field=<django.db.models.fields.TextField>>, <AlterField model_name='historicalgeneralpreferences', name='grocer', field=<django.db.models.fields.CharField>>, <AlterField model_name='historicalgeneralpreferences', name='home_text', field=<django.db.models.fields.TextField>>, <AlterField model_name='historicalgeneralpreferences', name='is_active', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='historicalgeneralpreferences', name='lost_pintes_allowed', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='historicalgeneralpreferences', name='menu', field=<django.db.models.fields.TextField>>, <AlterField model_name='historicalgeneralpreferences', name='president', field=<django.db.models.fields.CharField>>, <AlterField model_name='historicalgeneralpreferences', name='rules', field=<django.db.models.fields.TextField>>, <AlterField model_name='historicalgeneralpreferences', name='secretary', field=<django.db.models.fields.CharField>>, <AlterField model_name='historicalgeneralpreferences', name='statutes', field=<django.db.models.fields.TextField>>, <AlterField model_name='historicalgeneralpreferences', name='treasurer', field=<django.db.models.fields.CharField>>, <AlterField model_name='historicalgeneralpreferences', name='use_pinte_monitoring', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='historicalgeneralpreferences', name='vice_president', field=<django.db.models.fields.CharField>>]
+
+ +
+ +
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html new file mode 100644 index 0000000..366a458 --- /dev/null +++ b/docs/_build/html/py-modindex.html @@ -0,0 +1,366 @@ + + + + + + + + + + + Python Module Index — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Python Module Index
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

Python Module Index

+ +
+ c | + d | + g | + p | + u +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ c
+ coopeV3 +
    + coopeV3.acl +
    + coopeV3.templatetags.vip +
    + coopeV3.views +
 
+ d
+ django_tex +
    + django_tex.core +
    + django_tex.engine +
    + django_tex.environment +
    + django_tex.exceptions +
    + django_tex.filters +
    + django_tex.models +
    + django_tex.views +
 
+ g
+ gestion +
    + gestion.admin +
    + gestion.forms +
    + gestion.models +
    + gestion.views +
 
+ p
+ preferences +
    + preferences.admin +
    + preferences.forms +
    + preferences.models +
    + preferences.views +
 
+ u
+ users +
    + users.admin +
    + users.forms +
    + users.models +
    + users.templatetags.users_extra +
    + users.views +
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html new file mode 100644 index 0000000..c0740dc --- /dev/null +++ b/docs/_build/html/search.html @@ -0,0 +1,212 @@ + + + + + + + + + + + Search — CoopeV3 3.4.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Search
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + + + +
+ +
+ +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js new file mode 100644 index 0000000..5b27b51 --- /dev/null +++ b/docs/_build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["index","modules/admin","modules/django_tex","modules/forms","modules/models","modules/utils","modules/views"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":1,sphinx:55},filenames:["index.rst","modules/admin.rst","modules/django_tex.rst","modules/forms.rst","modules/models.rst","modules/utils.rst","modules/views.rst"],objects:{"coopeV3.acl":{acl_and:[5,1,1,""],acl_or:[5,1,1,""],active_required:[5,1,1,""],admin_required:[5,1,1,""],self_or_has_perm:[5,1,1,""],superuser_required:[5,1,1,""]},"coopeV3.templatetags":{vip:[5,0,0,"-"]},"coopeV3.templatetags.vip":{brewer:[5,1,1,""],global_message:[5,1,1,""],grocer:[5,1,1,""],logout_time:[5,1,1,""],menu:[5,1,1,""],president:[5,1,1,""],rules:[5,1,1,""],secretary:[5,1,1,""],statutes:[5,1,1,""],treasurer:[5,1,1,""],vice_president:[5,1,1,""]},"coopeV3.views":{coope_runner:[6,1,1,""],home:[6,1,1,""],homepage:[6,1,1,""]},"django_tex.core":{compile_template_to_pdf:[2,1,1,""],render_template_with_context:[2,1,1,""],run_tex:[2,1,1,""]},"django_tex.engine":{TeXEngine:[2,2,1,""]},"django_tex.engine.TeXEngine":{app_dirname:[2,3,1,""]},"django_tex.environment":{environment:[2,1,1,""]},"django_tex.exceptions":{TexError:[2,4,1,""],prettify_message:[2,1,1,""],tokenizer:[2,1,1,""]},"django_tex.exceptions.TexError":{get_message:[2,5,1,""]},"django_tex.filters":{do_linebreaks:[2,1,1,""]},"django_tex.models":{TeXTemplateFile:[2,2,1,""],validate_template_path:[2,1,1,""]},"django_tex.models.TeXTemplateFile":{Meta:[2,2,1,""],name:[2,3,1,""],title:[2,3,1,""]},"django_tex.models.TeXTemplateFile.Meta":{"abstract":[2,3,1,""]},"django_tex.views":{PDFResponse:[2,2,1,""],render_to_pdf:[2,1,1,""]},"gestion.admin":{ConsumptionAdmin:[1,2,1,""],ConsumptionHistoryAdmin:[1,2,1,""],KegAdmin:[1,2,1,""],KegHistoryAdmin:[1,2,1,""],MenuAdmin:[1,2,1,""],MenuHistoryAdmin:[1,2,1,""],ProductAdmin:[1,2,1,""],RefundAdmin:[1,2,1,""],ReloadAdmin:[1,2,1,""]},"gestion.admin.ConsumptionAdmin":{list_display:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.admin.ConsumptionHistoryAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.admin.KegAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.admin.KegHistoryAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.admin.MenuAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.admin.MenuHistoryAdmin":{list_display:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.admin.ProductAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.admin.RefundAdmin":{list_display:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.admin.ReloadAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"gestion.forms":{GenerateReleveForm:[3,2,1,""],GestionForm:[3,2,1,""],KegForm:[3,2,1,""],MenuForm:[3,2,1,""],PinteForm:[3,2,1,""],ProductForm:[3,2,1,""],RefundForm:[3,2,1,""],ReloadForm:[3,2,1,""],SearchMenuForm:[3,2,1,""],SearchProductForm:[3,2,1,""],SelectActiveKegForm:[3,2,1,""],SelectPositiveKegForm:[3,2,1,""]},"gestion.forms.GenerateReleveForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.GestionForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.KegForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.KegForm.Meta":{exclude:[3,3,1,""],model:[3,3,1,""],widgets:[3,3,1,""]},"gestion.forms.MenuForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.MenuForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""],widgets:[3,3,1,""]},"gestion.forms.PinteForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.ProductForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.ProductForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""],widgets:[3,3,1,""]},"gestion.forms.RefundForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.RefundForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""],widgets:[3,3,1,""]},"gestion.forms.ReloadForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.ReloadForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""],widgets:[3,3,1,""]},"gestion.forms.SearchMenuForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.SearchProductForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.SelectActiveKegForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.forms.SelectPositiveKegForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"gestion.models":{Consumption:[4,2,1,""],ConsumptionHistory:[4,2,1,""],HistoricalConsumption:[4,2,1,""],HistoricalConsumptionHistory:[4,2,1,""],HistoricalKeg:[4,2,1,""],HistoricalKegHistory:[4,2,1,""],HistoricalMenu:[4,2,1,""],HistoricalMenuHistory:[4,2,1,""],HistoricalPinte:[4,2,1,""],HistoricalProduct:[4,2,1,""],HistoricalRefund:[4,2,1,""],HistoricalReload:[4,2,1,""],Keg:[4,2,1,""],KegHistory:[4,2,1,""],Menu:[4,2,1,""],MenuHistory:[4,2,1,""],Pinte:[4,2,1,""],Product:[4,2,1,""],Refund:[4,2,1,""],Reload:[4,2,1,""],isDemi:[4,1,1,""],isGalopin:[4,1,1,""],isPinte:[4,1,1,""]},"gestion.models.Consumption":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],history:[4,3,1,""],id:[4,3,1,""],objects:[4,3,1,""],product:[4,3,1,""],product_id:[4,3,1,""],quantity:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"gestion.models.ConsumptionHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],date:[4,3,1,""],get_next_by_date:[4,5,1,""],get_previous_by_date:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],objects:[4,3,1,""],paymentMethod:[4,3,1,""],paymentMethod_id:[4,3,1,""],product:[4,3,1,""],product_id:[4,3,1,""],quantity:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"gestion.models.HistoricalConsumption":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],product:[4,3,1,""],product_id:[4,3,1,""],quantity:[4,3,1,""],revert_url:[4,5,1,""]},"gestion.models.HistoricalConsumptionHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],date:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_date:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],paymentMethod:[4,3,1,""],paymentMethod_id:[4,3,1,""],prev_record:[4,3,1,""],product:[4,3,1,""],product_id:[4,3,1,""],quantity:[4,3,1,""],revert_url:[4,5,1,""]},"gestion.models.HistoricalKeg":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],barcode:[4,3,1,""],capacity:[4,3,1,""],demi:[4,3,1,""],demi_id:[4,3,1,""],galopin:[4,3,1,""],galopin_id:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],is_active:[4,3,1,""],name:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],pinte:[4,3,1,""],pinte_id:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""],stockHold:[4,3,1,""]},"gestion.models.HistoricalKegHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amountSold:[4,3,1,""],closingDate:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_next_by_openingDate:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],get_previous_by_openingDate:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],isCurrentKegHistory:[4,3,1,""],keg:[4,3,1,""],keg_id:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],openingDate:[4,3,1,""],prev_record:[4,3,1,""],quantitySold:[4,3,1,""],revert_url:[4,5,1,""]},"gestion.models.HistoricalMenu":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],barcode:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],is_active:[4,3,1,""],name:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""]},"gestion.models.HistoricalMenuHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],date:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_date:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],menu:[4,3,1,""],menu_id:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],paymentMethod:[4,3,1,""],paymentMethod_id:[4,3,1,""],prev_record:[4,3,1,""],quantity:[4,3,1,""],revert_url:[4,5,1,""]},"gestion.models.HistoricalPinte":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],current_owner:[4,3,1,""],current_owner_id:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_next_by_last_update_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],get_previous_by_last_update_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],last_update_date:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],previous_owner:[4,3,1,""],previous_owner_id:[4,3,1,""],revert_url:[4,5,1,""]},"gestion.models.HistoricalProduct":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],adherentRequired:[4,3,1,""],amount:[4,3,1,""],barcode:[4,3,1,""],category:[4,3,1,""],deg:[4,3,1,""],get_category_display:[4,5,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],is_active:[4,3,1,""],name:[4,3,1,""],needQuantityButton:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""],showingMultiplier:[4,3,1,""],stockBar:[4,3,1,""],stockHold:[4,3,1,""],volume:[4,3,1,""]},"gestion.models.HistoricalRefund":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],date:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_date:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""]},"gestion.models.HistoricalReload":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],PaymentMethod:[4,3,1,""],PaymentMethod_id:[4,3,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],date:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_date:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""]},"gestion.models.Keg":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],barcode:[4,3,1,""],capacity:[4,3,1,""],demi:[4,3,1,""],demi_id:[4,3,1,""],galopin:[4,3,1,""],galopin_id:[4,3,1,""],history:[4,3,1,""],id:[4,3,1,""],is_active:[4,3,1,""],keghistory_set:[4,3,1,""],name:[4,3,1,""],objects:[4,3,1,""],pinte:[4,3,1,""],pinte_id:[4,3,1,""],save_without_historical_record:[4,5,1,""],stockHold:[4,3,1,""]},"gestion.models.KegHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amountSold:[4,3,1,""],closingDate:[4,3,1,""],get_next_by_openingDate:[4,5,1,""],get_previous_by_openingDate:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],isCurrentKegHistory:[4,3,1,""],keg:[4,3,1,""],keg_id:[4,3,1,""],objects:[4,3,1,""],openingDate:[4,3,1,""],quantitySold:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"gestion.models.Menu":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],adherent_required:[4,3,1,""],amount:[4,3,1,""],articles:[4,3,1,""],barcode:[4,3,1,""],history:[4,3,1,""],id:[4,3,1,""],is_active:[4,3,1,""],menuhistory_set:[4,3,1,""],name:[4,3,1,""],objects:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"gestion.models.MenuHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],date:[4,3,1,""],get_next_by_date:[4,5,1,""],get_previous_by_date:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],menu:[4,3,1,""],menu_id:[4,3,1,""],objects:[4,3,1,""],paymentMethod:[4,3,1,""],paymentMethod_id:[4,3,1,""],quantity:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"gestion.models.Pinte":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],current_owner:[4,3,1,""],current_owner_id:[4,3,1,""],get_next_by_last_update_date:[4,5,1,""],get_previous_by_last_update_date:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],last_update_date:[4,3,1,""],objects:[4,3,1,""],previous_owner:[4,3,1,""],previous_owner_id:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"gestion.models.Product":{BOTTLE:[4,3,1,""],D_PRESSION:[4,3,1,""],DoesNotExist:[4,4,1,""],FOOD:[4,3,1,""],G_PRESSION:[4,3,1,""],MultipleObjectsReturned:[4,4,1,""],PANINI:[4,3,1,""],P_PRESSION:[4,3,1,""],SOFT:[4,3,1,""],TYPEINPUT_CHOICES_CATEGORIE:[4,3,1,""],adherentRequired:[4,3,1,""],amount:[4,3,1,""],barcode:[4,3,1,""],category:[4,3,1,""],consumption_set:[4,3,1,""],consumptionhistory_set:[4,3,1,""],deg:[4,3,1,""],futd:[4,3,1,""],futg:[4,3,1,""],futp:[4,3,1,""],get_category_display:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],is_active:[4,3,1,""],menu_set:[4,3,1,""],name:[4,3,1,""],needQuantityButton:[4,3,1,""],objects:[4,3,1,""],ranking:[4,3,1,""],save_without_historical_record:[4,5,1,""],showingMultiplier:[4,3,1,""],stockBar:[4,3,1,""],stockHold:[4,3,1,""],user_ranking:[4,5,1,""],volume:[4,3,1,""]},"gestion.models.Refund":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],date:[4,3,1,""],get_next_by_date:[4,5,1,""],get_previous_by_date:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],objects:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"gestion.models.Reload":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],PaymentMethod:[4,3,1,""],PaymentMethod_id:[4,3,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],customer:[4,3,1,""],customer_id:[4,3,1,""],date:[4,3,1,""],get_next_by_date:[4,5,1,""],get_previous_by_date:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],objects:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"gestion.views":{ActiveProductsAutocomplete:[6,2,1,""],KegActiveAutocomplete:[6,2,1,""],KegPositiveAutocomplete:[6,2,1,""],MenusAutocomplete:[6,2,1,""],ProductsAutocomplete:[6,2,1,""],addKeg:[6,1,1,""],addMenu:[6,1,1,""],addProduct:[6,1,1,""],add_pintes:[6,1,1,""],allocate:[6,1,1,""],cancel_consumption:[6,1,1,""],cancel_menu:[6,1,1,""],cancel_reload:[6,1,1,""],closeDirectKeg:[6,1,1,""],closeKeg:[6,1,1,""],editKeg:[6,1,1,""],editProduct:[6,1,1,""],edit_menu:[6,1,1,""],gen_releve:[6,1,1,""],getProduct:[6,1,1,""],get_menu:[6,1,1,""],kegH:[6,1,1,""],kegsList:[6,1,1,""],manage:[6,1,1,""],menus_list:[6,1,1,""],openDirectKeg:[6,1,1,""],openKeg:[6,1,1,""],order:[6,1,1,""],pintes_list:[6,1,1,""],pintes_user_list:[6,1,1,""],productProfile:[6,1,1,""],productsIndex:[6,1,1,""],productsList:[6,1,1,""],ranking:[6,1,1,""],refund:[6,1,1,""],release:[6,1,1,""],release_pintes:[6,1,1,""],reload:[6,1,1,""],searchMenu:[6,1,1,""],searchProduct:[6,1,1,""],switch_activate:[6,1,1,""],switch_activate_menu:[6,1,1,""]},"gestion.views.ActiveProductsAutocomplete":{get_queryset:[6,5,1,""]},"gestion.views.KegActiveAutocomplete":{get_queryset:[6,5,1,""]},"gestion.views.KegPositiveAutocomplete":{get_queryset:[6,5,1,""]},"gestion.views.MenusAutocomplete":{get_queryset:[6,5,1,""]},"gestion.views.ProductsAutocomplete":{get_queryset:[6,5,1,""]},"preferences.admin":{CotisationAdmin:[1,2,1,""],GeneralPreferencesAdmin:[1,2,1,""],PaymentMethodAdmin:[1,2,1,""]},"preferences.admin.CotisationAdmin":{list_display:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""]},"preferences.admin.GeneralPreferencesAdmin":{list_display:[1,3,1,""],media:[1,3,1,""]},"preferences.admin.PaymentMethodAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"preferences.forms":{CotisationForm:[3,2,1,""],GeneralPreferencesForm:[3,2,1,""],PaymentMethodForm:[3,2,1,""]},"preferences.forms.CotisationForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"preferences.forms.CotisationForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"preferences.forms.GeneralPreferencesForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"preferences.forms.GeneralPreferencesForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""],widgets:[3,3,1,""]},"preferences.forms.PaymentMethodForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"preferences.forms.PaymentMethodForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"preferences.models":{Cotisation:[4,2,1,""],GeneralPreferences:[4,2,1,""],HistoricalCotisation:[4,2,1,""],HistoricalGeneralPreferences:[4,2,1,""],HistoricalPaymentMethod:[4,2,1,""],PaymentMethod:[4,2,1,""]},"preferences.models.Cotisation":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],cotisationhistory_set:[4,3,1,""],duration:[4,3,1,""],history:[4,3,1,""],id:[4,3,1,""],objects:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"preferences.models.GeneralPreferences":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],active_message:[4,3,1,""],automatic_logout_time:[4,3,1,""],brewer:[4,3,1,""],floating_buttons:[4,3,1,""],global_message:[4,3,1,""],grocer:[4,3,1,""],history:[4,3,1,""],home_text:[4,3,1,""],id:[4,3,1,""],is_active:[4,3,1,""],lost_pintes_allowed:[4,3,1,""],menu:[4,3,1,""],objects:[4,3,1,""],president:[4,3,1,""],rules:[4,3,1,""],save_without_historical_record:[4,5,1,""],secretary:[4,3,1,""],statutes:[4,3,1,""],treasurer:[4,3,1,""],use_pinte_monitoring:[4,3,1,""],vice_president:[4,3,1,""]},"preferences.models.HistoricalCotisation":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],duration:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""]},"preferences.models.HistoricalGeneralPreferences":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],active_message:[4,3,1,""],automatic_logout_time:[4,3,1,""],brewer:[4,3,1,""],floating_buttons:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],global_message:[4,3,1,""],grocer:[4,3,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],home_text:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],is_active:[4,3,1,""],lost_pintes_allowed:[4,3,1,""],menu:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],president:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""],rules:[4,3,1,""],secretary:[4,3,1,""],statutes:[4,3,1,""],treasurer:[4,3,1,""],use_pinte_monitoring:[4,3,1,""],vice_president:[4,3,1,""]},"preferences.models.HistoricalPaymentMethod":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],affect_balance:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],icon:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],is_active:[4,3,1,""],is_usable_in_cotisation:[4,3,1,""],is_usable_in_reload:[4,3,1,""],name:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""]},"preferences.models.PaymentMethod":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],affect_balance:[4,3,1,""],consumptionhistory_set:[4,3,1,""],cotisationhistory_set:[4,3,1,""],history:[4,3,1,""],icon:[4,3,1,""],id:[4,3,1,""],is_active:[4,3,1,""],is_usable_in_cotisation:[4,3,1,""],is_usable_in_reload:[4,3,1,""],menuhistory_set:[4,3,1,""],name:[4,3,1,""],objects:[4,3,1,""],reload_set:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"preferences.views":{addCotisation:[6,1,1,""],addPaymentMethod:[6,1,1,""],cotisationsIndex:[6,1,1,""],deleteCotisation:[6,1,1,""],deletePaymentMethod:[6,1,1,""],editCotisation:[6,1,1,""],editPaymentMethod:[6,1,1,""],generalPreferences:[6,1,1,""],get_config:[6,1,1,""],get_cotisation:[6,1,1,""],inactive:[6,1,1,""],paymentMethodsIndex:[6,1,1,""]},"users.admin":{BalanceFilter:[1,2,1,""],CotisationHistoryAdmin:[1,2,1,""],ProfileAdmin:[1,2,1,""],WhiteListHistoryAdmin:[1,2,1,""]},"users.admin.BalanceFilter":{lookups:[1,5,1,""],parameter_name:[1,3,1,""],queryset:[1,5,1,""],title:[1,3,1,""]},"users.admin.CotisationHistoryAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"users.admin.ProfileAdmin":{list_display:[1,3,1,""],list_filter:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"users.admin.WhiteListHistoryAdmin":{list_display:[1,3,1,""],media:[1,3,1,""],ordering:[1,3,1,""],search_fields:[1,3,1,""]},"users.forms":{CreateGroupForm:[3,2,1,""],CreateUserForm:[3,2,1,""],EditGroupForm:[3,2,1,""],EditPasswordForm:[3,2,1,""],ExportForm:[3,2,1,""],GroupsEditForm:[3,2,1,""],LoginForm:[3,2,1,""],SchoolForm:[3,2,1,""],SelectNonAdminUserForm:[3,2,1,""],SelectNonSuperUserForm:[3,2,1,""],SelectUserForm:[3,2,1,""],addCotisationHistoryForm:[3,2,1,""],addWhiteListHistoryForm:[3,2,1,""]},"users.forms.CreateGroupForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.CreateGroupForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"users.forms.CreateUserForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.CreateUserForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"users.forms.EditGroupForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.EditGroupForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"users.forms.EditPasswordForm":{base_fields:[3,3,1,""],clean_password2:[3,5,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.ExportForm":{FIELDS_CHOICES:[3,3,1,""],QUERY_TYPE_CHOICES:[3,3,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.GroupsEditForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.GroupsEditForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"users.forms.LoginForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.SchoolForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.SchoolForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"users.forms.SelectNonAdminUserForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.SelectNonSuperUserForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.SelectUserForm":{base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.addCotisationHistoryForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.addCotisationHistoryForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"users.forms.addWhiteListHistoryForm":{Meta:[3,2,1,""],base_fields:[3,3,1,""],declared_fields:[3,3,1,""],media:[3,3,1,""]},"users.forms.addWhiteListHistoryForm.Meta":{fields:[3,3,1,""],model:[3,3,1,""]},"users.models":{CotisationHistory:[4,2,1,""],HistoricalCotisationHistory:[4,2,1,""],HistoricalProfile:[4,2,1,""],HistoricalSchool:[4,2,1,""],HistoricalWhiteListHistory:[4,2,1,""],Profile:[4,2,1,""],School:[4,2,1,""],WhiteListHistory:[4,2,1,""],create_user_profile:[4,1,1,""],save_user_profile:[4,1,1,""],str_user:[4,1,1,""]},"users.models.CotisationHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],cotisation:[4,3,1,""],cotisation_id:[4,3,1,""],duration:[4,3,1,""],endDate:[4,3,1,""],get_next_by_endDate:[4,5,1,""],get_next_by_paymentDate:[4,5,1,""],get_previous_by_endDate:[4,5,1,""],get_previous_by_paymentDate:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],objects:[4,3,1,""],paymentDate:[4,3,1,""],paymentMethod:[4,3,1,""],paymentMethod_id:[4,3,1,""],save_without_historical_record:[4,5,1,""],user:[4,3,1,""],user_id:[4,3,1,""]},"users.models.HistoricalCotisationHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],amount:[4,3,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],cotisation:[4,3,1,""],cotisation_id:[4,3,1,""],duration:[4,3,1,""],endDate:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_endDate:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_next_by_paymentDate:[4,5,1,""],get_previous_by_endDate:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],get_previous_by_paymentDate:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],paymentDate:[4,3,1,""],paymentMethod:[4,3,1,""],paymentMethod_id:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""],user:[4,3,1,""],user_id:[4,3,1,""]},"users.models.HistoricalProfile":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],cotisationEnd:[4,3,1,""],credit:[4,3,1,""],debit:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""],school:[4,3,1,""],school_id:[4,3,1,""],user:[4,3,1,""],user_id:[4,3,1,""]},"users.models.HistoricalSchool":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],get_history_type_display:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],name:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""]},"users.models.HistoricalWhiteListHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],duration:[4,3,1,""],endDate:[4,3,1,""],get_history_type_display:[4,5,1,""],get_next_by_endDate:[4,5,1,""],get_next_by_history_date:[4,5,1,""],get_next_by_paymentDate:[4,5,1,""],get_previous_by_endDate:[4,5,1,""],get_previous_by_history_date:[4,5,1,""],get_previous_by_paymentDate:[4,5,1,""],history_change_reason:[4,3,1,""],history_date:[4,3,1,""],history_id:[4,3,1,""],history_object:[4,3,1,""],history_type:[4,3,1,""],history_user:[4,3,1,""],history_user_id:[4,3,1,""],id:[4,3,1,""],instance:[4,3,1,""],instance_type:[4,3,1,""],next_record:[4,3,1,""],objects:[4,3,1,""],paymentDate:[4,3,1,""],prev_record:[4,3,1,""],revert_url:[4,5,1,""],user:[4,3,1,""],user_id:[4,3,1,""]},"users.models.Profile":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],alcohol:[4,3,1,""],balance:[4,3,1,""],cotisationEnd:[4,3,1,""],credit:[4,3,1,""],debit:[4,3,1,""],history:[4,3,1,""],id:[4,3,1,""],is_adherent:[4,3,1,""],nb_pintes:[4,3,1,""],objects:[4,3,1,""],positiveBalance:[4,5,1,""],rank:[4,3,1,""],save_without_historical_record:[4,5,1,""],school:[4,3,1,""],school_id:[4,3,1,""],user:[4,3,1,""],user_id:[4,3,1,""]},"users.models.School":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],history:[4,3,1,""],id:[4,3,1,""],name:[4,3,1,""],objects:[4,3,1,""],profile_set:[4,3,1,""],save_without_historical_record:[4,5,1,""]},"users.models.WhiteListHistory":{DoesNotExist:[4,4,1,""],MultipleObjectsReturned:[4,4,1,""],coopeman:[4,3,1,""],coopeman_id:[4,3,1,""],duration:[4,3,1,""],endDate:[4,3,1,""],get_next_by_endDate:[4,5,1,""],get_next_by_paymentDate:[4,5,1,""],get_previous_by_endDate:[4,5,1,""],get_previous_by_paymentDate:[4,5,1,""],history:[4,3,1,""],id:[4,3,1,""],objects:[4,3,1,""],paymentDate:[4,3,1,""],save_without_historical_record:[4,5,1,""],user:[4,3,1,""],user_id:[4,3,1,""]},"users.templatetags":{users_extra:[5,0,0,"-"]},"users.templatetags.users_extra":{random_filter:[5,1,1,""]},"users.views":{ActiveUsersAutocomplete:[6,2,1,""],AdherentAutocomplete:[6,2,1,""],AllUsersAutocomplete:[6,2,1,""],NonAdminUserAutocomplete:[6,2,1,""],NonSuperUserAutocomplete:[6,2,1,""],addAdmin:[6,1,1,""],addCotisationHistory:[6,1,1,""],addSuperuser:[6,1,1,""],addWhiteListHistory:[6,1,1,""],adminsIndex:[6,1,1,""],allReloads:[6,1,1,""],all_consumptions:[6,1,1,""],all_menus:[6,1,1,""],createGroup:[6,1,1,""],createSchool:[6,1,1,""],createUser:[6,1,1,""],deleteCotisationHistory:[6,1,1,""],deleteGroup:[6,1,1,""],deleteSchool:[6,1,1,""],editGroup:[6,1,1,""],editGroups:[6,1,1,""],editPassword:[6,1,1,""],editSchool:[6,1,1,""],editUser:[6,1,1,""],export_csv:[6,1,1,""],gen_user_infos:[6,1,1,""],getUser:[6,1,1,""],groupProfile:[6,1,1,""],groupsIndex:[6,1,1,""],index:[6,1,1,""],loginView:[6,1,1,""],logoutView:[6,1,1,""],profile:[6,1,1,""],removeAdmin:[6,1,1,""],removeRight:[6,1,1,""],removeSuperuser:[6,1,1,""],removeUser:[6,1,1,""],resetPassword:[6,1,1,""],schoolsIndex:[6,1,1,""],searchUser:[6,1,1,""],superusersIndex:[6,1,1,""],switch_activate_user:[6,1,1,""],usersIndex:[6,1,1,""]},"users.views.ActiveUsersAutocomplete":{get_queryset:[6,5,1,""]},"users.views.AdherentAutocomplete":{get_queryset:[6,5,1,""]},"users.views.AllUsersAutocomplete":{get_queryset:[6,5,1,""]},"users.views.NonAdminUserAutocomplete":{get_queryset:[6,5,1,""]},"users.views.NonSuperUserAutocomplete":{get_queryset:[6,5,1,""]},coopeV3:{acl:[5,0,0,"-"],views:[6,0,0,"-"]},django_tex:{core:[2,0,0,"-"],engine:[2,0,0,"-"],environment:[2,0,0,"-"],exceptions:[2,0,0,"-"],filters:[2,0,0,"-"],models:[2,0,0,"-"],views:[2,0,0,"-"]},gestion:{admin:[1,0,0,"-"],forms:[3,0,0,"-"],models:[4,0,0,"-"],views:[6,0,0,"-"]},preferences:{admin:[1,0,0,"-"],forms:[3,0,0,"-"],models:[4,0,0,"-"],views:[6,0,0,"-"]},users:{admin:[1,0,0,"-"],forms:[3,0,0,"-"],models:[4,0,0,"-"],views:[6,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"],"4":["py","exception","Python exception"],"5":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute","4":"py:exception","5":"py:method"},terms:{"0001_initial":[],"0002_auto_20181221_2151":[],"0002_auto_20190218_2231":[],"0002_pint":[],"0003_auto_20181223_1440":[],"0003_auto_20190219_1921":[],"0003_historicalpint":[],"0004_auto_20181223_1830":[],"0004_auto_20190106_0452":[],"0004_auto_20190226_2313":[],"0005_auto_20190106_0018":[],"0005_auto_20190106_0513":[],"0005_auto_20190227_0859":[],"0006_auto_20190119_2326":[],"0006_auto_20190227_0859":[],"0007_auto_20190120_1208":[],"0008_auto_20190218_1802":[],"0009_auto_20190227_0859":[],"F\u00fbt":[],"\u00e9col":[],"\u00e9cole":3,"abstract":2,"adh\u00e9rent":3,"class":[1,2,3,4,6],"cr\u00e9dit":3,"d\u00e9bit":3,"default":4,"export":[3,6],"f\u00fbts":[],"float":4,"for":[],"function":[],"g\u00e9n\u00e9ral":[],"import":[],"new":3,"null":4,"pr\u00e9f\u00e9rent":[],"pr\u00e9nom":3,"return":[1,4,5,6],"static":6,"switch":6,"this":[],"true":[4,6],"with":[],One:4,The:[1,4,6],Used:[],Vue:[],Vues:[],__all__:3,__first__:[],__str__:1,abl:4,acces:[],access:4,accessed:[],accessor:4,accord:1,account:4,acl:0,acl_and:5,acl_or:5,actif:3,action:6,activ:[3,5,6],active_messag:[3,4],active_requir:5,active_required:[],activeproductsautocomplet:6,activeusersautocomplet:6,add:[3,6],add_pint:6,addadmin:6,addcotis:6,addcotisationhistori:6,addcotisationhistory:[],addcotisationhistoryform:[3,6],addfield:[],addkeg:6,addmenu:6,addpaymentmethod:6,addproduct:6,addsuperus:6,addwhitelisthistori:6,addwhitelisthistory:[],addwhitelisthistoryform:[3,6],adher:[3,4,6],adherent:[],adherent_act:3,adherent_requir:4,adherent_required:[],adherentautocomplet:6,adherentrequir:[1,3,4],adherentrequired:[],adhes:6,admi:[],admin:[0,4,6],admin_requir:5,admin_required:[],admin_sit:1,adminsindex:6,adress:3,affect_bal:[1,3,4],after:4,alcohol:4,alert:4,ali:[],alia:[3,4],all:[3,4,5,6],all_act:3,all_consumpt:6,all_menu:6,all_menus:[],alloc:[4,6],allocat:[],allreload:6,allusersautocomplet:6,alterfield:[],altermodelopt:[],amount:[1,3,4],amountsold:4,and:[],anoth:[],anywher:4,app:0,app_dirnam:2,app_label:[],app_modul:[],app_nam:[],appconfig:[],appliqu:[],are:[],arg:[2,3,4],articl:[3,4],as_view:[],assign:[],assignment:[],atrr:[],attr:[],attribut:[],autcomplet:6,auth:[3,4,6],auto_id:3,autocomplet:6,autofield:[],automat:4,automatic_logout_tim:[1,3,4,5],awesom:4,backend:[],balanc:[1,3,4,6],balancefilt:1,bar:4,barcod:[3,4,6],bas:[],base_field:3,based:[],befor:4,begin:[3,4],below:4,bla:[],block:4,blog:[],booleanfield:3,bottl:4,bouteil:4,brew:[],brewer:[1,3,4,5],bui:4,built:4,button:4,call:[],callabl:[],called:[],can:4,cancel:[],cancel_consumpt:6,cancel_menu:6,cancel_reload:6,capac:[1,3,4],capacity:[],carriag:4,cas:4,categori:[1,3,4],category:[],certif:6,chang:[3,4],charact:2,character:[],charfield:[3,4],child:4,children:4,choicefield:3,chosen:4,clean_password2:3,client:[3,4],clos:[],close:[4,6],close_keg:[],closedirectkeg:6,closekeg:6,closingd:[1,4],closingdat:[],cod:[],code:2,collect:4,com:[],compil:2,compile_template_to_pdf:2,compt:3,comput:4,config:[],configur:[],connect:6,consecut:2,consomm:[],consum:4,consumpt:[1,4,6],consumption_set:4,consumptionadmin:1,consumptionhistori:[4,6],consumptionhistory:[],consumptionhistory_set:4,consumptionhistoryadmin:1,contain:4,content:[0,2],context:2,contrib:[3,4,6],coope_runn:6,coopeman:4,coopeman_id:4,copi:2,cor:[],core:0,correspond:4,cotis:[3,4,6],cotisation_id:4,cotisationadmin:1,cotisationend:[1,4],cotisationform:[3,6],cotisationhistori:[3,4,6],cotisationhistory:[],cotisationhistory_set:4,cotisationhistoryadmin:1,cotisationsindex:6,creat:[3,4,6],create_forward_many_to_many_manag:4,create_user_profil:4,created:[],creategroup:6,creategroupform:[3,6],createmodel:[],createschool:6,createus:6,createuserform:[3,6],cred:[],credit:[1,3,4],csv:[3,6],current:4,current_own:4,current_owner_id:4,currently:[],custom:[1,3,4],customer_id:4,d_pression:4,dai:4,dal_select2:3,dat:[],data:3,date:[1,4],date_verified:[],datetimefield:[3,4],deb:[],debit:[1,3,4],decimalfield:3,declared_field:3,decreas:4,defer:[2,4],deferred:[],defin:4,defined:[],deg:[1,3,4],degre:4,deleg:4,delegated:[],delet:6,deletecotis:6,deletecotisationhistori:6,deletecotisationhistory:[],deletegroup:6,deletepaymentmethod:6,deleteschool:6,dem:[],demi:[3,4],demi_id:4,dependenc:[],deployment:[],descriptor:[],dict:2,disconnect:4,displai:[4,6],display:[],divis:4,django:[3,4,6],django_tex:0,djangoproject:[],do_linebreak:2,doc:[],doesnotexist:4,doing:4,durat:[1,3,4],dure:4,dynam:4,dynamically:[],each:4,easter:6,edit:[3,6],edit_menu:6,editcotis:6,editgroup:6,editgroupform:[3,6],editkeg:6,editpassword:6,editpasswordform:[3,6],editpaymentmethod:6,editproduct:6,editschool:6,editus:6,egg:6,either:6,email:3,emailfield:3,empty_permit:3,empty_permitted:[],end:[3,4],enddat:[1,4],engin:0,environ:0,environment:[],error_class:3,errorlist:3,euro:4,exampl:4,except:[0,4,6],exclud:3,execut:[2,4],executed:[],export_csv:6,exportform:[3,6],expos:[],fals:[2,3,4],ferm:[],field:[2,3,4],field_ord:3,fieldfil:[],fields_choic:3,fil:[],file:[3,4,6],filefield:3,filenam:2,filt:[],filter:[0,1,6],filtered:[],first:[2,4],first_nam:3,floating_button:[1,3,4],font:4,food:4,foreignkei:4,foreignkey:[],form:[0,4,6],format:6,forward:4,forwardmanytoonedescriptor:4,forwardonetoonedescriptor:4,free:3,from:[2,3,4,6],full:[],futd:4,futg:4,futp:4,g_pression:4,galopin:[3,4],galopin_id:4,gen_relev:6,gen_user_info:6,gen_user_infos:[],gener:[3,4,6],general:[],generalprefer:[3,4,5,6],generalpreferencesadmin:1,generalpreferencesform:[3,6],generalpreferent:[],generated:[],generatereleveform:[3,6],gestion:0,gestionconfig:[],gestionform:3,get:[4,6],get_category_displai:4,get_category_display:[],get_config:6,get_cotis:6,get_history_type_displai:4,get_history_type_display:[],get_latest_by:[],get_menu:6,get_messag:2,get_next_by_d:4,get_next_by_dat:[],get_next_by_endd:4,get_next_by_enddat:[],get_next_by_history_d:4,get_next_by_history_dat:[],get_next_by_last_update_d:4,get_next_by_last_update_dat:[],get_next_by_openingd:4,get_next_by_openingdat:[],get_next_by_paymentd:4,get_next_by_paymentdat:[],get_previous_by_d:4,get_previous_by_dat:[],get_previous_by_endd:4,get_previous_by_enddat:[],get_previous_by_history_d:4,get_previous_by_history_dat:[],get_previous_by_last_update_d:4,get_previous_by_last_update_dat:[],get_previous_by_openingd:4,get_previous_by_openingdat:[],get_previous_by_paymentd:4,get_previous_by_paymentdat:[],get_queryset:6,getproduct:6,getus:6,given:6,global_messag:[3,4,5],gracieux:[],graph:4,groc:[],grocer:[1,3,4,5],group:[3,6],grouppk:6,groupprofil:6,groupseditform:[3,6],groupsindex:6,has:[4,5],have:6,header:4,heading:[],hello:[],help:[],helper:2,histor:4,histori:[1,4,6],historical:[],historicalchang:[],historicalconsumpt:4,historicalconsumptionhistori:4,historicalconsumptionhistory:[],historicalcotis:4,historicalcotisationhistori:4,historicalcotisationhistory:[],historicalgeneralprefer:4,historicalgeneralpreferent:[],historicalkeg:4,historicalkeghistori:4,historicalkeghistory:[],historicalmenu:4,historicalmenuhistori:4,historicalmenuhistory:[],historicalpaymentmethod:4,historicalpint:4,historicalproduct:4,historicalprofil:4,historicalrefund:4,historicalreload:4,historicalschool:4,historicalwhitelisthistori:4,historicalwhitelisthistory:[],history:[],history_change_reason:4,history_d:4,history_dat:[],history_id:4,history_object:4,history_typ:4,history_us:4,history_user_id:4,historymanag:4,hold:4,hom:[],home:[4,6],home_text:[3,4,6],homepag:6,howto:[],html:[],http:[],httprespons:[],icon:[3,4],id_:3,ident:3,identical:[],ids:3,implement:4,inact:[4,6],includ:6,including:[],index:[0,6],info:6,inform:[],inger:4,ingerated:[],ingredi:4,ingredient:[],initi:3,initial:[],input:[],instanc:[3,4],instance_typ:4,integerfield:3,intern:4,is_act:[1,3,4,5],is_adher:[1,4,6],is_adherent:[],is_next:4,is_staff:6,is_superus:6,is_usable_in_cotis:[1,3,4],is_usable_in_reload:[1,3,4],iscurrentkeghistori:[1,4],iscurrentkeghistory:[],isdem:[],isdemi:4,isgalopin:4,ispint:4,javascript:4,jinja2:[],jqueri:[],jquery:[],json:6,just:6,keg:[1,3,4,6],keg_id:4,kegactiveautocomplet:6,kegadmin:1,kegform:[3,6],kegh:6,keghistori:4,keghistory:[],keghistory_set:4,keghistoryadmin:1,kegpositiveautocomplet:6,kegslist:6,kei:6,know:4,kwarg:[2,3,4,6],label_suffix:3,last:4,last_nam:3,last_update_d:4,last_update_dat:[],latex:[2,6],latex_saf:[],les:3,level:[],lik:[],like:[],lin:[],line:4,list:[1,3,4,6],list_displai:1,list_display:[],list_filt:1,liter:4,load:[2,4,6],loading:[],local_setting:[],log:[2,3,6],logged:[],login:[],loginform:[3,6],loginview:6,logout:6,logout_tim:5,logoutview:6,lookup:1,lost:4,lost_pintes_allow:[1,3,4],lost_pintes_allowed:[],machin:[],mail:3,mak:[],make:4,manag:[3,4,6],mani:4,many:[],manytomanydescriptor:4,manytomanyfield:4,medi:[],media:[1,3],memb:[],member:[],menu:[1,3,4,5,6],menu_id:4,menu_set:4,menuadmin:1,menuform:[3,6],menuhistori:[4,6],menuhistory:[],menuhistory_set:4,menuhistoryadmin:1,menus:[],menus_list:6,menusautocomplet:6,messag:[2,4,6],met:[],meta:[2,3],method:[2,4],migrat:[],model:[0,1,3,5,6],model_admin:1,model_nam:[],modelchoicefield:3,modelform:[],modelmultiplechoicefield:3,modelselect2:3,modul:0,monei:4,mor:[],more:[4,6],most:4,moyen:[],multiplechoicefield:3,multipleobjectsreturn:4,multipleobjectsreturned:[],must:1,my_app:[],my_environment:[],myapp:[],mymodel:[],nam:[],name:[1,2,3,4],named:[],nb_pint:4,needquantitybutton:[3,4],newlin:2,next:4,next_record:4,nom:3,non:[3,6],nonadminuserautocomplet:6,none:[2,3,4,6],nonsuperuserautocomplet:6,numb:[],number:4,object:[2,3,4],objectdoesnotexist:[],one:[4,5,6],onetoonefield:[],onli:4,open:[4,6],open_keg:[],opendirectkeg:6,openingd:[1,4],openingdat:[],openkeg:6,oper:[],option:2,order:[1,4,6],ordering:[],other_app:[],overridden:1,own:4,owned:[],owner:4,p_pression:4,packag:[],pag:[],page:[0,4,6],pai:4,panin:[],panini:4,param:[1,2],parameter_nam:1,parent:4,pass:6,password1:3,password2:3,password:[3,6],path:[],pattern:[],payment:4,paymentbutton:4,paymentd:[1,4],paymentdat:[],paymentmethod:[1,3,4,6],paymentmethod_id:4,paymentmethodadmin:1,paymentmethodform:[3,6],paymentmethodsindex:6,pdfrespons:2,percut:[],perm:5,permiss:[3,5],permissionpk:6,peut:[],physic:4,physical:[],pint:[3,4,6],pinte_id:4,pinte_pk:6,pinteform:[3,6],pintes_list:6,pintes_user_list:6,pizz:[],pizza:4,pknam:[],pkname:5,plac:[],place:[],pleas:[],plop:[],posit:[3,4,6],positivebal:4,positiveintegerfield:[],post:6,prefer:[0,5],preferencesconfig:[],preferent:[],prefix:3,presid:[1,3,4,5],president:[],pression:4,prettify_messag:2,prev_record:4,previou:4,previous:[],previous_own:4,previous_owner_id:4,price:4,primari:6,process:6,product:[1,3,4,6],product_id:4,productadmin:1,productform:[3,6],productprofil:6,productsautocomplet:6,productsindex:6,productslist:6,produit:[],profil:[4,6],profile_set:4,profileadmin:1,project:[],purchas:4,purhcas:4,put:4,quantiti:[1,4],quantity:[],quantitysold:[1,4],queri:[2,4],query:[],query_typ:3,query_type_choic:3,queryset:[1,6],random_filt:5,randomli:4,rank:[4,6],ranking:[],read:[2,4],realiz:4,recharg:[],recherch:[],record:4,redirect:[4,6],ref:[],refund:[1,3,4,6],refundadmin:1,refundform:3,regist:4,relat:[4,6],related:[],related_nam:4,releas:6,release_pint:6,relev:[3,4,6],reload:[1,3,4,6],reload_set:4,reloadadmin:1,reloadform:3,rembours:[],remov:[2,6],removeadmin:6,removefield:[],removeright:6,removesuperus:6,removeus:6,rend:[],render:[2,3],render_template_with_context:2,render_to_pdf:2,request:[1,2,4,5,6],requested:[],reset:6,resetpassword:6,resolver:[],respons:[],restaur:[],restrict:4,revers:4,reversemanytoonedescriptor:4,revert_url:4,rewrit:4,right:6,rout:[],routepattern:[],rst:[],rul:[],rule:[3,4,5,6],run:2,run_tex:2,sav:[],save:4,save_user_profil:4,save_without_historical_record:4,saved:[],saving:[],school:[1,3,4,6],school_id:4,schoolform:[3,6],schoolsindex:6,script:[],search:[0,3,6],search_field:1,searchfield:[],searchform:[],searchmenu:6,searchmenuform:[3,6],searchproduct:6,searchproductform:3,searchus:6,secretari:[1,3,4,5],secretary:[],see:[],select2querysetview:[],select:[3,6],selectactivekegform:3,selectnonadminuserform:[3,6],selectnonsuperuserform:3,selectpositivekegform:[3,6],selectuserform:[3,6],self:4,self_or_has_perm:5,send:[],sender:4,separ:4,setting:[],showingmultipli:[3,4],sid:[],side:4,sign:1,simpl:[],simple_histori:4,simple_history:[],simplehistoryadmin:[],simplelistfilt:[],sit:[],site:[4,5,6],siz:[],size:[],soft:4,sold:[1,3,4],sourc:2,spent:4,staff:[3,5,6],startproject:[],statu:6,status:[],statut:[3,4,5,6],stockbar:[1,3,4],stockhold:[1,3,4,6],stor:[],store:4,str:4,str_us:[],str_user:4,string:[],subclass:4,submodul:[],subpackag:[],superus:[3,5,6],superuser:[],superuser_requir:5,superuser_required:[],superusersindex:6,sure:4,switch_activ:6,switch_activat:[],switch_activate_menu:6,switch_activate_us:6,tag:5,taken:4,temp:2,templat:2,template_nam:2,templatetag:0,test:[4,5],texengin:2,texerror:2,text:4,textar:[],textarea:3,textemplatefil:2,textfield:[],textinput:3,than:4,that:[],the:[],their:[],thi:[2,4],through:6,tim:[],time:[2,4],titl:[1,2],token:2,tokeniz:[],top:4,topic:[],topping:[],total:4,tou:3,tous:[],treasur:[1,3,4,5],tru:[],tthe:6,tupl:1,two:3,typedchoicefield:3,typeinput_choices_categor:[],typeinput_choices_categori:4,uniqu:4,unreturn:6,updat:4,url:4,urlconf:[],urlpattern:[],use:4,use_pinte_monitor:[1,3,4],use_pinte_monitoring:[],use_required_attribut:3,used:4,user:0,user_id:4,user_rank:4,user_ranking:[],usernam:[3,6],userpk:6,users_extr:[],users_extra:5,usersconfig:[],usersindex:6,using:[],util:[0,3],utilis:[],utilisateur:3,valid:[],validate_cotisationhistory:[],validate_template_path:2,valu:[1,2,4],variabl:[],verbos:1,verbose_nam:[],verbose_name_plural:[],verifi:3,verify:[],via:4,vice:4,vice_presid:[1,3,4,5],vice_president:[],view:[0,3,4,5],vip:5,volum:[1,3,4],vues:[],what:4,when:[2,4],which:[1,4,5,6],whitelist:4,whitelisthistori:[3,4,6],whitelisthistory:[],whitelisthistoryadmin:1,whitespac:2,who:[4,6],widget:3,without:4,world:[],wrapp:[],wrapper:[2,4],writ:[],write:[],wsgi:[],you:4},titles:["CoopeV3 documentation","Admin documentation","Django_tex documentation","Forms documentation","Models documentation","Utils documentation","Views documentation"],titleterms:{"0001_initial":[],"0002_auto_20181221_2151":[],"0002_auto_20190218_2231":[],"0002_pint":[],"0003_auto_20181223_1440":[],"0003_auto_20190219_1921":[],"0003_historicalpint":[],"0004_auto_20181223_1830":[],"0004_auto_20190106_0452":[],"0004_auto_20190226_2313":[],"0005_auto_20190106_0018":[],"0005_auto_20190106_0513":[],"0005_auto_20190227_0859":[],"0006_auto_20190119_2326":[],"0006_auto_20190227_0859":[],"0007_auto_20190120_1208":[],"0008_auto_20190218_1802":[],"0009_auto_20190227_0859":[],"this":[],Vue:[],Vues:[],acl:5,admi:[],admin:1,and:[],app:[1,3,4,6],content:[],coopev3:[0,5,6],cor:[],core:2,django_tex:2,document:[0,1,2,3,4,5,6],engin:2,environ:2,environment:[],exampl:[],except:2,filter:2,form:3,gestion:[1,3,4,6],heading:[],indic:0,local_setting:[],manag:[],migrat:[],model:[2,4],modul:[],packag:[],prefer:[1,3,4,6],preferent:[],setting:[],submodul:[],subpackag:[],tabl:0,templatetag:5,test:[],url:[],user:[1,3,4,5,6],util:5,view:[2,6],vip:[],vues:[],welcom:[],widget:[],wsgi:[]}}) \ No newline at end of file diff --git a/docs/_build/html/users.html b/docs/_build/html/users.html new file mode 100644 index 0000000..db88772 --- /dev/null +++ b/docs/_build/html/users.html @@ -0,0 +1,2061 @@ + + + + + + + + users package — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

users package

+
+

Subpackages

+
+
+
+
+

Submodules

+
+
+

users.admin module

+
+
+class users.admin.BalanceFilter(request, params, model, model_admin)
+

Bases : django.contrib.admin.filters.SimpleListFilter

+
+
+lookups(request, model_admin)
+

Must be overridden to return a list of tuples (value, verbose value)

+
+ +
+
+parameter_name = 'solde'
+
+ +
+
+queryset(request, queryset)
+

Return the filtered queryset.

+
+ +
+
+title = 'Solde'
+
+ +
+ +
+
+class users.admin.CotisationHistoryAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('user', 'amount', 'duration', 'paymentDate', 'endDate', 'paymentMethod')
+
+ +
+
+list_filter = ('paymentMethod',)
+
+ +
+
+media
+
+ +
+
+ordering = ('user', 'amount', 'duration', 'paymentDate', 'endDate')
+
+ +
+
+search_fields = ('user',)
+
+ +
+ +
+
+class users.admin.ProfileAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('user', 'credit', 'debit', 'balance', 'school', 'cotisationEnd', 'is_adherent')
+
+ +
+
+list_filter = ('school', <class 'users.admin.BalanceFilter'>)
+
+ +
+
+media
+
+ +
+
+ordering = ('user', '-credit', '-debit')
+
+ +
+
+search_fields = ('user',)
+
+ +
+ +
+
+class users.admin.WhiteListHistoryAdmin(model, admin_site)
+

Bases : simple_history.admin.SimpleHistoryAdmin

+
+
+list_display = ('user', 'paymentDate', 'endDate', 'duration')
+
+ +
+
+media
+
+ +
+
+ordering = ('user', 'duration', 'paymentDate', 'endDate')
+
+ +
+
+search_fields = ('user',)
+
+ +
+ +
+
+

users.apps module

+
+
+class users.apps.UsersConfig(app_name, app_module)
+

Bases : django.apps.config.AppConfig

+
+
+name = 'users'
+
+ +
+ +
+
+

users.forms module

+
+
+class users.forms.CreateGroupForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to create a new group

+
+
+class Meta
+

Bases : object

+
+
+fields = ('name',)
+
+ +
+
+model
+

alias de django.contrib.auth.models.Group

+
+ +
+ +
+
+base_fields = {'name': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.CreateUserForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to create a new user

+
+
+class Meta
+

Bases : object

+
+
+fields = ('username', 'last_name', 'first_name', 'email')
+
+ +
+
+model
+

alias de django.contrib.auth.models.User

+
+ +
+ +
+
+base_fields = {'email': <django.forms.fields.EmailField object>, 'first_name': <django.forms.fields.CharField object>, 'last_name': <django.forms.fields.CharField object>, 'school': <django.forms.models.ModelChoiceField object>, 'username': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {'school': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.EditGroupForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to edit a group

+
+
+class Meta
+

Bases : object

+
+
+fields = '__all__'
+
+ +
+
+model
+

alias de django.contrib.auth.models.Group

+
+ +
+ +
+
+base_fields = {'name': <django.forms.fields.CharField object>, 'permissions': <django.forms.models.ModelMultipleChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.EditPasswordForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+

Form to change the password of a user

+
+
+base_fields = {'password': <django.forms.fields.CharField object>, 'password1': <django.forms.fields.CharField object>, 'password2': <django.forms.fields.CharField object>}
+
+ +
+
+clean_password2()
+

Verify if the two new passwords are identical

+
+ +
+
+declared_fields = {'password': <django.forms.fields.CharField object>, 'password1': <django.forms.fields.CharField object>, 'password2': <django.forms.fields.CharField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.ExportForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+
+
+FIELDS_CHOICES = (('username', "Nom d'utilisateur"), ('last_name', 'Nom'), ('first_name', 'Prénom'), ('email', 'Adresse mail'), ('school', 'École'), ('balance', 'Solde'), ('credit', 'Crédit'), ('debit', 'Débit'))
+
+ +
+
+QUERY_TYPE_CHOICES = (('all', 'Tous les comptes'), ('all_active', 'Tous les comptes actifs'), ('adherent', 'Tous les adhérents'), ('adherent_active', 'Tous les adhérents actifs'))
+
+ +
+
+base_fields = {'fields': <django.forms.fields.MultipleChoiceField object>, 'group': <django.forms.models.ModelChoiceField object>, 'query_type': <django.forms.fields.ChoiceField object>}
+
+ +
+
+declared_fields = {'fields': <django.forms.fields.MultipleChoiceField object>, 'group': <django.forms.models.ModelChoiceField object>, 'query_type': <django.forms.fields.ChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.GroupsEditForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to edit a user’s list of groups

+
+
+class Meta
+

Bases : object

+
+
+fields = ('groups',)
+
+ +
+
+model
+

alias de django.contrib.auth.models.User

+
+ +
+ +
+
+base_fields = {'groups': <django.forms.models.ModelMultipleChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.LoginForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+

Form to log in

+
+
+base_fields = {'password': <django.forms.fields.CharField object>, 'username': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {'password': <django.forms.fields.CharField object>, 'username': <django.forms.fields.CharField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.SchoolForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to add and edit a school

+
+
+class Meta
+

Bases : object

+
+
+fields = '__all__'
+
+ +
+
+model
+

alias de users.models.School

+
+ +
+ +
+
+base_fields = {'name': <django.forms.fields.CharField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.SelectNonAdminUserForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+

Form to select a user from all non-staff users

+
+
+base_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.SelectNonSuperUserForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+

Form to select a user from all non-superuser users

+
+
+base_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.SelectUserForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.forms.Form

+

Form to select a user from all users

+
+
+base_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {'user': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.addCotisationHistoryForm(*args, **kwargs)
+

Bases : django.forms.models.ModelForm

+

Form to add a cotisation to user

+
+
+class Meta
+

Bases : object

+
+
+fields = ('cotisation', 'paymentMethod')
+
+ +
+
+model
+

alias de users.models.CotisationHistory

+
+ +
+ +
+
+base_fields = {'cotisation': <django.forms.models.ModelChoiceField object>, 'paymentMethod': <django.forms.models.ModelChoiceField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+class users.forms.addWhiteListHistoryForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)
+

Bases : django.forms.models.ModelForm

+

Form to add a whitelist to user

+
+
+class Meta
+

Bases : object

+
+
+fields = ('duration',)
+
+ +
+
+model
+

alias de users.models.WhiteListHistory

+
+ +
+ +
+
+base_fields = {'duration': <django.forms.fields.IntegerField object>}
+
+ +
+
+declared_fields = {}
+
+ +
+
+media
+
+ +
+ +
+
+

users.models module

+
+
+class users.models.CotisationHistory(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores cotisations history, related to Cotisation

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+cotisation
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+cotisation_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+endDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.HistoricalCotisationHistory(id, amount, duration, paymentDate, endDate, user, paymentMethod, cotisation, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+amount
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+cotisation
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+cotisation_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+endDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de CotisationHistory

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+paymentMethod
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+paymentMethod_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.HistoricalProfile(id, credit, debit, cotisationEnd, user, school, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+cotisationEnd
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+credit
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+debit
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de Profile

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+school
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+school_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.HistoricalSchool(id, name, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de School

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+ +
+
+class users.models.HistoricalWhiteListHistory(id, paymentDate, endDate, duration, user, coopeman, history_id, history_change_reason, history_date, history_user, history_type)
+

Bases : simple_history.models.HistoricalChanges, django.db.models.base.Model

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+endDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_history_type_display(*, field=<django.db.models.fields.CharField: history_type>)
+
+ +
+
+get_next_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_history_date(*, field=<django.db.models.fields.DateTimeField: history_date>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=False, **kwargs)
+
+ +
+
+history_change_reason
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_date
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_object
+
+ +
+
+history_type
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history_user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+history_user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+instance
+
+ +
+
+instance_type
+

alias de WhiteListHistory

+
+ +
+
+next_record
+

Get the next history record for the instance. None if last.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+prev_record
+

Get the previous history record for the instance. None if first.

+
+ +
+
+revert_url()
+

URL for this change in the default admin site.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.Profile(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores user profile

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+alcohol
+

Computes ingerated alcohol

+
+ +
+
+balance
+

Computes user balance

+
+ +
+
+cotisationEnd
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+credit
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+debit
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+is_adherent
+

Test if a user is adherent

+
+ +
+
+nb_pintes
+

Return the number of pintes currently owned

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+positiveBalance()
+

Test if the user balance is positive or null

+
+ +
+
+rank
+

Computes the rank (by debit) of the user

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+school
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+school_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a one-to-one relation.

+

In the example:

+
class Restaurant(Model):
+    place = OneToOneField(Place, related_name='restaurant')
+
+
+

Restaurant.place is a ForwardOneToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+class users.models.School(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores school

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+name
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+profile_set
+

Accessor to the related objects manager on the reverse side of a +many-to-one relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Parent.children is a ReverseManyToOneDescriptor instance.

+

Most of the implementation is delegated to a dynamically defined manager +class built by create_forward_many_to_many_manager() defined below.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+ +
+
+class users.models.WhiteListHistory(*args, **kwargs)
+

Bases : django.db.models.base.Model

+

Stores whitelist history

+
+
+exception DoesNotExist
+

Bases : django.core.exceptions.ObjectDoesNotExist

+
+ +
+
+exception MultipleObjectsReturned
+

Bases : django.core.exceptions.MultipleObjectsReturned

+
+ +
+
+coopeman
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+coopeman_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+duration
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+endDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+get_next_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=True, **kwargs)
+
+ +
+
+get_next_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=True, **kwargs)
+
+ +
+
+get_previous_by_endDate(*, field=<django.db.models.fields.DateTimeField: endDate>, is_next=False, **kwargs)
+
+ +
+
+get_previous_by_paymentDate(*, field=<django.db.models.fields.DateTimeField: paymentDate>, is_next=False, **kwargs)
+
+ +
+
+history = <simple_history.manager.HistoryManager object>
+
+ +
+
+id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+objects = <django.db.models.manager.Manager object>
+
+ +
+
+paymentDate
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+
+save_without_historical_record(*args, **kwargs)
+

Save model without saving a historical record

+

Make sure you know what you’re doing before you use this method.

+
+ +
+
+user
+

Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation.

+

In the example:

+
class Child(Model):
+    parent = ForeignKey(Parent, related_name='children')
+
+
+

Child.parent is a ForwardManyToOneDescriptor instance.

+
+ +
+
+user_id
+

A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed.

+
+ +
+ +
+
+users.models.create_user_profile(sender, instance, created, **kwargs)
+

Create profile when user is created

+
+ +
+
+users.models.save_user_profile(sender, instance, **kwargs)
+

Save profile when user is saved

+
+ +
+
+users.models.str_user(self)
+

Rewrite str method for user

+
+ +
+
+

users.tests module

+
+
+

users.urls module

+
+
+users.urls.path(route, view, kwargs=None, name=None, *, Pattern=<class 'django.urls.resolvers.RoutePattern'>)
+
+ +
+
+

users.views module

+
+
+class users.views.ActiveUsersAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autocomplete for active users

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+class users.views.AdherentAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autocomplete for adherents

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+class users.views.AllUsersAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autcomplete for all users

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+class users.views.NonAdminUserAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autocomplete for non-admin users

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+class users.views.NonSuperUserAutocomplete(**kwargs)
+

Bases : dal_select2.views.Select2QuerySetView

+

Autocomplete for non-superuser users

+
+
+get_queryset()
+

Filter the queryset with GET[“q”].

+
+ +
+ +
+
+users.views.export_csv(request)
+
+ +
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/html/users.migrations.html b/docs/_build/html/users.migrations.html new file mode 100644 index 0000000..f172d99 --- /dev/null +++ b/docs/_build/html/users.migrations.html @@ -0,0 +1,211 @@ + + + + + + + + users.migrations package — Documentation CoopeV3 3.4.0 + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

users.migrations package

+
+

Submodules

+
+
+

users.migrations.0001_initial module

+
+
+class users.migrations.0001_initial.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('preferences', '0001_initial'), ('auth', '__first__')]
+
+ +
+
+initial = True
+
+ +
+
+operations = [<CreateModel name='CotisationHistory', fields=[('id', <django.db.models.fields.AutoField>), ('amount', <django.db.models.fields.DecimalField>), ('duration', <django.db.models.fields.PositiveIntegerField>), ('paymentDate', <django.db.models.fields.DateTimeField>), ('endDate', <django.db.models.fields.DateTimeField>), ('valid', <django.db.models.fields.IntegerField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('cotisation', <django.db.models.fields.related.ForeignKey>), ('paymentMethod', <django.db.models.fields.related.ForeignKey>), ('user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Historique cotisation', 'permissions': (('validate_cotisationhistory', 'Peut (in)valider les cotisations'),)}>, <CreateModel name='HistoricalCotisationHistory', fields=[('id', <django.db.models.fields.IntegerField>), ('amount', <django.db.models.fields.DecimalField>), ('duration', <django.db.models.fields.PositiveIntegerField>), ('paymentDate', <django.db.models.fields.DateTimeField>), ('endDate', <django.db.models.fields.DateTimeField>), ('valid', <django.db.models.fields.IntegerField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('cotisation', <django.db.models.fields.related.ForeignKey>), ('history_user', <django.db.models.fields.related.ForeignKey>), ('paymentMethod', <django.db.models.fields.related.ForeignKey>), ('user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Historique cotisation', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalProfile', fields=[('id', <django.db.models.fields.IntegerField>), ('credit', <django.db.models.fields.DecimalField>), ('debit', <django.db.models.fields.DecimalField>), ('cotisationEnd', <django.db.models.fields.DateTimeField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Profil', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalSchool', fields=[('id', <django.db.models.fields.IntegerField>), ('name', <django.db.models.fields.CharField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('history_user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical École', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='HistoricalWhiteListHistory', fields=[('id', <django.db.models.fields.IntegerField>), ('paymentDate', <django.db.models.fields.DateTimeField>), ('endDate', <django.db.models.fields.DateTimeField>), ('duration', <django.db.models.fields.PositiveIntegerField>), ('history_id', <django.db.models.fields.AutoField>), ('history_change_reason', <django.db.models.fields.CharField>), ('history_date', <django.db.models.fields.DateTimeField>), ('history_type', <django.db.models.fields.CharField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('history_user', <django.db.models.fields.related.ForeignKey>), ('user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'historical Historique accès gracieux', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date'}, bases=(<class 'simple_history.models.HistoricalChanges'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='Profile', fields=[('id', <django.db.models.fields.AutoField>), ('credit', <django.db.models.fields.DecimalField>), ('debit', <django.db.models.fields.DecimalField>), ('cotisationEnd', <django.db.models.fields.DateTimeField>)], options={'verbose_name': 'Profil'}>, <CreateModel name='School', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>)], options={'verbose_name': 'École'}>, <CreateModel name='WhiteListHistory', fields=[('id', <django.db.models.fields.AutoField>), ('paymentDate', <django.db.models.fields.DateTimeField>), ('endDate', <django.db.models.fields.DateTimeField>), ('duration', <django.db.models.fields.PositiveIntegerField>), ('coopeman', <django.db.models.fields.related.ForeignKey>), ('user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Historique accès gracieux'}>, <AddField model_name='profile', name='school', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='profile', name='user', field=<django.db.models.fields.related.OneToOneField>>, <AddField model_name='historicalprofile', name='school', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='historicalprofile', name='user', field=<django.db.models.fields.related.ForeignKey>>]
+
+ +
+ +
+
+

users.migrations.0002_auto_20190218_2231 module

+
+
+class users.migrations.0002_auto_20190218_2231.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('users', '0001_initial')]
+
+ +
+
+operations = [<AddField model_name='historicalprofile', name='date_verified', field=<django.db.models.fields.DateTimeField>>, <AddField model_name='profile', name='date_verified', field=<django.db.models.fields.DateTimeField>>]
+
+ +
+ +
+
+

users.migrations.0003_auto_20190219_1921 module

+
+
+class users.migrations.0003_auto_20190219_1921.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('users', '0002_auto_20190218_2231')]
+
+ +
+
+operations = [<RemoveField model_name='historicalprofile', name='date_verified'>, <RemoveField model_name='profile', name='date_verified'>]
+
+ +
+ +
+
+

users.migrations.0004_auto_20190226_2313 module

+
+
+class users.migrations.0004_auto_20190226_2313.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('users', '0003_auto_20190219_1921')]
+
+ +
+
+operations = [<AlterModelOptions name='cotisationhistory', options={'verbose_name': 'Historique cotisation'}>, <RemoveField model_name='cotisationhistory', name='valid'>, <RemoveField model_name='historicalcotisationhistory', name='valid'>]
+
+ +
+ +
+
+

users.migrations.0005_auto_20190227_0859 module

+
+
+class users.migrations.0005_auto_20190227_0859.Migration(name, app_label)
+

Bases : django.db.migrations.migration.Migration

+
+
+dependencies = [('users', '0004_auto_20190226_2313')]
+
+ +
+
+operations = [<AlterModelOptions name='whitelisthistory', options={'verbose_name': 'Historique accès gracieux', 'verbose_name_plural': 'Historique accès gracieux'}>, <AlterField model_name='historicalprofile', name='cotisationEnd', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='historicalprofile', name='credit', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='historicalprofile', name='debit', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='historicalwhitelisthistory', name='endDate', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='historicalwhitelisthistory', name='paymentDate', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='profile', name='cotisationEnd', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='profile', name='credit', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='profile', name='debit', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='profile', name='school', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='profile', name='user', field=<django.db.models.fields.related.OneToOneField>>, <AlterField model_name='whitelisthistory', name='endDate', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='whitelisthistory', name='paymentDate', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='whitelisthistory', name='user', field=<django.db.models.fields.related.ForeignKey>>]
+
+ +
+ +
+
+

Module contents

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/_build/latex/CoopeV3.aux b/docs/_build/latex/CoopeV3.aux new file mode 100644 index 0000000..2219da1 --- /dev/null +++ b/docs/_build/latex/CoopeV3.aux @@ -0,0 +1,1329 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\babel@aux{english}{} +\newlabel{index::doc}{{}{1}{}{section*.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Views documentation}{1}{chapter.1}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{modules/views:views-documentation}{{1}{1}{Views documentation}{chapter.1}{}} +\newlabel{modules/views::doc}{{1}{1}{Views documentation}{chapter.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.1}Gestion app views}{1}{section.1.1}} +\newlabel{modules/views:module-gestion.views}{{1.1}{1}{Gestion app views}{section.1.1}{}} +\newlabel{modules/views:gestion-app-views}{{1.1}{1}{Gestion app views}{section.1.1}{}} +\newlabel{modules/views:gestion.views.ActiveProductsAutocomplete}{{1.1}{1}{Gestion app views}{section*.3}{}} +\newlabel{modules/views:gestion.views.ActiveProductsAutocomplete.get_queryset}{{1.1}{1}{Gestion app views}{section*.4}{}} +\newlabel{modules/views:gestion.views.KegActiveAutocomplete}{{1.1}{1}{Gestion app views}{section*.5}{}} +\newlabel{modules/views:gestion.views.KegActiveAutocomplete.get_queryset}{{1.1}{1}{Gestion app views}{section*.6}{}} +\newlabel{modules/views:gestion.views.KegPositiveAutocomplete}{{1.1}{1}{Gestion app views}{section*.7}{}} +\newlabel{modules/views:gestion.views.KegPositiveAutocomplete.get_queryset}{{1.1}{1}{Gestion app views}{section*.8}{}} +\newlabel{modules/views:gestion.views.MenusAutocomplete}{{1.1}{1}{Gestion app views}{section*.9}{}} +\newlabel{modules/views:gestion.views.MenusAutocomplete.get_queryset}{{1.1}{1}{Gestion app views}{section*.10}{}} +\newlabel{modules/views:gestion.views.ProductsAutocomplete}{{1.1}{1}{Gestion app views}{section*.11}{}} +\newlabel{modules/views:gestion.views.ProductsAutocomplete.get_queryset}{{1.1}{1}{Gestion app views}{section*.12}{}} +\newlabel{modules/views:gestion.views.addKeg}{{1.1}{1}{Gestion app views}{section*.13}{}} +\newlabel{modules/views:gestion.views.addMenu}{{1.1}{1}{Gestion app views}{section*.14}{}} +\newlabel{modules/views:gestion.views.addProduct}{{1.1}{1}{Gestion app views}{section*.15}{}} +\newlabel{modules/views:gestion.views.add_pintes}{{1.1}{2}{Gestion app views}{section*.16}{}} +\newlabel{modules/views:gestion.views.allocate}{{1.1}{2}{Gestion app views}{section*.17}{}} +\newlabel{modules/views:gestion.views.cancel_consumption}{{1.1}{2}{Gestion app views}{section*.18}{}} +\newlabel{modules/views:gestion.views.cancel_menu}{{1.1}{2}{Gestion app views}{section*.19}{}} +\newlabel{modules/views:gestion.views.cancel_reload}{{1.1}{2}{Gestion app views}{section*.20}{}} +\newlabel{modules/views:gestion.views.closeDirectKeg}{{1.1}{2}{Gestion app views}{section*.21}{}} +\newlabel{modules/views:gestion.views.closeKeg}{{1.1}{2}{Gestion app views}{section*.22}{}} +\newlabel{modules/views:gestion.views.editKeg}{{1.1}{2}{Gestion app views}{section*.23}{}} +\newlabel{modules/views:gestion.views.editProduct}{{1.1}{2}{Gestion app views}{section*.24}{}} +\newlabel{modules/views:gestion.views.edit_menu}{{1.1}{2}{Gestion app views}{section*.25}{}} +\newlabel{modules/views:gestion.views.gen_releve}{{1.1}{2}{Gestion app views}{section*.26}{}} +\newlabel{modules/views:gestion.views.getProduct}{{1.1}{2}{Gestion app views}{section*.27}{}} +\newlabel{modules/views:gestion.views.get_menu}{{1.1}{2}{Gestion app views}{section*.28}{}} +\newlabel{modules/views:gestion.views.kegH}{{1.1}{2}{Gestion app views}{section*.29}{}} +\newlabel{modules/views:gestion.views.kegsList}{{1.1}{2}{Gestion app views}{section*.30}{}} +\newlabel{modules/views:gestion.views.manage}{{1.1}{2}{Gestion app views}{section*.31}{}} +\newlabel{modules/views:gestion.views.menus_list}{{1.1}{3}{Gestion app views}{section*.32}{}} +\newlabel{modules/views:gestion.views.openDirectKeg}{{1.1}{3}{Gestion app views}{section*.33}{}} +\newlabel{modules/views:gestion.views.openKeg}{{1.1}{3}{Gestion app views}{section*.34}{}} +\newlabel{modules/views:gestion.views.order}{{1.1}{3}{Gestion app views}{section*.35}{}} +\newlabel{modules/views:gestion.views.pintes_list}{{1.1}{3}{Gestion app views}{section*.36}{}} +\newlabel{modules/views:gestion.views.pintes_user_list}{{1.1}{3}{Gestion app views}{section*.37}{}} +\newlabel{modules/views:gestion.views.productProfile}{{1.1}{3}{Gestion app views}{section*.38}{}} +\newlabel{modules/views:gestion.views.productsIndex}{{1.1}{3}{Gestion app views}{section*.39}{}} +\newlabel{modules/views:gestion.views.productsList}{{1.1}{3}{Gestion app views}{section*.40}{}} +\newlabel{modules/views:gestion.views.ranking}{{1.1}{3}{Gestion app views}{section*.41}{}} +\newlabel{modules/views:gestion.views.refund}{{1.1}{3}{Gestion app views}{section*.42}{}} +\newlabel{modules/views:gestion.views.release}{{1.1}{3}{Gestion app views}{section*.43}{}} +\newlabel{modules/views:gestion.views.release_pintes}{{1.1}{3}{Gestion app views}{section*.44}{}} +\newlabel{modules/views:gestion.views.reload}{{1.1}{3}{Gestion app views}{section*.45}{}} +\newlabel{modules/views:gestion.views.searchMenu}{{1.1}{3}{Gestion app views}{section*.46}{}} +\newlabel{modules/views:gestion.views.searchProduct}{{1.1}{3}{Gestion app views}{section*.47}{}} +\newlabel{modules/views:gestion.views.switch_activate}{{1.1}{3}{Gestion app views}{section*.48}{}} +\newlabel{modules/views:gestion.views.switch_activate_menu}{{1.1}{3}{Gestion app views}{section*.49}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.2}Users app views}{4}{section.1.2}} +\newlabel{modules/views:module-users.views}{{1.2}{4}{Users app views}{section.1.2}{}} +\newlabel{modules/views:users-app-views}{{1.2}{4}{Users app views}{section.1.2}{}} +\newlabel{modules/views:users.views.ActiveUsersAutocomplete}{{1.2}{4}{Users app views}{section*.50}{}} +\newlabel{modules/views:users.views.ActiveUsersAutocomplete.get_queryset}{{1.2}{4}{Users app views}{section*.51}{}} +\newlabel{modules/views:users.views.AdherentAutocomplete}{{1.2}{4}{Users app views}{section*.52}{}} +\newlabel{modules/views:users.views.AdherentAutocomplete.get_queryset}{{1.2}{4}{Users app views}{section*.53}{}} +\newlabel{modules/views:users.views.AllUsersAutocomplete}{{1.2}{4}{Users app views}{section*.54}{}} +\newlabel{modules/views:users.views.AllUsersAutocomplete.get_queryset}{{1.2}{4}{Users app views}{section*.55}{}} +\newlabel{modules/views:users.views.NonAdminUserAutocomplete}{{1.2}{4}{Users app views}{section*.56}{}} +\newlabel{modules/views:users.views.NonAdminUserAutocomplete.get_queryset}{{1.2}{4}{Users app views}{section*.57}{}} +\newlabel{modules/views:users.views.NonSuperUserAutocomplete}{{1.2}{4}{Users app views}{section*.58}{}} +\newlabel{modules/views:users.views.NonSuperUserAutocomplete.get_queryset}{{1.2}{4}{Users app views}{section*.59}{}} +\newlabel{modules/views:users.views.addAdmin}{{1.2}{4}{Users app views}{section*.60}{}} +\newlabel{modules/views:users.views.addCotisationHistory}{{1.2}{4}{Users app views}{section*.61}{}} +\newlabel{modules/views:users.views.addSuperuser}{{1.2}{4}{Users app views}{section*.62}{}} +\newlabel{modules/views:users.views.addWhiteListHistory}{{1.2}{4}{Users app views}{section*.63}{}} +\newlabel{modules/views:users.views.adminsIndex}{{1.2}{4}{Users app views}{section*.64}{}} +\newlabel{modules/views:users.views.allReloads}{{1.2}{4}{Users app views}{section*.65}{}} +\newlabel{modules/views:users.views.all_consumptions}{{1.2}{4}{Users app views}{section*.66}{}} +\newlabel{modules/views:users.views.all_menus}{{1.2}{4}{Users app views}{section*.67}{}} +\newlabel{modules/views:users.views.createGroup}{{1.2}{5}{Users app views}{section*.68}{}} +\newlabel{modules/views:users.views.createSchool}{{1.2}{5}{Users app views}{section*.69}{}} +\newlabel{modules/views:users.views.createUser}{{1.2}{5}{Users app views}{section*.70}{}} +\newlabel{modules/views:users.views.deleteCotisationHistory}{{1.2}{5}{Users app views}{section*.71}{}} +\newlabel{modules/views:users.views.deleteGroup}{{1.2}{5}{Users app views}{section*.72}{}} +\newlabel{modules/views:users.views.deleteSchool}{{1.2}{5}{Users app views}{section*.73}{}} +\newlabel{modules/views:users.views.editGroup}{{1.2}{5}{Users app views}{section*.74}{}} +\newlabel{modules/views:users.views.editGroups}{{1.2}{5}{Users app views}{section*.75}{}} +\newlabel{modules/views:users.views.editPassword}{{1.2}{5}{Users app views}{section*.76}{}} +\newlabel{modules/views:users.views.editSchool}{{1.2}{5}{Users app views}{section*.77}{}} +\newlabel{modules/views:users.views.editUser}{{1.2}{5}{Users app views}{section*.78}{}} +\newlabel{modules/views:users.views.export_csv}{{1.2}{5}{Users app views}{section*.79}{}} +\newlabel{modules/views:users.views.gen_user_infos}{{1.2}{5}{Users app views}{section*.80}{}} +\newlabel{modules/views:users.views.getUser}{{1.2}{5}{Users app views}{section*.81}{}} +\newlabel{modules/views:users.views.groupProfile}{{1.2}{5}{Users app views}{section*.82}{}} +\newlabel{modules/views:users.views.groupsIndex}{{1.2}{5}{Users app views}{section*.83}{}} +\newlabel{modules/views:users.views.index}{{1.2}{6}{Users app views}{section*.84}{}} +\newlabel{modules/views:users.views.loginView}{{1.2}{6}{Users app views}{section*.85}{}} +\newlabel{modules/views:users.views.logoutView}{{1.2}{6}{Users app views}{section*.86}{}} +\newlabel{modules/views:users.views.profile}{{1.2}{6}{Users app views}{section*.87}{}} +\newlabel{modules/views:users.views.removeAdmin}{{1.2}{6}{Users app views}{section*.88}{}} +\newlabel{modules/views:users.views.removeRight}{{1.2}{6}{Users app views}{section*.89}{}} +\newlabel{modules/views:users.views.removeSuperuser}{{1.2}{6}{Users app views}{section*.90}{}} +\newlabel{modules/views:users.views.removeUser}{{1.2}{6}{Users app views}{section*.91}{}} +\newlabel{modules/views:users.views.resetPassword}{{1.2}{6}{Users app views}{section*.92}{}} +\newlabel{modules/views:users.views.schoolsIndex}{{1.2}{6}{Users app views}{section*.93}{}} +\newlabel{modules/views:users.views.searchUser}{{1.2}{6}{Users app views}{section*.94}{}} +\newlabel{modules/views:users.views.superusersIndex}{{1.2}{6}{Users app views}{section*.95}{}} +\newlabel{modules/views:users.views.switch_activate_user}{{1.2}{6}{Users app views}{section*.96}{}} +\newlabel{modules/views:users.views.usersIndex}{{1.2}{6}{Users app views}{section*.97}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.3}Preferences app views}{6}{section.1.3}} +\newlabel{modules/views:module-preferences.views}{{1.3}{6}{Preferences app views}{section.1.3}{}} +\newlabel{modules/views:preferences-app-views}{{1.3}{6}{Preferences app views}{section.1.3}{}} +\newlabel{modules/views:preferences.views.addCotisation}{{1.3}{6}{Preferences app views}{section*.98}{}} +\newlabel{modules/views:preferences.views.addPaymentMethod}{{1.3}{6}{Preferences app views}{section*.99}{}} +\newlabel{modules/views:preferences.views.cotisationsIndex}{{1.3}{6}{Preferences app views}{section*.100}{}} +\newlabel{modules/views:preferences.views.deleteCotisation}{{1.3}{6}{Preferences app views}{section*.101}{}} +\newlabel{modules/views:preferences.views.deletePaymentMethod}{{1.3}{7}{Preferences app views}{section*.102}{}} +\newlabel{modules/views:preferences.views.editCotisation}{{1.3}{7}{Preferences app views}{section*.103}{}} +\newlabel{modules/views:preferences.views.editPaymentMethod}{{1.3}{7}{Preferences app views}{section*.104}{}} +\newlabel{modules/views:preferences.views.generalPreferences}{{1.3}{7}{Preferences app views}{section*.105}{}} +\newlabel{modules/views:preferences.views.get_config}{{1.3}{7}{Preferences app views}{section*.106}{}} +\newlabel{modules/views:preferences.views.get_cotisation}{{1.3}{7}{Preferences app views}{section*.107}{}} +\newlabel{modules/views:preferences.views.inactive}{{1.3}{7}{Preferences app views}{section*.108}{}} +\newlabel{modules/views:preferences.views.paymentMethodsIndex}{{1.3}{7}{Preferences app views}{section*.109}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.4}coopeV3 app views}{7}{section.1.4}} +\newlabel{modules/views:module-coopeV3.views}{{1.4}{7}{coopeV3 app views}{section.1.4}{}} +\newlabel{modules/views:coopev3-app-views}{{1.4}{7}{coopeV3 app views}{section.1.4}{}} +\newlabel{modules/views:coopeV3.views.coope_runner}{{1.4}{7}{coopeV3 app views}{section*.110}{}} +\newlabel{modules/views:coopeV3.views.home}{{1.4}{7}{coopeV3 app views}{section*.111}{}} +\newlabel{modules/views:coopeV3.views.homepage}{{1.4}{7}{coopeV3 app views}{section*.112}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Models documentation}{9}{chapter.2}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{modules/models:models-documentation}{{2}{9}{Models documentation}{chapter.2}{}} +\newlabel{modules/models::doc}{{2}{9}{Models documentation}{chapter.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}Gestion app models}{9}{section.2.1}} +\newlabel{modules/models:module-gestion.models}{{2.1}{9}{Gestion app models}{section.2.1}{}} +\newlabel{modules/models:gestion-app-models}{{2.1}{9}{Gestion app models}{section.2.1}{}} +\newlabel{modules/models:gestion.models.Consumption}{{2.1}{9}{Gestion app models}{section*.113}{}} +\newlabel{modules/models:gestion.models.Consumption.DoesNotExist}{{2.1}{9}{Gestion app models}{section*.114}{}} +\newlabel{modules/models:gestion.models.Consumption.MultipleObjectsReturned}{{2.1}{9}{Gestion app models}{section*.115}{}} +\newlabel{modules/models:gestion.models.Consumption.customer}{{2.1}{9}{Gestion app models}{section*.116}{}} +\newlabel{modules/models:gestion.models.Consumption.customer_id}{{2.1}{9}{Gestion app models}{section*.117}{}} +\newlabel{modules/models:gestion.models.Consumption.history}{{2.1}{9}{Gestion app models}{section*.118}{}} +\newlabel{modules/models:gestion.models.Consumption.id}{{2.1}{9}{Gestion app models}{section*.119}{}} +\newlabel{modules/models:gestion.models.Consumption.objects}{{2.1}{9}{Gestion app models}{section*.120}{}} +\newlabel{modules/models:gestion.models.Consumption.product}{{2.1}{9}{Gestion app models}{section*.121}{}} +\newlabel{modules/models:gestion.models.Consumption.product_id}{{2.1}{9}{Gestion app models}{section*.122}{}} +\newlabel{modules/models:gestion.models.Consumption.quantity}{{2.1}{9}{Gestion app models}{section*.123}{}} +\newlabel{modules/models:gestion.models.Consumption.save_without_historical_record}{{2.1}{9}{Gestion app models}{section*.124}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory}{{2.1}{10}{Gestion app models}{section*.125}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.DoesNotExist}{{2.1}{10}{Gestion app models}{section*.126}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.MultipleObjectsReturned}{{2.1}{10}{Gestion app models}{section*.127}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.amount}{{2.1}{10}{Gestion app models}{section*.128}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.coopeman}{{2.1}{10}{Gestion app models}{section*.129}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.coopeman_id}{{2.1}{10}{Gestion app models}{section*.130}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.customer}{{2.1}{10}{Gestion app models}{section*.131}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.customer_id}{{2.1}{10}{Gestion app models}{section*.132}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.date}{{2.1}{10}{Gestion app models}{section*.133}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.get_next_by_date}{{2.1}{10}{Gestion app models}{section*.134}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.get_previous_by_date}{{2.1}{10}{Gestion app models}{section*.135}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.history}{{2.1}{10}{Gestion app models}{section*.136}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.id}{{2.1}{10}{Gestion app models}{section*.137}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.objects}{{2.1}{10}{Gestion app models}{section*.138}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.paymentMethod}{{2.1}{10}{Gestion app models}{section*.139}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.paymentMethod_id}{{2.1}{10}{Gestion app models}{section*.140}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.product}{{2.1}{10}{Gestion app models}{section*.141}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.product_id}{{2.1}{10}{Gestion app models}{section*.142}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.quantity}{{2.1}{10}{Gestion app models}{section*.143}{}} +\newlabel{modules/models:gestion.models.ConsumptionHistory.save_without_historical_record}{{2.1}{10}{Gestion app models}{section*.144}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption}{{2.1}{10}{Gestion app models}{section*.145}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.DoesNotExist}{{2.1}{11}{Gestion app models}{section*.146}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.MultipleObjectsReturned}{{2.1}{11}{Gestion app models}{section*.147}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.customer}{{2.1}{11}{Gestion app models}{section*.148}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.customer_id}{{2.1}{11}{Gestion app models}{section*.149}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.get_history_type_display}{{2.1}{11}{Gestion app models}{section*.150}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.get_next_by_history_date}{{2.1}{11}{Gestion app models}{section*.151}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.get_previous_by_history_date}{{2.1}{11}{Gestion app models}{section*.152}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.history_change_reason}{{2.1}{11}{Gestion app models}{section*.153}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.history_date}{{2.1}{11}{Gestion app models}{section*.154}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.history_id}{{2.1}{11}{Gestion app models}{section*.155}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.history_object}{{2.1}{11}{Gestion app models}{section*.156}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.history_type}{{2.1}{11}{Gestion app models}{section*.157}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.history_user}{{2.1}{11}{Gestion app models}{section*.158}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.history_user_id}{{2.1}{11}{Gestion app models}{section*.159}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.id}{{2.1}{11}{Gestion app models}{section*.160}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.instance}{{2.1}{12}{Gestion app models}{section*.161}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.instance_type}{{2.1}{12}{Gestion app models}{section*.162}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.next_record}{{2.1}{12}{Gestion app models}{section*.163}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.objects}{{2.1}{12}{Gestion app models}{section*.164}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.prev_record}{{2.1}{12}{Gestion app models}{section*.165}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.product}{{2.1}{12}{Gestion app models}{section*.166}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.product_id}{{2.1}{12}{Gestion app models}{section*.167}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.quantity}{{2.1}{12}{Gestion app models}{section*.168}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumption.revert_url}{{2.1}{12}{Gestion app models}{section*.169}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory}{{2.1}{12}{Gestion app models}{section*.170}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.DoesNotExist}{{2.1}{12}{Gestion app models}{section*.171}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.MultipleObjectsReturned}{{2.1}{12}{Gestion app models}{section*.172}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.amount}{{2.1}{12}{Gestion app models}{section*.173}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.coopeman}{{2.1}{12}{Gestion app models}{section*.174}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.coopeman_id}{{2.1}{13}{Gestion app models}{section*.175}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.customer}{{2.1}{13}{Gestion app models}{section*.176}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.customer_id}{{2.1}{13}{Gestion app models}{section*.177}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.date}{{2.1}{13}{Gestion app models}{section*.178}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.get_history_type_display}{{2.1}{13}{Gestion app models}{section*.179}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.get_next_by_date}{{2.1}{13}{Gestion app models}{section*.180}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.get_next_by_history_date}{{2.1}{13}{Gestion app models}{section*.181}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.get_previous_by_date}{{2.1}{13}{Gestion app models}{section*.182}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.get_previous_by_history_date}{{2.1}{13}{Gestion app models}{section*.183}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.history_change_reason}{{2.1}{13}{Gestion app models}{section*.184}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.history_date}{{2.1}{13}{Gestion app models}{section*.185}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.history_id}{{2.1}{13}{Gestion app models}{section*.186}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.history_object}{{2.1}{13}{Gestion app models}{section*.187}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.history_type}{{2.1}{13}{Gestion app models}{section*.188}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.history_user}{{2.1}{13}{Gestion app models}{section*.189}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.history_user_id}{{2.1}{14}{Gestion app models}{section*.190}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.id}{{2.1}{14}{Gestion app models}{section*.191}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.instance}{{2.1}{14}{Gestion app models}{section*.192}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.instance_type}{{2.1}{14}{Gestion app models}{section*.193}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.next_record}{{2.1}{14}{Gestion app models}{section*.194}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.objects}{{2.1}{14}{Gestion app models}{section*.195}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.paymentMethod}{{2.1}{14}{Gestion app models}{section*.196}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.paymentMethod_id}{{2.1}{14}{Gestion app models}{section*.197}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.prev_record}{{2.1}{14}{Gestion app models}{section*.198}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.product}{{2.1}{14}{Gestion app models}{section*.199}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.product_id}{{2.1}{14}{Gestion app models}{section*.200}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.quantity}{{2.1}{14}{Gestion app models}{section*.201}{}} +\newlabel{modules/models:gestion.models.HistoricalConsumptionHistory.revert_url}{{2.1}{14}{Gestion app models}{section*.202}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg}{{2.1}{14}{Gestion app models}{section*.203}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.DoesNotExist}{{2.1}{15}{Gestion app models}{section*.204}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.MultipleObjectsReturned}{{2.1}{15}{Gestion app models}{section*.205}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.amount}{{2.1}{15}{Gestion app models}{section*.206}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.barcode}{{2.1}{15}{Gestion app models}{section*.207}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.capacity}{{2.1}{15}{Gestion app models}{section*.208}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.demi}{{2.1}{15}{Gestion app models}{section*.209}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.demi_id}{{2.1}{15}{Gestion app models}{section*.210}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.galopin}{{2.1}{15}{Gestion app models}{section*.211}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.galopin_id}{{2.1}{15}{Gestion app models}{section*.212}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.get_history_type_display}{{2.1}{15}{Gestion app models}{section*.213}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.get_next_by_history_date}{{2.1}{15}{Gestion app models}{section*.214}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.get_previous_by_history_date}{{2.1}{15}{Gestion app models}{section*.215}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.history_change_reason}{{2.1}{15}{Gestion app models}{section*.216}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.history_date}{{2.1}{15}{Gestion app models}{section*.217}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.history_id}{{2.1}{16}{Gestion app models}{section*.218}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.history_object}{{2.1}{16}{Gestion app models}{section*.219}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.history_type}{{2.1}{16}{Gestion app models}{section*.220}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.history_user}{{2.1}{16}{Gestion app models}{section*.221}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.history_user_id}{{2.1}{16}{Gestion app models}{section*.222}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.id}{{2.1}{16}{Gestion app models}{section*.223}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.instance}{{2.1}{16}{Gestion app models}{section*.224}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.instance_type}{{2.1}{16}{Gestion app models}{section*.225}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.is_active}{{2.1}{16}{Gestion app models}{section*.226}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.name}{{2.1}{16}{Gestion app models}{section*.227}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.next_record}{{2.1}{16}{Gestion app models}{section*.228}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.objects}{{2.1}{16}{Gestion app models}{section*.229}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.pinte}{{2.1}{16}{Gestion app models}{section*.230}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.pinte_id}{{2.1}{16}{Gestion app models}{section*.231}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.prev_record}{{2.1}{17}{Gestion app models}{section*.232}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.revert_url}{{2.1}{17}{Gestion app models}{section*.233}{}} +\newlabel{modules/models:gestion.models.HistoricalKeg.stockHold}{{2.1}{17}{Gestion app models}{section*.234}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory}{{2.1}{17}{Gestion app models}{section*.235}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.DoesNotExist}{{2.1}{17}{Gestion app models}{section*.236}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.MultipleObjectsReturned}{{2.1}{17}{Gestion app models}{section*.237}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.amountSold}{{2.1}{17}{Gestion app models}{section*.238}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.closingDate}{{2.1}{17}{Gestion app models}{section*.239}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.get_history_type_display}{{2.1}{17}{Gestion app models}{section*.240}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.get_next_by_history_date}{{2.1}{17}{Gestion app models}{section*.241}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.get_next_by_openingDate}{{2.1}{17}{Gestion app models}{section*.242}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.get_previous_by_history_date}{{2.1}{17}{Gestion app models}{section*.243}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.get_previous_by_openingDate}{{2.1}{17}{Gestion app models}{section*.244}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.history_change_reason}{{2.1}{17}{Gestion app models}{section*.245}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.history_date}{{2.1}{17}{Gestion app models}{section*.246}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.history_id}{{2.1}{17}{Gestion app models}{section*.247}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.history_object}{{2.1}{17}{Gestion app models}{section*.248}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.history_type}{{2.1}{17}{Gestion app models}{section*.249}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.history_user}{{2.1}{17}{Gestion app models}{section*.250}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.history_user_id}{{2.1}{18}{Gestion app models}{section*.251}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.id}{{2.1}{18}{Gestion app models}{section*.252}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.instance}{{2.1}{18}{Gestion app models}{section*.253}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.instance_type}{{2.1}{18}{Gestion app models}{section*.254}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.isCurrentKegHistory}{{2.1}{18}{Gestion app models}{section*.255}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.keg}{{2.1}{18}{Gestion app models}{section*.256}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.keg_id}{{2.1}{18}{Gestion app models}{section*.257}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.next_record}{{2.1}{18}{Gestion app models}{section*.258}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.objects}{{2.1}{18}{Gestion app models}{section*.259}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.openingDate}{{2.1}{18}{Gestion app models}{section*.260}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.prev_record}{{2.1}{18}{Gestion app models}{section*.261}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.quantitySold}{{2.1}{18}{Gestion app models}{section*.262}{}} +\newlabel{modules/models:gestion.models.HistoricalKegHistory.revert_url}{{2.1}{18}{Gestion app models}{section*.263}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu}{{2.1}{18}{Gestion app models}{section*.264}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.DoesNotExist}{{2.1}{19}{Gestion app models}{section*.265}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.MultipleObjectsReturned}{{2.1}{19}{Gestion app models}{section*.266}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.amount}{{2.1}{19}{Gestion app models}{section*.267}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.barcode}{{2.1}{19}{Gestion app models}{section*.268}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.get_history_type_display}{{2.1}{19}{Gestion app models}{section*.269}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.get_next_by_history_date}{{2.1}{19}{Gestion app models}{section*.270}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.get_previous_by_history_date}{{2.1}{19}{Gestion app models}{section*.271}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.history_change_reason}{{2.1}{19}{Gestion app models}{section*.272}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.history_date}{{2.1}{19}{Gestion app models}{section*.273}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.history_id}{{2.1}{19}{Gestion app models}{section*.274}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.history_object}{{2.1}{19}{Gestion app models}{section*.275}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.history_type}{{2.1}{19}{Gestion app models}{section*.276}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.history_user}{{2.1}{19}{Gestion app models}{section*.277}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.history_user_id}{{2.1}{19}{Gestion app models}{section*.278}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.id}{{2.1}{19}{Gestion app models}{section*.279}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.instance}{{2.1}{19}{Gestion app models}{section*.280}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.instance_type}{{2.1}{19}{Gestion app models}{section*.281}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.is_active}{{2.1}{20}{Gestion app models}{section*.282}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.name}{{2.1}{20}{Gestion app models}{section*.283}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.next_record}{{2.1}{20}{Gestion app models}{section*.284}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.objects}{{2.1}{20}{Gestion app models}{section*.285}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.prev_record}{{2.1}{20}{Gestion app models}{section*.286}{}} +\newlabel{modules/models:gestion.models.HistoricalMenu.revert_url}{{2.1}{20}{Gestion app models}{section*.287}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory}{{2.1}{20}{Gestion app models}{section*.288}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.DoesNotExist}{{2.1}{20}{Gestion app models}{section*.289}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.MultipleObjectsReturned}{{2.1}{20}{Gestion app models}{section*.290}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.amount}{{2.1}{20}{Gestion app models}{section*.291}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.coopeman}{{2.1}{20}{Gestion app models}{section*.292}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.coopeman_id}{{2.1}{20}{Gestion app models}{section*.293}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.customer}{{2.1}{20}{Gestion app models}{section*.294}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.customer_id}{{2.1}{20}{Gestion app models}{section*.295}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.date}{{2.1}{21}{Gestion app models}{section*.296}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.get_history_type_display}{{2.1}{21}{Gestion app models}{section*.297}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.get_next_by_date}{{2.1}{21}{Gestion app models}{section*.298}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.get_next_by_history_date}{{2.1}{21}{Gestion app models}{section*.299}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.get_previous_by_date}{{2.1}{21}{Gestion app models}{section*.300}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.get_previous_by_history_date}{{2.1}{21}{Gestion app models}{section*.301}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.history_change_reason}{{2.1}{21}{Gestion app models}{section*.302}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.history_date}{{2.1}{21}{Gestion app models}{section*.303}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.history_id}{{2.1}{21}{Gestion app models}{section*.304}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.history_object}{{2.1}{21}{Gestion app models}{section*.305}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.history_type}{{2.1}{21}{Gestion app models}{section*.306}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.history_user}{{2.1}{21}{Gestion app models}{section*.307}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.history_user_id}{{2.1}{21}{Gestion app models}{section*.308}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.id}{{2.1}{21}{Gestion app models}{section*.309}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.instance}{{2.1}{21}{Gestion app models}{section*.310}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.instance_type}{{2.1}{21}{Gestion app models}{section*.311}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.menu}{{2.1}{21}{Gestion app models}{section*.312}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.menu_id}{{2.1}{22}{Gestion app models}{section*.313}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.next_record}{{2.1}{22}{Gestion app models}{section*.314}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.objects}{{2.1}{22}{Gestion app models}{section*.315}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.paymentMethod}{{2.1}{22}{Gestion app models}{section*.316}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.paymentMethod_id}{{2.1}{22}{Gestion app models}{section*.317}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.prev_record}{{2.1}{22}{Gestion app models}{section*.318}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.quantity}{{2.1}{22}{Gestion app models}{section*.319}{}} +\newlabel{modules/models:gestion.models.HistoricalMenuHistory.revert_url}{{2.1}{22}{Gestion app models}{section*.320}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte}{{2.1}{22}{Gestion app models}{section*.321}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.DoesNotExist}{{2.1}{22}{Gestion app models}{section*.322}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.MultipleObjectsReturned}{{2.1}{22}{Gestion app models}{section*.323}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.current_owner}{{2.1}{22}{Gestion app models}{section*.324}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.current_owner_id}{{2.1}{23}{Gestion app models}{section*.325}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.get_history_type_display}{{2.1}{23}{Gestion app models}{section*.326}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.get_next_by_history_date}{{2.1}{23}{Gestion app models}{section*.327}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.get_next_by_last_update_date}{{2.1}{23}{Gestion app models}{section*.328}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.get_previous_by_history_date}{{2.1}{23}{Gestion app models}{section*.329}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.get_previous_by_last_update_date}{{2.1}{23}{Gestion app models}{section*.330}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.history_change_reason}{{2.1}{23}{Gestion app models}{section*.331}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.history_date}{{2.1}{23}{Gestion app models}{section*.332}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.history_id}{{2.1}{23}{Gestion app models}{section*.333}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.history_object}{{2.1}{23}{Gestion app models}{section*.334}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.history_type}{{2.1}{23}{Gestion app models}{section*.335}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.history_user}{{2.1}{23}{Gestion app models}{section*.336}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.history_user_id}{{2.1}{23}{Gestion app models}{section*.337}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.id}{{2.1}{23}{Gestion app models}{section*.338}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.instance}{{2.1}{23}{Gestion app models}{section*.339}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.instance_type}{{2.1}{23}{Gestion app models}{section*.340}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.last_update_date}{{2.1}{23}{Gestion app models}{section*.341}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.next_record}{{2.1}{24}{Gestion app models}{section*.342}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.objects}{{2.1}{24}{Gestion app models}{section*.343}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.prev_record}{{2.1}{24}{Gestion app models}{section*.344}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.previous_owner}{{2.1}{24}{Gestion app models}{section*.345}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.previous_owner_id}{{2.1}{24}{Gestion app models}{section*.346}{}} +\newlabel{modules/models:gestion.models.HistoricalPinte.revert_url}{{2.1}{24}{Gestion app models}{section*.347}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct}{{2.1}{24}{Gestion app models}{section*.348}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.DoesNotExist}{{2.1}{24}{Gestion app models}{section*.349}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.MultipleObjectsReturned}{{2.1}{24}{Gestion app models}{section*.350}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.adherentRequired}{{2.1}{24}{Gestion app models}{section*.351}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.amount}{{2.1}{24}{Gestion app models}{section*.352}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.barcode}{{2.1}{24}{Gestion app models}{section*.353}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.category}{{2.1}{24}{Gestion app models}{section*.354}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.deg}{{2.1}{24}{Gestion app models}{section*.355}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.get_category_display}{{2.1}{24}{Gestion app models}{section*.356}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.get_history_type_display}{{2.1}{24}{Gestion app models}{section*.357}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.get_next_by_history_date}{{2.1}{25}{Gestion app models}{section*.358}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.get_previous_by_history_date}{{2.1}{25}{Gestion app models}{section*.359}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.history_change_reason}{{2.1}{25}{Gestion app models}{section*.360}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.history_date}{{2.1}{25}{Gestion app models}{section*.361}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.history_id}{{2.1}{25}{Gestion app models}{section*.362}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.history_object}{{2.1}{25}{Gestion app models}{section*.363}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.history_type}{{2.1}{25}{Gestion app models}{section*.364}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.history_user}{{2.1}{25}{Gestion app models}{section*.365}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.history_user_id}{{2.1}{25}{Gestion app models}{section*.366}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.id}{{2.1}{25}{Gestion app models}{section*.367}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.instance}{{2.1}{25}{Gestion app models}{section*.368}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.instance_type}{{2.1}{25}{Gestion app models}{section*.369}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.is_active}{{2.1}{25}{Gestion app models}{section*.370}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.name}{{2.1}{25}{Gestion app models}{section*.371}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.needQuantityButton}{{2.1}{25}{Gestion app models}{section*.372}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.next_record}{{2.1}{25}{Gestion app models}{section*.373}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.objects}{{2.1}{25}{Gestion app models}{section*.374}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.prev_record}{{2.1}{26}{Gestion app models}{section*.375}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.revert_url}{{2.1}{26}{Gestion app models}{section*.376}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.showingMultiplier}{{2.1}{26}{Gestion app models}{section*.377}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.stockBar}{{2.1}{26}{Gestion app models}{section*.378}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.stockHold}{{2.1}{26}{Gestion app models}{section*.379}{}} +\newlabel{modules/models:gestion.models.HistoricalProduct.volume}{{2.1}{26}{Gestion app models}{section*.380}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund}{{2.1}{26}{Gestion app models}{section*.381}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.DoesNotExist}{{2.1}{26}{Gestion app models}{section*.382}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.MultipleObjectsReturned}{{2.1}{26}{Gestion app models}{section*.383}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.amount}{{2.1}{26}{Gestion app models}{section*.384}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.coopeman}{{2.1}{26}{Gestion app models}{section*.385}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.coopeman_id}{{2.1}{26}{Gestion app models}{section*.386}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.customer}{{2.1}{26}{Gestion app models}{section*.387}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.customer_id}{{2.1}{26}{Gestion app models}{section*.388}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.date}{{2.1}{27}{Gestion app models}{section*.389}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.get_history_type_display}{{2.1}{27}{Gestion app models}{section*.390}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.get_next_by_date}{{2.1}{27}{Gestion app models}{section*.391}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.get_next_by_history_date}{{2.1}{27}{Gestion app models}{section*.392}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.get_previous_by_date}{{2.1}{27}{Gestion app models}{section*.393}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.get_previous_by_history_date}{{2.1}{27}{Gestion app models}{section*.394}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.history_change_reason}{{2.1}{27}{Gestion app models}{section*.395}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.history_date}{{2.1}{27}{Gestion app models}{section*.396}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.history_id}{{2.1}{27}{Gestion app models}{section*.397}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.history_object}{{2.1}{27}{Gestion app models}{section*.398}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.history_type}{{2.1}{27}{Gestion app models}{section*.399}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.history_user}{{2.1}{27}{Gestion app models}{section*.400}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.history_user_id}{{2.1}{27}{Gestion app models}{section*.401}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.id}{{2.1}{27}{Gestion app models}{section*.402}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.instance}{{2.1}{27}{Gestion app models}{section*.403}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.instance_type}{{2.1}{27}{Gestion app models}{section*.404}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.next_record}{{2.1}{27}{Gestion app models}{section*.405}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.objects}{{2.1}{28}{Gestion app models}{section*.406}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.prev_record}{{2.1}{28}{Gestion app models}{section*.407}{}} +\newlabel{modules/models:gestion.models.HistoricalRefund.revert_url}{{2.1}{28}{Gestion app models}{section*.408}{}} +\newlabel{modules/models:gestion.models.HistoricalReload}{{2.1}{28}{Gestion app models}{section*.409}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.DoesNotExist}{{2.1}{28}{Gestion app models}{section*.410}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.MultipleObjectsReturned}{{2.1}{28}{Gestion app models}{section*.411}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.PaymentMethod}{{2.1}{28}{Gestion app models}{section*.412}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.PaymentMethod_id}{{2.1}{28}{Gestion app models}{section*.413}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.amount}{{2.1}{28}{Gestion app models}{section*.414}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.coopeman}{{2.1}{28}{Gestion app models}{section*.415}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.coopeman_id}{{2.1}{28}{Gestion app models}{section*.416}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.customer}{{2.1}{28}{Gestion app models}{section*.417}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.customer_id}{{2.1}{29}{Gestion app models}{section*.418}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.date}{{2.1}{29}{Gestion app models}{section*.419}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.get_history_type_display}{{2.1}{29}{Gestion app models}{section*.420}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.get_next_by_date}{{2.1}{29}{Gestion app models}{section*.421}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.get_next_by_history_date}{{2.1}{29}{Gestion app models}{section*.422}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.get_previous_by_date}{{2.1}{29}{Gestion app models}{section*.423}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.get_previous_by_history_date}{{2.1}{29}{Gestion app models}{section*.424}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.history_change_reason}{{2.1}{29}{Gestion app models}{section*.425}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.history_date}{{2.1}{29}{Gestion app models}{section*.426}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.history_id}{{2.1}{29}{Gestion app models}{section*.427}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.history_object}{{2.1}{29}{Gestion app models}{section*.428}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.history_type}{{2.1}{29}{Gestion app models}{section*.429}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.history_user}{{2.1}{29}{Gestion app models}{section*.430}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.history_user_id}{{2.1}{29}{Gestion app models}{section*.431}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.id}{{2.1}{29}{Gestion app models}{section*.432}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.instance}{{2.1}{29}{Gestion app models}{section*.433}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.instance_type}{{2.1}{29}{Gestion app models}{section*.434}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.next_record}{{2.1}{30}{Gestion app models}{section*.435}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.objects}{{2.1}{30}{Gestion app models}{section*.436}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.prev_record}{{2.1}{30}{Gestion app models}{section*.437}{}} +\newlabel{modules/models:gestion.models.HistoricalReload.revert_url}{{2.1}{30}{Gestion app models}{section*.438}{}} +\newlabel{modules/models:gestion.models.Keg}{{2.1}{30}{Gestion app models}{section*.439}{}} +\newlabel{modules/models:gestion.models.Keg.DoesNotExist}{{2.1}{30}{Gestion app models}{section*.440}{}} +\newlabel{modules/models:gestion.models.Keg.MultipleObjectsReturned}{{2.1}{30}{Gestion app models}{section*.441}{}} +\newlabel{modules/models:gestion.models.Keg.amount}{{2.1}{30}{Gestion app models}{section*.442}{}} +\newlabel{modules/models:gestion.models.Keg.barcode}{{2.1}{30}{Gestion app models}{section*.443}{}} +\newlabel{modules/models:gestion.models.Keg.capacity}{{2.1}{30}{Gestion app models}{section*.444}{}} +\newlabel{modules/models:gestion.models.Keg.demi}{{2.1}{30}{Gestion app models}{section*.445}{}} +\newlabel{modules/models:gestion.models.Keg.demi_id}{{2.1}{30}{Gestion app models}{section*.446}{}} +\newlabel{modules/models:gestion.models.Keg.galopin}{{2.1}{30}{Gestion app models}{section*.447}{}} +\newlabel{modules/models:gestion.models.Keg.galopin_id}{{2.1}{30}{Gestion app models}{section*.448}{}} +\newlabel{modules/models:gestion.models.Keg.history}{{2.1}{30}{Gestion app models}{section*.449}{}} +\newlabel{modules/models:gestion.models.Keg.id}{{2.1}{30}{Gestion app models}{section*.450}{}} +\newlabel{modules/models:gestion.models.Keg.is_active}{{2.1}{30}{Gestion app models}{section*.451}{}} +\newlabel{modules/models:gestion.models.Keg.keghistory_set}{{2.1}{30}{Gestion app models}{section*.452}{}} +\newlabel{modules/models:gestion.models.Keg.name}{{2.1}{31}{Gestion app models}{section*.453}{}} +\newlabel{modules/models:gestion.models.Keg.objects}{{2.1}{31}{Gestion app models}{section*.454}{}} +\newlabel{modules/models:gestion.models.Keg.pinte}{{2.1}{31}{Gestion app models}{section*.455}{}} +\newlabel{modules/models:gestion.models.Keg.pinte_id}{{2.1}{31}{Gestion app models}{section*.456}{}} +\newlabel{modules/models:gestion.models.Keg.save_without_historical_record}{{2.1}{31}{Gestion app models}{section*.457}{}} +\newlabel{modules/models:gestion.models.Keg.stockHold}{{2.1}{31}{Gestion app models}{section*.458}{}} +\newlabel{modules/models:gestion.models.KegHistory}{{2.1}{31}{Gestion app models}{section*.459}{}} +\newlabel{modules/models:gestion.models.KegHistory.DoesNotExist}{{2.1}{31}{Gestion app models}{section*.460}{}} +\newlabel{modules/models:gestion.models.KegHistory.MultipleObjectsReturned}{{2.1}{31}{Gestion app models}{section*.461}{}} +\newlabel{modules/models:gestion.models.KegHistory.amountSold}{{2.1}{31}{Gestion app models}{section*.462}{}} +\newlabel{modules/models:gestion.models.KegHistory.closingDate}{{2.1}{31}{Gestion app models}{section*.463}{}} +\newlabel{modules/models:gestion.models.KegHistory.get_next_by_openingDate}{{2.1}{31}{Gestion app models}{section*.464}{}} +\newlabel{modules/models:gestion.models.KegHistory.get_previous_by_openingDate}{{2.1}{31}{Gestion app models}{section*.465}{}} +\newlabel{modules/models:gestion.models.KegHistory.history}{{2.1}{31}{Gestion app models}{section*.466}{}} +\newlabel{modules/models:gestion.models.KegHistory.id}{{2.1}{31}{Gestion app models}{section*.467}{}} +\newlabel{modules/models:gestion.models.KegHistory.isCurrentKegHistory}{{2.1}{31}{Gestion app models}{section*.468}{}} +\newlabel{modules/models:gestion.models.KegHistory.keg}{{2.1}{31}{Gestion app models}{section*.469}{}} +\newlabel{modules/models:gestion.models.KegHistory.keg_id}{{2.1}{31}{Gestion app models}{section*.470}{}} +\newlabel{modules/models:gestion.models.KegHistory.objects}{{2.1}{31}{Gestion app models}{section*.471}{}} +\newlabel{modules/models:gestion.models.KegHistory.openingDate}{{2.1}{31}{Gestion app models}{section*.472}{}} +\newlabel{modules/models:gestion.models.KegHistory.quantitySold}{{2.1}{31}{Gestion app models}{section*.473}{}} +\newlabel{modules/models:gestion.models.KegHistory.save_without_historical_record}{{2.1}{31}{Gestion app models}{section*.474}{}} +\newlabel{modules/models:gestion.models.Menu}{{2.1}{32}{Gestion app models}{section*.475}{}} +\newlabel{modules/models:gestion.models.Menu.DoesNotExist}{{2.1}{32}{Gestion app models}{section*.476}{}} +\newlabel{modules/models:gestion.models.Menu.MultipleObjectsReturned}{{2.1}{32}{Gestion app models}{section*.477}{}} +\newlabel{modules/models:gestion.models.Menu.adherent_required}{{2.1}{32}{Gestion app models}{section*.478}{}} +\newlabel{modules/models:gestion.models.Menu.amount}{{2.1}{32}{Gestion app models}{section*.479}{}} +\newlabel{modules/models:gestion.models.Menu.articles}{{2.1}{32}{Gestion app models}{section*.480}{}} +\newlabel{modules/models:gestion.models.Menu.barcode}{{2.1}{32}{Gestion app models}{section*.481}{}} +\newlabel{modules/models:gestion.models.Menu.history}{{2.1}{32}{Gestion app models}{section*.482}{}} +\newlabel{modules/models:gestion.models.Menu.id}{{2.1}{32}{Gestion app models}{section*.483}{}} +\newlabel{modules/models:gestion.models.Menu.is_active}{{2.1}{32}{Gestion app models}{section*.484}{}} +\newlabel{modules/models:gestion.models.Menu.menuhistory_set}{{2.1}{32}{Gestion app models}{section*.485}{}} +\newlabel{modules/models:gestion.models.Menu.name}{{2.1}{32}{Gestion app models}{section*.486}{}} +\newlabel{modules/models:gestion.models.Menu.objects}{{2.1}{32}{Gestion app models}{section*.487}{}} +\newlabel{modules/models:gestion.models.Menu.save_without_historical_record}{{2.1}{32}{Gestion app models}{section*.488}{}} +\newlabel{modules/models:gestion.models.MenuHistory}{{2.1}{32}{Gestion app models}{section*.489}{}} +\newlabel{modules/models:gestion.models.MenuHistory.DoesNotExist}{{2.1}{32}{Gestion app models}{section*.490}{}} +\newlabel{modules/models:gestion.models.MenuHistory.MultipleObjectsReturned}{{2.1}{32}{Gestion app models}{section*.491}{}} +\newlabel{modules/models:gestion.models.MenuHistory.amount}{{2.1}{32}{Gestion app models}{section*.492}{}} +\newlabel{modules/models:gestion.models.MenuHistory.coopeman}{{2.1}{32}{Gestion app models}{section*.493}{}} +\newlabel{modules/models:gestion.models.MenuHistory.coopeman_id}{{2.1}{33}{Gestion app models}{section*.494}{}} +\newlabel{modules/models:gestion.models.MenuHistory.customer}{{2.1}{33}{Gestion app models}{section*.495}{}} +\newlabel{modules/models:gestion.models.MenuHistory.customer_id}{{2.1}{33}{Gestion app models}{section*.496}{}} +\newlabel{modules/models:gestion.models.MenuHistory.date}{{2.1}{33}{Gestion app models}{section*.497}{}} +\newlabel{modules/models:gestion.models.MenuHistory.get_next_by_date}{{2.1}{33}{Gestion app models}{section*.498}{}} +\newlabel{modules/models:gestion.models.MenuHistory.get_previous_by_date}{{2.1}{33}{Gestion app models}{section*.499}{}} +\newlabel{modules/models:gestion.models.MenuHistory.history}{{2.1}{33}{Gestion app models}{section*.500}{}} +\newlabel{modules/models:gestion.models.MenuHistory.id}{{2.1}{33}{Gestion app models}{section*.501}{}} +\newlabel{modules/models:gestion.models.MenuHistory.menu}{{2.1}{33}{Gestion app models}{section*.502}{}} +\newlabel{modules/models:gestion.models.MenuHistory.menu_id}{{2.1}{33}{Gestion app models}{section*.503}{}} +\newlabel{modules/models:gestion.models.MenuHistory.objects}{{2.1}{33}{Gestion app models}{section*.504}{}} +\newlabel{modules/models:gestion.models.MenuHistory.paymentMethod}{{2.1}{33}{Gestion app models}{section*.505}{}} +\newlabel{modules/models:gestion.models.MenuHistory.paymentMethod_id}{{2.1}{33}{Gestion app models}{section*.506}{}} +\newlabel{modules/models:gestion.models.MenuHistory.quantity}{{2.1}{33}{Gestion app models}{section*.507}{}} +\newlabel{modules/models:gestion.models.MenuHistory.save_without_historical_record}{{2.1}{33}{Gestion app models}{section*.508}{}} +\newlabel{modules/models:gestion.models.Pinte}{{2.1}{33}{Gestion app models}{section*.509}{}} +\newlabel{modules/models:gestion.models.Pinte.DoesNotExist}{{2.1}{33}{Gestion app models}{section*.510}{}} +\newlabel{modules/models:gestion.models.Pinte.MultipleObjectsReturned}{{2.1}{34}{Gestion app models}{section*.511}{}} +\newlabel{modules/models:gestion.models.Pinte.current_owner}{{2.1}{34}{Gestion app models}{section*.512}{}} +\newlabel{modules/models:gestion.models.Pinte.current_owner_id}{{2.1}{34}{Gestion app models}{section*.513}{}} +\newlabel{modules/models:gestion.models.Pinte.get_next_by_last_update_date}{{2.1}{34}{Gestion app models}{section*.514}{}} +\newlabel{modules/models:gestion.models.Pinte.get_previous_by_last_update_date}{{2.1}{34}{Gestion app models}{section*.515}{}} +\newlabel{modules/models:gestion.models.Pinte.history}{{2.1}{34}{Gestion app models}{section*.516}{}} +\newlabel{modules/models:gestion.models.Pinte.id}{{2.1}{34}{Gestion app models}{section*.517}{}} +\newlabel{modules/models:gestion.models.Pinte.last_update_date}{{2.1}{34}{Gestion app models}{section*.518}{}} +\newlabel{modules/models:gestion.models.Pinte.objects}{{2.1}{34}{Gestion app models}{section*.519}{}} +\newlabel{modules/models:gestion.models.Pinte.previous_owner}{{2.1}{34}{Gestion app models}{section*.520}{}} +\newlabel{modules/models:gestion.models.Pinte.previous_owner_id}{{2.1}{34}{Gestion app models}{section*.521}{}} +\newlabel{modules/models:gestion.models.Pinte.save_without_historical_record}{{2.1}{34}{Gestion app models}{section*.522}{}} +\newlabel{modules/models:gestion.models.Product}{{2.1}{34}{Gestion app models}{section*.523}{}} +\newlabel{modules/models:gestion.models.Product.BOTTLE}{{2.1}{34}{Gestion app models}{section*.524}{}} +\newlabel{modules/models:gestion.models.Product.D_PRESSION}{{2.1}{34}{Gestion app models}{section*.525}{}} +\newlabel{modules/models:gestion.models.Product.DoesNotExist}{{2.1}{34}{Gestion app models}{section*.526}{}} +\newlabel{modules/models:gestion.models.Product.FOOD}{{2.1}{34}{Gestion app models}{section*.527}{}} +\newlabel{modules/models:gestion.models.Product.G_PRESSION}{{2.1}{34}{Gestion app models}{section*.528}{}} +\newlabel{modules/models:gestion.models.Product.MultipleObjectsReturned}{{2.1}{34}{Gestion app models}{section*.529}{}} +\newlabel{modules/models:gestion.models.Product.PANINI}{{2.1}{34}{Gestion app models}{section*.530}{}} +\newlabel{modules/models:gestion.models.Product.P_PRESSION}{{2.1}{34}{Gestion app models}{section*.531}{}} +\newlabel{modules/models:gestion.models.Product.SOFT}{{2.1}{34}{Gestion app models}{section*.532}{}} +\newlabel{modules/models:gestion.models.Product.TYPEINPUT_CHOICES_CATEGORIE}{{2.1}{34}{Gestion app models}{section*.533}{}} +\newlabel{modules/models:gestion.models.Product.adherentRequired}{{2.1}{34}{Gestion app models}{section*.534}{}} +\newlabel{modules/models:gestion.models.Product.amount}{{2.1}{34}{Gestion app models}{section*.535}{}} +\newlabel{modules/models:gestion.models.Product.barcode}{{2.1}{35}{Gestion app models}{section*.536}{}} +\newlabel{modules/models:gestion.models.Product.category}{{2.1}{35}{Gestion app models}{section*.537}{}} +\newlabel{modules/models:gestion.models.Product.consumption_set}{{2.1}{35}{Gestion app models}{section*.538}{}} +\newlabel{modules/models:gestion.models.Product.consumptionhistory_set}{{2.1}{35}{Gestion app models}{section*.539}{}} +\newlabel{modules/models:gestion.models.Product.deg}{{2.1}{35}{Gestion app models}{section*.540}{}} +\newlabel{modules/models:gestion.models.Product.futd}{{2.1}{35}{Gestion app models}{section*.541}{}} +\newlabel{modules/models:gestion.models.Product.futg}{{2.1}{35}{Gestion app models}{section*.542}{}} +\newlabel{modules/models:gestion.models.Product.futp}{{2.1}{35}{Gestion app models}{section*.543}{}} +\newlabel{modules/models:gestion.models.Product.get_category_display}{{2.1}{36}{Gestion app models}{section*.544}{}} +\newlabel{modules/models:gestion.models.Product.history}{{2.1}{36}{Gestion app models}{section*.545}{}} +\newlabel{modules/models:gestion.models.Product.id}{{2.1}{36}{Gestion app models}{section*.546}{}} +\newlabel{modules/models:gestion.models.Product.is_active}{{2.1}{36}{Gestion app models}{section*.547}{}} +\newlabel{modules/models:gestion.models.Product.menu_set}{{2.1}{36}{Gestion app models}{section*.548}{}} +\newlabel{modules/models:gestion.models.Product.name}{{2.1}{36}{Gestion app models}{section*.549}{}} +\newlabel{modules/models:gestion.models.Product.needQuantityButton}{{2.1}{36}{Gestion app models}{section*.550}{}} +\newlabel{modules/models:gestion.models.Product.objects}{{2.1}{36}{Gestion app models}{section*.551}{}} +\newlabel{modules/models:gestion.models.Product.ranking}{{2.1}{36}{Gestion app models}{section*.552}{}} +\newlabel{modules/models:gestion.models.Product.save_without_historical_record}{{2.1}{36}{Gestion app models}{section*.553}{}} +\newlabel{modules/models:gestion.models.Product.showingMultiplier}{{2.1}{36}{Gestion app models}{section*.554}{}} +\newlabel{modules/models:gestion.models.Product.stockBar}{{2.1}{36}{Gestion app models}{section*.555}{}} +\newlabel{modules/models:gestion.models.Product.stockHold}{{2.1}{36}{Gestion app models}{section*.556}{}} +\newlabel{modules/models:gestion.models.Product.user_ranking}{{2.1}{36}{Gestion app models}{section*.557}{}} +\newlabel{modules/models:gestion.models.Product.volume}{{2.1}{37}{Gestion app models}{section*.558}{}} +\newlabel{modules/models:gestion.models.Refund}{{2.1}{37}{Gestion app models}{section*.559}{}} +\newlabel{modules/models:gestion.models.Refund.DoesNotExist}{{2.1}{37}{Gestion app models}{section*.560}{}} +\newlabel{modules/models:gestion.models.Refund.MultipleObjectsReturned}{{2.1}{37}{Gestion app models}{section*.561}{}} +\newlabel{modules/models:gestion.models.Refund.amount}{{2.1}{37}{Gestion app models}{section*.562}{}} +\newlabel{modules/models:gestion.models.Refund.coopeman}{{2.1}{37}{Gestion app models}{section*.563}{}} +\newlabel{modules/models:gestion.models.Refund.coopeman_id}{{2.1}{37}{Gestion app models}{section*.564}{}} +\newlabel{modules/models:gestion.models.Refund.customer}{{2.1}{37}{Gestion app models}{section*.565}{}} +\newlabel{modules/models:gestion.models.Refund.customer_id}{{2.1}{37}{Gestion app models}{section*.566}{}} +\newlabel{modules/models:gestion.models.Refund.date}{{2.1}{37}{Gestion app models}{section*.567}{}} +\newlabel{modules/models:gestion.models.Refund.get_next_by_date}{{2.1}{37}{Gestion app models}{section*.568}{}} +\newlabel{modules/models:gestion.models.Refund.get_previous_by_date}{{2.1}{37}{Gestion app models}{section*.569}{}} +\newlabel{modules/models:gestion.models.Refund.history}{{2.1}{37}{Gestion app models}{section*.570}{}} +\newlabel{modules/models:gestion.models.Refund.id}{{2.1}{37}{Gestion app models}{section*.571}{}} +\newlabel{modules/models:gestion.models.Refund.objects}{{2.1}{37}{Gestion app models}{section*.572}{}} +\newlabel{modules/models:gestion.models.Refund.save_without_historical_record}{{2.1}{37}{Gestion app models}{section*.573}{}} +\newlabel{modules/models:gestion.models.Reload}{{2.1}{37}{Gestion app models}{section*.574}{}} +\newlabel{modules/models:gestion.models.Reload.DoesNotExist}{{2.1}{37}{Gestion app models}{section*.575}{}} +\newlabel{modules/models:gestion.models.Reload.MultipleObjectsReturned}{{2.1}{37}{Gestion app models}{section*.576}{}} +\newlabel{modules/models:gestion.models.Reload.PaymentMethod}{{2.1}{37}{Gestion app models}{section*.577}{}} +\newlabel{modules/models:gestion.models.Reload.PaymentMethod_id}{{2.1}{37}{Gestion app models}{section*.578}{}} +\newlabel{modules/models:gestion.models.Reload.amount}{{2.1}{37}{Gestion app models}{section*.579}{}} +\newlabel{modules/models:gestion.models.Reload.coopeman}{{2.1}{38}{Gestion app models}{section*.580}{}} +\newlabel{modules/models:gestion.models.Reload.coopeman_id}{{2.1}{38}{Gestion app models}{section*.581}{}} +\newlabel{modules/models:gestion.models.Reload.customer}{{2.1}{38}{Gestion app models}{section*.582}{}} +\newlabel{modules/models:gestion.models.Reload.customer_id}{{2.1}{38}{Gestion app models}{section*.583}{}} +\newlabel{modules/models:gestion.models.Reload.date}{{2.1}{38}{Gestion app models}{section*.584}{}} +\newlabel{modules/models:gestion.models.Reload.get_next_by_date}{{2.1}{38}{Gestion app models}{section*.585}{}} +\newlabel{modules/models:gestion.models.Reload.get_previous_by_date}{{2.1}{38}{Gestion app models}{section*.586}{}} +\newlabel{modules/models:gestion.models.Reload.history}{{2.1}{38}{Gestion app models}{section*.587}{}} +\newlabel{modules/models:gestion.models.Reload.id}{{2.1}{38}{Gestion app models}{section*.588}{}} +\newlabel{modules/models:gestion.models.Reload.objects}{{2.1}{38}{Gestion app models}{section*.589}{}} +\newlabel{modules/models:gestion.models.Reload.save_without_historical_record}{{2.1}{38}{Gestion app models}{section*.590}{}} +\newlabel{modules/models:gestion.models.isDemi}{{2.1}{38}{Gestion app models}{section*.591}{}} +\newlabel{modules/models:gestion.models.isGalopin}{{2.1}{38}{Gestion app models}{section*.592}{}} +\newlabel{modules/models:gestion.models.isPinte}{{2.1}{38}{Gestion app models}{section*.593}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.2}Users app models}{38}{section.2.2}} +\newlabel{modules/models:module-users.models}{{2.2}{38}{Users app models}{section.2.2}{}} +\newlabel{modules/models:users-app-models}{{2.2}{38}{Users app models}{section.2.2}{}} +\newlabel{modules/models:users.models.CotisationHistory}{{2.2}{38}{Users app models}{section*.594}{}} +\newlabel{modules/models:users.models.CotisationHistory.DoesNotExist}{{2.2}{38}{Users app models}{section*.595}{}} +\newlabel{modules/models:users.models.CotisationHistory.MultipleObjectsReturned}{{2.2}{38}{Users app models}{section*.596}{}} +\newlabel{modules/models:users.models.CotisationHistory.amount}{{2.2}{38}{Users app models}{section*.597}{}} +\newlabel{modules/models:users.models.CotisationHistory.coopeman}{{2.2}{38}{Users app models}{section*.598}{}} +\newlabel{modules/models:users.models.CotisationHistory.coopeman_id}{{2.2}{38}{Users app models}{section*.599}{}} +\newlabel{modules/models:users.models.CotisationHistory.cotisation}{{2.2}{38}{Users app models}{section*.600}{}} +\newlabel{modules/models:users.models.CotisationHistory.cotisation_id}{{2.2}{39}{Users app models}{section*.601}{}} +\newlabel{modules/models:users.models.CotisationHistory.duration}{{2.2}{39}{Users app models}{section*.602}{}} +\newlabel{modules/models:users.models.CotisationHistory.endDate}{{2.2}{39}{Users app models}{section*.603}{}} +\newlabel{modules/models:users.models.CotisationHistory.get_next_by_endDate}{{2.2}{39}{Users app models}{section*.604}{}} +\newlabel{modules/models:users.models.CotisationHistory.get_next_by_paymentDate}{{2.2}{39}{Users app models}{section*.605}{}} +\newlabel{modules/models:users.models.CotisationHistory.get_previous_by_endDate}{{2.2}{39}{Users app models}{section*.606}{}} +\newlabel{modules/models:users.models.CotisationHistory.get_previous_by_paymentDate}{{2.2}{39}{Users app models}{section*.607}{}} +\newlabel{modules/models:users.models.CotisationHistory.history}{{2.2}{39}{Users app models}{section*.608}{}} +\newlabel{modules/models:users.models.CotisationHistory.id}{{2.2}{39}{Users app models}{section*.609}{}} +\newlabel{modules/models:users.models.CotisationHistory.objects}{{2.2}{39}{Users app models}{section*.610}{}} +\newlabel{modules/models:users.models.CotisationHistory.paymentDate}{{2.2}{39}{Users app models}{section*.611}{}} +\newlabel{modules/models:users.models.CotisationHistory.paymentMethod}{{2.2}{39}{Users app models}{section*.612}{}} +\newlabel{modules/models:users.models.CotisationHistory.paymentMethod_id}{{2.2}{39}{Users app models}{section*.613}{}} +\newlabel{modules/models:users.models.CotisationHistory.save_without_historical_record}{{2.2}{39}{Users app models}{section*.614}{}} +\newlabel{modules/models:users.models.CotisationHistory.user}{{2.2}{39}{Users app models}{section*.615}{}} +\newlabel{modules/models:users.models.CotisationHistory.user_id}{{2.2}{39}{Users app models}{section*.616}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory}{{2.2}{39}{Users app models}{section*.617}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.DoesNotExist}{{2.2}{39}{Users app models}{section*.618}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.MultipleObjectsReturned}{{2.2}{39}{Users app models}{section*.619}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.amount}{{2.2}{39}{Users app models}{section*.620}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.coopeman}{{2.2}{40}{Users app models}{section*.621}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.coopeman_id}{{2.2}{40}{Users app models}{section*.622}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.cotisation}{{2.2}{40}{Users app models}{section*.623}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.cotisation_id}{{2.2}{40}{Users app models}{section*.624}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.duration}{{2.2}{40}{Users app models}{section*.625}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.endDate}{{2.2}{40}{Users app models}{section*.626}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.get_history_type_display}{{2.2}{40}{Users app models}{section*.627}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.get_next_by_endDate}{{2.2}{40}{Users app models}{section*.628}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.get_next_by_history_date}{{2.2}{40}{Users app models}{section*.629}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.get_next_by_paymentDate}{{2.2}{40}{Users app models}{section*.630}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.get_previous_by_endDate}{{2.2}{40}{Users app models}{section*.631}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.get_previous_by_history_date}{{2.2}{40}{Users app models}{section*.632}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.get_previous_by_paymentDate}{{2.2}{40}{Users app models}{section*.633}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.history_change_reason}{{2.2}{40}{Users app models}{section*.634}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.history_date}{{2.2}{41}{Users app models}{section*.635}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.history_id}{{2.2}{41}{Users app models}{section*.636}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.history_object}{{2.2}{41}{Users app models}{section*.637}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.history_type}{{2.2}{41}{Users app models}{section*.638}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.history_user}{{2.2}{41}{Users app models}{section*.639}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.history_user_id}{{2.2}{41}{Users app models}{section*.640}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.id}{{2.2}{41}{Users app models}{section*.641}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.instance}{{2.2}{41}{Users app models}{section*.642}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.instance_type}{{2.2}{41}{Users app models}{section*.643}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.next_record}{{2.2}{41}{Users app models}{section*.644}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.objects}{{2.2}{41}{Users app models}{section*.645}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.paymentDate}{{2.2}{41}{Users app models}{section*.646}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.paymentMethod}{{2.2}{41}{Users app models}{section*.647}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.paymentMethod_id}{{2.2}{41}{Users app models}{section*.648}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.prev_record}{{2.2}{42}{Users app models}{section*.649}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.revert_url}{{2.2}{42}{Users app models}{section*.650}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.user}{{2.2}{42}{Users app models}{section*.651}{}} +\newlabel{modules/models:users.models.HistoricalCotisationHistory.user_id}{{2.2}{42}{Users app models}{section*.652}{}} +\newlabel{modules/models:users.models.HistoricalProfile}{{2.2}{42}{Users app models}{section*.653}{}} +\newlabel{modules/models:users.models.HistoricalProfile.DoesNotExist}{{2.2}{42}{Users app models}{section*.654}{}} +\newlabel{modules/models:users.models.HistoricalProfile.MultipleObjectsReturned}{{2.2}{42}{Users app models}{section*.655}{}} +\newlabel{modules/models:users.models.HistoricalProfile.cotisationEnd}{{2.2}{42}{Users app models}{section*.656}{}} +\newlabel{modules/models:users.models.HistoricalProfile.credit}{{2.2}{42}{Users app models}{section*.657}{}} +\newlabel{modules/models:users.models.HistoricalProfile.debit}{{2.2}{42}{Users app models}{section*.658}{}} +\newlabel{modules/models:users.models.HistoricalProfile.get_history_type_display}{{2.2}{42}{Users app models}{section*.659}{}} +\newlabel{modules/models:users.models.HistoricalProfile.get_next_by_history_date}{{2.2}{42}{Users app models}{section*.660}{}} +\newlabel{modules/models:users.models.HistoricalProfile.get_previous_by_history_date}{{2.2}{42}{Users app models}{section*.661}{}} +\newlabel{modules/models:users.models.HistoricalProfile.history_change_reason}{{2.2}{42}{Users app models}{section*.662}{}} +\newlabel{modules/models:users.models.HistoricalProfile.history_date}{{2.2}{42}{Users app models}{section*.663}{}} +\newlabel{modules/models:users.models.HistoricalProfile.history_id}{{2.2}{42}{Users app models}{section*.664}{}} +\newlabel{modules/models:users.models.HistoricalProfile.history_object}{{2.2}{43}{Users app models}{section*.665}{}} +\newlabel{modules/models:users.models.HistoricalProfile.history_type}{{2.2}{43}{Users app models}{section*.666}{}} +\newlabel{modules/models:users.models.HistoricalProfile.history_user}{{2.2}{43}{Users app models}{section*.667}{}} +\newlabel{modules/models:users.models.HistoricalProfile.history_user_id}{{2.2}{43}{Users app models}{section*.668}{}} +\newlabel{modules/models:users.models.HistoricalProfile.id}{{2.2}{43}{Users app models}{section*.669}{}} +\newlabel{modules/models:users.models.HistoricalProfile.instance}{{2.2}{43}{Users app models}{section*.670}{}} +\newlabel{modules/models:users.models.HistoricalProfile.instance_type}{{2.2}{43}{Users app models}{section*.671}{}} +\newlabel{modules/models:users.models.HistoricalProfile.next_record}{{2.2}{43}{Users app models}{section*.672}{}} +\newlabel{modules/models:users.models.HistoricalProfile.objects}{{2.2}{43}{Users app models}{section*.673}{}} +\newlabel{modules/models:users.models.HistoricalProfile.prev_record}{{2.2}{43}{Users app models}{section*.674}{}} +\newlabel{modules/models:users.models.HistoricalProfile.revert_url}{{2.2}{43}{Users app models}{section*.675}{}} +\newlabel{modules/models:users.models.HistoricalProfile.school}{{2.2}{43}{Users app models}{section*.676}{}} +\newlabel{modules/models:users.models.HistoricalProfile.school_id}{{2.2}{43}{Users app models}{section*.677}{}} +\newlabel{modules/models:users.models.HistoricalProfile.user}{{2.2}{43}{Users app models}{section*.678}{}} +\newlabel{modules/models:users.models.HistoricalProfile.user_id}{{2.2}{44}{Users app models}{section*.679}{}} +\newlabel{modules/models:users.models.HistoricalSchool}{{2.2}{44}{Users app models}{section*.680}{}} +\newlabel{modules/models:users.models.HistoricalSchool.DoesNotExist}{{2.2}{44}{Users app models}{section*.681}{}} +\newlabel{modules/models:users.models.HistoricalSchool.MultipleObjectsReturned}{{2.2}{44}{Users app models}{section*.682}{}} +\newlabel{modules/models:users.models.HistoricalSchool.get_history_type_display}{{2.2}{44}{Users app models}{section*.683}{}} +\newlabel{modules/models:users.models.HistoricalSchool.get_next_by_history_date}{{2.2}{44}{Users app models}{section*.684}{}} +\newlabel{modules/models:users.models.HistoricalSchool.get_previous_by_history_date}{{2.2}{44}{Users app models}{section*.685}{}} +\newlabel{modules/models:users.models.HistoricalSchool.history_change_reason}{{2.2}{44}{Users app models}{section*.686}{}} +\newlabel{modules/models:users.models.HistoricalSchool.history_date}{{2.2}{44}{Users app models}{section*.687}{}} +\newlabel{modules/models:users.models.HistoricalSchool.history_id}{{2.2}{44}{Users app models}{section*.688}{}} +\newlabel{modules/models:users.models.HistoricalSchool.history_object}{{2.2}{44}{Users app models}{section*.689}{}} +\newlabel{modules/models:users.models.HistoricalSchool.history_type}{{2.2}{44}{Users app models}{section*.690}{}} +\newlabel{modules/models:users.models.HistoricalSchool.history_user}{{2.2}{44}{Users app models}{section*.691}{}} +\newlabel{modules/models:users.models.HistoricalSchool.history_user_id}{{2.2}{44}{Users app models}{section*.692}{}} +\newlabel{modules/models:users.models.HistoricalSchool.id}{{2.2}{44}{Users app models}{section*.693}{}} +\newlabel{modules/models:users.models.HistoricalSchool.instance}{{2.2}{44}{Users app models}{section*.694}{}} +\newlabel{modules/models:users.models.HistoricalSchool.instance_type}{{2.2}{45}{Users app models}{section*.695}{}} +\newlabel{modules/models:users.models.HistoricalSchool.name}{{2.2}{45}{Users app models}{section*.696}{}} +\newlabel{modules/models:users.models.HistoricalSchool.next_record}{{2.2}{45}{Users app models}{section*.697}{}} +\newlabel{modules/models:users.models.HistoricalSchool.objects}{{2.2}{45}{Users app models}{section*.698}{}} +\newlabel{modules/models:users.models.HistoricalSchool.prev_record}{{2.2}{45}{Users app models}{section*.699}{}} +\newlabel{modules/models:users.models.HistoricalSchool.revert_url}{{2.2}{45}{Users app models}{section*.700}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory}{{2.2}{45}{Users app models}{section*.701}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.DoesNotExist}{{2.2}{45}{Users app models}{section*.702}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.MultipleObjectsReturned}{{2.2}{45}{Users app models}{section*.703}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.coopeman}{{2.2}{45}{Users app models}{section*.704}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.coopeman_id}{{2.2}{45}{Users app models}{section*.705}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.duration}{{2.2}{45}{Users app models}{section*.706}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.endDate}{{2.2}{45}{Users app models}{section*.707}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.get_history_type_display}{{2.2}{45}{Users app models}{section*.708}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.get_next_by_endDate}{{2.2}{45}{Users app models}{section*.709}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.get_next_by_history_date}{{2.2}{45}{Users app models}{section*.710}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.get_next_by_paymentDate}{{2.2}{45}{Users app models}{section*.711}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.get_previous_by_endDate}{{2.2}{45}{Users app models}{section*.712}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.get_previous_by_history_date}{{2.2}{46}{Users app models}{section*.713}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.get_previous_by_paymentDate}{{2.2}{46}{Users app models}{section*.714}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.history_change_reason}{{2.2}{46}{Users app models}{section*.715}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.history_date}{{2.2}{46}{Users app models}{section*.716}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.history_id}{{2.2}{46}{Users app models}{section*.717}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.history_object}{{2.2}{46}{Users app models}{section*.718}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.history_type}{{2.2}{46}{Users app models}{section*.719}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.history_user}{{2.2}{46}{Users app models}{section*.720}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.history_user_id}{{2.2}{46}{Users app models}{section*.721}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.id}{{2.2}{46}{Users app models}{section*.722}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.instance}{{2.2}{46}{Users app models}{section*.723}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.instance_type}{{2.2}{46}{Users app models}{section*.724}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.next_record}{{2.2}{46}{Users app models}{section*.725}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.objects}{{2.2}{46}{Users app models}{section*.726}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.paymentDate}{{2.2}{46}{Users app models}{section*.727}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.prev_record}{{2.2}{46}{Users app models}{section*.728}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.revert_url}{{2.2}{46}{Users app models}{section*.729}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.user}{{2.2}{47}{Users app models}{section*.730}{}} +\newlabel{modules/models:users.models.HistoricalWhiteListHistory.user_id}{{2.2}{47}{Users app models}{section*.731}{}} +\newlabel{modules/models:users.models.Profile}{{2.2}{47}{Users app models}{section*.732}{}} +\newlabel{modules/models:users.models.Profile.DoesNotExist}{{2.2}{47}{Users app models}{section*.733}{}} +\newlabel{modules/models:users.models.Profile.MultipleObjectsReturned}{{2.2}{47}{Users app models}{section*.734}{}} +\newlabel{modules/models:users.models.Profile.alcohol}{{2.2}{47}{Users app models}{section*.735}{}} +\newlabel{modules/models:users.models.Profile.balance}{{2.2}{47}{Users app models}{section*.736}{}} +\newlabel{modules/models:users.models.Profile.cotisationEnd}{{2.2}{47}{Users app models}{section*.737}{}} +\newlabel{modules/models:users.models.Profile.credit}{{2.2}{47}{Users app models}{section*.738}{}} +\newlabel{modules/models:users.models.Profile.debit}{{2.2}{47}{Users app models}{section*.739}{}} +\newlabel{modules/models:users.models.Profile.history}{{2.2}{47}{Users app models}{section*.740}{}} +\newlabel{modules/models:users.models.Profile.id}{{2.2}{47}{Users app models}{section*.741}{}} +\newlabel{modules/models:users.models.Profile.is_adherent}{{2.2}{47}{Users app models}{section*.742}{}} +\newlabel{modules/models:users.models.Profile.nb_pintes}{{2.2}{47}{Users app models}{section*.743}{}} +\newlabel{modules/models:users.models.Profile.objects}{{2.2}{47}{Users app models}{section*.744}{}} +\newlabel{modules/models:users.models.Profile.positiveBalance}{{2.2}{47}{Users app models}{section*.745}{}} +\newlabel{modules/models:users.models.Profile.rank}{{2.2}{47}{Users app models}{section*.746}{}} +\newlabel{modules/models:users.models.Profile.save_without_historical_record}{{2.2}{47}{Users app models}{section*.747}{}} +\newlabel{modules/models:users.models.Profile.school}{{2.2}{48}{Users app models}{section*.748}{}} +\newlabel{modules/models:users.models.Profile.school_id}{{2.2}{48}{Users app models}{section*.749}{}} +\newlabel{modules/models:users.models.Profile.user}{{2.2}{48}{Users app models}{section*.750}{}} +\newlabel{modules/models:users.models.Profile.user_id}{{2.2}{48}{Users app models}{section*.751}{}} +\newlabel{modules/models:users.models.School}{{2.2}{48}{Users app models}{section*.752}{}} +\newlabel{modules/models:users.models.School.DoesNotExist}{{2.2}{48}{Users app models}{section*.753}{}} +\newlabel{modules/models:users.models.School.MultipleObjectsReturned}{{2.2}{48}{Users app models}{section*.754}{}} +\newlabel{modules/models:users.models.School.history}{{2.2}{48}{Users app models}{section*.755}{}} +\newlabel{modules/models:users.models.School.id}{{2.2}{48}{Users app models}{section*.756}{}} +\newlabel{modules/models:users.models.School.name}{{2.2}{48}{Users app models}{section*.757}{}} +\newlabel{modules/models:users.models.School.objects}{{2.2}{48}{Users app models}{section*.758}{}} +\newlabel{modules/models:users.models.School.profile_set}{{2.2}{48}{Users app models}{section*.759}{}} +\newlabel{modules/models:users.models.School.save_without_historical_record}{{2.2}{48}{Users app models}{section*.760}{}} +\newlabel{modules/models:users.models.WhiteListHistory}{{2.2}{48}{Users app models}{section*.761}{}} +\newlabel{modules/models:users.models.WhiteListHistory.DoesNotExist}{{2.2}{48}{Users app models}{section*.762}{}} +\newlabel{modules/models:users.models.WhiteListHistory.MultipleObjectsReturned}{{2.2}{48}{Users app models}{section*.763}{}} +\newlabel{modules/models:users.models.WhiteListHistory.coopeman}{{2.2}{48}{Users app models}{section*.764}{}} +\newlabel{modules/models:users.models.WhiteListHistory.coopeman_id}{{2.2}{48}{Users app models}{section*.765}{}} +\newlabel{modules/models:users.models.WhiteListHistory.duration}{{2.2}{48}{Users app models}{section*.766}{}} +\newlabel{modules/models:users.models.WhiteListHistory.endDate}{{2.2}{49}{Users app models}{section*.767}{}} +\newlabel{modules/models:users.models.WhiteListHistory.get_next_by_endDate}{{2.2}{49}{Users app models}{section*.768}{}} +\newlabel{modules/models:users.models.WhiteListHistory.get_next_by_paymentDate}{{2.2}{49}{Users app models}{section*.769}{}} +\newlabel{modules/models:users.models.WhiteListHistory.get_previous_by_endDate}{{2.2}{49}{Users app models}{section*.770}{}} +\newlabel{modules/models:users.models.WhiteListHistory.get_previous_by_paymentDate}{{2.2}{49}{Users app models}{section*.771}{}} +\newlabel{modules/models:users.models.WhiteListHistory.history}{{2.2}{49}{Users app models}{section*.772}{}} +\newlabel{modules/models:users.models.WhiteListHistory.id}{{2.2}{49}{Users app models}{section*.773}{}} +\newlabel{modules/models:users.models.WhiteListHistory.objects}{{2.2}{49}{Users app models}{section*.774}{}} +\newlabel{modules/models:users.models.WhiteListHistory.paymentDate}{{2.2}{49}{Users app models}{section*.775}{}} +\newlabel{modules/models:users.models.WhiteListHistory.save_without_historical_record}{{2.2}{49}{Users app models}{section*.776}{}} +\newlabel{modules/models:users.models.WhiteListHistory.user}{{2.2}{49}{Users app models}{section*.777}{}} +\newlabel{modules/models:users.models.WhiteListHistory.user_id}{{2.2}{49}{Users app models}{section*.778}{}} +\newlabel{modules/models:users.models.create_user_profile}{{2.2}{49}{Users app models}{section*.779}{}} +\newlabel{modules/models:users.models.save_user_profile}{{2.2}{49}{Users app models}{section*.780}{}} +\newlabel{modules/models:users.models.str_user}{{2.2}{49}{Users app models}{section*.781}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.3}Preferences app models}{49}{section.2.3}} +\newlabel{modules/models:module-preferences.models}{{2.3}{49}{Preferences app models}{section.2.3}{}} +\newlabel{modules/models:preferences-app-models}{{2.3}{49}{Preferences app models}{section.2.3}{}} +\newlabel{modules/models:preferences.models.Cotisation}{{2.3}{49}{Preferences app models}{section*.782}{}} +\newlabel{modules/models:preferences.models.Cotisation.DoesNotExist}{{2.3}{49}{Preferences app models}{section*.783}{}} +\newlabel{modules/models:preferences.models.Cotisation.MultipleObjectsReturned}{{2.3}{49}{Preferences app models}{section*.784}{}} +\newlabel{modules/models:preferences.models.Cotisation.amount}{{2.3}{49}{Preferences app models}{section*.785}{}} +\newlabel{modules/models:preferences.models.Cotisation.cotisationhistory_set}{{2.3}{49}{Preferences app models}{section*.786}{}} +\newlabel{modules/models:preferences.models.Cotisation.duration}{{2.3}{50}{Preferences app models}{section*.787}{}} +\newlabel{modules/models:preferences.models.Cotisation.history}{{2.3}{50}{Preferences app models}{section*.788}{}} +\newlabel{modules/models:preferences.models.Cotisation.id}{{2.3}{50}{Preferences app models}{section*.789}{}} +\newlabel{modules/models:preferences.models.Cotisation.objects}{{2.3}{50}{Preferences app models}{section*.790}{}} +\newlabel{modules/models:preferences.models.Cotisation.save_without_historical_record}{{2.3}{50}{Preferences app models}{section*.791}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences}{{2.3}{50}{Preferences app models}{section*.792}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.DoesNotExist}{{2.3}{50}{Preferences app models}{section*.793}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.MultipleObjectsReturned}{{2.3}{50}{Preferences app models}{section*.794}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.active_message}{{2.3}{50}{Preferences app models}{section*.795}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.automatic_logout_time}{{2.3}{50}{Preferences app models}{section*.796}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.brewer}{{2.3}{50}{Preferences app models}{section*.797}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.floating_buttons}{{2.3}{50}{Preferences app models}{section*.798}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.global_message}{{2.3}{50}{Preferences app models}{section*.799}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.grocer}{{2.3}{50}{Preferences app models}{section*.800}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.history}{{2.3}{50}{Preferences app models}{section*.801}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.home_text}{{2.3}{50}{Preferences app models}{section*.802}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.id}{{2.3}{50}{Preferences app models}{section*.803}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.is_active}{{2.3}{50}{Preferences app models}{section*.804}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.lost_pintes_allowed}{{2.3}{51}{Preferences app models}{section*.805}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.menu}{{2.3}{51}{Preferences app models}{section*.806}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.objects}{{2.3}{51}{Preferences app models}{section*.807}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.president}{{2.3}{51}{Preferences app models}{section*.808}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.rules}{{2.3}{51}{Preferences app models}{section*.809}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.save_without_historical_record}{{2.3}{51}{Preferences app models}{section*.810}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.secretary}{{2.3}{51}{Preferences app models}{section*.811}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.statutes}{{2.3}{51}{Preferences app models}{section*.812}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.treasurer}{{2.3}{51}{Preferences app models}{section*.813}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.use_pinte_monitoring}{{2.3}{51}{Preferences app models}{section*.814}{}} +\newlabel{modules/models:preferences.models.GeneralPreferences.vice_president}{{2.3}{51}{Preferences app models}{section*.815}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation}{{2.3}{51}{Preferences app models}{section*.816}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.DoesNotExist}{{2.3}{51}{Preferences app models}{section*.817}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.MultipleObjectsReturned}{{2.3}{51}{Preferences app models}{section*.818}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.amount}{{2.3}{51}{Preferences app models}{section*.819}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.duration}{{2.3}{51}{Preferences app models}{section*.820}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.get_history_type_display}{{2.3}{51}{Preferences app models}{section*.821}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.get_next_by_history_date}{{2.3}{51}{Preferences app models}{section*.822}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.get_previous_by_history_date}{{2.3}{51}{Preferences app models}{section*.823}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.history_change_reason}{{2.3}{51}{Preferences app models}{section*.824}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.history_date}{{2.3}{51}{Preferences app models}{section*.825}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.history_id}{{2.3}{52}{Preferences app models}{section*.826}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.history_object}{{2.3}{52}{Preferences app models}{section*.827}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.history_type}{{2.3}{52}{Preferences app models}{section*.828}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.history_user}{{2.3}{52}{Preferences app models}{section*.829}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.history_user_id}{{2.3}{52}{Preferences app models}{section*.830}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.id}{{2.3}{52}{Preferences app models}{section*.831}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.instance}{{2.3}{52}{Preferences app models}{section*.832}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.instance_type}{{2.3}{52}{Preferences app models}{section*.833}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.next_record}{{2.3}{52}{Preferences app models}{section*.834}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.objects}{{2.3}{52}{Preferences app models}{section*.835}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.prev_record}{{2.3}{52}{Preferences app models}{section*.836}{}} +\newlabel{modules/models:preferences.models.HistoricalCotisation.revert_url}{{2.3}{52}{Preferences app models}{section*.837}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences}{{2.3}{52}{Preferences app models}{section*.838}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.DoesNotExist}{{2.3}{52}{Preferences app models}{section*.839}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.MultipleObjectsReturned}{{2.3}{53}{Preferences app models}{section*.840}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.active_message}{{2.3}{53}{Preferences app models}{section*.841}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.automatic_logout_time}{{2.3}{53}{Preferences app models}{section*.842}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.brewer}{{2.3}{53}{Preferences app models}{section*.843}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.floating_buttons}{{2.3}{53}{Preferences app models}{section*.844}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.get_history_type_display}{{2.3}{53}{Preferences app models}{section*.845}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.get_next_by_history_date}{{2.3}{53}{Preferences app models}{section*.846}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.get_previous_by_history_date}{{2.3}{53}{Preferences app models}{section*.847}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.global_message}{{2.3}{53}{Preferences app models}{section*.848}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.grocer}{{2.3}{53}{Preferences app models}{section*.849}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.history_change_reason}{{2.3}{53}{Preferences app models}{section*.850}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.history_date}{{2.3}{53}{Preferences app models}{section*.851}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.history_id}{{2.3}{53}{Preferences app models}{section*.852}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.history_object}{{2.3}{53}{Preferences app models}{section*.853}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.history_type}{{2.3}{53}{Preferences app models}{section*.854}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.history_user}{{2.3}{53}{Preferences app models}{section*.855}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.history_user_id}{{2.3}{54}{Preferences app models}{section*.856}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.home_text}{{2.3}{54}{Preferences app models}{section*.857}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.id}{{2.3}{54}{Preferences app models}{section*.858}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.instance}{{2.3}{54}{Preferences app models}{section*.859}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.instance_type}{{2.3}{54}{Preferences app models}{section*.860}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.is_active}{{2.3}{54}{Preferences app models}{section*.861}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.lost_pintes_allowed}{{2.3}{54}{Preferences app models}{section*.862}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.menu}{{2.3}{54}{Preferences app models}{section*.863}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.next_record}{{2.3}{54}{Preferences app models}{section*.864}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.objects}{{2.3}{54}{Preferences app models}{section*.865}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.president}{{2.3}{54}{Preferences app models}{section*.866}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.prev_record}{{2.3}{54}{Preferences app models}{section*.867}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.revert_url}{{2.3}{54}{Preferences app models}{section*.868}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.rules}{{2.3}{54}{Preferences app models}{section*.869}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.secretary}{{2.3}{54}{Preferences app models}{section*.870}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.statutes}{{2.3}{54}{Preferences app models}{section*.871}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.treasurer}{{2.3}{54}{Preferences app models}{section*.872}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.use_pinte_monitoring}{{2.3}{54}{Preferences app models}{section*.873}{}} +\newlabel{modules/models:preferences.models.HistoricalGeneralPreferences.vice_president}{{2.3}{55}{Preferences app models}{section*.874}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod}{{2.3}{55}{Preferences app models}{section*.875}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.DoesNotExist}{{2.3}{55}{Preferences app models}{section*.876}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.MultipleObjectsReturned}{{2.3}{55}{Preferences app models}{section*.877}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.affect_balance}{{2.3}{55}{Preferences app models}{section*.878}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.get_history_type_display}{{2.3}{55}{Preferences app models}{section*.879}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.get_next_by_history_date}{{2.3}{55}{Preferences app models}{section*.880}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.get_previous_by_history_date}{{2.3}{55}{Preferences app models}{section*.881}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.history_change_reason}{{2.3}{55}{Preferences app models}{section*.882}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.history_date}{{2.3}{55}{Preferences app models}{section*.883}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.history_id}{{2.3}{55}{Preferences app models}{section*.884}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.history_object}{{2.3}{55}{Preferences app models}{section*.885}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.history_type}{{2.3}{55}{Preferences app models}{section*.886}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.history_user}{{2.3}{55}{Preferences app models}{section*.887}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.history_user_id}{{2.3}{55}{Preferences app models}{section*.888}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.icon}{{2.3}{56}{Preferences app models}{section*.889}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.id}{{2.3}{56}{Preferences app models}{section*.890}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.instance}{{2.3}{56}{Preferences app models}{section*.891}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.instance_type}{{2.3}{56}{Preferences app models}{section*.892}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.is_active}{{2.3}{56}{Preferences app models}{section*.893}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.is_usable_in_cotisation}{{2.3}{56}{Preferences app models}{section*.894}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.is_usable_in_reload}{{2.3}{56}{Preferences app models}{section*.895}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.name}{{2.3}{56}{Preferences app models}{section*.896}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.next_record}{{2.3}{56}{Preferences app models}{section*.897}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.objects}{{2.3}{56}{Preferences app models}{section*.898}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.prev_record}{{2.3}{56}{Preferences app models}{section*.899}{}} +\newlabel{modules/models:preferences.models.HistoricalPaymentMethod.revert_url}{{2.3}{56}{Preferences app models}{section*.900}{}} +\newlabel{modules/models:preferences.models.PaymentMethod}{{2.3}{56}{Preferences app models}{section*.901}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.DoesNotExist}{{2.3}{56}{Preferences app models}{section*.902}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.MultipleObjectsReturned}{{2.3}{56}{Preferences app models}{section*.903}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.affect_balance}{{2.3}{56}{Preferences app models}{section*.904}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.consumptionhistory_set}{{2.3}{56}{Preferences app models}{section*.905}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.cotisationhistory_set}{{2.3}{57}{Preferences app models}{section*.906}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.history}{{2.3}{57}{Preferences app models}{section*.907}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.icon}{{2.3}{57}{Preferences app models}{section*.908}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.id}{{2.3}{57}{Preferences app models}{section*.909}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.is_active}{{2.3}{57}{Preferences app models}{section*.910}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.is_usable_in_cotisation}{{2.3}{57}{Preferences app models}{section*.911}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.is_usable_in_reload}{{2.3}{57}{Preferences app models}{section*.912}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.menuhistory_set}{{2.3}{57}{Preferences app models}{section*.913}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.name}{{2.3}{57}{Preferences app models}{section*.914}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.objects}{{2.3}{57}{Preferences app models}{section*.915}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.reload_set}{{2.3}{57}{Preferences app models}{section*.916}{}} +\newlabel{modules/models:preferences.models.PaymentMethod.save_without_historical_record}{{2.3}{58}{Preferences app models}{section*.917}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Admin documentation}{59}{chapter.3}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{modules/admin:admin-documentation}{{3}{59}{Admin documentation}{chapter.3}{}} +\newlabel{modules/admin::doc}{{3}{59}{Admin documentation}{chapter.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}Gestion app admin}{59}{section.3.1}} +\newlabel{modules/admin:module-gestion.admin}{{3.1}{59}{Gestion app admin}{section.3.1}{}} +\newlabel{modules/admin:gestion-app-admin}{{3.1}{59}{Gestion app admin}{section.3.1}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionAdmin}{{3.1}{59}{Gestion app admin}{section*.918}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionAdmin.list_display}{{3.1}{59}{Gestion app admin}{section*.919}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionAdmin.media}{{3.1}{59}{Gestion app admin}{section*.920}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionAdmin.ordering}{{3.1}{59}{Gestion app admin}{section*.921}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionAdmin.search_fields}{{3.1}{59}{Gestion app admin}{section*.922}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionHistoryAdmin}{{3.1}{59}{Gestion app admin}{section*.923}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionHistoryAdmin.list_display}{{3.1}{59}{Gestion app admin}{section*.924}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionHistoryAdmin.list_filter}{{3.1}{59}{Gestion app admin}{section*.925}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionHistoryAdmin.media}{{3.1}{59}{Gestion app admin}{section*.926}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionHistoryAdmin.ordering}{{3.1}{59}{Gestion app admin}{section*.927}{}} +\newlabel{modules/admin:gestion.admin.ConsumptionHistoryAdmin.search_fields}{{3.1}{59}{Gestion app admin}{section*.928}{}} +\newlabel{modules/admin:gestion.admin.KegAdmin}{{3.1}{59}{Gestion app admin}{section*.929}{}} +\newlabel{modules/admin:gestion.admin.KegAdmin.list_display}{{3.1}{59}{Gestion app admin}{section*.930}{}} +\newlabel{modules/admin:gestion.admin.KegAdmin.list_filter}{{3.1}{59}{Gestion app admin}{section*.931}{}} +\newlabel{modules/admin:gestion.admin.KegAdmin.media}{{3.1}{59}{Gestion app admin}{section*.932}{}} +\newlabel{modules/admin:gestion.admin.KegAdmin.ordering}{{3.1}{59}{Gestion app admin}{section*.933}{}} +\newlabel{modules/admin:gestion.admin.KegAdmin.search_fields}{{3.1}{59}{Gestion app admin}{section*.934}{}} +\newlabel{modules/admin:gestion.admin.KegHistoryAdmin}{{3.1}{59}{Gestion app admin}{section*.935}{}} +\newlabel{modules/admin:gestion.admin.KegHistoryAdmin.list_display}{{3.1}{60}{Gestion app admin}{section*.936}{}} +\newlabel{modules/admin:gestion.admin.KegHistoryAdmin.list_filter}{{3.1}{60}{Gestion app admin}{section*.937}{}} +\newlabel{modules/admin:gestion.admin.KegHistoryAdmin.media}{{3.1}{60}{Gestion app admin}{section*.938}{}} +\newlabel{modules/admin:gestion.admin.KegHistoryAdmin.ordering}{{3.1}{60}{Gestion app admin}{section*.939}{}} +\newlabel{modules/admin:gestion.admin.KegHistoryAdmin.search_fields}{{3.1}{60}{Gestion app admin}{section*.940}{}} +\newlabel{modules/admin:gestion.admin.MenuAdmin}{{3.1}{60}{Gestion app admin}{section*.941}{}} +\newlabel{modules/admin:gestion.admin.MenuAdmin.list_display}{{3.1}{60}{Gestion app admin}{section*.942}{}} +\newlabel{modules/admin:gestion.admin.MenuAdmin.list_filter}{{3.1}{60}{Gestion app admin}{section*.943}{}} +\newlabel{modules/admin:gestion.admin.MenuAdmin.media}{{3.1}{60}{Gestion app admin}{section*.944}{}} +\newlabel{modules/admin:gestion.admin.MenuAdmin.ordering}{{3.1}{60}{Gestion app admin}{section*.945}{}} +\newlabel{modules/admin:gestion.admin.MenuAdmin.search_fields}{{3.1}{60}{Gestion app admin}{section*.946}{}} +\newlabel{modules/admin:gestion.admin.MenuHistoryAdmin}{{3.1}{60}{Gestion app admin}{section*.947}{}} +\newlabel{modules/admin:gestion.admin.MenuHistoryAdmin.list_display}{{3.1}{60}{Gestion app admin}{section*.948}{}} +\newlabel{modules/admin:gestion.admin.MenuHistoryAdmin.media}{{3.1}{60}{Gestion app admin}{section*.949}{}} +\newlabel{modules/admin:gestion.admin.MenuHistoryAdmin.ordering}{{3.1}{60}{Gestion app admin}{section*.950}{}} +\newlabel{modules/admin:gestion.admin.MenuHistoryAdmin.search_fields}{{3.1}{60}{Gestion app admin}{section*.951}{}} +\newlabel{modules/admin:gestion.admin.ProductAdmin}{{3.1}{60}{Gestion app admin}{section*.952}{}} +\newlabel{modules/admin:gestion.admin.ProductAdmin.list_display}{{3.1}{60}{Gestion app admin}{section*.953}{}} +\newlabel{modules/admin:gestion.admin.ProductAdmin.list_filter}{{3.1}{60}{Gestion app admin}{section*.954}{}} +\newlabel{modules/admin:gestion.admin.ProductAdmin.media}{{3.1}{60}{Gestion app admin}{section*.955}{}} +\newlabel{modules/admin:gestion.admin.ProductAdmin.ordering}{{3.1}{60}{Gestion app admin}{section*.956}{}} +\newlabel{modules/admin:gestion.admin.ProductAdmin.search_fields}{{3.1}{60}{Gestion app admin}{section*.957}{}} +\newlabel{modules/admin:gestion.admin.RefundAdmin}{{3.1}{60}{Gestion app admin}{section*.958}{}} +\newlabel{modules/admin:gestion.admin.RefundAdmin.list_display}{{3.1}{60}{Gestion app admin}{section*.959}{}} +\newlabel{modules/admin:gestion.admin.RefundAdmin.media}{{3.1}{60}{Gestion app admin}{section*.960}{}} +\newlabel{modules/admin:gestion.admin.RefundAdmin.ordering}{{3.1}{60}{Gestion app admin}{section*.961}{}} +\newlabel{modules/admin:gestion.admin.RefundAdmin.search_fields}{{3.1}{60}{Gestion app admin}{section*.962}{}} +\newlabel{modules/admin:gestion.admin.ReloadAdmin}{{3.1}{60}{Gestion app admin}{section*.963}{}} +\newlabel{modules/admin:gestion.admin.ReloadAdmin.list_display}{{3.1}{60}{Gestion app admin}{section*.964}{}} +\newlabel{modules/admin:gestion.admin.ReloadAdmin.list_filter}{{3.1}{60}{Gestion app admin}{section*.965}{}} +\newlabel{modules/admin:gestion.admin.ReloadAdmin.media}{{3.1}{60}{Gestion app admin}{section*.966}{}} +\newlabel{modules/admin:gestion.admin.ReloadAdmin.ordering}{{3.1}{60}{Gestion app admin}{section*.967}{}} +\newlabel{modules/admin:gestion.admin.ReloadAdmin.search_fields}{{3.1}{61}{Gestion app admin}{section*.968}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.2}Users app admin}{61}{section.3.2}} +\newlabel{modules/admin:module-users.admin}{{3.2}{61}{Users app admin}{section.3.2}{}} +\newlabel{modules/admin:users-app-admin}{{3.2}{61}{Users app admin}{section.3.2}{}} +\newlabel{modules/admin:users.admin.BalanceFilter}{{3.2}{61}{Users app admin}{section*.969}{}} +\newlabel{modules/admin:users.admin.BalanceFilter.lookups}{{3.2}{61}{Users app admin}{section*.970}{}} +\newlabel{modules/admin:users.admin.BalanceFilter.parameter_name}{{3.2}{61}{Users app admin}{section*.971}{}} +\newlabel{modules/admin:users.admin.BalanceFilter.queryset}{{3.2}{61}{Users app admin}{section*.972}{}} +\newlabel{modules/admin:users.admin.BalanceFilter.title}{{3.2}{61}{Users app admin}{section*.973}{}} +\newlabel{modules/admin:users.admin.CotisationHistoryAdmin}{{3.2}{61}{Users app admin}{section*.974}{}} +\newlabel{modules/admin:users.admin.CotisationHistoryAdmin.list_display}{{3.2}{61}{Users app admin}{section*.975}{}} +\newlabel{modules/admin:users.admin.CotisationHistoryAdmin.list_filter}{{3.2}{61}{Users app admin}{section*.976}{}} +\newlabel{modules/admin:users.admin.CotisationHistoryAdmin.media}{{3.2}{61}{Users app admin}{section*.977}{}} +\newlabel{modules/admin:users.admin.CotisationHistoryAdmin.ordering}{{3.2}{61}{Users app admin}{section*.978}{}} +\newlabel{modules/admin:users.admin.CotisationHistoryAdmin.search_fields}{{3.2}{61}{Users app admin}{section*.979}{}} +\newlabel{modules/admin:users.admin.ProfileAdmin}{{3.2}{61}{Users app admin}{section*.980}{}} +\newlabel{modules/admin:users.admin.ProfileAdmin.list_display}{{3.2}{61}{Users app admin}{section*.981}{}} +\newlabel{modules/admin:users.admin.ProfileAdmin.list_filter}{{3.2}{61}{Users app admin}{section*.982}{}} +\newlabel{modules/admin:users.admin.ProfileAdmin.media}{{3.2}{61}{Users app admin}{section*.983}{}} +\newlabel{modules/admin:users.admin.ProfileAdmin.ordering}{{3.2}{61}{Users app admin}{section*.984}{}} +\newlabel{modules/admin:users.admin.ProfileAdmin.search_fields}{{3.2}{61}{Users app admin}{section*.985}{}} +\newlabel{modules/admin:users.admin.WhiteListHistoryAdmin}{{3.2}{61}{Users app admin}{section*.986}{}} +\newlabel{modules/admin:users.admin.WhiteListHistoryAdmin.list_display}{{3.2}{61}{Users app admin}{section*.987}{}} +\newlabel{modules/admin:users.admin.WhiteListHistoryAdmin.media}{{3.2}{61}{Users app admin}{section*.988}{}} +\newlabel{modules/admin:users.admin.WhiteListHistoryAdmin.ordering}{{3.2}{61}{Users app admin}{section*.989}{}} +\newlabel{modules/admin:users.admin.WhiteListHistoryAdmin.search_fields}{{3.2}{61}{Users app admin}{section*.990}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}Preferences app admin}{61}{section.3.3}} +\newlabel{modules/admin:module-preferences.admin}{{3.3}{61}{Preferences app admin}{section.3.3}{}} +\newlabel{modules/admin:preferences-app-admin}{{3.3}{61}{Preferences app admin}{section.3.3}{}} +\newlabel{modules/admin:preferences.admin.CotisationAdmin}{{3.3}{61}{Preferences app admin}{section*.991}{}} +\newlabel{modules/admin:preferences.admin.CotisationAdmin.list_display}{{3.3}{61}{Preferences app admin}{section*.992}{}} +\newlabel{modules/admin:preferences.admin.CotisationAdmin.media}{{3.3}{61}{Preferences app admin}{section*.993}{}} +\newlabel{modules/admin:preferences.admin.CotisationAdmin.ordering}{{3.3}{62}{Preferences app admin}{section*.994}{}} +\newlabel{modules/admin:preferences.admin.GeneralPreferencesAdmin}{{3.3}{62}{Preferences app admin}{section*.995}{}} +\newlabel{modules/admin:preferences.admin.GeneralPreferencesAdmin.list_display}{{3.3}{62}{Preferences app admin}{section*.996}{}} +\newlabel{modules/admin:preferences.admin.GeneralPreferencesAdmin.media}{{3.3}{62}{Preferences app admin}{section*.997}{}} +\newlabel{modules/admin:preferences.admin.PaymentMethodAdmin}{{3.3}{62}{Preferences app admin}{section*.998}{}} +\newlabel{modules/admin:preferences.admin.PaymentMethodAdmin.list_display}{{3.3}{62}{Preferences app admin}{section*.999}{}} +\newlabel{modules/admin:preferences.admin.PaymentMethodAdmin.list_filter}{{3.3}{62}{Preferences app admin}{section*.1000}{}} +\newlabel{modules/admin:preferences.admin.PaymentMethodAdmin.media}{{3.3}{62}{Preferences app admin}{section*.1001}{}} +\newlabel{modules/admin:preferences.admin.PaymentMethodAdmin.ordering}{{3.3}{62}{Preferences app admin}{section*.1002}{}} +\newlabel{modules/admin:preferences.admin.PaymentMethodAdmin.search_fields}{{3.3}{62}{Preferences app admin}{section*.1003}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Forms documentation}{63}{chapter.4}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{modules/forms:forms-documentation}{{4}{63}{Forms documentation}{chapter.4}{}} +\newlabel{modules/forms::doc}{{4}{63}{Forms documentation}{chapter.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}Gestion app forms}{63}{section.4.1}} +\newlabel{modules/forms:module-gestion.forms}{{4.1}{63}{Gestion app forms}{section.4.1}{}} +\newlabel{modules/forms:gestion-app-forms}{{4.1}{63}{Gestion app forms}{section.4.1}{}} +\newlabel{modules/forms:gestion.forms.GenerateReleveForm}{{4.1}{63}{Gestion app forms}{section*.1004}{}} +\newlabel{modules/forms:gestion.forms.GenerateReleveForm.base_fields}{{4.1}{63}{Gestion app forms}{section*.1005}{}} +\newlabel{modules/forms:gestion.forms.GenerateReleveForm.declared_fields}{{4.1}{63}{Gestion app forms}{section*.1006}{}} +\newlabel{modules/forms:gestion.forms.GenerateReleveForm.media}{{4.1}{63}{Gestion app forms}{section*.1007}{}} +\newlabel{modules/forms:gestion.forms.GestionForm}{{4.1}{63}{Gestion app forms}{section*.1008}{}} +\newlabel{modules/forms:gestion.forms.GestionForm.base_fields}{{4.1}{63}{Gestion app forms}{section*.1009}{}} +\newlabel{modules/forms:gestion.forms.GestionForm.declared_fields}{{4.1}{63}{Gestion app forms}{section*.1010}{}} +\newlabel{modules/forms:gestion.forms.GestionForm.media}{{4.1}{63}{Gestion app forms}{section*.1011}{}} +\newlabel{modules/forms:gestion.forms.KegForm}{{4.1}{63}{Gestion app forms}{section*.1012}{}} +\newlabel{modules/forms:gestion.forms.KegForm.Meta}{{4.1}{63}{Gestion app forms}{section*.1013}{}} +\newlabel{modules/forms:gestion.forms.KegForm.Meta.exclude}{{4.1}{63}{Gestion app forms}{section*.1014}{}} +\newlabel{modules/forms:gestion.forms.KegForm.Meta.model}{{4.1}{63}{Gestion app forms}{section*.1015}{}} +\newlabel{modules/forms:gestion.forms.KegForm.Meta.widgets}{{4.1}{64}{Gestion app forms}{section*.1016}{}} +\newlabel{modules/forms:gestion.forms.KegForm.base_fields}{{4.1}{64}{Gestion app forms}{section*.1017}{}} +\newlabel{modules/forms:gestion.forms.KegForm.declared_fields}{{4.1}{64}{Gestion app forms}{section*.1018}{}} +\newlabel{modules/forms:gestion.forms.KegForm.media}{{4.1}{64}{Gestion app forms}{section*.1019}{}} +\newlabel{modules/forms:gestion.forms.MenuForm}{{4.1}{64}{Gestion app forms}{section*.1020}{}} +\newlabel{modules/forms:gestion.forms.MenuForm.Meta}{{4.1}{64}{Gestion app forms}{section*.1021}{}} +\newlabel{modules/forms:gestion.forms.MenuForm.Meta.fields}{{4.1}{64}{Gestion app forms}{section*.1022}{}} +\newlabel{modules/forms:gestion.forms.MenuForm.Meta.model}{{4.1}{64}{Gestion app forms}{section*.1023}{}} +\newlabel{modules/forms:gestion.forms.MenuForm.Meta.widgets}{{4.1}{64}{Gestion app forms}{section*.1024}{}} +\newlabel{modules/forms:gestion.forms.MenuForm.base_fields}{{4.1}{64}{Gestion app forms}{section*.1025}{}} +\newlabel{modules/forms:gestion.forms.MenuForm.declared_fields}{{4.1}{64}{Gestion app forms}{section*.1026}{}} +\newlabel{modules/forms:gestion.forms.MenuForm.media}{{4.1}{64}{Gestion app forms}{section*.1027}{}} +\newlabel{modules/forms:gestion.forms.PinteForm}{{4.1}{64}{Gestion app forms}{section*.1028}{}} +\newlabel{modules/forms:gestion.forms.PinteForm.base_fields}{{4.1}{64}{Gestion app forms}{section*.1029}{}} +\newlabel{modules/forms:gestion.forms.PinteForm.declared_fields}{{4.1}{64}{Gestion app forms}{section*.1030}{}} +\newlabel{modules/forms:gestion.forms.PinteForm.media}{{4.1}{64}{Gestion app forms}{section*.1031}{}} +\newlabel{modules/forms:gestion.forms.ProductForm}{{4.1}{64}{Gestion app forms}{section*.1032}{}} +\newlabel{modules/forms:gestion.forms.ProductForm.Meta}{{4.1}{64}{Gestion app forms}{section*.1033}{}} +\newlabel{modules/forms:gestion.forms.ProductForm.Meta.fields}{{4.1}{64}{Gestion app forms}{section*.1034}{}} +\newlabel{modules/forms:gestion.forms.ProductForm.Meta.model}{{4.1}{64}{Gestion app forms}{section*.1035}{}} +\newlabel{modules/forms:gestion.forms.ProductForm.Meta.widgets}{{4.1}{64}{Gestion app forms}{section*.1036}{}} +\newlabel{modules/forms:gestion.forms.ProductForm.base_fields}{{4.1}{64}{Gestion app forms}{section*.1037}{}} +\newlabel{modules/forms:gestion.forms.ProductForm.declared_fields}{{4.1}{64}{Gestion app forms}{section*.1038}{}} +\newlabel{modules/forms:gestion.forms.ProductForm.media}{{4.1}{64}{Gestion app forms}{section*.1039}{}} +\newlabel{modules/forms:gestion.forms.RefundForm}{{4.1}{65}{Gestion app forms}{section*.1040}{}} +\newlabel{modules/forms:gestion.forms.RefundForm.Meta}{{4.1}{65}{Gestion app forms}{section*.1041}{}} +\newlabel{modules/forms:gestion.forms.RefundForm.Meta.fields}{{4.1}{65}{Gestion app forms}{section*.1042}{}} +\newlabel{modules/forms:gestion.forms.RefundForm.Meta.model}{{4.1}{65}{Gestion app forms}{section*.1043}{}} +\newlabel{modules/forms:gestion.forms.RefundForm.Meta.widgets}{{4.1}{65}{Gestion app forms}{section*.1044}{}} +\newlabel{modules/forms:gestion.forms.RefundForm.base_fields}{{4.1}{65}{Gestion app forms}{section*.1045}{}} +\newlabel{modules/forms:gestion.forms.RefundForm.declared_fields}{{4.1}{65}{Gestion app forms}{section*.1046}{}} +\newlabel{modules/forms:gestion.forms.RefundForm.media}{{4.1}{65}{Gestion app forms}{section*.1047}{}} +\newlabel{modules/forms:gestion.forms.ReloadForm}{{4.1}{65}{Gestion app forms}{section*.1048}{}} +\newlabel{modules/forms:gestion.forms.ReloadForm.Meta}{{4.1}{65}{Gestion app forms}{section*.1049}{}} +\newlabel{modules/forms:gestion.forms.ReloadForm.Meta.fields}{{4.1}{65}{Gestion app forms}{section*.1050}{}} +\newlabel{modules/forms:gestion.forms.ReloadForm.Meta.model}{{4.1}{65}{Gestion app forms}{section*.1051}{}} +\newlabel{modules/forms:gestion.forms.ReloadForm.Meta.widgets}{{4.1}{65}{Gestion app forms}{section*.1052}{}} +\newlabel{modules/forms:gestion.forms.ReloadForm.base_fields}{{4.1}{65}{Gestion app forms}{section*.1053}{}} +\newlabel{modules/forms:gestion.forms.ReloadForm.declared_fields}{{4.1}{65}{Gestion app forms}{section*.1054}{}} +\newlabel{modules/forms:gestion.forms.ReloadForm.media}{{4.1}{65}{Gestion app forms}{section*.1055}{}} +\newlabel{modules/forms:gestion.forms.SearchMenuForm}{{4.1}{65}{Gestion app forms}{section*.1056}{}} +\newlabel{modules/forms:gestion.forms.SearchMenuForm.base_fields}{{4.1}{65}{Gestion app forms}{section*.1057}{}} +\newlabel{modules/forms:gestion.forms.SearchMenuForm.declared_fields}{{4.1}{65}{Gestion app forms}{section*.1058}{}} +\newlabel{modules/forms:gestion.forms.SearchMenuForm.media}{{4.1}{65}{Gestion app forms}{section*.1059}{}} +\newlabel{modules/forms:gestion.forms.SearchProductForm}{{4.1}{65}{Gestion app forms}{section*.1060}{}} +\newlabel{modules/forms:gestion.forms.SearchProductForm.base_fields}{{4.1}{65}{Gestion app forms}{section*.1061}{}} +\newlabel{modules/forms:gestion.forms.SearchProductForm.declared_fields}{{4.1}{65}{Gestion app forms}{section*.1062}{}} +\newlabel{modules/forms:gestion.forms.SearchProductForm.media}{{4.1}{65}{Gestion app forms}{section*.1063}{}} +\newlabel{modules/forms:gestion.forms.SelectActiveKegForm}{{4.1}{66}{Gestion app forms}{section*.1064}{}} +\newlabel{modules/forms:gestion.forms.SelectActiveKegForm.base_fields}{{4.1}{66}{Gestion app forms}{section*.1065}{}} +\newlabel{modules/forms:gestion.forms.SelectActiveKegForm.declared_fields}{{4.1}{66}{Gestion app forms}{section*.1066}{}} +\newlabel{modules/forms:gestion.forms.SelectActiveKegForm.media}{{4.1}{66}{Gestion app forms}{section*.1067}{}} +\newlabel{modules/forms:gestion.forms.SelectPositiveKegForm}{{4.1}{66}{Gestion app forms}{section*.1068}{}} +\newlabel{modules/forms:gestion.forms.SelectPositiveKegForm.base_fields}{{4.1}{66}{Gestion app forms}{section*.1069}{}} +\newlabel{modules/forms:gestion.forms.SelectPositiveKegForm.declared_fields}{{4.1}{66}{Gestion app forms}{section*.1070}{}} +\newlabel{modules/forms:gestion.forms.SelectPositiveKegForm.media}{{4.1}{66}{Gestion app forms}{section*.1071}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Users app forms}{66}{section.4.2}} +\newlabel{modules/forms:module-users.forms}{{4.2}{66}{Users app forms}{section.4.2}{}} +\newlabel{modules/forms:users-app-forms}{{4.2}{66}{Users app forms}{section.4.2}{}} +\newlabel{modules/forms:users.forms.CreateGroupForm}{{4.2}{66}{Users app forms}{section*.1072}{}} +\newlabel{modules/forms:users.forms.CreateGroupForm.Meta}{{4.2}{66}{Users app forms}{section*.1073}{}} +\newlabel{modules/forms:users.forms.CreateGroupForm.Meta.fields}{{4.2}{66}{Users app forms}{section*.1074}{}} +\newlabel{modules/forms:users.forms.CreateGroupForm.Meta.model}{{4.2}{66}{Users app forms}{section*.1075}{}} +\newlabel{modules/forms:users.forms.CreateGroupForm.base_fields}{{4.2}{66}{Users app forms}{section*.1076}{}} +\newlabel{modules/forms:users.forms.CreateGroupForm.declared_fields}{{4.2}{66}{Users app forms}{section*.1077}{}} +\newlabel{modules/forms:users.forms.CreateGroupForm.media}{{4.2}{66}{Users app forms}{section*.1078}{}} +\newlabel{modules/forms:users.forms.CreateUserForm}{{4.2}{66}{Users app forms}{section*.1079}{}} +\newlabel{modules/forms:users.forms.CreateUserForm.Meta}{{4.2}{66}{Users app forms}{section*.1080}{}} +\newlabel{modules/forms:users.forms.CreateUserForm.Meta.fields}{{4.2}{67}{Users app forms}{section*.1081}{}} +\newlabel{modules/forms:users.forms.CreateUserForm.Meta.model}{{4.2}{67}{Users app forms}{section*.1082}{}} +\newlabel{modules/forms:users.forms.CreateUserForm.base_fields}{{4.2}{67}{Users app forms}{section*.1083}{}} +\newlabel{modules/forms:users.forms.CreateUserForm.declared_fields}{{4.2}{67}{Users app forms}{section*.1084}{}} +\newlabel{modules/forms:users.forms.CreateUserForm.media}{{4.2}{67}{Users app forms}{section*.1085}{}} +\newlabel{modules/forms:users.forms.EditGroupForm}{{4.2}{67}{Users app forms}{section*.1086}{}} +\newlabel{modules/forms:users.forms.EditGroupForm.Meta}{{4.2}{67}{Users app forms}{section*.1087}{}} +\newlabel{modules/forms:users.forms.EditGroupForm.Meta.fields}{{4.2}{67}{Users app forms}{section*.1088}{}} +\newlabel{modules/forms:users.forms.EditGroupForm.Meta.model}{{4.2}{67}{Users app forms}{section*.1089}{}} +\newlabel{modules/forms:users.forms.EditGroupForm.base_fields}{{4.2}{67}{Users app forms}{section*.1090}{}} +\newlabel{modules/forms:users.forms.EditGroupForm.declared_fields}{{4.2}{67}{Users app forms}{section*.1091}{}} +\newlabel{modules/forms:users.forms.EditGroupForm.media}{{4.2}{67}{Users app forms}{section*.1092}{}} +\newlabel{modules/forms:users.forms.EditPasswordForm}{{4.2}{67}{Users app forms}{section*.1093}{}} +\newlabel{modules/forms:users.forms.EditPasswordForm.base_fields}{{4.2}{67}{Users app forms}{section*.1094}{}} +\newlabel{modules/forms:users.forms.EditPasswordForm.clean_password2}{{4.2}{67}{Users app forms}{section*.1095}{}} +\newlabel{modules/forms:users.forms.EditPasswordForm.declared_fields}{{4.2}{67}{Users app forms}{section*.1096}{}} +\newlabel{modules/forms:users.forms.EditPasswordForm.media}{{4.2}{67}{Users app forms}{section*.1097}{}} +\newlabel{modules/forms:users.forms.ExportForm}{{4.2}{67}{Users app forms}{section*.1098}{}} +\newlabel{modules/forms:users.forms.ExportForm.FIELDS_CHOICES}{{4.2}{67}{Users app forms}{section*.1099}{}} +\newlabel{modules/forms:users.forms.ExportForm.QUERY_TYPE_CHOICES}{{4.2}{67}{Users app forms}{section*.1100}{}} +\newlabel{modules/forms:users.forms.ExportForm.base_fields}{{4.2}{67}{Users app forms}{section*.1101}{}} +\newlabel{modules/forms:users.forms.ExportForm.declared_fields}{{4.2}{67}{Users app forms}{section*.1102}{}} +\newlabel{modules/forms:users.forms.ExportForm.media}{{4.2}{67}{Users app forms}{section*.1103}{}} +\newlabel{modules/forms:users.forms.GroupsEditForm}{{4.2}{67}{Users app forms}{section*.1104}{}} +\newlabel{modules/forms:users.forms.GroupsEditForm.Meta}{{4.2}{68}{Users app forms}{section*.1105}{}} +\newlabel{modules/forms:users.forms.GroupsEditForm.Meta.fields}{{4.2}{68}{Users app forms}{section*.1106}{}} +\newlabel{modules/forms:users.forms.GroupsEditForm.Meta.model}{{4.2}{68}{Users app forms}{section*.1107}{}} +\newlabel{modules/forms:users.forms.GroupsEditForm.base_fields}{{4.2}{68}{Users app forms}{section*.1108}{}} +\newlabel{modules/forms:users.forms.GroupsEditForm.declared_fields}{{4.2}{68}{Users app forms}{section*.1109}{}} +\newlabel{modules/forms:users.forms.GroupsEditForm.media}{{4.2}{68}{Users app forms}{section*.1110}{}} +\newlabel{modules/forms:users.forms.LoginForm}{{4.2}{68}{Users app forms}{section*.1111}{}} +\newlabel{modules/forms:users.forms.LoginForm.base_fields}{{4.2}{68}{Users app forms}{section*.1112}{}} +\newlabel{modules/forms:users.forms.LoginForm.declared_fields}{{4.2}{68}{Users app forms}{section*.1113}{}} +\newlabel{modules/forms:users.forms.LoginForm.media}{{4.2}{68}{Users app forms}{section*.1114}{}} +\newlabel{modules/forms:users.forms.SchoolForm}{{4.2}{68}{Users app forms}{section*.1115}{}} +\newlabel{modules/forms:users.forms.SchoolForm.Meta}{{4.2}{68}{Users app forms}{section*.1116}{}} +\newlabel{modules/forms:users.forms.SchoolForm.Meta.fields}{{4.2}{68}{Users app forms}{section*.1117}{}} +\newlabel{modules/forms:users.forms.SchoolForm.Meta.model}{{4.2}{68}{Users app forms}{section*.1118}{}} +\newlabel{modules/forms:users.forms.SchoolForm.base_fields}{{4.2}{68}{Users app forms}{section*.1119}{}} +\newlabel{modules/forms:users.forms.SchoolForm.declared_fields}{{4.2}{68}{Users app forms}{section*.1120}{}} +\newlabel{modules/forms:users.forms.SchoolForm.media}{{4.2}{68}{Users app forms}{section*.1121}{}} +\newlabel{modules/forms:users.forms.SelectNonAdminUserForm}{{4.2}{68}{Users app forms}{section*.1122}{}} +\newlabel{modules/forms:users.forms.SelectNonAdminUserForm.base_fields}{{4.2}{68}{Users app forms}{section*.1123}{}} +\newlabel{modules/forms:users.forms.SelectNonAdminUserForm.declared_fields}{{4.2}{68}{Users app forms}{section*.1124}{}} +\newlabel{modules/forms:users.forms.SelectNonAdminUserForm.media}{{4.2}{68}{Users app forms}{section*.1125}{}} +\newlabel{modules/forms:users.forms.SelectNonSuperUserForm}{{4.2}{69}{Users app forms}{section*.1126}{}} +\newlabel{modules/forms:users.forms.SelectNonSuperUserForm.base_fields}{{4.2}{69}{Users app forms}{section*.1127}{}} +\newlabel{modules/forms:users.forms.SelectNonSuperUserForm.declared_fields}{{4.2}{69}{Users app forms}{section*.1128}{}} +\newlabel{modules/forms:users.forms.SelectNonSuperUserForm.media}{{4.2}{69}{Users app forms}{section*.1129}{}} +\newlabel{modules/forms:users.forms.SelectUserForm}{{4.2}{69}{Users app forms}{section*.1130}{}} +\newlabel{modules/forms:users.forms.SelectUserForm.base_fields}{{4.2}{69}{Users app forms}{section*.1131}{}} +\newlabel{modules/forms:users.forms.SelectUserForm.declared_fields}{{4.2}{69}{Users app forms}{section*.1132}{}} +\newlabel{modules/forms:users.forms.SelectUserForm.media}{{4.2}{69}{Users app forms}{section*.1133}{}} +\newlabel{modules/forms:users.forms.addCotisationHistoryForm}{{4.2}{69}{Users app forms}{section*.1134}{}} +\newlabel{modules/forms:users.forms.addCotisationHistoryForm.Meta}{{4.2}{69}{Users app forms}{section*.1135}{}} +\newlabel{modules/forms:users.forms.addCotisationHistoryForm.Meta.fields}{{4.2}{69}{Users app forms}{section*.1136}{}} +\newlabel{modules/forms:users.forms.addCotisationHistoryForm.Meta.model}{{4.2}{69}{Users app forms}{section*.1137}{}} +\newlabel{modules/forms:users.forms.addCotisationHistoryForm.base_fields}{{4.2}{69}{Users app forms}{section*.1138}{}} +\newlabel{modules/forms:users.forms.addCotisationHistoryForm.declared_fields}{{4.2}{69}{Users app forms}{section*.1139}{}} +\newlabel{modules/forms:users.forms.addCotisationHistoryForm.media}{{4.2}{69}{Users app forms}{section*.1140}{}} +\newlabel{modules/forms:users.forms.addWhiteListHistoryForm}{{4.2}{69}{Users app forms}{section*.1141}{}} +\newlabel{modules/forms:users.forms.addWhiteListHistoryForm.Meta}{{4.2}{69}{Users app forms}{section*.1142}{}} +\newlabel{modules/forms:users.forms.addWhiteListHistoryForm.Meta.fields}{{4.2}{69}{Users app forms}{section*.1143}{}} +\newlabel{modules/forms:users.forms.addWhiteListHistoryForm.Meta.model}{{4.2}{69}{Users app forms}{section*.1144}{}} +\newlabel{modules/forms:users.forms.addWhiteListHistoryForm.base_fields}{{4.2}{69}{Users app forms}{section*.1145}{}} +\newlabel{modules/forms:users.forms.addWhiteListHistoryForm.declared_fields}{{4.2}{70}{Users app forms}{section*.1146}{}} +\newlabel{modules/forms:users.forms.addWhiteListHistoryForm.media}{{4.2}{70}{Users app forms}{section*.1147}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Preferences app forms}{70}{section.4.3}} +\newlabel{modules/forms:module-preferences.forms}{{4.3}{70}{Preferences app forms}{section.4.3}{}} +\newlabel{modules/forms:preferences-app-forms}{{4.3}{70}{Preferences app forms}{section.4.3}{}} +\newlabel{modules/forms:preferences.forms.CotisationForm}{{4.3}{70}{Preferences app forms}{section*.1148}{}} +\newlabel{modules/forms:preferences.forms.CotisationForm.Meta}{{4.3}{70}{Preferences app forms}{section*.1149}{}} +\newlabel{modules/forms:preferences.forms.CotisationForm.Meta.fields}{{4.3}{70}{Preferences app forms}{section*.1150}{}} +\newlabel{modules/forms:preferences.forms.CotisationForm.Meta.model}{{4.3}{70}{Preferences app forms}{section*.1151}{}} +\newlabel{modules/forms:preferences.forms.CotisationForm.base_fields}{{4.3}{70}{Preferences app forms}{section*.1152}{}} +\newlabel{modules/forms:preferences.forms.CotisationForm.declared_fields}{{4.3}{70}{Preferences app forms}{section*.1153}{}} +\newlabel{modules/forms:preferences.forms.CotisationForm.media}{{4.3}{70}{Preferences app forms}{section*.1154}{}} +\newlabel{modules/forms:preferences.forms.GeneralPreferencesForm}{{4.3}{70}{Preferences app forms}{section*.1155}{}} +\newlabel{modules/forms:preferences.forms.GeneralPreferencesForm.Meta}{{4.3}{70}{Preferences app forms}{section*.1156}{}} +\newlabel{modules/forms:preferences.forms.GeneralPreferencesForm.Meta.fields}{{4.3}{70}{Preferences app forms}{section*.1157}{}} +\newlabel{modules/forms:preferences.forms.GeneralPreferencesForm.Meta.model}{{4.3}{70}{Preferences app forms}{section*.1158}{}} +\newlabel{modules/forms:preferences.forms.GeneralPreferencesForm.Meta.widgets}{{4.3}{70}{Preferences app forms}{section*.1159}{}} +\newlabel{modules/forms:preferences.forms.GeneralPreferencesForm.base_fields}{{4.3}{70}{Preferences app forms}{section*.1160}{}} +\newlabel{modules/forms:preferences.forms.GeneralPreferencesForm.declared_fields}{{4.3}{70}{Preferences app forms}{section*.1161}{}} +\newlabel{modules/forms:preferences.forms.GeneralPreferencesForm.media}{{4.3}{70}{Preferences app forms}{section*.1162}{}} +\newlabel{modules/forms:preferences.forms.PaymentMethodForm}{{4.3}{70}{Preferences app forms}{section*.1163}{}} +\newlabel{modules/forms:preferences.forms.PaymentMethodForm.Meta}{{4.3}{70}{Preferences app forms}{section*.1164}{}} +\newlabel{modules/forms:preferences.forms.PaymentMethodForm.Meta.fields}{{4.3}{71}{Preferences app forms}{section*.1165}{}} +\newlabel{modules/forms:preferences.forms.PaymentMethodForm.Meta.model}{{4.3}{71}{Preferences app forms}{section*.1166}{}} +\newlabel{modules/forms:preferences.forms.PaymentMethodForm.base_fields}{{4.3}{71}{Preferences app forms}{section*.1167}{}} +\newlabel{modules/forms:preferences.forms.PaymentMethodForm.declared_fields}{{4.3}{71}{Preferences app forms}{section*.1168}{}} +\newlabel{modules/forms:preferences.forms.PaymentMethodForm.media}{{4.3}{71}{Preferences app forms}{section*.1169}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Utils documentation}{73}{chapter.5}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{modules/utils:utils-documentation}{{5}{73}{Utils documentation}{chapter.5}{}} +\newlabel{modules/utils::doc}{{5}{73}{Utils documentation}{chapter.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}ACL}{73}{section.5.1}} +\newlabel{modules/utils:module-coopeV3.acl}{{5.1}{73}{ACL}{section.5.1}{}} +\newlabel{modules/utils:acl}{{5.1}{73}{ACL}{section.5.1}{}} +\newlabel{modules/utils:coopeV3.acl.acl_and}{{5.1}{73}{ACL}{section*.1170}{}} +\newlabel{modules/utils:coopeV3.acl.acl_or}{{5.1}{73}{ACL}{section*.1171}{}} +\newlabel{modules/utils:coopeV3.acl.active_required}{{5.1}{73}{ACL}{section*.1172}{}} +\newlabel{modules/utils:coopeV3.acl.admin_required}{{5.1}{73}{ACL}{section*.1173}{}} +\newlabel{modules/utils:coopeV3.acl.self_or_has_perm}{{5.1}{73}{ACL}{section*.1174}{}} +\newlabel{modules/utils:coopeV3.acl.superuser_required}{{5.1}{73}{ACL}{section*.1175}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}CoopeV3 templatetags}{73}{section.5.2}} +\newlabel{modules/utils:module-coopeV3.templatetags.vip}{{5.2}{73}{CoopeV3 templatetags}{section.5.2}{}} +\newlabel{modules/utils:coopev3-templatetags}{{5.2}{73}{CoopeV3 templatetags}{section.5.2}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.brewer}{{5.2}{73}{CoopeV3 templatetags}{section*.1176}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.global_message}{{5.2}{73}{CoopeV3 templatetags}{section*.1177}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.grocer}{{5.2}{73}{CoopeV3 templatetags}{section*.1178}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.logout_time}{{5.2}{73}{CoopeV3 templatetags}{section*.1179}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.menu}{{5.2}{73}{CoopeV3 templatetags}{section*.1180}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.president}{{5.2}{74}{CoopeV3 templatetags}{section*.1181}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.rules}{{5.2}{74}{CoopeV3 templatetags}{section*.1182}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.secretary}{{5.2}{74}{CoopeV3 templatetags}{section*.1183}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.statutes}{{5.2}{74}{CoopeV3 templatetags}{section*.1184}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.treasurer}{{5.2}{74}{CoopeV3 templatetags}{section*.1185}{}} +\newlabel{modules/utils:coopeV3.templatetags.vip.vice_president}{{5.2}{74}{CoopeV3 templatetags}{section*.1186}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}Users templatetags}{74}{section.5.3}} +\newlabel{modules/utils:module-users.templatetags.users_extra}{{5.3}{74}{Users templatetags}{section.5.3}{}} +\newlabel{modules/utils:users-templatetags}{{5.3}{74}{Users templatetags}{section.5.3}{}} +\newlabel{modules/utils:users.templatetags.users_extra.random_filter}{{5.3}{74}{Users templatetags}{section*.1187}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Django\_tex documentation}{75}{chapter.6}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{modules/django_tex:django-tex-documentation}{{6}{75}{Django\_tex documentation}{chapter.6}{}} +\newlabel{modules/django_tex::doc}{{6}{75}{Django\_tex documentation}{chapter.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.1}Core}{75}{section.6.1}} +\newlabel{modules/django_tex:module-django_tex.core}{{6.1}{75}{Core}{section.6.1}{}} +\newlabel{modules/django_tex:core}{{6.1}{75}{Core}{section.6.1}{}} +\newlabel{modules/django_tex:django_tex.core.compile_template_to_pdf}{{6.1}{75}{Core}{section*.1188}{}} +\newlabel{modules/django_tex:django_tex.core.render_template_with_context}{{6.1}{75}{Core}{section*.1189}{}} +\newlabel{modules/django_tex:django_tex.core.run_tex}{{6.1}{75}{Core}{section*.1190}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.2}Engine}{75}{section.6.2}} +\newlabel{modules/django_tex:module-django_tex.engine}{{6.2}{75}{Engine}{section.6.2}{}} +\newlabel{modules/django_tex:engine}{{6.2}{75}{Engine}{section.6.2}{}} +\newlabel{modules/django_tex:django_tex.engine.TeXEngine}{{6.2}{75}{Engine}{section*.1191}{}} +\newlabel{modules/django_tex:django_tex.engine.TeXEngine.app_dirname}{{6.2}{75}{Engine}{section*.1192}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.3}Environment}{75}{section.6.3}} +\newlabel{modules/django_tex:module-django_tex.environment}{{6.3}{75}{Environment}{section.6.3}{}} +\newlabel{modules/django_tex:environment}{{6.3}{75}{Environment}{section.6.3}{}} +\newlabel{modules/django_tex:django_tex.environment.environment}{{6.3}{75}{Environment}{section*.1193}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.4}Exceptions}{75}{section.6.4}} +\newlabel{modules/django_tex:module-django_tex.exceptions}{{6.4}{75}{Exceptions}{section.6.4}{}} +\newlabel{modules/django_tex:exceptions}{{6.4}{75}{Exceptions}{section.6.4}{}} +\newlabel{modules/django_tex:django_tex.exceptions.TexError}{{6.4}{75}{Exceptions}{section*.1194}{}} +\newlabel{modules/django_tex:django_tex.exceptions.TexError.get_message}{{6.4}{75}{Exceptions}{section*.1195}{}} +\newlabel{modules/django_tex:django_tex.exceptions.prettify_message}{{6.4}{75}{Exceptions}{section*.1196}{}} +\newlabel{modules/django_tex:django_tex.exceptions.tokenizer}{{6.4}{76}{Exceptions}{section*.1197}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.5}Filters}{76}{section.6.5}} +\newlabel{modules/django_tex:module-django_tex.filters}{{6.5}{76}{Filters}{section.6.5}{}} +\newlabel{modules/django_tex:filters}{{6.5}{76}{Filters}{section.6.5}{}} +\newlabel{modules/django_tex:django_tex.filters.do_linebreaks}{{6.5}{76}{Filters}{section*.1198}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.6}Models}{76}{section.6.6}} +\newlabel{modules/django_tex:module-django_tex.models}{{6.6}{76}{Models}{section.6.6}{}} +\newlabel{modules/django_tex:models}{{6.6}{76}{Models}{section.6.6}{}} +\newlabel{modules/django_tex:django_tex.models.TeXTemplateFile}{{6.6}{76}{Models}{section*.1199}{}} +\newlabel{modules/django_tex:django_tex.models.TeXTemplateFile.Meta}{{6.6}{76}{Models}{section*.1200}{}} +\newlabel{modules/django_tex:django_tex.models.TeXTemplateFile.Meta.abstract}{{6.6}{76}{Models}{section*.1201}{}} +\newlabel{modules/django_tex:django_tex.models.TeXTemplateFile.name}{{6.6}{76}{Models}{section*.1202}{}} +\newlabel{modules/django_tex:django_tex.models.TeXTemplateFile.title}{{6.6}{76}{Models}{section*.1203}{}} +\newlabel{modules/django_tex:django_tex.models.validate_template_path}{{6.6}{76}{Models}{section*.1204}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.7}Views}{76}{section.6.7}} +\newlabel{modules/django_tex:module-django_tex.views}{{6.7}{76}{Views}{section.6.7}{}} +\newlabel{modules/django_tex:views}{{6.7}{76}{Views}{section.6.7}{}} +\newlabel{modules/django_tex:django_tex.views.PDFResponse}{{6.7}{76}{Views}{section*.1205}{}} +\newlabel{modules/django_tex:django_tex.views.render_to_pdf}{{6.7}{76}{Views}{section*.1206}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Indices and tables}{77}{chapter.7}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{index:indices-and-tables}{{7}{77}{Indices and tables}{chapter.7}{}} +\@writefile{toc}{\contentsline {chapter}{Python Module Index}{79}{section*.1207}} +\@writefile{toc}{\contentsline {chapter}{Index}{81}{section*.1208}} diff --git a/docs/_build/latex/CoopeV3.fdb_latexmk b/docs/_build/latex/CoopeV3.fdb_latexmk new file mode 100644 index 0000000..3ea2756 --- /dev/null +++ b/docs/_build/latex/CoopeV3.fdb_latexmk @@ -0,0 +1,173 @@ +# Fdb version 3 +["makeindex CoopeV3.idx"] 1551356213 "CoopeV3.idx" "CoopeV3.ind" "CoopeV3" 1551356215 + "CoopeV3.idx" 1551356215 185609 263cc1e7f132f1eb6f1e58de2736726c "" + (generated) + "CoopeV3.ilg" + "CoopeV3.ind" +["pdflatex"] 1551356213 "CoopeV3.tex" "CoopeV3.pdf" "CoopeV3" 1551356215 + "/etc/texmf/web2c/texmf.cnf" 1547035903 475 c0e671620eb5563b2130f56340a5fde8 "" + "/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc" 1480098666 4850 80dc9bab7f31fb78a000ccfed0e27cab "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1511824771 3332 103109f5612ad95229751940c61aada0 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8c.tfm" 1480098688 1268 8067e4f35cbae42c0f58b48da75bf496 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm" 1480098688 1292 3059476c50a24578715759f22652f3d0 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm" 1480098688 1384 87406e4336af44af883a035f17f319d9 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm" 1480098688 1268 8bd405dc5751cfed76cb6fb2db78cb50 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm" 1480098688 1292 bd42be2f344128bff6d35d98474adfe3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm" 1480098688 1384 4632f5e54900a7dadbb83f555bc61e56 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8r.tfm" 1480098688 1544 4fb84cf2931ec523c2c6a08d939088ba "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8t.tfm" 1480098688 1596 04a657f277f0401ba37d66e716627ac4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm" 1480098688 4484 b828043cbd581d289d955903c1339981 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm" 1480098688 6628 34c39492c0adc454c1c199922bba8363 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8r.tfm" 1480098688 4736 423eba67d4e9420ec9df4a8def143b08 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm" 1480098688 6880 fe6c7967f27585f6fa9876f3af14edd2 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8r.tfm" 1480098688 4712 9ef4d7d106579d4b136e1529e1a4533c "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm" 1480098688 7040 b2bd27e2bfe6f6948cbc3239cae7444f "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm" 1480098689 4524 6bce29db5bc272ba5f332261583fee9c "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm" 1480098689 6880 f19b8995b61c334d78fc734065f6b4d4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm" 1480098689 1352 fa28a7e6d323c65ce7d13d5342ff6be2 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm" 1480098689 4408 25b74d011a4c66b7f212c0cc3c90061b "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm" 1480098689 6672 e3ab9e37e925f3045c9005e6d1473d56 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm" 1480098689 4640 532ca3305aad10cc01d769f3f91f1029 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm" 1480098689 6944 94c55ad86e6ea2826f78ba2240d50df9 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1480098696 3584 adb004a0c8e7c46ee66cad73671f37b4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1480098698 1004 54797486969f23fa377b128694d548df "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1480098698 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1480098698 924 9904cf1d39e9767e7a3622f2a125a565 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1480098698 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1480098698 908 2921f8a10601f252058503cc6570e581 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1480098698 940 75ac932a52f80982a9f8ea75d03a34cf "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1480098698 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1480098701 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1480098701 1524 4414a8315f39513458b80dfc63bff03a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1480098701 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1480098701 1292 296a67155bdbfc32aa9c636f21e91433 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1480098701 1124 6c73e740cf17375f03eec0ee63599741 "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb" 1480098746 50493 4ed1f7e9eba8f1f3e1ec25195460190d "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb" 1480098746 45758 19968a0990191524e34e1994d4a31cb6 "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb" 1480098746 44404 ea3d9c0311883914133975dd62a9185c "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb" 1480098746 35941 f27169cc74234d5bd5e4cca5abafaabb "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvbo8a.pfb" 1480098746 39013 b244066151b1e3e718f9b8e88a5ff23b "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvr8a.pfb" 1480098746 44648 23115b2a545ebfe2c526c3ca99db8b95 "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb" 1480098746 44729 811d6c62865936705a31c797a1d5dada "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb" 1480098746 46026 6dab18b61c907687b520c72847215a68 "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmri8a.pfb" 1480098746 45458 a3faba884469519614ca56ba5f6b1de1 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrb8c.vf" 1480098757 3560 cb6af2c6d0b5f763f3aae03f60590c57 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf" 1480098757 2184 5d20c8b00cd914e50251116c274e2d0b "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf" 1480098757 3552 6a7911d0b338a7c32cbfc3a9e985ccca "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf" 1480098757 2184 8475af1b9cfa983db5f46f5ed4b8f9f7 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrro8t.vf" 1480098757 2280 d7cd083c724c9449e1d12731253966f7 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf" 1480098757 2340 0efed6a948c3c37d870e4e7ddb85c7c3 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvbo8t.vf" 1480098757 2344 88834f8322177295b0266ecc4b0754c3 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf" 1480098757 2344 44ff28c9ef2fc97180cd884f900fee71 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf" 1480098758 2340 df9c920cc5688ebbf16a93f45ce7bdd3 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf" 1480098758 3556 8a9a6dcbcd146ef985683f677f4758a6 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf" 1480098758 2348 91706c542228501c410c266421fbe30c "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf" 1480098758 2328 6cd7df782b09b29cfc4d93e55b6b9a59 "" + "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1480098806 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf" 1496785618 7008 9ff5fdcc865b01beca2b0fe4a46231d4 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def" 1528235896 70328 4c1c2424f3e68a8ebf8adb72f7be6112 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty" 1528235896 16004 293e1516e7acda164a88a332c25064b2 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/switch.def" 1528235896 13069 f93658d7040fbcb8fbaccdd3bf77503b "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def" 1528235896 7435 6c566fc19b3503b2b2da8bb4550f2b58 "" + "/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1480098815 1458 43ab4710dc82f3edeabecd0d099626b2 "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty" 1480098815 7612 729a8cc22a1ee0029997c7f74717ae05 "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty" 1480098815 8237 3b62ef1f7e2c23a328c814b3893bc11f "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty" 1522444781 185313 3e16abd014cb2c328020e45d63ed7f45 "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty" 1480098815 70864 bcd5b216757bd619ae692a151d90085d "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty" 1480098815 7324 2310d1247db0114eb4726807c8837a0e "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty" 1490564930 1251 d170e11a3246c3392bc7f59595af42cb "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty" 1480098815 6797 90b7f83b0ad46826bc16058b1e3d48df "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty" 1480098815 8253 473e0e41f9adadb1977e8631b8f72ea6 "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty" 1480098815 14040 ac8866aac45982ac84021584b0abb252 "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty" 1480098815 18425 5b3c0c59d76fac78978b5558e83c1f36 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1480098820 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1480098820 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd" 1480098820 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd" 1480098820 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1523134290 2211 ca7ce284ab93c8eecdc6029dc5ccbd73 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty" 1523134290 4161 7f6eb9092061a11f87d08ed13515b48d "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty" 1523134290 84354 7292177bb735c466b78634ee4efd537e "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty" 1523134290 4116 32e6abd27229755a83a8b7f18e583890 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty" 1523134290 2432 8ff93b1137020e8f21930562a874ae66 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty" 1523050425 3142 41d54e810bb4bed45b915ab99f1df119 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty" 1523050425 4573 ae83473dfe6aea3508ab88d22c4457b2 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty" 1523050425 5052 f2525dfd6e503dc383e90b568c6c9f02 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty" 1523050425 1942 125bdb0eb122d38c47905721b0682b1e "" + "/usr/share/texlive/texmf-dist/tex/latex/base/report.cls" 1523050425 22882 dde2f6d94552c7d0da323ba0661350b5 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1523050425 8294 b0f177401f895563eb19304d2389582d "" + "/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def" 1523050425 10008 3208fbcdd7b3f5dd0dda02e6507bf38c "" + "/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty" 1523050425 16156 c88fab7ab9716ccedc3dc1fa0f1f22da "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd" 1523050425 2433 cdefd2509a12ba58001f2024f63aae9a "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def" 1523050425 7769 97b639552068544f7c98d557abb19f41 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu" 1523050425 4973 a0ebe45f171b33c2df4e84416140511f "" + "/usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty" 1480098823 1311 063f8536a047a2d9cb1803321f793f37 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty" 1480098825 2883 427a7f7cb58418a0394dbd85c80668f6 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap" 1480098825 1207 4e0d96772f0d338847cbfb4eca683c81 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap" 1480098825 1938 beaa4a8467aa0074076e0e19f2992e29 "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1498861448 10663 d7fcc0dc4f35e8998b8cfeef8407d37d "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1480098827 45360 a0833d32f1b541964596b02870342d5a "" + "/usr/share/texlive/texmf-dist/tex/latex/float/float.sty" 1480098828 6749 16d2656a1984957e674b149555f1ea1d "" + "/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty" 1480098828 19488 fdd52eb173b3197d748e1ec25acb042f "" + "/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty" 1480098829 22449 7ec15c16d0d66790f28e90343c5434a3 "" + "/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1525727744 41645 0653033a985e06c69a2a9cea9a95e31a "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1480098830 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1480098830 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1515537368 17334 520b9b85ad8a2a48eda3f643e27a5179 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1523134385 15272 5a97061616e0c8b2aa79c6615ff769f4 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1523134385 9063 d0a305975932762117cd1f06a582f896 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1523134385 2591 6404d0c7d28505fb38ce0d86c2e28ae7 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1523134385 3977 cb9221976ed8a183afad65b59aa8629a "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1518041854 51699 9069fc983fff0db91d59a15af144ad62 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1518041854 234088 2c849389d62d41c593d9f5176c4116ab "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1480098831 12949 81e4e808884a8f0e276b69410e234656 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1518041854 14098 4e70bf396c7c265bd8b0e5cab3fd3d4d "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1518041854 122411 10b605a58a28bbe5d61db37da4a85beb "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1480098833 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg" 1480098833 235 6031e5765137be07eed51a510b2b8fb7 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap" 1480098835 1866 c1c12138091b4a8edd4a24a940e6f792 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap" 1480098835 2370 3b1f71b14b974f07cef532db09ae9ee0 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap" 1480098835 3001 252c8ca42b06a22cb1a11c0e47790c6e "" + "/usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty" 1480098835 852 0e34dbb72efc69fa07602405ad95585e "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty" 1480098836 3834 4363110eb0ef1eb2b71c8fcbcdb6c357 "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty" 1480098836 12095 5337833c991d80788a43d3ce26bd1c46 "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty" 1480098836 7075 2fe3d848bba95f139de11ded085e74aa "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1480098836 3720 63669daeb0b67d5fbec899824e2f1491 "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty" 1480098836 22417 1d9df1eb66848aa31b18a593099cf45c "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty" 1480098836 9581 023642318cef9f4677efe364de1e2a27 "" + "/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty" 1480098836 2763 02a40cc5a32805c41d919cfbdba7e99a "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd" 1480098837 798 d5895e9edc628f2be019beb2c0ec66df "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd" 1480098837 1488 9a55ac1cde6b4798a7f56844bb75a553 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd" 1480098837 774 61d7da1e9f9e74989b196d147e623736 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty" 1480098837 857 6c716f26c5eadfb81029fcd6ce2d45e6 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1pcr.fd" 1480098837 643 92c451bb86386a4e36a174603ddb5a13 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd" 1480098837 619 96f56dc5d1ef1fe1121f1cfeec70ee0c "" + "/usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty" 1480098840 13791 8c83287d79183c3bf58fd70871e8a70b "" + "/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty" 1480098841 37387 afa86533e532701faf233f3f592c61e0 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty" 1525471425 13555 1c149904152e53130811b31763000c97 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty" 1523050425 12081 a8103ee8653c06c3c5b3fb138f20b5e5 "" + "/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty" 1480098842 1048 517e01cde97c1c0baf72e69d43aa5a2e "" + "/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1480098842 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty" 1480098842 10894 d359a13923460b2a73d4312d613554c8 "" + "/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty" 1480098843 26220 3701aebf80ccdef248c0c20dd062fea9 "" + "/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty" 1480098843 55589 34128738f682d033422ca125f82e5d62 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1535076666 32752 ce45b90d2fda49befaa367e6f5986072 "" + "/usr/share/texmf/web2c/texmf.cnf" 1535076666 32752 ce45b90d2fda49befaa367e6f5986072 "" + "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1547036020 2885931 54a0ba4e594f83ea336338297f8ab976 "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1547036061 4218755 f744047727a9b96c032743d231d75365 "" + "CoopeV3.aux" 1551356215 147131 f21f7709852a9218cee82d8b35bf9acb "" + "CoopeV3.ind" 1551356213 119164 6d2fbcf03e901bf77789197e2da21cd5 "makeindex CoopeV3.idx" + "CoopeV3.out" 1551356215 4197 6cc9690f18109b5b9c00fc70f13f6760 "" + "CoopeV3.tex" 1551356197 598964 c6981c1536579a63b3489b2dceafeb7d "" + "CoopeV3.toc" 1551356215 2363 ffff5627114f00a064a3dc59a2f2ca87 "" + "footnotehyper-sphinx.sty" 1551254768 8888 1bbd7bdeae8c8bed1d10d551bddb1cc9 "" + "sphinx.sty" 1551254768 76220 63a32157b97240a297c69d4d077e82ab "" + "sphinxhighlight.sty" 1551356196 8137 38a433148fcb7611515a989ff1750dd5 "" + "sphinxmanual.cls" 1551254768 3606 fe67088d27cb5a0826fd3cdce3caff30 "" + "sphinxmulticell.sty" 1551254768 14618 0defbdc8536ad2e67f1eac6a1431bc55 "" + (generated) + "CoopeV3.out" + "CoopeV3.idx" + "CoopeV3.aux" + "CoopeV3.toc" + "CoopeV3.log" + "CoopeV3.pdf" diff --git a/docs/_build/latex/CoopeV3.fls b/docs/_build/latex/CoopeV3.fls new file mode 100644 index 0000000..0cea51f --- /dev/null +++ b/docs/_build/latex/CoopeV3.fls @@ -0,0 +1,303 @@ +PWD /data/nanoy/Projets/coopeV3/docs/_build/latex +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT CoopeV3.tex +OUTPUT CoopeV3.log +INPUT sphinxmanual.cls +INPUT sphinxmanual.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def +INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap +OUTPUT CoopeV3.pdf +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/switch.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT sphinx.sty +INPUT sphinx.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu +INPUT /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT sphinxmulticell.sty +INPUT sphinxmulticell.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT footnotehyper-sphinx.sty +INPUT footnotehyper-sphinx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty +INPUT sphinxhighlight.sty +INPUT sphinxhighlight.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty +OUTPUT CoopeV3.idx +INPUT CoopeV3.aux +INPUT CoopeV3.aux +OUTPUT CoopeV3.aux +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT CoopeV3.out +INPUT CoopeV3.out +INPUT CoopeV3.out +INPUT CoopeV3.out +INPUT ./CoopeV3.out +INPUT ./CoopeV3.out +OUTPUT CoopeV3.out +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvbo8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT CoopeV3.toc +INPUT CoopeV3.toc +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +OUTPUT CoopeV3.toc +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrro8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8c.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrb8c.vf +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf +INPUT CoopeV3.ind +INPUT CoopeV3.ind +INPUT CoopeV3.aux +INPUT ./CoopeV3.out +INPUT ./CoopeV3.out +INPUT /usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvbo8a.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvr8a.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmri8a.pfb diff --git a/docs/_build/latex/CoopeV3.idx b/docs/_build/latex/CoopeV3.idx new file mode 100644 index 0000000..4a9d284 --- /dev/null +++ b/docs/_build/latex/CoopeV3.idx @@ -0,0 +1,1227 @@ +\indexentry{gestion.views (module)@\spxentry{gestion.views}\spxextra{module}|hyperpage}{1} +\indexentry{ActiveProductsAutocomplete (class in gestion.views)@\spxentry{ActiveProductsAutocomplete}\spxextra{class in gestion.views}|hyperpage}{1} +\indexentry{get\_queryset() (gestion.views.ActiveProductsAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.ActiveProductsAutocomplete method}|hyperpage}{1} +\indexentry{KegActiveAutocomplete (class in gestion.views)@\spxentry{KegActiveAutocomplete}\spxextra{class in gestion.views}|hyperpage}{1} +\indexentry{get\_queryset() (gestion.views.KegActiveAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.KegActiveAutocomplete method}|hyperpage}{1} +\indexentry{KegPositiveAutocomplete (class in gestion.views)@\spxentry{KegPositiveAutocomplete}\spxextra{class in gestion.views}|hyperpage}{1} +\indexentry{get\_queryset() (gestion.views.KegPositiveAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.KegPositiveAutocomplete method}|hyperpage}{1} +\indexentry{MenusAutocomplete (class in gestion.views)@\spxentry{MenusAutocomplete}\spxextra{class in gestion.views}|hyperpage}{1} +\indexentry{get\_queryset() (gestion.views.MenusAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.MenusAutocomplete method}|hyperpage}{1} +\indexentry{ProductsAutocomplete (class in gestion.views)@\spxentry{ProductsAutocomplete}\spxextra{class in gestion.views}|hyperpage}{1} +\indexentry{get\_queryset() (gestion.views.ProductsAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.ProductsAutocomplete method}|hyperpage}{1} +\indexentry{addKeg() (in module gestion.views)@\spxentry{addKeg()}\spxextra{in module gestion.views}|hyperpage}{1} +\indexentry{addMenu() (in module gestion.views)@\spxentry{addMenu()}\spxextra{in module gestion.views}|hyperpage}{1} +\indexentry{addProduct() (in module gestion.views)@\spxentry{addProduct()}\spxextra{in module gestion.views}|hyperpage}{1} +\indexentry{add\_pintes() (in module gestion.views)@\spxentry{add\_pintes()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{allocate() (in module gestion.views)@\spxentry{allocate()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{cancel\_consumption() (in module gestion.views)@\spxentry{cancel\_consumption()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{cancel\_menu() (in module gestion.views)@\spxentry{cancel\_menu()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{cancel\_reload() (in module gestion.views)@\spxentry{cancel\_reload()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{closeDirectKeg() (in module gestion.views)@\spxentry{closeDirectKeg()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{closeKeg() (in module gestion.views)@\spxentry{closeKeg()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{editKeg() (in module gestion.views)@\spxentry{editKeg()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{editProduct() (in module gestion.views)@\spxentry{editProduct()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{edit\_menu() (in module gestion.views)@\spxentry{edit\_menu()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{gen\_releve() (in module gestion.views)@\spxentry{gen\_releve()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{getProduct() (in module gestion.views)@\spxentry{getProduct()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{get\_menu() (in module gestion.views)@\spxentry{get\_menu()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{kegH() (in module gestion.views)@\spxentry{kegH()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{kegsList() (in module gestion.views)@\spxentry{kegsList()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{manage() (in module gestion.views)@\spxentry{manage()}\spxextra{in module gestion.views}|hyperpage}{2} +\indexentry{menus\_list() (in module gestion.views)@\spxentry{menus\_list()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{openDirectKeg() (in module gestion.views)@\spxentry{openDirectKeg()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{openKeg() (in module gestion.views)@\spxentry{openKeg()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{order() (in module gestion.views)@\spxentry{order()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{pintes\_list() (in module gestion.views)@\spxentry{pintes\_list()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{pintes\_user\_list() (in module gestion.views)@\spxentry{pintes\_user\_list()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{productProfile() (in module gestion.views)@\spxentry{productProfile()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{productsIndex() (in module gestion.views)@\spxentry{productsIndex()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{productsList() (in module gestion.views)@\spxentry{productsList()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{ranking() (in module gestion.views)@\spxentry{ranking()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{refund() (in module gestion.views)@\spxentry{refund()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{release() (in module gestion.views)@\spxentry{release()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{release\_pintes() (in module gestion.views)@\spxentry{release\_pintes()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{reload() (in module gestion.views)@\spxentry{reload()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{searchMenu() (in module gestion.views)@\spxentry{searchMenu()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{searchProduct() (in module gestion.views)@\spxentry{searchProduct()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{switch\_activate() (in module gestion.views)@\spxentry{switch\_activate()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{switch\_activate\_menu() (in module gestion.views)@\spxentry{switch\_activate\_menu()}\spxextra{in module gestion.views}|hyperpage}{3} +\indexentry{users.views (module)@\spxentry{users.views}\spxextra{module}|hyperpage}{4} +\indexentry{ActiveUsersAutocomplete (class in users.views)@\spxentry{ActiveUsersAutocomplete}\spxextra{class in users.views}|hyperpage}{4} +\indexentry{get\_queryset() (users.views.ActiveUsersAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.ActiveUsersAutocomplete method}|hyperpage}{4} +\indexentry{AdherentAutocomplete (class in users.views)@\spxentry{AdherentAutocomplete}\spxextra{class in users.views}|hyperpage}{4} +\indexentry{get\_queryset() (users.views.AdherentAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.AdherentAutocomplete method}|hyperpage}{4} +\indexentry{AllUsersAutocomplete (class in users.views)@\spxentry{AllUsersAutocomplete}\spxextra{class in users.views}|hyperpage}{4} +\indexentry{get\_queryset() (users.views.AllUsersAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.AllUsersAutocomplete method}|hyperpage}{4} +\indexentry{NonAdminUserAutocomplete (class in users.views)@\spxentry{NonAdminUserAutocomplete}\spxextra{class in users.views}|hyperpage}{4} +\indexentry{get\_queryset() (users.views.NonAdminUserAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.NonAdminUserAutocomplete method}|hyperpage}{4} +\indexentry{NonSuperUserAutocomplete (class in users.views)@\spxentry{NonSuperUserAutocomplete}\spxextra{class in users.views}|hyperpage}{4} +\indexentry{get\_queryset() (users.views.NonSuperUserAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.NonSuperUserAutocomplete method}|hyperpage}{4} +\indexentry{addAdmin() (in module users.views)@\spxentry{addAdmin()}\spxextra{in module users.views}|hyperpage}{4} +\indexentry{addCotisationHistory() (in module users.views)@\spxentry{addCotisationHistory()}\spxextra{in module users.views}|hyperpage}{4} +\indexentry{addSuperuser() (in module users.views)@\spxentry{addSuperuser()}\spxextra{in module users.views}|hyperpage}{4} +\indexentry{addWhiteListHistory() (in module users.views)@\spxentry{addWhiteListHistory()}\spxextra{in module users.views}|hyperpage}{4} +\indexentry{adminsIndex() (in module users.views)@\spxentry{adminsIndex()}\spxextra{in module users.views}|hyperpage}{4} +\indexentry{allReloads() (in module users.views)@\spxentry{allReloads()}\spxextra{in module users.views}|hyperpage}{4} +\indexentry{all\_consumptions() (in module users.views)@\spxentry{all\_consumptions()}\spxextra{in module users.views}|hyperpage}{4} +\indexentry{all\_menus() (in module users.views)@\spxentry{all\_menus()}\spxextra{in module users.views}|hyperpage}{4} +\indexentry{createGroup() (in module users.views)@\spxentry{createGroup()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{createSchool() (in module users.views)@\spxentry{createSchool()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{createUser() (in module users.views)@\spxentry{createUser()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{deleteCotisationHistory() (in module users.views)@\spxentry{deleteCotisationHistory()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{deleteGroup() (in module users.views)@\spxentry{deleteGroup()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{deleteSchool() (in module users.views)@\spxentry{deleteSchool()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{editGroup() (in module users.views)@\spxentry{editGroup()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{editGroups() (in module users.views)@\spxentry{editGroups()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{editPassword() (in module users.views)@\spxentry{editPassword()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{editSchool() (in module users.views)@\spxentry{editSchool()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{editUser() (in module users.views)@\spxentry{editUser()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{export\_csv() (in module users.views)@\spxentry{export\_csv()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{gen\_user\_infos() (in module users.views)@\spxentry{gen\_user\_infos()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{getUser() (in module users.views)@\spxentry{getUser()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{groupProfile() (in module users.views)@\spxentry{groupProfile()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{groupsIndex() (in module users.views)@\spxentry{groupsIndex()}\spxextra{in module users.views}|hyperpage}{5} +\indexentry{index() (in module users.views)@\spxentry{index()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{loginView() (in module users.views)@\spxentry{loginView()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{logoutView() (in module users.views)@\spxentry{logoutView()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{profile() (in module users.views)@\spxentry{profile()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{removeAdmin() (in module users.views)@\spxentry{removeAdmin()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{removeRight() (in module users.views)@\spxentry{removeRight()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{removeSuperuser() (in module users.views)@\spxentry{removeSuperuser()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{removeUser() (in module users.views)@\spxentry{removeUser()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{resetPassword() (in module users.views)@\spxentry{resetPassword()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{schoolsIndex() (in module users.views)@\spxentry{schoolsIndex()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{searchUser() (in module users.views)@\spxentry{searchUser()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{superusersIndex() (in module users.views)@\spxentry{superusersIndex()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{switch\_activate\_user() (in module users.views)@\spxentry{switch\_activate\_user()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{usersIndex() (in module users.views)@\spxentry{usersIndex()}\spxextra{in module users.views}|hyperpage}{6} +\indexentry{preferences.views (module)@\spxentry{preferences.views}\spxextra{module}|hyperpage}{6} +\indexentry{addCotisation() (in module preferences.views)@\spxentry{addCotisation()}\spxextra{in module preferences.views}|hyperpage}{6} +\indexentry{addPaymentMethod() (in module preferences.views)@\spxentry{addPaymentMethod()}\spxextra{in module preferences.views}|hyperpage}{6} +\indexentry{cotisationsIndex() (in module preferences.views)@\spxentry{cotisationsIndex()}\spxextra{in module preferences.views}|hyperpage}{6} +\indexentry{deleteCotisation() (in module preferences.views)@\spxentry{deleteCotisation()}\spxextra{in module preferences.views}|hyperpage}{6} +\indexentry{deletePaymentMethod() (in module preferences.views)@\spxentry{deletePaymentMethod()}\spxextra{in module preferences.views}|hyperpage}{7} +\indexentry{editCotisation() (in module preferences.views)@\spxentry{editCotisation()}\spxextra{in module preferences.views}|hyperpage}{7} +\indexentry{editPaymentMethod() (in module preferences.views)@\spxentry{editPaymentMethod()}\spxextra{in module preferences.views}|hyperpage}{7} +\indexentry{generalPreferences() (in module preferences.views)@\spxentry{generalPreferences()}\spxextra{in module preferences.views}|hyperpage}{7} +\indexentry{get\_config() (in module preferences.views)@\spxentry{get\_config()}\spxextra{in module preferences.views}|hyperpage}{7} +\indexentry{get\_cotisation() (in module preferences.views)@\spxentry{get\_cotisation()}\spxextra{in module preferences.views}|hyperpage}{7} +\indexentry{inactive() (in module preferences.views)@\spxentry{inactive()}\spxextra{in module preferences.views}|hyperpage}{7} +\indexentry{paymentMethodsIndex() (in module preferences.views)@\spxentry{paymentMethodsIndex()}\spxextra{in module preferences.views}|hyperpage}{7} +\indexentry{coopeV3.views (module)@\spxentry{coopeV3.views}\spxextra{module}|hyperpage}{7} +\indexentry{coope\_runner() (in module coopeV3.views)@\spxentry{coope\_runner()}\spxextra{in module coopeV3.views}|hyperpage}{7} +\indexentry{home() (in module coopeV3.views)@\spxentry{home()}\spxextra{in module coopeV3.views}|hyperpage}{7} +\indexentry{homepage() (in module coopeV3.views)@\spxentry{homepage()}\spxextra{in module coopeV3.views}|hyperpage}{7} +\indexentry{gestion.models (module)@\spxentry{gestion.models}\spxextra{module}|hyperpage}{9} +\indexentry{Consumption (class in gestion.models)@\spxentry{Consumption}\spxextra{class in gestion.models}|hyperpage}{9} +\indexentry{Consumption.DoesNotExist@\spxentry{Consumption.DoesNotExist}|hyperpage}{9} +\indexentry{Consumption.MultipleObjectsReturned@\spxentry{Consumption.MultipleObjectsReturned}|hyperpage}{9} +\indexentry{customer (gestion.models.Consumption attribute)@\spxentry{customer}\spxextra{gestion.models.Consumption attribute}|hyperpage}{9} +\indexentry{customer\_id (gestion.models.Consumption attribute)@\spxentry{customer\_id}\spxextra{gestion.models.Consumption attribute}|hyperpage}{9} +\indexentry{history (gestion.models.Consumption attribute)@\spxentry{history}\spxextra{gestion.models.Consumption attribute}|hyperpage}{9} +\indexentry{id (gestion.models.Consumption attribute)@\spxentry{id}\spxextra{gestion.models.Consumption attribute}|hyperpage}{9} +\indexentry{objects (gestion.models.Consumption attribute)@\spxentry{objects}\spxextra{gestion.models.Consumption attribute}|hyperpage}{9} +\indexentry{product (gestion.models.Consumption attribute)@\spxentry{product}\spxextra{gestion.models.Consumption attribute}|hyperpage}{9} +\indexentry{product\_id (gestion.models.Consumption attribute)@\spxentry{product\_id}\spxextra{gestion.models.Consumption attribute}|hyperpage}{9} +\indexentry{quantity (gestion.models.Consumption attribute)@\spxentry{quantity}\spxextra{gestion.models.Consumption attribute}|hyperpage}{9} +\indexentry{save\_without\_historical\_record() (gestion.models.Consumption method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Consumption method}|hyperpage}{9} +\indexentry{ConsumptionHistory (class in gestion.models)@\spxentry{ConsumptionHistory}\spxextra{class in gestion.models}|hyperpage}{10} +\indexentry{ConsumptionHistory.DoesNotExist@\spxentry{ConsumptionHistory.DoesNotExist}|hyperpage}{10} +\indexentry{ConsumptionHistory.MultipleObjectsReturned@\spxentry{ConsumptionHistory.MultipleObjectsReturned}|hyperpage}{10} +\indexentry{amount (gestion.models.ConsumptionHistory attribute)@\spxentry{amount}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{coopeman (gestion.models.ConsumptionHistory attribute)@\spxentry{coopeman}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{coopeman\_id (gestion.models.ConsumptionHistory attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{customer (gestion.models.ConsumptionHistory attribute)@\spxentry{customer}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{customer\_id (gestion.models.ConsumptionHistory attribute)@\spxentry{customer\_id}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{date (gestion.models.ConsumptionHistory attribute)@\spxentry{date}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{get\_next\_by\_date() (gestion.models.ConsumptionHistory method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.ConsumptionHistory method}|hyperpage}{10} +\indexentry{get\_previous\_by\_date() (gestion.models.ConsumptionHistory method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.ConsumptionHistory method}|hyperpage}{10} +\indexentry{history (gestion.models.ConsumptionHistory attribute)@\spxentry{history}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{id (gestion.models.ConsumptionHistory attribute)@\spxentry{id}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{objects (gestion.models.ConsumptionHistory attribute)@\spxentry{objects}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{paymentMethod (gestion.models.ConsumptionHistory attribute)@\spxentry{paymentMethod}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{paymentMethod\_id (gestion.models.ConsumptionHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{product (gestion.models.ConsumptionHistory attribute)@\spxentry{product}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{product\_id (gestion.models.ConsumptionHistory attribute)@\spxentry{product\_id}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{quantity (gestion.models.ConsumptionHistory attribute)@\spxentry{quantity}\spxextra{gestion.models.ConsumptionHistory attribute}|hyperpage}{10} +\indexentry{save\_without\_historical\_record() (gestion.models.ConsumptionHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.ConsumptionHistory method}|hyperpage}{10} +\indexentry{HistoricalConsumption (class in gestion.models)@\spxentry{HistoricalConsumption}\spxextra{class in gestion.models}|hyperpage}{10} +\indexentry{HistoricalConsumption.DoesNotExist@\spxentry{HistoricalConsumption.DoesNotExist}|hyperpage}{11} +\indexentry{HistoricalConsumption.MultipleObjectsReturned@\spxentry{HistoricalConsumption.MultipleObjectsReturned}|hyperpage}{11} +\indexentry{customer (gestion.models.HistoricalConsumption attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{customer\_id (gestion.models.HistoricalConsumption attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalConsumption method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalConsumption method}|hyperpage}{11} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalConsumption method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumption method}|hyperpage}{11} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalConsumption method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumption method}|hyperpage}{11} +\indexentry{history\_change\_reason (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{history\_date (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{history\_id (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{history\_object (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{history\_type (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{history\_user (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{history\_user\_id (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{id (gestion.models.HistoricalConsumption attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{11} +\indexentry{instance (gestion.models.HistoricalConsumption attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{12} +\indexentry{instance\_type (gestion.models.HistoricalConsumption attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{12} +\indexentry{next\_record (gestion.models.HistoricalConsumption attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{12} +\indexentry{objects (gestion.models.HistoricalConsumption attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{12} +\indexentry{prev\_record (gestion.models.HistoricalConsumption attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{12} +\indexentry{product (gestion.models.HistoricalConsumption attribute)@\spxentry{product}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{12} +\indexentry{product\_id (gestion.models.HistoricalConsumption attribute)@\spxentry{product\_id}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{12} +\indexentry{quantity (gestion.models.HistoricalConsumption attribute)@\spxentry{quantity}\spxextra{gestion.models.HistoricalConsumption attribute}|hyperpage}{12} +\indexentry{revert\_url() (gestion.models.HistoricalConsumption method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalConsumption method}|hyperpage}{12} +\indexentry{HistoricalConsumptionHistory (class in gestion.models)@\spxentry{HistoricalConsumptionHistory}\spxextra{class in gestion.models}|hyperpage}{12} +\indexentry{HistoricalConsumptionHistory.DoesNotExist@\spxentry{HistoricalConsumptionHistory.DoesNotExist}|hyperpage}{12} +\indexentry{HistoricalConsumptionHistory.MultipleObjectsReturned@\spxentry{HistoricalConsumptionHistory.MultipleObjectsReturned}|hyperpage}{12} +\indexentry{amount (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{12} +\indexentry{coopeman (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{coopeman}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{12} +\indexentry{coopeman\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{customer (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{customer\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{date (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{date}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalConsumptionHistory method}|hyperpage}{13} +\indexentry{get\_next\_by\_date() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}|hyperpage}{13} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}|hyperpage}{13} +\indexentry{get\_previous\_by\_date() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}|hyperpage}{13} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}|hyperpage}{13} +\indexentry{history\_change\_reason (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{history\_date (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{history\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{history\_object (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{history\_type (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{history\_user (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{13} +\indexentry{history\_user\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{instance (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{instance\_type (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{next\_record (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{objects (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{paymentMethod (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{paymentMethod}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{paymentMethod\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{prev\_record (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{product (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{product}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{product\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{product\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{quantity (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{quantity}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}|hyperpage}{14} +\indexentry{revert\_url() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalConsumptionHistory method}|hyperpage}{14} +\indexentry{HistoricalKeg (class in gestion.models)@\spxentry{HistoricalKeg}\spxextra{class in gestion.models}|hyperpage}{14} +\indexentry{HistoricalKeg.DoesNotExist@\spxentry{HistoricalKeg.DoesNotExist}|hyperpage}{15} +\indexentry{HistoricalKeg.MultipleObjectsReturned@\spxentry{HistoricalKeg.MultipleObjectsReturned}|hyperpage}{15} +\indexentry{amount (gestion.models.HistoricalKeg attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{barcode (gestion.models.HistoricalKeg attribute)@\spxentry{barcode}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{capacity (gestion.models.HistoricalKeg attribute)@\spxentry{capacity}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{demi (gestion.models.HistoricalKeg attribute)@\spxentry{demi}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{demi\_id (gestion.models.HistoricalKeg attribute)@\spxentry{demi\_id}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{galopin (gestion.models.HistoricalKeg attribute)@\spxentry{galopin}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{galopin\_id (gestion.models.HistoricalKeg attribute)@\spxentry{galopin\_id}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalKeg method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalKeg method}|hyperpage}{15} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalKeg method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalKeg method}|hyperpage}{15} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalKeg method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalKeg method}|hyperpage}{15} +\indexentry{history\_change\_reason (gestion.models.HistoricalKeg attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{history\_date (gestion.models.HistoricalKeg attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{15} +\indexentry{history\_id (gestion.models.HistoricalKeg attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{history\_object (gestion.models.HistoricalKeg attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{history\_type (gestion.models.HistoricalKeg attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{history\_user (gestion.models.HistoricalKeg attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{history\_user\_id (gestion.models.HistoricalKeg attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{id (gestion.models.HistoricalKeg attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{instance (gestion.models.HistoricalKeg attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{instance\_type (gestion.models.HistoricalKeg attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{is\_active (gestion.models.HistoricalKeg attribute)@\spxentry{is\_active}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{name (gestion.models.HistoricalKeg attribute)@\spxentry{name}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{next\_record (gestion.models.HistoricalKeg attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{objects (gestion.models.HistoricalKeg attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{pinte (gestion.models.HistoricalKeg attribute)@\spxentry{pinte}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{pinte\_id (gestion.models.HistoricalKeg attribute)@\spxentry{pinte\_id}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{16} +\indexentry{prev\_record (gestion.models.HistoricalKeg attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{17} +\indexentry{revert\_url() (gestion.models.HistoricalKeg method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalKeg method}|hyperpage}{17} +\indexentry{stockHold (gestion.models.HistoricalKeg attribute)@\spxentry{stockHold}\spxextra{gestion.models.HistoricalKeg attribute}|hyperpage}{17} +\indexentry{HistoricalKegHistory (class in gestion.models)@\spxentry{HistoricalKegHistory}\spxextra{class in gestion.models}|hyperpage}{17} +\indexentry{HistoricalKegHistory.DoesNotExist@\spxentry{HistoricalKegHistory.DoesNotExist}|hyperpage}{17} +\indexentry{HistoricalKegHistory.MultipleObjectsReturned@\spxentry{HistoricalKegHistory.MultipleObjectsReturned}|hyperpage}{17} +\indexentry{amountSold (gestion.models.HistoricalKegHistory attribute)@\spxentry{amountSold}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{17} +\indexentry{closingDate (gestion.models.HistoricalKegHistory attribute)@\spxentry{closingDate}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{17} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalKegHistory method}|hyperpage}{17} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalKegHistory method}|hyperpage}{17} +\indexentry{get\_next\_by\_openingDate() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_next\_by\_openingDate()}\spxextra{gestion.models.HistoricalKegHistory method}|hyperpage}{17} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalKegHistory method}|hyperpage}{17} +\indexentry{get\_previous\_by\_openingDate() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_previous\_by\_openingDate()}\spxextra{gestion.models.HistoricalKegHistory method}|hyperpage}{17} +\indexentry{history\_change\_reason (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{17} +\indexentry{history\_date (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{17} +\indexentry{history\_id (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{17} +\indexentry{history\_object (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{17} +\indexentry{history\_type (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{17} +\indexentry{history\_user (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{17} +\indexentry{history\_user\_id (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{id (gestion.models.HistoricalKegHistory attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{instance (gestion.models.HistoricalKegHistory attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{instance\_type (gestion.models.HistoricalKegHistory attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{isCurrentKegHistory (gestion.models.HistoricalKegHistory attribute)@\spxentry{isCurrentKegHistory}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{keg (gestion.models.HistoricalKegHistory attribute)@\spxentry{keg}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{keg\_id (gestion.models.HistoricalKegHistory attribute)@\spxentry{keg\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{next\_record (gestion.models.HistoricalKegHistory attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{objects (gestion.models.HistoricalKegHistory attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{openingDate (gestion.models.HistoricalKegHistory attribute)@\spxentry{openingDate}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{prev\_record (gestion.models.HistoricalKegHistory attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{quantitySold (gestion.models.HistoricalKegHistory attribute)@\spxentry{quantitySold}\spxextra{gestion.models.HistoricalKegHistory attribute}|hyperpage}{18} +\indexentry{revert\_url() (gestion.models.HistoricalKegHistory method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalKegHistory method}|hyperpage}{18} +\indexentry{HistoricalMenu (class in gestion.models)@\spxentry{HistoricalMenu}\spxextra{class in gestion.models}|hyperpage}{18} +\indexentry{HistoricalMenu.DoesNotExist@\spxentry{HistoricalMenu.DoesNotExist}|hyperpage}{19} +\indexentry{HistoricalMenu.MultipleObjectsReturned@\spxentry{HistoricalMenu.MultipleObjectsReturned}|hyperpage}{19} +\indexentry{amount (gestion.models.HistoricalMenu attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{barcode (gestion.models.HistoricalMenu attribute)@\spxentry{barcode}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalMenu method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalMenu method}|hyperpage}{19} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalMenu method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenu method}|hyperpage}{19} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalMenu method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenu method}|hyperpage}{19} +\indexentry{history\_change\_reason (gestion.models.HistoricalMenu attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{history\_date (gestion.models.HistoricalMenu attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{history\_id (gestion.models.HistoricalMenu attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{history\_object (gestion.models.HistoricalMenu attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{history\_type (gestion.models.HistoricalMenu attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{history\_user (gestion.models.HistoricalMenu attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{history\_user\_id (gestion.models.HistoricalMenu attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{id (gestion.models.HistoricalMenu attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{instance (gestion.models.HistoricalMenu attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{instance\_type (gestion.models.HistoricalMenu attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{19} +\indexentry{is\_active (gestion.models.HistoricalMenu attribute)@\spxentry{is\_active}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{20} +\indexentry{name (gestion.models.HistoricalMenu attribute)@\spxentry{name}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{20} +\indexentry{next\_record (gestion.models.HistoricalMenu attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{20} +\indexentry{objects (gestion.models.HistoricalMenu attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{20} +\indexentry{prev\_record (gestion.models.HistoricalMenu attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalMenu attribute}|hyperpage}{20} +\indexentry{revert\_url() (gestion.models.HistoricalMenu method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalMenu method}|hyperpage}{20} +\indexentry{HistoricalMenuHistory (class in gestion.models)@\spxentry{HistoricalMenuHistory}\spxextra{class in gestion.models}|hyperpage}{20} +\indexentry{HistoricalMenuHistory.DoesNotExist@\spxentry{HistoricalMenuHistory.DoesNotExist}|hyperpage}{20} +\indexentry{HistoricalMenuHistory.MultipleObjectsReturned@\spxentry{HistoricalMenuHistory.MultipleObjectsReturned}|hyperpage}{20} +\indexentry{amount (gestion.models.HistoricalMenuHistory attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{20} +\indexentry{coopeman (gestion.models.HistoricalMenuHistory attribute)@\spxentry{coopeman}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{20} +\indexentry{coopeman\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{20} +\indexentry{customer (gestion.models.HistoricalMenuHistory attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{20} +\indexentry{customer\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{20} +\indexentry{date (gestion.models.HistoricalMenuHistory attribute)@\spxentry{date}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalMenuHistory method}|hyperpage}{21} +\indexentry{get\_next\_by\_date() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}|hyperpage}{21} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}|hyperpage}{21} +\indexentry{get\_previous\_by\_date() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}|hyperpage}{21} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}|hyperpage}{21} +\indexentry{history\_change\_reason (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{history\_date (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{history\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{history\_object (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{history\_type (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{history\_user (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{history\_user\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{instance (gestion.models.HistoricalMenuHistory attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{instance\_type (gestion.models.HistoricalMenuHistory attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{menu (gestion.models.HistoricalMenuHistory attribute)@\spxentry{menu}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{21} +\indexentry{menu\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{menu\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{22} +\indexentry{next\_record (gestion.models.HistoricalMenuHistory attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{22} +\indexentry{objects (gestion.models.HistoricalMenuHistory attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{22} +\indexentry{paymentMethod (gestion.models.HistoricalMenuHistory attribute)@\spxentry{paymentMethod}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{22} +\indexentry{paymentMethod\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{22} +\indexentry{prev\_record (gestion.models.HistoricalMenuHistory attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{22} +\indexentry{quantity (gestion.models.HistoricalMenuHistory attribute)@\spxentry{quantity}\spxextra{gestion.models.HistoricalMenuHistory attribute}|hyperpage}{22} +\indexentry{revert\_url() (gestion.models.HistoricalMenuHistory method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalMenuHistory method}|hyperpage}{22} +\indexentry{HistoricalPinte (class in gestion.models)@\spxentry{HistoricalPinte}\spxextra{class in gestion.models}|hyperpage}{22} +\indexentry{HistoricalPinte.DoesNotExist@\spxentry{HistoricalPinte.DoesNotExist}|hyperpage}{22} +\indexentry{HistoricalPinte.MultipleObjectsReturned@\spxentry{HistoricalPinte.MultipleObjectsReturned}|hyperpage}{22} +\indexentry{current\_owner (gestion.models.HistoricalPinte attribute)@\spxentry{current\_owner}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{22} +\indexentry{current\_owner\_id (gestion.models.HistoricalPinte attribute)@\spxentry{current\_owner\_id}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalPinte method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalPinte method}|hyperpage}{23} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalPinte method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalPinte method}|hyperpage}{23} +\indexentry{get\_next\_by\_last\_update\_date() (gestion.models.HistoricalPinte method)@\spxentry{get\_next\_by\_last\_update\_date()}\spxextra{gestion.models.HistoricalPinte method}|hyperpage}{23} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalPinte method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalPinte method}|hyperpage}{23} +\indexentry{get\_previous\_by\_last\_update\_date() (gestion.models.HistoricalPinte method)@\spxentry{get\_previous\_by\_last\_update\_date()}\spxextra{gestion.models.HistoricalPinte method}|hyperpage}{23} +\indexentry{history\_change\_reason (gestion.models.HistoricalPinte attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{history\_date (gestion.models.HistoricalPinte attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{history\_id (gestion.models.HistoricalPinte attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{history\_object (gestion.models.HistoricalPinte attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{history\_type (gestion.models.HistoricalPinte attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{history\_user (gestion.models.HistoricalPinte attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{history\_user\_id (gestion.models.HistoricalPinte attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{id (gestion.models.HistoricalPinte attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{instance (gestion.models.HistoricalPinte attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{instance\_type (gestion.models.HistoricalPinte attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{last\_update\_date (gestion.models.HistoricalPinte attribute)@\spxentry{last\_update\_date}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{23} +\indexentry{next\_record (gestion.models.HistoricalPinte attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{24} +\indexentry{objects (gestion.models.HistoricalPinte attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{24} +\indexentry{prev\_record (gestion.models.HistoricalPinte attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{24} +\indexentry{previous\_owner (gestion.models.HistoricalPinte attribute)@\spxentry{previous\_owner}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{24} +\indexentry{previous\_owner\_id (gestion.models.HistoricalPinte attribute)@\spxentry{previous\_owner\_id}\spxextra{gestion.models.HistoricalPinte attribute}|hyperpage}{24} +\indexentry{revert\_url() (gestion.models.HistoricalPinte method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalPinte method}|hyperpage}{24} +\indexentry{HistoricalProduct (class in gestion.models)@\spxentry{HistoricalProduct}\spxextra{class in gestion.models}|hyperpage}{24} +\indexentry{HistoricalProduct.DoesNotExist@\spxentry{HistoricalProduct.DoesNotExist}|hyperpage}{24} +\indexentry{HistoricalProduct.MultipleObjectsReturned@\spxentry{HistoricalProduct.MultipleObjectsReturned}|hyperpage}{24} +\indexentry{adherentRequired (gestion.models.HistoricalProduct attribute)@\spxentry{adherentRequired}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{24} +\indexentry{amount (gestion.models.HistoricalProduct attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{24} +\indexentry{barcode (gestion.models.HistoricalProduct attribute)@\spxentry{barcode}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{24} +\indexentry{category (gestion.models.HistoricalProduct attribute)@\spxentry{category}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{24} +\indexentry{deg (gestion.models.HistoricalProduct attribute)@\spxentry{deg}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{24} +\indexentry{get\_category\_display() (gestion.models.HistoricalProduct method)@\spxentry{get\_category\_display()}\spxextra{gestion.models.HistoricalProduct method}|hyperpage}{24} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalProduct method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalProduct method}|hyperpage}{24} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalProduct method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalProduct method}|hyperpage}{25} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalProduct method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalProduct method}|hyperpage}{25} +\indexentry{history\_change\_reason (gestion.models.HistoricalProduct attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{history\_date (gestion.models.HistoricalProduct attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{history\_id (gestion.models.HistoricalProduct attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{history\_object (gestion.models.HistoricalProduct attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{history\_type (gestion.models.HistoricalProduct attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{history\_user (gestion.models.HistoricalProduct attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{history\_user\_id (gestion.models.HistoricalProduct attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{id (gestion.models.HistoricalProduct attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{instance (gestion.models.HistoricalProduct attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{instance\_type (gestion.models.HistoricalProduct attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{is\_active (gestion.models.HistoricalProduct attribute)@\spxentry{is\_active}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{name (gestion.models.HistoricalProduct attribute)@\spxentry{name}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{needQuantityButton (gestion.models.HistoricalProduct attribute)@\spxentry{needQuantityButton}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{next\_record (gestion.models.HistoricalProduct attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{objects (gestion.models.HistoricalProduct attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{25} +\indexentry{prev\_record (gestion.models.HistoricalProduct attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{26} +\indexentry{revert\_url() (gestion.models.HistoricalProduct method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalProduct method}|hyperpage}{26} +\indexentry{showingMultiplier (gestion.models.HistoricalProduct attribute)@\spxentry{showingMultiplier}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{26} +\indexentry{stockBar (gestion.models.HistoricalProduct attribute)@\spxentry{stockBar}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{26} +\indexentry{stockHold (gestion.models.HistoricalProduct attribute)@\spxentry{stockHold}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{26} +\indexentry{volume (gestion.models.HistoricalProduct attribute)@\spxentry{volume}\spxextra{gestion.models.HistoricalProduct attribute}|hyperpage}{26} +\indexentry{HistoricalRefund (class in gestion.models)@\spxentry{HistoricalRefund}\spxextra{class in gestion.models}|hyperpage}{26} +\indexentry{HistoricalRefund.DoesNotExist@\spxentry{HistoricalRefund.DoesNotExist}|hyperpage}{26} +\indexentry{HistoricalRefund.MultipleObjectsReturned@\spxentry{HistoricalRefund.MultipleObjectsReturned}|hyperpage}{26} +\indexentry{amount (gestion.models.HistoricalRefund attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{26} +\indexentry{coopeman (gestion.models.HistoricalRefund attribute)@\spxentry{coopeman}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{26} +\indexentry{coopeman\_id (gestion.models.HistoricalRefund attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{26} +\indexentry{customer (gestion.models.HistoricalRefund attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{26} +\indexentry{customer\_id (gestion.models.HistoricalRefund attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{26} +\indexentry{date (gestion.models.HistoricalRefund attribute)@\spxentry{date}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalRefund method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalRefund method}|hyperpage}{27} +\indexentry{get\_next\_by\_date() (gestion.models.HistoricalRefund method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalRefund method}|hyperpage}{27} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalRefund method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalRefund method}|hyperpage}{27} +\indexentry{get\_previous\_by\_date() (gestion.models.HistoricalRefund method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalRefund method}|hyperpage}{27} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalRefund method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalRefund method}|hyperpage}{27} +\indexentry{history\_change\_reason (gestion.models.HistoricalRefund attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{history\_date (gestion.models.HistoricalRefund attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{history\_id (gestion.models.HistoricalRefund attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{history\_object (gestion.models.HistoricalRefund attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{history\_type (gestion.models.HistoricalRefund attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{history\_user (gestion.models.HistoricalRefund attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{history\_user\_id (gestion.models.HistoricalRefund attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{id (gestion.models.HistoricalRefund attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{instance (gestion.models.HistoricalRefund attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{instance\_type (gestion.models.HistoricalRefund attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{next\_record (gestion.models.HistoricalRefund attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{27} +\indexentry{objects (gestion.models.HistoricalRefund attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{28} +\indexentry{prev\_record (gestion.models.HistoricalRefund attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalRefund attribute}|hyperpage}{28} +\indexentry{revert\_url() (gestion.models.HistoricalRefund method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalRefund method}|hyperpage}{28} +\indexentry{HistoricalReload (class in gestion.models)@\spxentry{HistoricalReload}\spxextra{class in gestion.models}|hyperpage}{28} +\indexentry{HistoricalReload.DoesNotExist@\spxentry{HistoricalReload.DoesNotExist}|hyperpage}{28} +\indexentry{HistoricalReload.MultipleObjectsReturned@\spxentry{HistoricalReload.MultipleObjectsReturned}|hyperpage}{28} +\indexentry{PaymentMethod (gestion.models.HistoricalReload attribute)@\spxentry{PaymentMethod}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{28} +\indexentry{PaymentMethod\_id (gestion.models.HistoricalReload attribute)@\spxentry{PaymentMethod\_id}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{28} +\indexentry{amount (gestion.models.HistoricalReload attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{28} +\indexentry{coopeman (gestion.models.HistoricalReload attribute)@\spxentry{coopeman}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{28} +\indexentry{coopeman\_id (gestion.models.HistoricalReload attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{28} +\indexentry{customer (gestion.models.HistoricalReload attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{28} +\indexentry{customer\_id (gestion.models.HistoricalReload attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{date (gestion.models.HistoricalReload attribute)@\spxentry{date}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{get\_history\_type\_display() (gestion.models.HistoricalReload method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalReload method}|hyperpage}{29} +\indexentry{get\_next\_by\_date() (gestion.models.HistoricalReload method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalReload method}|hyperpage}{29} +\indexentry{get\_next\_by\_history\_date() (gestion.models.HistoricalReload method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalReload method}|hyperpage}{29} +\indexentry{get\_previous\_by\_date() (gestion.models.HistoricalReload method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalReload method}|hyperpage}{29} +\indexentry{get\_previous\_by\_history\_date() (gestion.models.HistoricalReload method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalReload method}|hyperpage}{29} +\indexentry{history\_change\_reason (gestion.models.HistoricalReload attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{history\_date (gestion.models.HistoricalReload attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{history\_id (gestion.models.HistoricalReload attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{history\_object (gestion.models.HistoricalReload attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{history\_type (gestion.models.HistoricalReload attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{history\_user (gestion.models.HistoricalReload attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{history\_user\_id (gestion.models.HistoricalReload attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{id (gestion.models.HistoricalReload attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{instance (gestion.models.HistoricalReload attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{instance\_type (gestion.models.HistoricalReload attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{29} +\indexentry{next\_record (gestion.models.HistoricalReload attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{30} +\indexentry{objects (gestion.models.HistoricalReload attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{30} +\indexentry{prev\_record (gestion.models.HistoricalReload attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalReload attribute}|hyperpage}{30} +\indexentry{revert\_url() (gestion.models.HistoricalReload method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalReload method}|hyperpage}{30} +\indexentry{Keg (class in gestion.models)@\spxentry{Keg}\spxextra{class in gestion.models}|hyperpage}{30} +\indexentry{Keg.DoesNotExist@\spxentry{Keg.DoesNotExist}|hyperpage}{30} +\indexentry{Keg.MultipleObjectsReturned@\spxentry{Keg.MultipleObjectsReturned}|hyperpage}{30} +\indexentry{amount (gestion.models.Keg attribute)@\spxentry{amount}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{barcode (gestion.models.Keg attribute)@\spxentry{barcode}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{capacity (gestion.models.Keg attribute)@\spxentry{capacity}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{demi (gestion.models.Keg attribute)@\spxentry{demi}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{demi\_id (gestion.models.Keg attribute)@\spxentry{demi\_id}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{galopin (gestion.models.Keg attribute)@\spxentry{galopin}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{galopin\_id (gestion.models.Keg attribute)@\spxentry{galopin\_id}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{history (gestion.models.Keg attribute)@\spxentry{history}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{id (gestion.models.Keg attribute)@\spxentry{id}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{is\_active (gestion.models.Keg attribute)@\spxentry{is\_active}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{keghistory\_set (gestion.models.Keg attribute)@\spxentry{keghistory\_set}\spxextra{gestion.models.Keg attribute}|hyperpage}{30} +\indexentry{name (gestion.models.Keg attribute)@\spxentry{name}\spxextra{gestion.models.Keg attribute}|hyperpage}{31} +\indexentry{objects (gestion.models.Keg attribute)@\spxentry{objects}\spxextra{gestion.models.Keg attribute}|hyperpage}{31} +\indexentry{pinte (gestion.models.Keg attribute)@\spxentry{pinte}\spxextra{gestion.models.Keg attribute}|hyperpage}{31} +\indexentry{pinte\_id (gestion.models.Keg attribute)@\spxentry{pinte\_id}\spxextra{gestion.models.Keg attribute}|hyperpage}{31} +\indexentry{save\_without\_historical\_record() (gestion.models.Keg method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Keg method}|hyperpage}{31} +\indexentry{stockHold (gestion.models.Keg attribute)@\spxentry{stockHold}\spxextra{gestion.models.Keg attribute}|hyperpage}{31} +\indexentry{KegHistory (class in gestion.models)@\spxentry{KegHistory}\spxextra{class in gestion.models}|hyperpage}{31} +\indexentry{KegHistory.DoesNotExist@\spxentry{KegHistory.DoesNotExist}|hyperpage}{31} +\indexentry{KegHistory.MultipleObjectsReturned@\spxentry{KegHistory.MultipleObjectsReturned}|hyperpage}{31} +\indexentry{amountSold (gestion.models.KegHistory attribute)@\spxentry{amountSold}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{closingDate (gestion.models.KegHistory attribute)@\spxentry{closingDate}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{get\_next\_by\_openingDate() (gestion.models.KegHistory method)@\spxentry{get\_next\_by\_openingDate()}\spxextra{gestion.models.KegHistory method}|hyperpage}{31} +\indexentry{get\_previous\_by\_openingDate() (gestion.models.KegHistory method)@\spxentry{get\_previous\_by\_openingDate()}\spxextra{gestion.models.KegHistory method}|hyperpage}{31} +\indexentry{history (gestion.models.KegHistory attribute)@\spxentry{history}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{id (gestion.models.KegHistory attribute)@\spxentry{id}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{isCurrentKegHistory (gestion.models.KegHistory attribute)@\spxentry{isCurrentKegHistory}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{keg (gestion.models.KegHistory attribute)@\spxentry{keg}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{keg\_id (gestion.models.KegHistory attribute)@\spxentry{keg\_id}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{objects (gestion.models.KegHistory attribute)@\spxentry{objects}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{openingDate (gestion.models.KegHistory attribute)@\spxentry{openingDate}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{quantitySold (gestion.models.KegHistory attribute)@\spxentry{quantitySold}\spxextra{gestion.models.KegHistory attribute}|hyperpage}{31} +\indexentry{save\_without\_historical\_record() (gestion.models.KegHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.KegHistory method}|hyperpage}{31} +\indexentry{Menu (class in gestion.models)@\spxentry{Menu}\spxextra{class in gestion.models}|hyperpage}{32} +\indexentry{Menu.DoesNotExist@\spxentry{Menu.DoesNotExist}|hyperpage}{32} +\indexentry{Menu.MultipleObjectsReturned@\spxentry{Menu.MultipleObjectsReturned}|hyperpage}{32} +\indexentry{adherent\_required (gestion.models.Menu attribute)@\spxentry{adherent\_required}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{amount (gestion.models.Menu attribute)@\spxentry{amount}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{articles (gestion.models.Menu attribute)@\spxentry{articles}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{barcode (gestion.models.Menu attribute)@\spxentry{barcode}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{history (gestion.models.Menu attribute)@\spxentry{history}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{id (gestion.models.Menu attribute)@\spxentry{id}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{is\_active (gestion.models.Menu attribute)@\spxentry{is\_active}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{menuhistory\_set (gestion.models.Menu attribute)@\spxentry{menuhistory\_set}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{name (gestion.models.Menu attribute)@\spxentry{name}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{objects (gestion.models.Menu attribute)@\spxentry{objects}\spxextra{gestion.models.Menu attribute}|hyperpage}{32} +\indexentry{save\_without\_historical\_record() (gestion.models.Menu method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Menu method}|hyperpage}{32} +\indexentry{MenuHistory (class in gestion.models)@\spxentry{MenuHistory}\spxextra{class in gestion.models}|hyperpage}{32} +\indexentry{MenuHistory.DoesNotExist@\spxentry{MenuHistory.DoesNotExist}|hyperpage}{32} +\indexentry{MenuHistory.MultipleObjectsReturned@\spxentry{MenuHistory.MultipleObjectsReturned}|hyperpage}{32} +\indexentry{amount (gestion.models.MenuHistory attribute)@\spxentry{amount}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{32} +\indexentry{coopeman (gestion.models.MenuHistory attribute)@\spxentry{coopeman}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{32} +\indexentry{coopeman\_id (gestion.models.MenuHistory attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{customer (gestion.models.MenuHistory attribute)@\spxentry{customer}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{customer\_id (gestion.models.MenuHistory attribute)@\spxentry{customer\_id}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{date (gestion.models.MenuHistory attribute)@\spxentry{date}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{get\_next\_by\_date() (gestion.models.MenuHistory method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.MenuHistory method}|hyperpage}{33} +\indexentry{get\_previous\_by\_date() (gestion.models.MenuHistory method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.MenuHistory method}|hyperpage}{33} +\indexentry{history (gestion.models.MenuHistory attribute)@\spxentry{history}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{id (gestion.models.MenuHistory attribute)@\spxentry{id}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{menu (gestion.models.MenuHistory attribute)@\spxentry{menu}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{menu\_id (gestion.models.MenuHistory attribute)@\spxentry{menu\_id}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{objects (gestion.models.MenuHistory attribute)@\spxentry{objects}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{paymentMethod (gestion.models.MenuHistory attribute)@\spxentry{paymentMethod}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{paymentMethod\_id (gestion.models.MenuHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{quantity (gestion.models.MenuHistory attribute)@\spxentry{quantity}\spxextra{gestion.models.MenuHistory attribute}|hyperpage}{33} +\indexentry{save\_without\_historical\_record() (gestion.models.MenuHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.MenuHistory method}|hyperpage}{33} +\indexentry{Pinte (class in gestion.models)@\spxentry{Pinte}\spxextra{class in gestion.models}|hyperpage}{33} +\indexentry{Pinte.DoesNotExist@\spxentry{Pinte.DoesNotExist}|hyperpage}{33} +\indexentry{Pinte.MultipleObjectsReturned@\spxentry{Pinte.MultipleObjectsReturned}|hyperpage}{34} +\indexentry{current\_owner (gestion.models.Pinte attribute)@\spxentry{current\_owner}\spxextra{gestion.models.Pinte attribute}|hyperpage}{34} +\indexentry{current\_owner\_id (gestion.models.Pinte attribute)@\spxentry{current\_owner\_id}\spxextra{gestion.models.Pinte attribute}|hyperpage}{34} +\indexentry{get\_next\_by\_last\_update\_date() (gestion.models.Pinte method)@\spxentry{get\_next\_by\_last\_update\_date()}\spxextra{gestion.models.Pinte method}|hyperpage}{34} +\indexentry{get\_previous\_by\_last\_update\_date() (gestion.models.Pinte method)@\spxentry{get\_previous\_by\_last\_update\_date()}\spxextra{gestion.models.Pinte method}|hyperpage}{34} +\indexentry{history (gestion.models.Pinte attribute)@\spxentry{history}\spxextra{gestion.models.Pinte attribute}|hyperpage}{34} +\indexentry{id (gestion.models.Pinte attribute)@\spxentry{id}\spxextra{gestion.models.Pinte attribute}|hyperpage}{34} +\indexentry{last\_update\_date (gestion.models.Pinte attribute)@\spxentry{last\_update\_date}\spxextra{gestion.models.Pinte attribute}|hyperpage}{34} +\indexentry{objects (gestion.models.Pinte attribute)@\spxentry{objects}\spxextra{gestion.models.Pinte attribute}|hyperpage}{34} +\indexentry{previous\_owner (gestion.models.Pinte attribute)@\spxentry{previous\_owner}\spxextra{gestion.models.Pinte attribute}|hyperpage}{34} +\indexentry{previous\_owner\_id (gestion.models.Pinte attribute)@\spxentry{previous\_owner\_id}\spxextra{gestion.models.Pinte attribute}|hyperpage}{34} +\indexentry{save\_without\_historical\_record() (gestion.models.Pinte method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Pinte method}|hyperpage}{34} +\indexentry{Product (class in gestion.models)@\spxentry{Product}\spxextra{class in gestion.models}|hyperpage}{34} +\indexentry{BOTTLE (gestion.models.Product attribute)@\spxentry{BOTTLE}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{D\_PRESSION (gestion.models.Product attribute)@\spxentry{D\_PRESSION}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{Product.DoesNotExist@\spxentry{Product.DoesNotExist}|hyperpage}{34} +\indexentry{FOOD (gestion.models.Product attribute)@\spxentry{FOOD}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{G\_PRESSION (gestion.models.Product attribute)@\spxentry{G\_PRESSION}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{Product.MultipleObjectsReturned@\spxentry{Product.MultipleObjectsReturned}|hyperpage}{34} +\indexentry{PANINI (gestion.models.Product attribute)@\spxentry{PANINI}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{P\_PRESSION (gestion.models.Product attribute)@\spxentry{P\_PRESSION}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{SOFT (gestion.models.Product attribute)@\spxentry{SOFT}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{TYPEINPUT\_CHOICES\_CATEGORIE (gestion.models.Product attribute)@\spxentry{TYPEINPUT\_CHOICES\_CATEGORIE}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{adherentRequired (gestion.models.Product attribute)@\spxentry{adherentRequired}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{amount (gestion.models.Product attribute)@\spxentry{amount}\spxextra{gestion.models.Product attribute}|hyperpage}{34} +\indexentry{barcode (gestion.models.Product attribute)@\spxentry{barcode}\spxextra{gestion.models.Product attribute}|hyperpage}{35} +\indexentry{category (gestion.models.Product attribute)@\spxentry{category}\spxextra{gestion.models.Product attribute}|hyperpage}{35} +\indexentry{consumption\_set (gestion.models.Product attribute)@\spxentry{consumption\_set}\spxextra{gestion.models.Product attribute}|hyperpage}{35} +\indexentry{consumptionhistory\_set (gestion.models.Product attribute)@\spxentry{consumptionhistory\_set}\spxextra{gestion.models.Product attribute}|hyperpage}{35} +\indexentry{deg (gestion.models.Product attribute)@\spxentry{deg}\spxextra{gestion.models.Product attribute}|hyperpage}{35} +\indexentry{futd (gestion.models.Product attribute)@\spxentry{futd}\spxextra{gestion.models.Product attribute}|hyperpage}{35} +\indexentry{futg (gestion.models.Product attribute)@\spxentry{futg}\spxextra{gestion.models.Product attribute}|hyperpage}{35} +\indexentry{futp (gestion.models.Product attribute)@\spxentry{futp}\spxextra{gestion.models.Product attribute}|hyperpage}{35} +\indexentry{get\_category\_display() (gestion.models.Product method)@\spxentry{get\_category\_display()}\spxextra{gestion.models.Product method}|hyperpage}{36} +\indexentry{history (gestion.models.Product attribute)@\spxentry{history}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{id (gestion.models.Product attribute)@\spxentry{id}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{is\_active (gestion.models.Product attribute)@\spxentry{is\_active}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{menu\_set (gestion.models.Product attribute)@\spxentry{menu\_set}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{name (gestion.models.Product attribute)@\spxentry{name}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{needQuantityButton (gestion.models.Product attribute)@\spxentry{needQuantityButton}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{objects (gestion.models.Product attribute)@\spxentry{objects}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{ranking (gestion.models.Product attribute)@\spxentry{ranking}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{save\_without\_historical\_record() (gestion.models.Product method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Product method}|hyperpage}{36} +\indexentry{showingMultiplier (gestion.models.Product attribute)@\spxentry{showingMultiplier}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{stockBar (gestion.models.Product attribute)@\spxentry{stockBar}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{stockHold (gestion.models.Product attribute)@\spxentry{stockHold}\spxextra{gestion.models.Product attribute}|hyperpage}{36} +\indexentry{user\_ranking() (gestion.models.Product method)@\spxentry{user\_ranking()}\spxextra{gestion.models.Product method}|hyperpage}{36} +\indexentry{volume (gestion.models.Product attribute)@\spxentry{volume}\spxextra{gestion.models.Product attribute}|hyperpage}{37} +\indexentry{Refund (class in gestion.models)@\spxentry{Refund}\spxextra{class in gestion.models}|hyperpage}{37} +\indexentry{Refund.DoesNotExist@\spxentry{Refund.DoesNotExist}|hyperpage}{37} +\indexentry{Refund.MultipleObjectsReturned@\spxentry{Refund.MultipleObjectsReturned}|hyperpage}{37} +\indexentry{amount (gestion.models.Refund attribute)@\spxentry{amount}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{coopeman (gestion.models.Refund attribute)@\spxentry{coopeman}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{coopeman\_id (gestion.models.Refund attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{customer (gestion.models.Refund attribute)@\spxentry{customer}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{customer\_id (gestion.models.Refund attribute)@\spxentry{customer\_id}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{date (gestion.models.Refund attribute)@\spxentry{date}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{get\_next\_by\_date() (gestion.models.Refund method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.Refund method}|hyperpage}{37} +\indexentry{get\_previous\_by\_date() (gestion.models.Refund method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.Refund method}|hyperpage}{37} +\indexentry{history (gestion.models.Refund attribute)@\spxentry{history}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{id (gestion.models.Refund attribute)@\spxentry{id}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{objects (gestion.models.Refund attribute)@\spxentry{objects}\spxextra{gestion.models.Refund attribute}|hyperpage}{37} +\indexentry{save\_without\_historical\_record() (gestion.models.Refund method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Refund method}|hyperpage}{37} +\indexentry{Reload (class in gestion.models)@\spxentry{Reload}\spxextra{class in gestion.models}|hyperpage}{37} +\indexentry{Reload.DoesNotExist@\spxentry{Reload.DoesNotExist}|hyperpage}{37} +\indexentry{Reload.MultipleObjectsReturned@\spxentry{Reload.MultipleObjectsReturned}|hyperpage}{37} +\indexentry{PaymentMethod (gestion.models.Reload attribute)@\spxentry{PaymentMethod}\spxextra{gestion.models.Reload attribute}|hyperpage}{37} +\indexentry{PaymentMethod\_id (gestion.models.Reload attribute)@\spxentry{PaymentMethod\_id}\spxextra{gestion.models.Reload attribute}|hyperpage}{37} +\indexentry{amount (gestion.models.Reload attribute)@\spxentry{amount}\spxextra{gestion.models.Reload attribute}|hyperpage}{37} +\indexentry{coopeman (gestion.models.Reload attribute)@\spxentry{coopeman}\spxextra{gestion.models.Reload attribute}|hyperpage}{38} +\indexentry{coopeman\_id (gestion.models.Reload attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.Reload attribute}|hyperpage}{38} +\indexentry{customer (gestion.models.Reload attribute)@\spxentry{customer}\spxextra{gestion.models.Reload attribute}|hyperpage}{38} +\indexentry{customer\_id (gestion.models.Reload attribute)@\spxentry{customer\_id}\spxextra{gestion.models.Reload attribute}|hyperpage}{38} +\indexentry{date (gestion.models.Reload attribute)@\spxentry{date}\spxextra{gestion.models.Reload attribute}|hyperpage}{38} +\indexentry{get\_next\_by\_date() (gestion.models.Reload method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.Reload method}|hyperpage}{38} +\indexentry{get\_previous\_by\_date() (gestion.models.Reload method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.Reload method}|hyperpage}{38} +\indexentry{history (gestion.models.Reload attribute)@\spxentry{history}\spxextra{gestion.models.Reload attribute}|hyperpage}{38} +\indexentry{id (gestion.models.Reload attribute)@\spxentry{id}\spxextra{gestion.models.Reload attribute}|hyperpage}{38} +\indexentry{objects (gestion.models.Reload attribute)@\spxentry{objects}\spxextra{gestion.models.Reload attribute}|hyperpage}{38} +\indexentry{save\_without\_historical\_record() (gestion.models.Reload method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Reload method}|hyperpage}{38} +\indexentry{isDemi() (in module gestion.models)@\spxentry{isDemi()}\spxextra{in module gestion.models}|hyperpage}{38} +\indexentry{isGalopin() (in module gestion.models)@\spxentry{isGalopin()}\spxextra{in module gestion.models}|hyperpage}{38} +\indexentry{isPinte() (in module gestion.models)@\spxentry{isPinte()}\spxextra{in module gestion.models}|hyperpage}{38} +\indexentry{users.models (module)@\spxentry{users.models}\spxextra{module}|hyperpage}{38} +\indexentry{CotisationHistory (class in users.models)@\spxentry{CotisationHistory}\spxextra{class in users.models}|hyperpage}{38} +\indexentry{CotisationHistory.DoesNotExist@\spxentry{CotisationHistory.DoesNotExist}|hyperpage}{38} +\indexentry{CotisationHistory.MultipleObjectsReturned@\spxentry{CotisationHistory.MultipleObjectsReturned}|hyperpage}{38} +\indexentry{amount (users.models.CotisationHistory attribute)@\spxentry{amount}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{38} +\indexentry{coopeman (users.models.CotisationHistory attribute)@\spxentry{coopeman}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{38} +\indexentry{coopeman\_id (users.models.CotisationHistory attribute)@\spxentry{coopeman\_id}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{38} +\indexentry{cotisation (users.models.CotisationHistory attribute)@\spxentry{cotisation}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{38} +\indexentry{cotisation\_id (users.models.CotisationHistory attribute)@\spxentry{cotisation\_id}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{duration (users.models.CotisationHistory attribute)@\spxentry{duration}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{endDate (users.models.CotisationHistory attribute)@\spxentry{endDate}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{get\_next\_by\_endDate() (users.models.CotisationHistory method)@\spxentry{get\_next\_by\_endDate()}\spxextra{users.models.CotisationHistory method}|hyperpage}{39} +\indexentry{get\_next\_by\_paymentDate() (users.models.CotisationHistory method)@\spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.CotisationHistory method}|hyperpage}{39} +\indexentry{get\_previous\_by\_endDate() (users.models.CotisationHistory method)@\spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.CotisationHistory method}|hyperpage}{39} +\indexentry{get\_previous\_by\_paymentDate() (users.models.CotisationHistory method)@\spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.CotisationHistory method}|hyperpage}{39} +\indexentry{history (users.models.CotisationHistory attribute)@\spxentry{history}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{id (users.models.CotisationHistory attribute)@\spxentry{id}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{objects (users.models.CotisationHistory attribute)@\spxentry{objects}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{paymentDate (users.models.CotisationHistory attribute)@\spxentry{paymentDate}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{paymentMethod (users.models.CotisationHistory attribute)@\spxentry{paymentMethod}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{paymentMethod\_id (users.models.CotisationHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{save\_without\_historical\_record() (users.models.CotisationHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{users.models.CotisationHistory method}|hyperpage}{39} +\indexentry{user (users.models.CotisationHistory attribute)@\spxentry{user}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{user\_id (users.models.CotisationHistory attribute)@\spxentry{user\_id}\spxextra{users.models.CotisationHistory attribute}|hyperpage}{39} +\indexentry{HistoricalCotisationHistory (class in users.models)@\spxentry{HistoricalCotisationHistory}\spxextra{class in users.models}|hyperpage}{39} +\indexentry{HistoricalCotisationHistory.DoesNotExist@\spxentry{HistoricalCotisationHistory.DoesNotExist}|hyperpage}{39} +\indexentry{HistoricalCotisationHistory.MultipleObjectsReturned@\spxentry{HistoricalCotisationHistory.MultipleObjectsReturned}|hyperpage}{39} +\indexentry{amount (users.models.HistoricalCotisationHistory attribute)@\spxentry{amount}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{39} +\indexentry{coopeman (users.models.HistoricalCotisationHistory attribute)@\spxentry{coopeman}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{40} +\indexentry{coopeman\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{coopeman\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{40} +\indexentry{cotisation (users.models.HistoricalCotisationHistory attribute)@\spxentry{cotisation}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{40} +\indexentry{cotisation\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{cotisation\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{40} +\indexentry{duration (users.models.HistoricalCotisationHistory attribute)@\spxentry{duration}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{40} +\indexentry{endDate (users.models.HistoricalCotisationHistory attribute)@\spxentry{endDate}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{40} +\indexentry{get\_history\_type\_display() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalCotisationHistory method}|hyperpage}{40} +\indexentry{get\_next\_by\_endDate() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_next\_by\_endDate()}\spxextra{users.models.HistoricalCotisationHistory method}|hyperpage}{40} +\indexentry{get\_next\_by\_history\_date() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalCotisationHistory method}|hyperpage}{40} +\indexentry{get\_next\_by\_paymentDate() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.HistoricalCotisationHistory method}|hyperpage}{40} +\indexentry{get\_previous\_by\_endDate() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.HistoricalCotisationHistory method}|hyperpage}{40} +\indexentry{get\_previous\_by\_history\_date() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalCotisationHistory method}|hyperpage}{40} +\indexentry{get\_previous\_by\_paymentDate() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.HistoricalCotisationHistory method}|hyperpage}{40} +\indexentry{history\_change\_reason (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_change\_reason}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{40} +\indexentry{history\_date (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_date}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{history\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{history\_object (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_object}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{history\_type (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_type}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{history\_user (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_user}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{history\_user\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_user\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{id (users.models.HistoricalCotisationHistory attribute)@\spxentry{id}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{instance (users.models.HistoricalCotisationHistory attribute)@\spxentry{instance}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{instance\_type (users.models.HistoricalCotisationHistory attribute)@\spxentry{instance\_type}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{next\_record (users.models.HistoricalCotisationHistory attribute)@\spxentry{next\_record}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{objects (users.models.HistoricalCotisationHistory attribute)@\spxentry{objects}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{paymentDate (users.models.HistoricalCotisationHistory attribute)@\spxentry{paymentDate}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{paymentMethod (users.models.HistoricalCotisationHistory attribute)@\spxentry{paymentMethod}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{paymentMethod\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{41} +\indexentry{prev\_record (users.models.HistoricalCotisationHistory attribute)@\spxentry{prev\_record}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{42} +\indexentry{revert\_url() (users.models.HistoricalCotisationHistory method)@\spxentry{revert\_url()}\spxextra{users.models.HistoricalCotisationHistory method}|hyperpage}{42} +\indexentry{user (users.models.HistoricalCotisationHistory attribute)@\spxentry{user}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{42} +\indexentry{user\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{user\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}|hyperpage}{42} +\indexentry{HistoricalProfile (class in users.models)@\spxentry{HistoricalProfile}\spxextra{class in users.models}|hyperpage}{42} +\indexentry{HistoricalProfile.DoesNotExist@\spxentry{HistoricalProfile.DoesNotExist}|hyperpage}{42} +\indexentry{HistoricalProfile.MultipleObjectsReturned@\spxentry{HistoricalProfile.MultipleObjectsReturned}|hyperpage}{42} +\indexentry{cotisationEnd (users.models.HistoricalProfile attribute)@\spxentry{cotisationEnd}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{42} +\indexentry{credit (users.models.HistoricalProfile attribute)@\spxentry{credit}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{42} +\indexentry{debit (users.models.HistoricalProfile attribute)@\spxentry{debit}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{42} +\indexentry{get\_history\_type\_display() (users.models.HistoricalProfile method)@\spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalProfile method}|hyperpage}{42} +\indexentry{get\_next\_by\_history\_date() (users.models.HistoricalProfile method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalProfile method}|hyperpage}{42} +\indexentry{get\_previous\_by\_history\_date() (users.models.HistoricalProfile method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalProfile method}|hyperpage}{42} +\indexentry{history\_change\_reason (users.models.HistoricalProfile attribute)@\spxentry{history\_change\_reason}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{42} +\indexentry{history\_date (users.models.HistoricalProfile attribute)@\spxentry{history\_date}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{42} +\indexentry{history\_id (users.models.HistoricalProfile attribute)@\spxentry{history\_id}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{42} +\indexentry{history\_object (users.models.HistoricalProfile attribute)@\spxentry{history\_object}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{history\_type (users.models.HistoricalProfile attribute)@\spxentry{history\_type}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{history\_user (users.models.HistoricalProfile attribute)@\spxentry{history\_user}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{history\_user\_id (users.models.HistoricalProfile attribute)@\spxentry{history\_user\_id}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{id (users.models.HistoricalProfile attribute)@\spxentry{id}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{instance (users.models.HistoricalProfile attribute)@\spxentry{instance}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{instance\_type (users.models.HistoricalProfile attribute)@\spxentry{instance\_type}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{next\_record (users.models.HistoricalProfile attribute)@\spxentry{next\_record}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{objects (users.models.HistoricalProfile attribute)@\spxentry{objects}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{prev\_record (users.models.HistoricalProfile attribute)@\spxentry{prev\_record}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{revert\_url() (users.models.HistoricalProfile method)@\spxentry{revert\_url()}\spxextra{users.models.HistoricalProfile method}|hyperpage}{43} +\indexentry{school (users.models.HistoricalProfile attribute)@\spxentry{school}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{school\_id (users.models.HistoricalProfile attribute)@\spxentry{school\_id}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{user (users.models.HistoricalProfile attribute)@\spxentry{user}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{43} +\indexentry{user\_id (users.models.HistoricalProfile attribute)@\spxentry{user\_id}\spxextra{users.models.HistoricalProfile attribute}|hyperpage}{44} +\indexentry{HistoricalSchool (class in users.models)@\spxentry{HistoricalSchool}\spxextra{class in users.models}|hyperpage}{44} +\indexentry{HistoricalSchool.DoesNotExist@\spxentry{HistoricalSchool.DoesNotExist}|hyperpage}{44} +\indexentry{HistoricalSchool.MultipleObjectsReturned@\spxentry{HistoricalSchool.MultipleObjectsReturned}|hyperpage}{44} +\indexentry{get\_history\_type\_display() (users.models.HistoricalSchool method)@\spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalSchool method}|hyperpage}{44} +\indexentry{get\_next\_by\_history\_date() (users.models.HistoricalSchool method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalSchool method}|hyperpage}{44} +\indexentry{get\_previous\_by\_history\_date() (users.models.HistoricalSchool method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalSchool method}|hyperpage}{44} +\indexentry{history\_change\_reason (users.models.HistoricalSchool attribute)@\spxentry{history\_change\_reason}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{history\_date (users.models.HistoricalSchool attribute)@\spxentry{history\_date}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{history\_id (users.models.HistoricalSchool attribute)@\spxentry{history\_id}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{history\_object (users.models.HistoricalSchool attribute)@\spxentry{history\_object}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{history\_type (users.models.HistoricalSchool attribute)@\spxentry{history\_type}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{history\_user (users.models.HistoricalSchool attribute)@\spxentry{history\_user}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{history\_user\_id (users.models.HistoricalSchool attribute)@\spxentry{history\_user\_id}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{id (users.models.HistoricalSchool attribute)@\spxentry{id}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{instance (users.models.HistoricalSchool attribute)@\spxentry{instance}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{44} +\indexentry{instance\_type (users.models.HistoricalSchool attribute)@\spxentry{instance\_type}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{45} +\indexentry{name (users.models.HistoricalSchool attribute)@\spxentry{name}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{45} +\indexentry{next\_record (users.models.HistoricalSchool attribute)@\spxentry{next\_record}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{45} +\indexentry{objects (users.models.HistoricalSchool attribute)@\spxentry{objects}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{45} +\indexentry{prev\_record (users.models.HistoricalSchool attribute)@\spxentry{prev\_record}\spxextra{users.models.HistoricalSchool attribute}|hyperpage}{45} +\indexentry{revert\_url() (users.models.HistoricalSchool method)@\spxentry{revert\_url()}\spxextra{users.models.HistoricalSchool method}|hyperpage}{45} +\indexentry{HistoricalWhiteListHistory (class in users.models)@\spxentry{HistoricalWhiteListHistory}\spxextra{class in users.models}|hyperpage}{45} +\indexentry{HistoricalWhiteListHistory.DoesNotExist@\spxentry{HistoricalWhiteListHistory.DoesNotExist}|hyperpage}{45} +\indexentry{HistoricalWhiteListHistory.MultipleObjectsReturned@\spxentry{HistoricalWhiteListHistory.MultipleObjectsReturned}|hyperpage}{45} +\indexentry{coopeman (users.models.HistoricalWhiteListHistory attribute)@\spxentry{coopeman}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{45} +\indexentry{coopeman\_id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{coopeman\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{45} +\indexentry{duration (users.models.HistoricalWhiteListHistory attribute)@\spxentry{duration}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{45} +\indexentry{endDate (users.models.HistoricalWhiteListHistory attribute)@\spxentry{endDate}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{45} +\indexentry{get\_history\_type\_display() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalWhiteListHistory method}|hyperpage}{45} +\indexentry{get\_next\_by\_endDate() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_next\_by\_endDate()}\spxextra{users.models.HistoricalWhiteListHistory method}|hyperpage}{45} +\indexentry{get\_next\_by\_history\_date() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalWhiteListHistory method}|hyperpage}{45} +\indexentry{get\_next\_by\_paymentDate() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.HistoricalWhiteListHistory method}|hyperpage}{45} +\indexentry{get\_previous\_by\_endDate() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.HistoricalWhiteListHistory method}|hyperpage}{45} +\indexentry{get\_previous\_by\_history\_date() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalWhiteListHistory method}|hyperpage}{46} +\indexentry{get\_previous\_by\_paymentDate() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.HistoricalWhiteListHistory method}|hyperpage}{46} +\indexentry{history\_change\_reason (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_change\_reason}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{history\_date (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_date}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{history\_id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{history\_object (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_object}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{history\_type (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_type}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{history\_user (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_user}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{history\_user\_id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_user\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{id}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{instance (users.models.HistoricalWhiteListHistory attribute)@\spxentry{instance}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{instance\_type (users.models.HistoricalWhiteListHistory attribute)@\spxentry{instance\_type}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{next\_record (users.models.HistoricalWhiteListHistory attribute)@\spxentry{next\_record}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{objects (users.models.HistoricalWhiteListHistory attribute)@\spxentry{objects}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{paymentDate (users.models.HistoricalWhiteListHistory attribute)@\spxentry{paymentDate}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{prev\_record (users.models.HistoricalWhiteListHistory attribute)@\spxentry{prev\_record}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{46} +\indexentry{revert\_url() (users.models.HistoricalWhiteListHistory method)@\spxentry{revert\_url()}\spxextra{users.models.HistoricalWhiteListHistory method}|hyperpage}{46} +\indexentry{user (users.models.HistoricalWhiteListHistory attribute)@\spxentry{user}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{47} +\indexentry{user\_id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{user\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}|hyperpage}{47} +\indexentry{Profile (class in users.models)@\spxentry{Profile}\spxextra{class in users.models}|hyperpage}{47} +\indexentry{Profile.DoesNotExist@\spxentry{Profile.DoesNotExist}|hyperpage}{47} +\indexentry{Profile.MultipleObjectsReturned@\spxentry{Profile.MultipleObjectsReturned}|hyperpage}{47} +\indexentry{alcohol (users.models.Profile attribute)@\spxentry{alcohol}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{balance (users.models.Profile attribute)@\spxentry{balance}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{cotisationEnd (users.models.Profile attribute)@\spxentry{cotisationEnd}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{credit (users.models.Profile attribute)@\spxentry{credit}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{debit (users.models.Profile attribute)@\spxentry{debit}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{history (users.models.Profile attribute)@\spxentry{history}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{id (users.models.Profile attribute)@\spxentry{id}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{is\_adherent (users.models.Profile attribute)@\spxentry{is\_adherent}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{nb\_pintes (users.models.Profile attribute)@\spxentry{nb\_pintes}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{objects (users.models.Profile attribute)@\spxentry{objects}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{positiveBalance() (users.models.Profile method)@\spxentry{positiveBalance()}\spxextra{users.models.Profile method}|hyperpage}{47} +\indexentry{rank (users.models.Profile attribute)@\spxentry{rank}\spxextra{users.models.Profile attribute}|hyperpage}{47} +\indexentry{save\_without\_historical\_record() (users.models.Profile method)@\spxentry{save\_without\_historical\_record()}\spxextra{users.models.Profile method}|hyperpage}{47} +\indexentry{school (users.models.Profile attribute)@\spxentry{school}\spxextra{users.models.Profile attribute}|hyperpage}{48} +\indexentry{school\_id (users.models.Profile attribute)@\spxentry{school\_id}\spxextra{users.models.Profile attribute}|hyperpage}{48} +\indexentry{user (users.models.Profile attribute)@\spxentry{user}\spxextra{users.models.Profile attribute}|hyperpage}{48} +\indexentry{user\_id (users.models.Profile attribute)@\spxentry{user\_id}\spxextra{users.models.Profile attribute}|hyperpage}{48} +\indexentry{School (class in users.models)@\spxentry{School}\spxextra{class in users.models}|hyperpage}{48} +\indexentry{School.DoesNotExist@\spxentry{School.DoesNotExist}|hyperpage}{48} +\indexentry{School.MultipleObjectsReturned@\spxentry{School.MultipleObjectsReturned}|hyperpage}{48} +\indexentry{history (users.models.School attribute)@\spxentry{history}\spxextra{users.models.School attribute}|hyperpage}{48} +\indexentry{id (users.models.School attribute)@\spxentry{id}\spxextra{users.models.School attribute}|hyperpage}{48} +\indexentry{name (users.models.School attribute)@\spxentry{name}\spxextra{users.models.School attribute}|hyperpage}{48} +\indexentry{objects (users.models.School attribute)@\spxentry{objects}\spxextra{users.models.School attribute}|hyperpage}{48} +\indexentry{profile\_set (users.models.School attribute)@\spxentry{profile\_set}\spxextra{users.models.School attribute}|hyperpage}{48} +\indexentry{save\_without\_historical\_record() (users.models.School method)@\spxentry{save\_without\_historical\_record()}\spxextra{users.models.School method}|hyperpage}{48} +\indexentry{WhiteListHistory (class in users.models)@\spxentry{WhiteListHistory}\spxextra{class in users.models}|hyperpage}{48} +\indexentry{WhiteListHistory.DoesNotExist@\spxentry{WhiteListHistory.DoesNotExist}|hyperpage}{48} +\indexentry{WhiteListHistory.MultipleObjectsReturned@\spxentry{WhiteListHistory.MultipleObjectsReturned}|hyperpage}{48} +\indexentry{coopeman (users.models.WhiteListHistory attribute)@\spxentry{coopeman}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{48} +\indexentry{coopeman\_id (users.models.WhiteListHistory attribute)@\spxentry{coopeman\_id}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{48} +\indexentry{duration (users.models.WhiteListHistory attribute)@\spxentry{duration}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{48} +\indexentry{endDate (users.models.WhiteListHistory attribute)@\spxentry{endDate}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{49} +\indexentry{get\_next\_by\_endDate() (users.models.WhiteListHistory method)@\spxentry{get\_next\_by\_endDate()}\spxextra{users.models.WhiteListHistory method}|hyperpage}{49} +\indexentry{get\_next\_by\_paymentDate() (users.models.WhiteListHistory method)@\spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.WhiteListHistory method}|hyperpage}{49} +\indexentry{get\_previous\_by\_endDate() (users.models.WhiteListHistory method)@\spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.WhiteListHistory method}|hyperpage}{49} +\indexentry{get\_previous\_by\_paymentDate() (users.models.WhiteListHistory method)@\spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.WhiteListHistory method}|hyperpage}{49} +\indexentry{history (users.models.WhiteListHistory attribute)@\spxentry{history}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{49} +\indexentry{id (users.models.WhiteListHistory attribute)@\spxentry{id}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{49} +\indexentry{objects (users.models.WhiteListHistory attribute)@\spxentry{objects}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{49} +\indexentry{paymentDate (users.models.WhiteListHistory attribute)@\spxentry{paymentDate}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{49} +\indexentry{save\_without\_historical\_record() (users.models.WhiteListHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{users.models.WhiteListHistory method}|hyperpage}{49} +\indexentry{user (users.models.WhiteListHistory attribute)@\spxentry{user}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{49} +\indexentry{user\_id (users.models.WhiteListHistory attribute)@\spxentry{user\_id}\spxextra{users.models.WhiteListHistory attribute}|hyperpage}{49} +\indexentry{create\_user\_profile() (in module users.models)@\spxentry{create\_user\_profile()}\spxextra{in module users.models}|hyperpage}{49} +\indexentry{save\_user\_profile() (in module users.models)@\spxentry{save\_user\_profile()}\spxextra{in module users.models}|hyperpage}{49} +\indexentry{str\_user() (in module users.models)@\spxentry{str\_user()}\spxextra{in module users.models}|hyperpage}{49} +\indexentry{preferences.models (module)@\spxentry{preferences.models}\spxextra{module}|hyperpage}{49} +\indexentry{Cotisation (class in preferences.models)@\spxentry{Cotisation}\spxextra{class in preferences.models}|hyperpage}{49} +\indexentry{Cotisation.DoesNotExist@\spxentry{Cotisation.DoesNotExist}|hyperpage}{49} +\indexentry{Cotisation.MultipleObjectsReturned@\spxentry{Cotisation.MultipleObjectsReturned}|hyperpage}{49} +\indexentry{amount (preferences.models.Cotisation attribute)@\spxentry{amount}\spxextra{preferences.models.Cotisation attribute}|hyperpage}{49} +\indexentry{cotisationhistory\_set (preferences.models.Cotisation attribute)@\spxentry{cotisationhistory\_set}\spxextra{preferences.models.Cotisation attribute}|hyperpage}{49} +\indexentry{duration (preferences.models.Cotisation attribute)@\spxentry{duration}\spxextra{preferences.models.Cotisation attribute}|hyperpage}{50} +\indexentry{history (preferences.models.Cotisation attribute)@\spxentry{history}\spxextra{preferences.models.Cotisation attribute}|hyperpage}{50} +\indexentry{id (preferences.models.Cotisation attribute)@\spxentry{id}\spxextra{preferences.models.Cotisation attribute}|hyperpage}{50} +\indexentry{objects (preferences.models.Cotisation attribute)@\spxentry{objects}\spxextra{preferences.models.Cotisation attribute}|hyperpage}{50} +\indexentry{save\_without\_historical\_record() (preferences.models.Cotisation method)@\spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.Cotisation method}|hyperpage}{50} +\indexentry{GeneralPreferences (class in preferences.models)@\spxentry{GeneralPreferences}\spxextra{class in preferences.models}|hyperpage}{50} +\indexentry{GeneralPreferences.DoesNotExist@\spxentry{GeneralPreferences.DoesNotExist}|hyperpage}{50} +\indexentry{GeneralPreferences.MultipleObjectsReturned@\spxentry{GeneralPreferences.MultipleObjectsReturned}|hyperpage}{50} +\indexentry{active\_message (preferences.models.GeneralPreferences attribute)@\spxentry{active\_message}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{automatic\_logout\_time (preferences.models.GeneralPreferences attribute)@\spxentry{automatic\_logout\_time}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{brewer (preferences.models.GeneralPreferences attribute)@\spxentry{brewer}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{floating\_buttons (preferences.models.GeneralPreferences attribute)@\spxentry{floating\_buttons}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{global\_message (preferences.models.GeneralPreferences attribute)@\spxentry{global\_message}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{grocer (preferences.models.GeneralPreferences attribute)@\spxentry{grocer}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{history (preferences.models.GeneralPreferences attribute)@\spxentry{history}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{home\_text (preferences.models.GeneralPreferences attribute)@\spxentry{home\_text}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{id (preferences.models.GeneralPreferences attribute)@\spxentry{id}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{is\_active (preferences.models.GeneralPreferences attribute)@\spxentry{is\_active}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{50} +\indexentry{lost\_pintes\_allowed (preferences.models.GeneralPreferences attribute)@\spxentry{lost\_pintes\_allowed}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{menu (preferences.models.GeneralPreferences attribute)@\spxentry{menu}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{objects (preferences.models.GeneralPreferences attribute)@\spxentry{objects}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{president (preferences.models.GeneralPreferences attribute)@\spxentry{president}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{rules (preferences.models.GeneralPreferences attribute)@\spxentry{rules}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{save\_without\_historical\_record() (preferences.models.GeneralPreferences method)@\spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.GeneralPreferences method}|hyperpage}{51} +\indexentry{secretary (preferences.models.GeneralPreferences attribute)@\spxentry{secretary}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{statutes (preferences.models.GeneralPreferences attribute)@\spxentry{statutes}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{treasurer (preferences.models.GeneralPreferences attribute)@\spxentry{treasurer}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{use\_pinte\_monitoring (preferences.models.GeneralPreferences attribute)@\spxentry{use\_pinte\_monitoring}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{vice\_president (preferences.models.GeneralPreferences attribute)@\spxentry{vice\_president}\spxextra{preferences.models.GeneralPreferences attribute}|hyperpage}{51} +\indexentry{HistoricalCotisation (class in preferences.models)@\spxentry{HistoricalCotisation}\spxextra{class in preferences.models}|hyperpage}{51} +\indexentry{HistoricalCotisation.DoesNotExist@\spxentry{HistoricalCotisation.DoesNotExist}|hyperpage}{51} +\indexentry{HistoricalCotisation.MultipleObjectsReturned@\spxentry{HistoricalCotisation.MultipleObjectsReturned}|hyperpage}{51} +\indexentry{amount (preferences.models.HistoricalCotisation attribute)@\spxentry{amount}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{51} +\indexentry{duration (preferences.models.HistoricalCotisation attribute)@\spxentry{duration}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{51} +\indexentry{get\_history\_type\_display() (preferences.models.HistoricalCotisation method)@\spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalCotisation method}|hyperpage}{51} +\indexentry{get\_next\_by\_history\_date() (preferences.models.HistoricalCotisation method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalCotisation method}|hyperpage}{51} +\indexentry{get\_previous\_by\_history\_date() (preferences.models.HistoricalCotisation method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalCotisation method}|hyperpage}{51} +\indexentry{history\_change\_reason (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{51} +\indexentry{history\_date (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_date}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{51} +\indexentry{history\_id (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_id}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{history\_object (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_object}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{history\_type (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_type}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{history\_user (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_user}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{history\_user\_id (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{id (preferences.models.HistoricalCotisation attribute)@\spxentry{id}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{instance (preferences.models.HistoricalCotisation attribute)@\spxentry{instance}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{instance\_type (preferences.models.HistoricalCotisation attribute)@\spxentry{instance\_type}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{next\_record (preferences.models.HistoricalCotisation attribute)@\spxentry{next\_record}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{objects (preferences.models.HistoricalCotisation attribute)@\spxentry{objects}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{prev\_record (preferences.models.HistoricalCotisation attribute)@\spxentry{prev\_record}\spxextra{preferences.models.HistoricalCotisation attribute}|hyperpage}{52} +\indexentry{revert\_url() (preferences.models.HistoricalCotisation method)@\spxentry{revert\_url()}\spxextra{preferences.models.HistoricalCotisation method}|hyperpage}{52} +\indexentry{HistoricalGeneralPreferences (class in preferences.models)@\spxentry{HistoricalGeneralPreferences}\spxextra{class in preferences.models}|hyperpage}{52} +\indexentry{HistoricalGeneralPreferences.DoesNotExist@\spxentry{HistoricalGeneralPreferences.DoesNotExist}|hyperpage}{52} +\indexentry{HistoricalGeneralPreferences.MultipleObjectsReturned@\spxentry{HistoricalGeneralPreferences.MultipleObjectsReturned}|hyperpage}{53} +\indexentry{active\_message (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{active\_message}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{automatic\_logout\_time (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{automatic\_logout\_time}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{brewer (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{brewer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{floating\_buttons (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{floating\_buttons}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{get\_history\_type\_display() (preferences.models.HistoricalGeneralPreferences method)@\spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalGeneralPreferences method}|hyperpage}{53} +\indexentry{get\_next\_by\_history\_date() (preferences.models.HistoricalGeneralPreferences method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalGeneralPreferences method}|hyperpage}{53} +\indexentry{get\_previous\_by\_history\_date() (preferences.models.HistoricalGeneralPreferences method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalGeneralPreferences method}|hyperpage}{53} +\indexentry{global\_message (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{global\_message}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{grocer (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{grocer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{history\_change\_reason (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{history\_date (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_date}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{history\_id (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{history\_object (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_object}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{history\_type (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_type}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{history\_user (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_user}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{53} +\indexentry{history\_user\_id (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{home\_text (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{home\_text}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{id (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{instance (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{instance}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{instance\_type (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{instance\_type}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{is\_active (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{is\_active}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{lost\_pintes\_allowed (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{lost\_pintes\_allowed}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{menu (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{menu}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{next\_record (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{next\_record}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{objects (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{objects}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{president (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{president}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{prev\_record (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{prev\_record}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{revert\_url() (preferences.models.HistoricalGeneralPreferences method)@\spxentry{revert\_url()}\spxextra{preferences.models.HistoricalGeneralPreferences method}|hyperpage}{54} +\indexentry{rules (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{rules}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{secretary (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{secretary}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{statutes (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{statutes}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{treasurer (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{treasurer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{use\_pinte\_monitoring (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{use\_pinte\_monitoring}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{54} +\indexentry{vice\_president (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{vice\_president}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}|hyperpage}{55} +\indexentry{HistoricalPaymentMethod (class in preferences.models)@\spxentry{HistoricalPaymentMethod}\spxextra{class in preferences.models}|hyperpage}{55} +\indexentry{HistoricalPaymentMethod.DoesNotExist@\spxentry{HistoricalPaymentMethod.DoesNotExist}|hyperpage}{55} +\indexentry{HistoricalPaymentMethod.MultipleObjectsReturned@\spxentry{HistoricalPaymentMethod.MultipleObjectsReturned}|hyperpage}{55} +\indexentry{affect\_balance (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{affect\_balance}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{55} +\indexentry{get\_history\_type\_display() (preferences.models.HistoricalPaymentMethod method)@\spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalPaymentMethod method}|hyperpage}{55} +\indexentry{get\_next\_by\_history\_date() (preferences.models.HistoricalPaymentMethod method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalPaymentMethod method}|hyperpage}{55} +\indexentry{get\_previous\_by\_history\_date() (preferences.models.HistoricalPaymentMethod method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalPaymentMethod method}|hyperpage}{55} +\indexentry{history\_change\_reason (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{55} +\indexentry{history\_date (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_date}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{55} +\indexentry{history\_id (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{55} +\indexentry{history\_object (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_object}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{55} +\indexentry{history\_type (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_type}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{55} +\indexentry{history\_user (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_user}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{55} +\indexentry{history\_user\_id (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{55} +\indexentry{icon (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{icon}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{id (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{instance (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{instance}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{instance\_type (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{instance\_type}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{is\_active (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{is\_active}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{is\_usable\_in\_cotisation (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{is\_usable\_in\_cotisation}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{is\_usable\_in\_reload (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{is\_usable\_in\_reload}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{name (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{name}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{next\_record (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{next\_record}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{objects (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{objects}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{prev\_record (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{prev\_record}\spxextra{preferences.models.HistoricalPaymentMethod attribute}|hyperpage}{56} +\indexentry{revert\_url() (preferences.models.HistoricalPaymentMethod method)@\spxentry{revert\_url()}\spxextra{preferences.models.HistoricalPaymentMethod method}|hyperpage}{56} +\indexentry{PaymentMethod (class in preferences.models)@\spxentry{PaymentMethod}\spxextra{class in preferences.models}|hyperpage}{56} +\indexentry{PaymentMethod.DoesNotExist@\spxentry{PaymentMethod.DoesNotExist}|hyperpage}{56} +\indexentry{PaymentMethod.MultipleObjectsReturned@\spxentry{PaymentMethod.MultipleObjectsReturned}|hyperpage}{56} +\indexentry{affect\_balance (preferences.models.PaymentMethod attribute)@\spxentry{affect\_balance}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{56} +\indexentry{consumptionhistory\_set (preferences.models.PaymentMethod attribute)@\spxentry{consumptionhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{56} +\indexentry{cotisationhistory\_set (preferences.models.PaymentMethod attribute)@\spxentry{cotisationhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{history (preferences.models.PaymentMethod attribute)@\spxentry{history}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{icon (preferences.models.PaymentMethod attribute)@\spxentry{icon}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{id (preferences.models.PaymentMethod attribute)@\spxentry{id}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{is\_active (preferences.models.PaymentMethod attribute)@\spxentry{is\_active}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{is\_usable\_in\_cotisation (preferences.models.PaymentMethod attribute)@\spxentry{is\_usable\_in\_cotisation}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{is\_usable\_in\_reload (preferences.models.PaymentMethod attribute)@\spxentry{is\_usable\_in\_reload}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{menuhistory\_set (preferences.models.PaymentMethod attribute)@\spxentry{menuhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{name (preferences.models.PaymentMethod attribute)@\spxentry{name}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{objects (preferences.models.PaymentMethod attribute)@\spxentry{objects}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{reload\_set (preferences.models.PaymentMethod attribute)@\spxentry{reload\_set}\spxextra{preferences.models.PaymentMethod attribute}|hyperpage}{57} +\indexentry{save\_without\_historical\_record() (preferences.models.PaymentMethod method)@\spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.PaymentMethod method}|hyperpage}{58} +\indexentry{gestion.admin (module)@\spxentry{gestion.admin}\spxextra{module}|hyperpage}{59} +\indexentry{ConsumptionAdmin (class in gestion.admin)@\spxentry{ConsumptionAdmin}\spxextra{class in gestion.admin}|hyperpage}{59} +\indexentry{list\_display (gestion.admin.ConsumptionAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.ConsumptionAdmin attribute}|hyperpage}{59} +\indexentry{media (gestion.admin.ConsumptionAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.ConsumptionAdmin attribute}|hyperpage}{59} +\indexentry{ordering (gestion.admin.ConsumptionAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.ConsumptionAdmin attribute}|hyperpage}{59} +\indexentry{search\_fields (gestion.admin.ConsumptionAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.ConsumptionAdmin attribute}|hyperpage}{59} +\indexentry{ConsumptionHistoryAdmin (class in gestion.admin)@\spxentry{ConsumptionHistoryAdmin}\spxextra{class in gestion.admin}|hyperpage}{59} +\indexentry{list\_display (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}|hyperpage}{59} +\indexentry{list\_filter (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}|hyperpage}{59} +\indexentry{media (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}|hyperpage}{59} +\indexentry{ordering (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}|hyperpage}{59} +\indexentry{search\_fields (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}|hyperpage}{59} +\indexentry{KegAdmin (class in gestion.admin)@\spxentry{KegAdmin}\spxextra{class in gestion.admin}|hyperpage}{59} +\indexentry{list\_display (gestion.admin.KegAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.KegAdmin attribute}|hyperpage}{59} +\indexentry{list\_filter (gestion.admin.KegAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.KegAdmin attribute}|hyperpage}{59} +\indexentry{media (gestion.admin.KegAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.KegAdmin attribute}|hyperpage}{59} +\indexentry{ordering (gestion.admin.KegAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.KegAdmin attribute}|hyperpage}{59} +\indexentry{search\_fields (gestion.admin.KegAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.KegAdmin attribute}|hyperpage}{59} +\indexentry{KegHistoryAdmin (class in gestion.admin)@\spxentry{KegHistoryAdmin}\spxextra{class in gestion.admin}|hyperpage}{59} +\indexentry{list\_display (gestion.admin.KegHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.KegHistoryAdmin attribute}|hyperpage}{60} +\indexentry{list\_filter (gestion.admin.KegHistoryAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.KegHistoryAdmin attribute}|hyperpage}{60} +\indexentry{media (gestion.admin.KegHistoryAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.KegHistoryAdmin attribute}|hyperpage}{60} +\indexentry{ordering (gestion.admin.KegHistoryAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.KegHistoryAdmin attribute}|hyperpage}{60} +\indexentry{search\_fields (gestion.admin.KegHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.KegHistoryAdmin attribute}|hyperpage}{60} +\indexentry{MenuAdmin (class in gestion.admin)@\spxentry{MenuAdmin}\spxextra{class in gestion.admin}|hyperpage}{60} +\indexentry{list\_display (gestion.admin.MenuAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.MenuAdmin attribute}|hyperpage}{60} +\indexentry{list\_filter (gestion.admin.MenuAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.MenuAdmin attribute}|hyperpage}{60} +\indexentry{media (gestion.admin.MenuAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.MenuAdmin attribute}|hyperpage}{60} +\indexentry{ordering (gestion.admin.MenuAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.MenuAdmin attribute}|hyperpage}{60} +\indexentry{search\_fields (gestion.admin.MenuAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.MenuAdmin attribute}|hyperpage}{60} +\indexentry{MenuHistoryAdmin (class in gestion.admin)@\spxentry{MenuHistoryAdmin}\spxextra{class in gestion.admin}|hyperpage}{60} +\indexentry{list\_display (gestion.admin.MenuHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.MenuHistoryAdmin attribute}|hyperpage}{60} +\indexentry{media (gestion.admin.MenuHistoryAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.MenuHistoryAdmin attribute}|hyperpage}{60} +\indexentry{ordering (gestion.admin.MenuHistoryAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.MenuHistoryAdmin attribute}|hyperpage}{60} +\indexentry{search\_fields (gestion.admin.MenuHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.MenuHistoryAdmin attribute}|hyperpage}{60} +\indexentry{ProductAdmin (class in gestion.admin)@\spxentry{ProductAdmin}\spxextra{class in gestion.admin}|hyperpage}{60} +\indexentry{list\_display (gestion.admin.ProductAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.ProductAdmin attribute}|hyperpage}{60} +\indexentry{list\_filter (gestion.admin.ProductAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.ProductAdmin attribute}|hyperpage}{60} +\indexentry{media (gestion.admin.ProductAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.ProductAdmin attribute}|hyperpage}{60} +\indexentry{ordering (gestion.admin.ProductAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.ProductAdmin attribute}|hyperpage}{60} +\indexentry{search\_fields (gestion.admin.ProductAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.ProductAdmin attribute}|hyperpage}{60} +\indexentry{RefundAdmin (class in gestion.admin)@\spxentry{RefundAdmin}\spxextra{class in gestion.admin}|hyperpage}{60} +\indexentry{list\_display (gestion.admin.RefundAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.RefundAdmin attribute}|hyperpage}{60} +\indexentry{media (gestion.admin.RefundAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.RefundAdmin attribute}|hyperpage}{60} +\indexentry{ordering (gestion.admin.RefundAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.RefundAdmin attribute}|hyperpage}{60} +\indexentry{search\_fields (gestion.admin.RefundAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.RefundAdmin attribute}|hyperpage}{60} +\indexentry{ReloadAdmin (class in gestion.admin)@\spxentry{ReloadAdmin}\spxextra{class in gestion.admin}|hyperpage}{60} +\indexentry{list\_display (gestion.admin.ReloadAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.ReloadAdmin attribute}|hyperpage}{60} +\indexentry{list\_filter (gestion.admin.ReloadAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.ReloadAdmin attribute}|hyperpage}{60} +\indexentry{media (gestion.admin.ReloadAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.ReloadAdmin attribute}|hyperpage}{60} +\indexentry{ordering (gestion.admin.ReloadAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.ReloadAdmin attribute}|hyperpage}{60} +\indexentry{search\_fields (gestion.admin.ReloadAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.ReloadAdmin attribute}|hyperpage}{61} +\indexentry{users.admin (module)@\spxentry{users.admin}\spxextra{module}|hyperpage}{61} +\indexentry{BalanceFilter (class in users.admin)@\spxentry{BalanceFilter}\spxextra{class in users.admin}|hyperpage}{61} +\indexentry{lookups() (users.admin.BalanceFilter method)@\spxentry{lookups()}\spxextra{users.admin.BalanceFilter method}|hyperpage}{61} +\indexentry{parameter\_name (users.admin.BalanceFilter attribute)@\spxentry{parameter\_name}\spxextra{users.admin.BalanceFilter attribute}|hyperpage}{61} +\indexentry{queryset() (users.admin.BalanceFilter method)@\spxentry{queryset()}\spxextra{users.admin.BalanceFilter method}|hyperpage}{61} +\indexentry{title (users.admin.BalanceFilter attribute)@\spxentry{title}\spxextra{users.admin.BalanceFilter attribute}|hyperpage}{61} +\indexentry{CotisationHistoryAdmin (class in users.admin)@\spxentry{CotisationHistoryAdmin}\spxextra{class in users.admin}|hyperpage}{61} +\indexentry{list\_display (users.admin.CotisationHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{users.admin.CotisationHistoryAdmin attribute}|hyperpage}{61} +\indexentry{list\_filter (users.admin.CotisationHistoryAdmin attribute)@\spxentry{list\_filter}\spxextra{users.admin.CotisationHistoryAdmin attribute}|hyperpage}{61} +\indexentry{media (users.admin.CotisationHistoryAdmin attribute)@\spxentry{media}\spxextra{users.admin.CotisationHistoryAdmin attribute}|hyperpage}{61} +\indexentry{ordering (users.admin.CotisationHistoryAdmin attribute)@\spxentry{ordering}\spxextra{users.admin.CotisationHistoryAdmin attribute}|hyperpage}{61} +\indexentry{search\_fields (users.admin.CotisationHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{users.admin.CotisationHistoryAdmin attribute}|hyperpage}{61} +\indexentry{ProfileAdmin (class in users.admin)@\spxentry{ProfileAdmin}\spxextra{class in users.admin}|hyperpage}{61} +\indexentry{list\_display (users.admin.ProfileAdmin attribute)@\spxentry{list\_display}\spxextra{users.admin.ProfileAdmin attribute}|hyperpage}{61} +\indexentry{list\_filter (users.admin.ProfileAdmin attribute)@\spxentry{list\_filter}\spxextra{users.admin.ProfileAdmin attribute}|hyperpage}{61} +\indexentry{media (users.admin.ProfileAdmin attribute)@\spxentry{media}\spxextra{users.admin.ProfileAdmin attribute}|hyperpage}{61} +\indexentry{ordering (users.admin.ProfileAdmin attribute)@\spxentry{ordering}\spxextra{users.admin.ProfileAdmin attribute}|hyperpage}{61} +\indexentry{search\_fields (users.admin.ProfileAdmin attribute)@\spxentry{search\_fields}\spxextra{users.admin.ProfileAdmin attribute}|hyperpage}{61} +\indexentry{WhiteListHistoryAdmin (class in users.admin)@\spxentry{WhiteListHistoryAdmin}\spxextra{class in users.admin}|hyperpage}{61} +\indexentry{list\_display (users.admin.WhiteListHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{users.admin.WhiteListHistoryAdmin attribute}|hyperpage}{61} +\indexentry{media (users.admin.WhiteListHistoryAdmin attribute)@\spxentry{media}\spxextra{users.admin.WhiteListHistoryAdmin attribute}|hyperpage}{61} +\indexentry{ordering (users.admin.WhiteListHistoryAdmin attribute)@\spxentry{ordering}\spxextra{users.admin.WhiteListHistoryAdmin attribute}|hyperpage}{61} +\indexentry{search\_fields (users.admin.WhiteListHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{users.admin.WhiteListHistoryAdmin attribute}|hyperpage}{61} +\indexentry{preferences.admin (module)@\spxentry{preferences.admin}\spxextra{module}|hyperpage}{61} +\indexentry{CotisationAdmin (class in preferences.admin)@\spxentry{CotisationAdmin}\spxextra{class in preferences.admin}|hyperpage}{61} +\indexentry{list\_display (preferences.admin.CotisationAdmin attribute)@\spxentry{list\_display}\spxextra{preferences.admin.CotisationAdmin attribute}|hyperpage}{61} +\indexentry{media (preferences.admin.CotisationAdmin attribute)@\spxentry{media}\spxextra{preferences.admin.CotisationAdmin attribute}|hyperpage}{61} +\indexentry{ordering (preferences.admin.CotisationAdmin attribute)@\spxentry{ordering}\spxextra{preferences.admin.CotisationAdmin attribute}|hyperpage}{62} +\indexentry{GeneralPreferencesAdmin (class in preferences.admin)@\spxentry{GeneralPreferencesAdmin}\spxextra{class in preferences.admin}|hyperpage}{62} +\indexentry{list\_display (preferences.admin.GeneralPreferencesAdmin attribute)@\spxentry{list\_display}\spxextra{preferences.admin.GeneralPreferencesAdmin attribute}|hyperpage}{62} +\indexentry{media (preferences.admin.GeneralPreferencesAdmin attribute)@\spxentry{media}\spxextra{preferences.admin.GeneralPreferencesAdmin attribute}|hyperpage}{62} +\indexentry{PaymentMethodAdmin (class in preferences.admin)@\spxentry{PaymentMethodAdmin}\spxextra{class in preferences.admin}|hyperpage}{62} +\indexentry{list\_display (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{list\_display}\spxextra{preferences.admin.PaymentMethodAdmin attribute}|hyperpage}{62} +\indexentry{list\_filter (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{list\_filter}\spxextra{preferences.admin.PaymentMethodAdmin attribute}|hyperpage}{62} +\indexentry{media (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{media}\spxextra{preferences.admin.PaymentMethodAdmin attribute}|hyperpage}{62} +\indexentry{ordering (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{ordering}\spxextra{preferences.admin.PaymentMethodAdmin attribute}|hyperpage}{62} +\indexentry{search\_fields (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{search\_fields}\spxextra{preferences.admin.PaymentMethodAdmin attribute}|hyperpage}{62} +\indexentry{gestion.forms (module)@\spxentry{gestion.forms}\spxextra{module}|hyperpage}{63} +\indexentry{GenerateReleveForm (class in gestion.forms)@\spxentry{GenerateReleveForm}\spxextra{class in gestion.forms}|hyperpage}{63} +\indexentry{base\_fields (gestion.forms.GenerateReleveForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.GenerateReleveForm attribute}|hyperpage}{63} +\indexentry{declared\_fields (gestion.forms.GenerateReleveForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.GenerateReleveForm attribute}|hyperpage}{63} +\indexentry{media (gestion.forms.GenerateReleveForm attribute)@\spxentry{media}\spxextra{gestion.forms.GenerateReleveForm attribute}|hyperpage}{63} +\indexentry{GestionForm (class in gestion.forms)@\spxentry{GestionForm}\spxextra{class in gestion.forms}|hyperpage}{63} +\indexentry{base\_fields (gestion.forms.GestionForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.GestionForm attribute}|hyperpage}{63} +\indexentry{declared\_fields (gestion.forms.GestionForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.GestionForm attribute}|hyperpage}{63} +\indexentry{media (gestion.forms.GestionForm attribute)@\spxentry{media}\spxextra{gestion.forms.GestionForm attribute}|hyperpage}{63} +\indexentry{KegForm (class in gestion.forms)@\spxentry{KegForm}\spxextra{class in gestion.forms}|hyperpage}{63} +\indexentry{KegForm.Meta (class in gestion.forms)@\spxentry{KegForm.Meta}\spxextra{class in gestion.forms}|hyperpage}{63} +\indexentry{exclude (gestion.forms.KegForm.Meta attribute)@\spxentry{exclude}\spxextra{gestion.forms.KegForm.Meta attribute}|hyperpage}{63} +\indexentry{model (gestion.forms.KegForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.KegForm.Meta attribute}|hyperpage}{63} +\indexentry{widgets (gestion.forms.KegForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.KegForm.Meta attribute}|hyperpage}{64} +\indexentry{base\_fields (gestion.forms.KegForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.KegForm attribute}|hyperpage}{64} +\indexentry{declared\_fields (gestion.forms.KegForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.KegForm attribute}|hyperpage}{64} +\indexentry{media (gestion.forms.KegForm attribute)@\spxentry{media}\spxextra{gestion.forms.KegForm attribute}|hyperpage}{64} +\indexentry{MenuForm (class in gestion.forms)@\spxentry{MenuForm}\spxextra{class in gestion.forms}|hyperpage}{64} +\indexentry{MenuForm.Meta (class in gestion.forms)@\spxentry{MenuForm.Meta}\spxextra{class in gestion.forms}|hyperpage}{64} +\indexentry{fields (gestion.forms.MenuForm.Meta attribute)@\spxentry{fields}\spxextra{gestion.forms.MenuForm.Meta attribute}|hyperpage}{64} +\indexentry{model (gestion.forms.MenuForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.MenuForm.Meta attribute}|hyperpage}{64} +\indexentry{widgets (gestion.forms.MenuForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.MenuForm.Meta attribute}|hyperpage}{64} +\indexentry{base\_fields (gestion.forms.MenuForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.MenuForm attribute}|hyperpage}{64} +\indexentry{declared\_fields (gestion.forms.MenuForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.MenuForm attribute}|hyperpage}{64} +\indexentry{media (gestion.forms.MenuForm attribute)@\spxentry{media}\spxextra{gestion.forms.MenuForm attribute}|hyperpage}{64} +\indexentry{PinteForm (class in gestion.forms)@\spxentry{PinteForm}\spxextra{class in gestion.forms}|hyperpage}{64} +\indexentry{base\_fields (gestion.forms.PinteForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.PinteForm attribute}|hyperpage}{64} +\indexentry{declared\_fields (gestion.forms.PinteForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.PinteForm attribute}|hyperpage}{64} +\indexentry{media (gestion.forms.PinteForm attribute)@\spxentry{media}\spxextra{gestion.forms.PinteForm attribute}|hyperpage}{64} +\indexentry{ProductForm (class in gestion.forms)@\spxentry{ProductForm}\spxextra{class in gestion.forms}|hyperpage}{64} +\indexentry{ProductForm.Meta (class in gestion.forms)@\spxentry{ProductForm.Meta}\spxextra{class in gestion.forms}|hyperpage}{64} +\indexentry{fields (gestion.forms.ProductForm.Meta attribute)@\spxentry{fields}\spxextra{gestion.forms.ProductForm.Meta attribute}|hyperpage}{64} +\indexentry{model (gestion.forms.ProductForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.ProductForm.Meta attribute}|hyperpage}{64} +\indexentry{widgets (gestion.forms.ProductForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.ProductForm.Meta attribute}|hyperpage}{64} +\indexentry{base\_fields (gestion.forms.ProductForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.ProductForm attribute}|hyperpage}{64} +\indexentry{declared\_fields (gestion.forms.ProductForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.ProductForm attribute}|hyperpage}{64} +\indexentry{media (gestion.forms.ProductForm attribute)@\spxentry{media}\spxextra{gestion.forms.ProductForm attribute}|hyperpage}{64} +\indexentry{RefundForm (class in gestion.forms)@\spxentry{RefundForm}\spxextra{class in gestion.forms}|hyperpage}{65} +\indexentry{RefundForm.Meta (class in gestion.forms)@\spxentry{RefundForm.Meta}\spxextra{class in gestion.forms}|hyperpage}{65} +\indexentry{fields (gestion.forms.RefundForm.Meta attribute)@\spxentry{fields}\spxextra{gestion.forms.RefundForm.Meta attribute}|hyperpage}{65} +\indexentry{model (gestion.forms.RefundForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.RefundForm.Meta attribute}|hyperpage}{65} +\indexentry{widgets (gestion.forms.RefundForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.RefundForm.Meta attribute}|hyperpage}{65} +\indexentry{base\_fields (gestion.forms.RefundForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.RefundForm attribute}|hyperpage}{65} +\indexentry{declared\_fields (gestion.forms.RefundForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.RefundForm attribute}|hyperpage}{65} +\indexentry{media (gestion.forms.RefundForm attribute)@\spxentry{media}\spxextra{gestion.forms.RefundForm attribute}|hyperpage}{65} +\indexentry{ReloadForm (class in gestion.forms)@\spxentry{ReloadForm}\spxextra{class in gestion.forms}|hyperpage}{65} +\indexentry{ReloadForm.Meta (class in gestion.forms)@\spxentry{ReloadForm.Meta}\spxextra{class in gestion.forms}|hyperpage}{65} +\indexentry{fields (gestion.forms.ReloadForm.Meta attribute)@\spxentry{fields}\spxextra{gestion.forms.ReloadForm.Meta attribute}|hyperpage}{65} +\indexentry{model (gestion.forms.ReloadForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.ReloadForm.Meta attribute}|hyperpage}{65} +\indexentry{widgets (gestion.forms.ReloadForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.ReloadForm.Meta attribute}|hyperpage}{65} +\indexentry{base\_fields (gestion.forms.ReloadForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.ReloadForm attribute}|hyperpage}{65} +\indexentry{declared\_fields (gestion.forms.ReloadForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.ReloadForm attribute}|hyperpage}{65} +\indexentry{media (gestion.forms.ReloadForm attribute)@\spxentry{media}\spxextra{gestion.forms.ReloadForm attribute}|hyperpage}{65} +\indexentry{SearchMenuForm (class in gestion.forms)@\spxentry{SearchMenuForm}\spxextra{class in gestion.forms}|hyperpage}{65} +\indexentry{base\_fields (gestion.forms.SearchMenuForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.SearchMenuForm attribute}|hyperpage}{65} +\indexentry{declared\_fields (gestion.forms.SearchMenuForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.SearchMenuForm attribute}|hyperpage}{65} +\indexentry{media (gestion.forms.SearchMenuForm attribute)@\spxentry{media}\spxextra{gestion.forms.SearchMenuForm attribute}|hyperpage}{65} +\indexentry{SearchProductForm (class in gestion.forms)@\spxentry{SearchProductForm}\spxextra{class in gestion.forms}|hyperpage}{65} +\indexentry{base\_fields (gestion.forms.SearchProductForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.SearchProductForm attribute}|hyperpage}{65} +\indexentry{declared\_fields (gestion.forms.SearchProductForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.SearchProductForm attribute}|hyperpage}{65} +\indexentry{media (gestion.forms.SearchProductForm attribute)@\spxentry{media}\spxextra{gestion.forms.SearchProductForm attribute}|hyperpage}{65} +\indexentry{SelectActiveKegForm (class in gestion.forms)@\spxentry{SelectActiveKegForm}\spxextra{class in gestion.forms}|hyperpage}{66} +\indexentry{base\_fields (gestion.forms.SelectActiveKegForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.SelectActiveKegForm attribute}|hyperpage}{66} +\indexentry{declared\_fields (gestion.forms.SelectActiveKegForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.SelectActiveKegForm attribute}|hyperpage}{66} +\indexentry{media (gestion.forms.SelectActiveKegForm attribute)@\spxentry{media}\spxextra{gestion.forms.SelectActiveKegForm attribute}|hyperpage}{66} +\indexentry{SelectPositiveKegForm (class in gestion.forms)@\spxentry{SelectPositiveKegForm}\spxextra{class in gestion.forms}|hyperpage}{66} +\indexentry{base\_fields (gestion.forms.SelectPositiveKegForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.SelectPositiveKegForm attribute}|hyperpage}{66} +\indexentry{declared\_fields (gestion.forms.SelectPositiveKegForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.SelectPositiveKegForm attribute}|hyperpage}{66} +\indexentry{media (gestion.forms.SelectPositiveKegForm attribute)@\spxentry{media}\spxextra{gestion.forms.SelectPositiveKegForm attribute}|hyperpage}{66} +\indexentry{users.forms (module)@\spxentry{users.forms}\spxextra{module}|hyperpage}{66} +\indexentry{CreateGroupForm (class in users.forms)@\spxentry{CreateGroupForm}\spxextra{class in users.forms}|hyperpage}{66} +\indexentry{CreateGroupForm.Meta (class in users.forms)@\spxentry{CreateGroupForm.Meta}\spxextra{class in users.forms}|hyperpage}{66} +\indexentry{fields (users.forms.CreateGroupForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.CreateGroupForm.Meta attribute}|hyperpage}{66} +\indexentry{model (users.forms.CreateGroupForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.CreateGroupForm.Meta attribute}|hyperpage}{66} +\indexentry{base\_fields (users.forms.CreateGroupForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.CreateGroupForm attribute}|hyperpage}{66} +\indexentry{declared\_fields (users.forms.CreateGroupForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.CreateGroupForm attribute}|hyperpage}{66} +\indexentry{media (users.forms.CreateGroupForm attribute)@\spxentry{media}\spxextra{users.forms.CreateGroupForm attribute}|hyperpage}{66} +\indexentry{CreateUserForm (class in users.forms)@\spxentry{CreateUserForm}\spxextra{class in users.forms}|hyperpage}{66} +\indexentry{CreateUserForm.Meta (class in users.forms)@\spxentry{CreateUserForm.Meta}\spxextra{class in users.forms}|hyperpage}{66} +\indexentry{fields (users.forms.CreateUserForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.CreateUserForm.Meta attribute}|hyperpage}{67} +\indexentry{model (users.forms.CreateUserForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.CreateUserForm.Meta attribute}|hyperpage}{67} +\indexentry{base\_fields (users.forms.CreateUserForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.CreateUserForm attribute}|hyperpage}{67} +\indexentry{declared\_fields (users.forms.CreateUserForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.CreateUserForm attribute}|hyperpage}{67} +\indexentry{media (users.forms.CreateUserForm attribute)@\spxentry{media}\spxextra{users.forms.CreateUserForm attribute}|hyperpage}{67} +\indexentry{EditGroupForm (class in users.forms)@\spxentry{EditGroupForm}\spxextra{class in users.forms}|hyperpage}{67} +\indexentry{EditGroupForm.Meta (class in users.forms)@\spxentry{EditGroupForm.Meta}\spxextra{class in users.forms}|hyperpage}{67} +\indexentry{fields (users.forms.EditGroupForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.EditGroupForm.Meta attribute}|hyperpage}{67} +\indexentry{model (users.forms.EditGroupForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.EditGroupForm.Meta attribute}|hyperpage}{67} +\indexentry{base\_fields (users.forms.EditGroupForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.EditGroupForm attribute}|hyperpage}{67} +\indexentry{declared\_fields (users.forms.EditGroupForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.EditGroupForm attribute}|hyperpage}{67} +\indexentry{media (users.forms.EditGroupForm attribute)@\spxentry{media}\spxextra{users.forms.EditGroupForm attribute}|hyperpage}{67} +\indexentry{EditPasswordForm (class in users.forms)@\spxentry{EditPasswordForm}\spxextra{class in users.forms}|hyperpage}{67} +\indexentry{base\_fields (users.forms.EditPasswordForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.EditPasswordForm attribute}|hyperpage}{67} +\indexentry{clean\_password2() (users.forms.EditPasswordForm method)@\spxentry{clean\_password2()}\spxextra{users.forms.EditPasswordForm method}|hyperpage}{67} +\indexentry{declared\_fields (users.forms.EditPasswordForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.EditPasswordForm attribute}|hyperpage}{67} +\indexentry{media (users.forms.EditPasswordForm attribute)@\spxentry{media}\spxextra{users.forms.EditPasswordForm attribute}|hyperpage}{67} +\indexentry{ExportForm (class in users.forms)@\spxentry{ExportForm}\spxextra{class in users.forms}|hyperpage}{67} +\indexentry{FIELDS\_CHOICES (users.forms.ExportForm attribute)@\spxentry{FIELDS\_CHOICES}\spxextra{users.forms.ExportForm attribute}|hyperpage}{67} +\indexentry{QUERY\_TYPE\_CHOICES (users.forms.ExportForm attribute)@\spxentry{QUERY\_TYPE\_CHOICES}\spxextra{users.forms.ExportForm attribute}|hyperpage}{67} +\indexentry{base\_fields (users.forms.ExportForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.ExportForm attribute}|hyperpage}{67} +\indexentry{declared\_fields (users.forms.ExportForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.ExportForm attribute}|hyperpage}{67} +\indexentry{media (users.forms.ExportForm attribute)@\spxentry{media}\spxextra{users.forms.ExportForm attribute}|hyperpage}{67} +\indexentry{GroupsEditForm (class in users.forms)@\spxentry{GroupsEditForm}\spxextra{class in users.forms}|hyperpage}{67} +\indexentry{GroupsEditForm.Meta (class in users.forms)@\spxentry{GroupsEditForm.Meta}\spxextra{class in users.forms}|hyperpage}{68} +\indexentry{fields (users.forms.GroupsEditForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.GroupsEditForm.Meta attribute}|hyperpage}{68} +\indexentry{model (users.forms.GroupsEditForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.GroupsEditForm.Meta attribute}|hyperpage}{68} +\indexentry{base\_fields (users.forms.GroupsEditForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.GroupsEditForm attribute}|hyperpage}{68} +\indexentry{declared\_fields (users.forms.GroupsEditForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.GroupsEditForm attribute}|hyperpage}{68} +\indexentry{media (users.forms.GroupsEditForm attribute)@\spxentry{media}\spxextra{users.forms.GroupsEditForm attribute}|hyperpage}{68} +\indexentry{LoginForm (class in users.forms)@\spxentry{LoginForm}\spxextra{class in users.forms}|hyperpage}{68} +\indexentry{base\_fields (users.forms.LoginForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.LoginForm attribute}|hyperpage}{68} +\indexentry{declared\_fields (users.forms.LoginForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.LoginForm attribute}|hyperpage}{68} +\indexentry{media (users.forms.LoginForm attribute)@\spxentry{media}\spxextra{users.forms.LoginForm attribute}|hyperpage}{68} +\indexentry{SchoolForm (class in users.forms)@\spxentry{SchoolForm}\spxextra{class in users.forms}|hyperpage}{68} +\indexentry{SchoolForm.Meta (class in users.forms)@\spxentry{SchoolForm.Meta}\spxextra{class in users.forms}|hyperpage}{68} +\indexentry{fields (users.forms.SchoolForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.SchoolForm.Meta attribute}|hyperpage}{68} +\indexentry{model (users.forms.SchoolForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.SchoolForm.Meta attribute}|hyperpage}{68} +\indexentry{base\_fields (users.forms.SchoolForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.SchoolForm attribute}|hyperpage}{68} +\indexentry{declared\_fields (users.forms.SchoolForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.SchoolForm attribute}|hyperpage}{68} +\indexentry{media (users.forms.SchoolForm attribute)@\spxentry{media}\spxextra{users.forms.SchoolForm attribute}|hyperpage}{68} +\indexentry{SelectNonAdminUserForm (class in users.forms)@\spxentry{SelectNonAdminUserForm}\spxextra{class in users.forms}|hyperpage}{68} +\indexentry{base\_fields (users.forms.SelectNonAdminUserForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.SelectNonAdminUserForm attribute}|hyperpage}{68} +\indexentry{declared\_fields (users.forms.SelectNonAdminUserForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.SelectNonAdminUserForm attribute}|hyperpage}{68} +\indexentry{media (users.forms.SelectNonAdminUserForm attribute)@\spxentry{media}\spxextra{users.forms.SelectNonAdminUserForm attribute}|hyperpage}{68} +\indexentry{SelectNonSuperUserForm (class in users.forms)@\spxentry{SelectNonSuperUserForm}\spxextra{class in users.forms}|hyperpage}{69} +\indexentry{base\_fields (users.forms.SelectNonSuperUserForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.SelectNonSuperUserForm attribute}|hyperpage}{69} +\indexentry{declared\_fields (users.forms.SelectNonSuperUserForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.SelectNonSuperUserForm attribute}|hyperpage}{69} +\indexentry{media (users.forms.SelectNonSuperUserForm attribute)@\spxentry{media}\spxextra{users.forms.SelectNonSuperUserForm attribute}|hyperpage}{69} +\indexentry{SelectUserForm (class in users.forms)@\spxentry{SelectUserForm}\spxextra{class in users.forms}|hyperpage}{69} +\indexentry{base\_fields (users.forms.SelectUserForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.SelectUserForm attribute}|hyperpage}{69} +\indexentry{declared\_fields (users.forms.SelectUserForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.SelectUserForm attribute}|hyperpage}{69} +\indexentry{media (users.forms.SelectUserForm attribute)@\spxentry{media}\spxextra{users.forms.SelectUserForm attribute}|hyperpage}{69} +\indexentry{addCotisationHistoryForm (class in users.forms)@\spxentry{addCotisationHistoryForm}\spxextra{class in users.forms}|hyperpage}{69} +\indexentry{addCotisationHistoryForm.Meta (class in users.forms)@\spxentry{addCotisationHistoryForm.Meta}\spxextra{class in users.forms}|hyperpage}{69} +\indexentry{fields (users.forms.addCotisationHistoryForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.addCotisationHistoryForm.Meta attribute}|hyperpage}{69} +\indexentry{model (users.forms.addCotisationHistoryForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.addCotisationHistoryForm.Meta attribute}|hyperpage}{69} +\indexentry{base\_fields (users.forms.addCotisationHistoryForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.addCotisationHistoryForm attribute}|hyperpage}{69} +\indexentry{declared\_fields (users.forms.addCotisationHistoryForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.addCotisationHistoryForm attribute}|hyperpage}{69} +\indexentry{media (users.forms.addCotisationHistoryForm attribute)@\spxentry{media}\spxextra{users.forms.addCotisationHistoryForm attribute}|hyperpage}{69} +\indexentry{addWhiteListHistoryForm (class in users.forms)@\spxentry{addWhiteListHistoryForm}\spxextra{class in users.forms}|hyperpage}{69} +\indexentry{addWhiteListHistoryForm.Meta (class in users.forms)@\spxentry{addWhiteListHistoryForm.Meta}\spxextra{class in users.forms}|hyperpage}{69} +\indexentry{fields (users.forms.addWhiteListHistoryForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.addWhiteListHistoryForm.Meta attribute}|hyperpage}{69} +\indexentry{model (users.forms.addWhiteListHistoryForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.addWhiteListHistoryForm.Meta attribute}|hyperpage}{69} +\indexentry{base\_fields (users.forms.addWhiteListHistoryForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.addWhiteListHistoryForm attribute}|hyperpage}{69} +\indexentry{declared\_fields (users.forms.addWhiteListHistoryForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.addWhiteListHistoryForm attribute}|hyperpage}{70} +\indexentry{media (users.forms.addWhiteListHistoryForm attribute)@\spxentry{media}\spxextra{users.forms.addWhiteListHistoryForm attribute}|hyperpage}{70} +\indexentry{preferences.forms (module)@\spxentry{preferences.forms}\spxextra{module}|hyperpage}{70} +\indexentry{CotisationForm (class in preferences.forms)@\spxentry{CotisationForm}\spxextra{class in preferences.forms}|hyperpage}{70} +\indexentry{CotisationForm.Meta (class in preferences.forms)@\spxentry{CotisationForm.Meta}\spxextra{class in preferences.forms}|hyperpage}{70} +\indexentry{fields (preferences.forms.CotisationForm.Meta attribute)@\spxentry{fields}\spxextra{preferences.forms.CotisationForm.Meta attribute}|hyperpage}{70} +\indexentry{model (preferences.forms.CotisationForm.Meta attribute)@\spxentry{model}\spxextra{preferences.forms.CotisationForm.Meta attribute}|hyperpage}{70} +\indexentry{base\_fields (preferences.forms.CotisationForm attribute)@\spxentry{base\_fields}\spxextra{preferences.forms.CotisationForm attribute}|hyperpage}{70} +\indexentry{declared\_fields (preferences.forms.CotisationForm attribute)@\spxentry{declared\_fields}\spxextra{preferences.forms.CotisationForm attribute}|hyperpage}{70} +\indexentry{media (preferences.forms.CotisationForm attribute)@\spxentry{media}\spxextra{preferences.forms.CotisationForm attribute}|hyperpage}{70} +\indexentry{GeneralPreferencesForm (class in preferences.forms)@\spxentry{GeneralPreferencesForm}\spxextra{class in preferences.forms}|hyperpage}{70} +\indexentry{GeneralPreferencesForm.Meta (class in preferences.forms)@\spxentry{GeneralPreferencesForm.Meta}\spxextra{class in preferences.forms}|hyperpage}{70} +\indexentry{fields (preferences.forms.GeneralPreferencesForm.Meta attribute)@\spxentry{fields}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}|hyperpage}{70} +\indexentry{model (preferences.forms.GeneralPreferencesForm.Meta attribute)@\spxentry{model}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}|hyperpage}{70} +\indexentry{widgets (preferences.forms.GeneralPreferencesForm.Meta attribute)@\spxentry{widgets}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}|hyperpage}{70} +\indexentry{base\_fields (preferences.forms.GeneralPreferencesForm attribute)@\spxentry{base\_fields}\spxextra{preferences.forms.GeneralPreferencesForm attribute}|hyperpage}{70} +\indexentry{declared\_fields (preferences.forms.GeneralPreferencesForm attribute)@\spxentry{declared\_fields}\spxextra{preferences.forms.GeneralPreferencesForm attribute}|hyperpage}{70} +\indexentry{media (preferences.forms.GeneralPreferencesForm attribute)@\spxentry{media}\spxextra{preferences.forms.GeneralPreferencesForm attribute}|hyperpage}{70} +\indexentry{PaymentMethodForm (class in preferences.forms)@\spxentry{PaymentMethodForm}\spxextra{class in preferences.forms}|hyperpage}{70} +\indexentry{PaymentMethodForm.Meta (class in preferences.forms)@\spxentry{PaymentMethodForm.Meta}\spxextra{class in preferences.forms}|hyperpage}{70} +\indexentry{fields (preferences.forms.PaymentMethodForm.Meta attribute)@\spxentry{fields}\spxextra{preferences.forms.PaymentMethodForm.Meta attribute}|hyperpage}{71} +\indexentry{model (preferences.forms.PaymentMethodForm.Meta attribute)@\spxentry{model}\spxextra{preferences.forms.PaymentMethodForm.Meta attribute}|hyperpage}{71} +\indexentry{base\_fields (preferences.forms.PaymentMethodForm attribute)@\spxentry{base\_fields}\spxextra{preferences.forms.PaymentMethodForm attribute}|hyperpage}{71} +\indexentry{declared\_fields (preferences.forms.PaymentMethodForm attribute)@\spxentry{declared\_fields}\spxextra{preferences.forms.PaymentMethodForm attribute}|hyperpage}{71} +\indexentry{media (preferences.forms.PaymentMethodForm attribute)@\spxentry{media}\spxextra{preferences.forms.PaymentMethodForm attribute}|hyperpage}{71} +\indexentry{coopeV3.acl (module)@\spxentry{coopeV3.acl}\spxextra{module}|hyperpage}{73} +\indexentry{acl\_and() (in module coopeV3.acl)@\spxentry{acl\_and()}\spxextra{in module coopeV3.acl}|hyperpage}{73} +\indexentry{acl\_or() (in module coopeV3.acl)@\spxentry{acl\_or()}\spxextra{in module coopeV3.acl}|hyperpage}{73} +\indexentry{active\_required() (in module coopeV3.acl)@\spxentry{active\_required()}\spxextra{in module coopeV3.acl}|hyperpage}{73} +\indexentry{admin\_required() (in module coopeV3.acl)@\spxentry{admin\_required()}\spxextra{in module coopeV3.acl}|hyperpage}{73} +\indexentry{self\_or\_has\_perm() (in module coopeV3.acl)@\spxentry{self\_or\_has\_perm()}\spxextra{in module coopeV3.acl}|hyperpage}{73} +\indexentry{superuser\_required() (in module coopeV3.acl)@\spxentry{superuser\_required()}\spxextra{in module coopeV3.acl}|hyperpage}{73} +\indexentry{coopeV3.templatetags.vip (module)@\spxentry{coopeV3.templatetags.vip}\spxextra{module}|hyperpage}{73} +\indexentry{brewer() (in module coopeV3.templatetags.vip)@\spxentry{brewer()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{73} +\indexentry{global\_message() (in module coopeV3.templatetags.vip)@\spxentry{global\_message()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{73} +\indexentry{grocer() (in module coopeV3.templatetags.vip)@\spxentry{grocer()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{73} +\indexentry{logout\_time() (in module coopeV3.templatetags.vip)@\spxentry{logout\_time()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{73} +\indexentry{menu() (in module coopeV3.templatetags.vip)@\spxentry{menu()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{73} +\indexentry{president() (in module coopeV3.templatetags.vip)@\spxentry{president()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{74} +\indexentry{rules() (in module coopeV3.templatetags.vip)@\spxentry{rules()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{74} +\indexentry{secretary() (in module coopeV3.templatetags.vip)@\spxentry{secretary()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{74} +\indexentry{statutes() (in module coopeV3.templatetags.vip)@\spxentry{statutes()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{74} +\indexentry{treasurer() (in module coopeV3.templatetags.vip)@\spxentry{treasurer()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{74} +\indexentry{vice\_president() (in module coopeV3.templatetags.vip)@\spxentry{vice\_president()}\spxextra{in module coopeV3.templatetags.vip}|hyperpage}{74} +\indexentry{users.templatetags.users\_extra (module)@\spxentry{users.templatetags.users\_extra}\spxextra{module}|hyperpage}{74} +\indexentry{random\_filter() (in module users.templatetags.users\_extra)@\spxentry{random\_filter()}\spxextra{in module users.templatetags.users\_extra}|hyperpage}{74} +\indexentry{django\_tex.core (module)@\spxentry{django\_tex.core}\spxextra{module}|hyperpage}{75} +\indexentry{compile\_template\_to\_pdf() (in module django\_tex.core)@\spxentry{compile\_template\_to\_pdf()}\spxextra{in module django\_tex.core}|hyperpage}{75} +\indexentry{render\_template\_with\_context() (in module django\_tex.core)@\spxentry{render\_template\_with\_context()}\spxextra{in module django\_tex.core}|hyperpage}{75} +\indexentry{run\_tex() (in module django\_tex.core)@\spxentry{run\_tex()}\spxextra{in module django\_tex.core}|hyperpage}{75} +\indexentry{django\_tex.engine (module)@\spxentry{django\_tex.engine}\spxextra{module}|hyperpage}{75} +\indexentry{TeXEngine (class in django\_tex.engine)@\spxentry{TeXEngine}\spxextra{class in django\_tex.engine}|hyperpage}{75} +\indexentry{app\_dirname (django\_tex.engine.TeXEngine attribute)@\spxentry{app\_dirname}\spxextra{django\_tex.engine.TeXEngine attribute}|hyperpage}{75} +\indexentry{django\_tex.environment (module)@\spxentry{django\_tex.environment}\spxextra{module}|hyperpage}{75} +\indexentry{environment() (in module django\_tex.environment)@\spxentry{environment()}\spxextra{in module django\_tex.environment}|hyperpage}{75} +\indexentry{django\_tex.exceptions (module)@\spxentry{django\_tex.exceptions}\spxextra{module}|hyperpage}{75} +\indexentry{TexError@\spxentry{TexError}|hyperpage}{75} +\indexentry{get\_message() (django\_tex.exceptions.TexError method)@\spxentry{get\_message()}\spxextra{django\_tex.exceptions.TexError method}|hyperpage}{75} +\indexentry{prettify\_message() (in module django\_tex.exceptions)@\spxentry{prettify\_message()}\spxextra{in module django\_tex.exceptions}|hyperpage}{75} +\indexentry{tokenizer() (in module django\_tex.exceptions)@\spxentry{tokenizer()}\spxextra{in module django\_tex.exceptions}|hyperpage}{76} +\indexentry{django\_tex.filters (module)@\spxentry{django\_tex.filters}\spxextra{module}|hyperpage}{76} +\indexentry{do\_linebreaks() (in module django\_tex.filters)@\spxentry{do\_linebreaks()}\spxextra{in module django\_tex.filters}|hyperpage}{76} +\indexentry{django\_tex.models (module)@\spxentry{django\_tex.models}\spxextra{module}|hyperpage}{76} +\indexentry{TeXTemplateFile (class in django\_tex.models)@\spxentry{TeXTemplateFile}\spxextra{class in django\_tex.models}|hyperpage}{76} +\indexentry{TeXTemplateFile.Meta (class in django\_tex.models)@\spxentry{TeXTemplateFile.Meta}\spxextra{class in django\_tex.models}|hyperpage}{76} +\indexentry{abstract (django\_tex.models.TeXTemplateFile.Meta attribute)@\spxentry{abstract}\spxextra{django\_tex.models.TeXTemplateFile.Meta attribute}|hyperpage}{76} +\indexentry{name (django\_tex.models.TeXTemplateFile attribute)@\spxentry{name}\spxextra{django\_tex.models.TeXTemplateFile attribute}|hyperpage}{76} +\indexentry{title (django\_tex.models.TeXTemplateFile attribute)@\spxentry{title}\spxextra{django\_tex.models.TeXTemplateFile attribute}|hyperpage}{76} +\indexentry{validate\_template\_path() (in module django\_tex.models)@\spxentry{validate\_template\_path()}\spxextra{in module django\_tex.models}|hyperpage}{76} +\indexentry{django\_tex.views (module)@\spxentry{django\_tex.views}\spxextra{module}|hyperpage}{76} +\indexentry{PDFResponse (class in django\_tex.views)@\spxentry{PDFResponse}\spxextra{class in django\_tex.views}|hyperpage}{76} +\indexentry{render\_to\_pdf() (in module django\_tex.views)@\spxentry{render\_to\_pdf()}\spxextra{in module django\_tex.views}|hyperpage}{76} diff --git a/docs/_build/latex/CoopeV3.ilg b/docs/_build/latex/CoopeV3.ilg new file mode 100644 index 0000000..a74f547 --- /dev/null +++ b/docs/_build/latex/CoopeV3.ilg @@ -0,0 +1,7 @@ +This is makeindex, version 2.15 [TeX Live 2019/dev] (kpathsea + Thai support). +Scanning style file ./python.ist.......done (7 attributes redefined, 0 ignored). +Scanning input file CoopeV3.idx.....done (1227 entries accepted, 0 rejected). +Sorting entries.............done (13971 comparisons). +Generating output file CoopeV3.ind.....done (1736 lines written, 0 warnings). +Output written in CoopeV3.ind. +Transcript written in CoopeV3.ilg. diff --git a/docs/_build/latex/CoopeV3.ind b/docs/_build/latex/CoopeV3.ind new file mode 100644 index 0000000..b2fb616 --- /dev/null +++ b/docs/_build/latex/CoopeV3.ind @@ -0,0 +1,1736 @@ +\begin{sphinxtheindex} +\let\bigletter\sphinxstyleindexlettergroup +\let\spxpagem \sphinxstyleindexpagemain +\let\spxentry \sphinxstyleindexentry +\let\spxextra \sphinxstyleindexextra + + \bigletter A + \item \spxentry{abstract}\spxextra{django\_tex.models.TeXTemplateFile.Meta attribute}, + \hyperpage{76} + \item \spxentry{acl\_and()}\spxextra{in module coopeV3.acl}, \hyperpage{73} + \item \spxentry{acl\_or()}\spxextra{in module coopeV3.acl}, \hyperpage{73} + \item \spxentry{active\_message}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{50} + \item \spxentry{active\_message}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{active\_required()}\spxextra{in module coopeV3.acl}, \hyperpage{73} + \item \spxentry{ActiveProductsAutocomplete}\spxextra{class in gestion.views}, \hyperpage{1} + \item \spxentry{ActiveUsersAutocomplete}\spxextra{class in users.views}, \hyperpage{4} + \item \spxentry{add\_pintes()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{addAdmin()}\spxextra{in module users.views}, \hyperpage{4} + \item \spxentry{addCotisation()}\spxextra{in module preferences.views}, \hyperpage{6} + \item \spxentry{addCotisationHistory()}\spxextra{in module users.views}, \hyperpage{4} + \item \spxentry{addCotisationHistoryForm}\spxextra{class in users.forms}, \hyperpage{69} + \item \spxentry{addCotisationHistoryForm.Meta}\spxextra{class in users.forms}, \hyperpage{69} + \item \spxentry{addKeg()}\spxextra{in module gestion.views}, \hyperpage{1} + \item \spxentry{addMenu()}\spxextra{in module gestion.views}, \hyperpage{1} + \item \spxentry{addPaymentMethod()}\spxextra{in module preferences.views}, \hyperpage{6} + \item \spxentry{addProduct()}\spxextra{in module gestion.views}, \hyperpage{1} + \item \spxentry{addSuperuser()}\spxextra{in module users.views}, \hyperpage{4} + \item \spxentry{addWhiteListHistory()}\spxextra{in module users.views}, \hyperpage{4} + \item \spxentry{addWhiteListHistoryForm}\spxextra{class in users.forms}, \hyperpage{69} + \item \spxentry{addWhiteListHistoryForm.Meta}\spxextra{class in users.forms}, \hyperpage{69} + \item \spxentry{adherent\_required}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{AdherentAutocomplete}\spxextra{class in users.views}, \hyperpage{4} + \item \spxentry{adherentRequired}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{24} + \item \spxentry{adherentRequired}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{admin\_required()}\spxextra{in module coopeV3.acl}, \hyperpage{73} + \item \spxentry{adminsIndex()}\spxextra{in module users.views}, \hyperpage{4} + \item \spxentry{affect\_balance}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{55} + \item \spxentry{affect\_balance}\spxextra{preferences.models.PaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{alcohol}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{all\_consumptions()}\spxextra{in module users.views}, \hyperpage{4} + \item \spxentry{all\_menus()}\spxextra{in module users.views}, \hyperpage{4} + \item \spxentry{allocate()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{allReloads()}\spxextra{in module users.views}, \hyperpage{4} + \item \spxentry{AllUsersAutocomplete}\spxextra{class in users.views}, \hyperpage{4} + \item \spxentry{amount}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{amount}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{12} + \item \spxentry{amount}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{15} + \item \spxentry{amount}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{amount}\spxextra{gestion.models.HistoricalMenuHistory attribute}, \hyperpage{20} + \item \spxentry{amount}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{24} + \item \spxentry{amount}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{26} + \item \spxentry{amount}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{28} + \item \spxentry{amount}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{amount}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{amount}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{32} + \item \spxentry{amount}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{amount}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{amount}\spxextra{gestion.models.Reload attribute}, \hyperpage{37} + \item \spxentry{amount}\spxextra{preferences.models.Cotisation attribute}, \hyperpage{49} + \item \spxentry{amount}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{51} + \item \spxentry{amount}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{38} + \item \spxentry{amount}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{39} + \item \spxentry{amountSold}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{17} + \item \spxentry{amountSold}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{app\_dirname}\spxextra{django\_tex.engine.TeXEngine attribute}, \hyperpage{75} + \item \spxentry{articles}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{automatic\_logout\_time}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{50} + \item \spxentry{automatic\_logout\_time}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + + \indexspace + \bigletter B + \item \spxentry{balance}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{BalanceFilter}\spxextra{class in users.admin}, \hyperpage{61} + \item \spxentry{barcode}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{15} + \item \spxentry{barcode}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{barcode}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{24} + \item \spxentry{barcode}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{barcode}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{barcode}\spxextra{gestion.models.Product attribute}, \hyperpage{35} + \item \spxentry{base\_fields}\spxextra{gestion.forms.GenerateReleveForm attribute}, + \hyperpage{63} + \item \spxentry{base\_fields}\spxextra{gestion.forms.GestionForm attribute}, \hyperpage{63} + \item \spxentry{base\_fields}\spxextra{gestion.forms.KegForm attribute}, \hyperpage{64} + \item \spxentry{base\_fields}\spxextra{gestion.forms.MenuForm attribute}, \hyperpage{64} + \item \spxentry{base\_fields}\spxextra{gestion.forms.PinteForm attribute}, \hyperpage{64} + \item \spxentry{base\_fields}\spxextra{gestion.forms.ProductForm attribute}, \hyperpage{64} + \item \spxentry{base\_fields}\spxextra{gestion.forms.RefundForm attribute}, \hyperpage{65} + \item \spxentry{base\_fields}\spxextra{gestion.forms.ReloadForm attribute}, \hyperpage{65} + \item \spxentry{base\_fields}\spxextra{gestion.forms.SearchMenuForm attribute}, \hyperpage{65} + \item \spxentry{base\_fields}\spxextra{gestion.forms.SearchProductForm attribute}, \hyperpage{65} + \item \spxentry{base\_fields}\spxextra{gestion.forms.SelectActiveKegForm attribute}, + \hyperpage{66} + \item \spxentry{base\_fields}\spxextra{gestion.forms.SelectPositiveKegForm attribute}, + \hyperpage{66} + \item \spxentry{base\_fields}\spxextra{preferences.forms.CotisationForm attribute}, + \hyperpage{70} + \item \spxentry{base\_fields}\spxextra{preferences.forms.GeneralPreferencesForm attribute}, + \hyperpage{70} + \item \spxentry{base\_fields}\spxextra{preferences.forms.PaymentMethodForm attribute}, + \hyperpage{71} + \item \spxentry{base\_fields}\spxextra{users.forms.addCotisationHistoryForm attribute}, + \hyperpage{69} + \item \spxentry{base\_fields}\spxextra{users.forms.addWhiteListHistoryForm attribute}, + \hyperpage{69} + \item \spxentry{base\_fields}\spxextra{users.forms.CreateGroupForm attribute}, \hyperpage{66} + \item \spxentry{base\_fields}\spxextra{users.forms.CreateUserForm attribute}, \hyperpage{67} + \item \spxentry{base\_fields}\spxextra{users.forms.EditGroupForm attribute}, \hyperpage{67} + \item \spxentry{base\_fields}\spxextra{users.forms.EditPasswordForm attribute}, \hyperpage{67} + \item \spxentry{base\_fields}\spxextra{users.forms.ExportForm attribute}, \hyperpage{67} + \item \spxentry{base\_fields}\spxextra{users.forms.GroupsEditForm attribute}, \hyperpage{68} + \item \spxentry{base\_fields}\spxextra{users.forms.LoginForm attribute}, \hyperpage{68} + \item \spxentry{base\_fields}\spxextra{users.forms.SchoolForm attribute}, \hyperpage{68} + \item \spxentry{base\_fields}\spxextra{users.forms.SelectNonAdminUserForm attribute}, + \hyperpage{68} + \item \spxentry{base\_fields}\spxextra{users.forms.SelectNonSuperUserForm attribute}, + \hyperpage{69} + \item \spxentry{base\_fields}\spxextra{users.forms.SelectUserForm attribute}, \hyperpage{69} + \item \spxentry{BOTTLE}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{brewer}\spxextra{preferences.models.GeneralPreferences attribute}, \hyperpage{50} + \item \spxentry{brewer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{brewer()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{73} + + \indexspace + \bigletter C + \item \spxentry{cancel\_consumption()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{cancel\_menu()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{cancel\_reload()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{capacity}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{15} + \item \spxentry{capacity}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{category}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{24} + \item \spxentry{category}\spxextra{gestion.models.Product attribute}, \hyperpage{35} + \item \spxentry{clean\_password2()}\spxextra{users.forms.EditPasswordForm method}, \hyperpage{67} + \item \spxentry{closeDirectKeg()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{closeKeg()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{closingDate}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{17} + \item \spxentry{closingDate}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{compile\_template\_to\_pdf()}\spxextra{in module django\_tex.core}, + \hyperpage{75} + \item \spxentry{Consumption}\spxextra{class in gestion.models}, \hyperpage{9} + \item \spxentry{Consumption.DoesNotExist}, \hyperpage{9} + \item \spxentry{Consumption.MultipleObjectsReturned}, \hyperpage{9} + \item \spxentry{consumption\_set}\spxextra{gestion.models.Product attribute}, \hyperpage{35} + \item \spxentry{ConsumptionAdmin}\spxextra{class in gestion.admin}, \hyperpage{59} + \item \spxentry{ConsumptionHistory}\spxextra{class in gestion.models}, \hyperpage{10} + \item \spxentry{ConsumptionHistory.DoesNotExist}, \hyperpage{10} + \item \spxentry{ConsumptionHistory.MultipleObjectsReturned}, \hyperpage{10} + \item \spxentry{consumptionhistory\_set}\spxextra{gestion.models.Product attribute}, + \hyperpage{35} + \item \spxentry{consumptionhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{ConsumptionHistoryAdmin}\spxextra{class in gestion.admin}, \hyperpage{59} + \item \spxentry{coope\_runner()}\spxextra{in module coopeV3.views}, \hyperpage{7} + \item \spxentry{coopeman}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{coopeman}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{12} + \item \spxentry{coopeman}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{20} + \item \spxentry{coopeman}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{26} + \item \spxentry{coopeman}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{28} + \item \spxentry{coopeman}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{32} + \item \spxentry{coopeman}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{coopeman}\spxextra{gestion.models.Reload attribute}, \hyperpage{38} + \item \spxentry{coopeman}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{38} + \item \spxentry{coopeman}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{40} + \item \spxentry{coopeman}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{45} + \item \spxentry{coopeman}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{48} + \item \spxentry{coopeman\_id}\spxextra{gestion.models.ConsumptionHistory attribute}, + \hyperpage{10} + \item \spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{20} + \item \spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{26} + \item \spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{28} + \item \spxentry{coopeman\_id}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{coopeman\_id}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{coopeman\_id}\spxextra{gestion.models.Reload attribute}, \hyperpage{38} + \item \spxentry{coopeman\_id}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{38} + \item \spxentry{coopeman\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{40} + \item \spxentry{coopeman\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{45} + \item \spxentry{coopeman\_id}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{48} + \item \spxentry{coopeV3.acl}\spxextra{module}, \hyperpage{73} + \item \spxentry{coopeV3.templatetags.vip}\spxextra{module}, \hyperpage{73} + \item \spxentry{coopeV3.views}\spxextra{module}, \hyperpage{7} + \item \spxentry{Cotisation}\spxextra{class in preferences.models}, \hyperpage{49} + \item \spxentry{cotisation}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{38} + \item \spxentry{cotisation}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{40} + \item \spxentry{Cotisation.DoesNotExist}, \hyperpage{49} + \item \spxentry{Cotisation.MultipleObjectsReturned}, \hyperpage{49} + \item \spxentry{cotisation\_id}\spxextra{users.models.CotisationHistory attribute}, + \hyperpage{39} + \item \spxentry{cotisation\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{40} + \item \spxentry{CotisationAdmin}\spxextra{class in preferences.admin}, \hyperpage{61} + \item \spxentry{cotisationEnd}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{42} + \item \spxentry{cotisationEnd}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{CotisationForm}\spxextra{class in preferences.forms}, \hyperpage{70} + \item \spxentry{CotisationForm.Meta}\spxextra{class in preferences.forms}, \hyperpage{70} + \item \spxentry{CotisationHistory}\spxextra{class in users.models}, \hyperpage{38} + \item \spxentry{CotisationHistory.DoesNotExist}, \hyperpage{38} + \item \spxentry{CotisationHistory.MultipleObjectsReturned}, \hyperpage{38} + \item \spxentry{cotisationhistory\_set}\spxextra{preferences.models.Cotisation attribute}, + \hyperpage{49} + \item \spxentry{cotisationhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}, + \hyperpage{57} + \item \spxentry{CotisationHistoryAdmin}\spxextra{class in users.admin}, \hyperpage{61} + \item \spxentry{cotisationsIndex()}\spxextra{in module preferences.views}, \hyperpage{6} + \item \spxentry{create\_user\_profile()}\spxextra{in module users.models}, \hyperpage{49} + \item \spxentry{createGroup()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{CreateGroupForm}\spxextra{class in users.forms}, \hyperpage{66} + \item \spxentry{CreateGroupForm.Meta}\spxextra{class in users.forms}, \hyperpage{66} + \item \spxentry{createSchool()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{createUser()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{CreateUserForm}\spxextra{class in users.forms}, \hyperpage{66} + \item \spxentry{CreateUserForm.Meta}\spxextra{class in users.forms}, \hyperpage{66} + \item \spxentry{credit}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{42} + \item \spxentry{credit}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{current\_owner}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{22} + \item \spxentry{current\_owner}\spxextra{gestion.models.Pinte attribute}, \hyperpage{34} + \item \spxentry{current\_owner\_id}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{23} + \item \spxentry{current\_owner\_id}\spxextra{gestion.models.Pinte attribute}, \hyperpage{34} + \item \spxentry{customer}\spxextra{gestion.models.Consumption attribute}, \hyperpage{9} + \item \spxentry{customer}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{customer}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{customer}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{customer}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{20} + \item \spxentry{customer}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{26} + \item \spxentry{customer}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{28} + \item \spxentry{customer}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{customer}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{customer}\spxextra{gestion.models.Reload attribute}, \hyperpage{38} + \item \spxentry{customer\_id}\spxextra{gestion.models.Consumption attribute}, \hyperpage{9} + \item \spxentry{customer\_id}\spxextra{gestion.models.ConsumptionHistory attribute}, + \hyperpage{10} + \item \spxentry{customer\_id}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{customer\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{customer\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{20} + \item \spxentry{customer\_id}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{26} + \item \spxentry{customer\_id}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{29} + \item \spxentry{customer\_id}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{customer\_id}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{customer\_id}\spxextra{gestion.models.Reload attribute}, \hyperpage{38} + + \indexspace + \bigletter D + \item \spxentry{D\_PRESSION}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{date}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{date}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{date}\spxextra{gestion.models.HistoricalMenuHistory attribute}, \hyperpage{21} + \item \spxentry{date}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{27} + \item \spxentry{date}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{29} + \item \spxentry{date}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{date}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{date}\spxextra{gestion.models.Reload attribute}, \hyperpage{38} + \item \spxentry{debit}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{42} + \item \spxentry{debit}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.GenerateReleveForm attribute}, + \hyperpage{63} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.GestionForm attribute}, \hyperpage{63} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.KegForm attribute}, \hyperpage{64} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.MenuForm attribute}, \hyperpage{64} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.PinteForm attribute}, \hyperpage{64} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.ProductForm attribute}, \hyperpage{64} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.RefundForm attribute}, \hyperpage{65} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.ReloadForm attribute}, \hyperpage{65} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.SearchMenuForm attribute}, + \hyperpage{65} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.SearchProductForm attribute}, + \hyperpage{65} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.SelectActiveKegForm attribute}, + \hyperpage{66} + \item \spxentry{declared\_fields}\spxextra{gestion.forms.SelectPositiveKegForm attribute}, + \hyperpage{66} + \item \spxentry{declared\_fields}\spxextra{preferences.forms.CotisationForm attribute}, + \hyperpage{70} + \item \spxentry{declared\_fields}\spxextra{preferences.forms.GeneralPreferencesForm attribute}, + \hyperpage{70} + \item \spxentry{declared\_fields}\spxextra{preferences.forms.PaymentMethodForm attribute}, + \hyperpage{71} + \item \spxentry{declared\_fields}\spxextra{users.forms.addCotisationHistoryForm attribute}, + \hyperpage{69} + \item \spxentry{declared\_fields}\spxextra{users.forms.addWhiteListHistoryForm attribute}, + \hyperpage{70} + \item \spxentry{declared\_fields}\spxextra{users.forms.CreateGroupForm attribute}, \hyperpage{66} + \item \spxentry{declared\_fields}\spxextra{users.forms.CreateUserForm attribute}, \hyperpage{67} + \item \spxentry{declared\_fields}\spxextra{users.forms.EditGroupForm attribute}, \hyperpage{67} + \item \spxentry{declared\_fields}\spxextra{users.forms.EditPasswordForm attribute}, + \hyperpage{67} + \item \spxentry{declared\_fields}\spxextra{users.forms.ExportForm attribute}, \hyperpage{67} + \item \spxentry{declared\_fields}\spxextra{users.forms.GroupsEditForm attribute}, \hyperpage{68} + \item \spxentry{declared\_fields}\spxextra{users.forms.LoginForm attribute}, \hyperpage{68} + \item \spxentry{declared\_fields}\spxextra{users.forms.SchoolForm attribute}, \hyperpage{68} + \item \spxentry{declared\_fields}\spxextra{users.forms.SelectNonAdminUserForm attribute}, + \hyperpage{68} + \item \spxentry{declared\_fields}\spxextra{users.forms.SelectNonSuperUserForm attribute}, + \hyperpage{69} + \item \spxentry{declared\_fields}\spxextra{users.forms.SelectUserForm attribute}, \hyperpage{69} + \item \spxentry{deg}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{24} + \item \spxentry{deg}\spxextra{gestion.models.Product attribute}, \hyperpage{35} + \item \spxentry{deleteCotisation()}\spxextra{in module preferences.views}, \hyperpage{6} + \item \spxentry{deleteCotisationHistory()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{deleteGroup()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{deletePaymentMethod()}\spxextra{in module preferences.views}, \hyperpage{7} + \item \spxentry{deleteSchool()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{demi}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{15} + \item \spxentry{demi}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{demi\_id}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{15} + \item \spxentry{demi\_id}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{django\_tex.core}\spxextra{module}, \hyperpage{75} + \item \spxentry{django\_tex.engine}\spxextra{module}, \hyperpage{75} + \item \spxentry{django\_tex.environment}\spxextra{module}, \hyperpage{75} + \item \spxentry{django\_tex.exceptions}\spxextra{module}, \hyperpage{75} + \item \spxentry{django\_tex.filters}\spxextra{module}, \hyperpage{76} + \item \spxentry{django\_tex.models}\spxextra{module}, \hyperpage{76} + \item \spxentry{django\_tex.views}\spxextra{module}, \hyperpage{76} + \item \spxentry{do\_linebreaks()}\spxextra{in module django\_tex.filters}, \hyperpage{76} + \item \spxentry{duration}\spxextra{preferences.models.Cotisation attribute}, \hyperpage{50} + \item \spxentry{duration}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{51} + \item \spxentry{duration}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{duration}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{40} + \item \spxentry{duration}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{45} + \item \spxentry{duration}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{48} + + \indexspace + \bigletter E + \item \spxentry{edit\_menu()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{editCotisation()}\spxextra{in module preferences.views}, \hyperpage{7} + \item \spxentry{editGroup()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{EditGroupForm}\spxextra{class in users.forms}, \hyperpage{67} + \item \spxentry{EditGroupForm.Meta}\spxextra{class in users.forms}, \hyperpage{67} + \item \spxentry{editGroups()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{editKeg()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{editPassword()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{EditPasswordForm}\spxextra{class in users.forms}, \hyperpage{67} + \item \spxentry{editPaymentMethod()}\spxextra{in module preferences.views}, \hyperpage{7} + \item \spxentry{editProduct()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{editSchool()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{editUser()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{endDate}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{endDate}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{40} + \item \spxentry{endDate}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{45} + \item \spxentry{endDate}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{49} + \item \spxentry{environment()}\spxextra{in module django\_tex.environment}, \hyperpage{75} + \item \spxentry{exclude}\spxextra{gestion.forms.KegForm.Meta attribute}, \hyperpage{63} + \item \spxentry{export\_csv()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{ExportForm}\spxextra{class in users.forms}, \hyperpage{67} + + \indexspace + \bigletter F + \item \spxentry{fields}\spxextra{gestion.forms.MenuForm.Meta attribute}, \hyperpage{64} + \item \spxentry{fields}\spxextra{gestion.forms.ProductForm.Meta attribute}, \hyperpage{64} + \item \spxentry{fields}\spxextra{gestion.forms.RefundForm.Meta attribute}, \hyperpage{65} + \item \spxentry{fields}\spxextra{gestion.forms.ReloadForm.Meta attribute}, \hyperpage{65} + \item \spxentry{fields}\spxextra{preferences.forms.CotisationForm.Meta attribute}, \hyperpage{70} + \item \spxentry{fields}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}, + \hyperpage{70} + \item \spxentry{fields}\spxextra{preferences.forms.PaymentMethodForm.Meta attribute}, + \hyperpage{71} + \item \spxentry{fields}\spxextra{users.forms.addCotisationHistoryForm.Meta attribute}, + \hyperpage{69} + \item \spxentry{fields}\spxextra{users.forms.addWhiteListHistoryForm.Meta attribute}, + \hyperpage{69} + \item \spxentry{fields}\spxextra{users.forms.CreateGroupForm.Meta attribute}, \hyperpage{66} + \item \spxentry{fields}\spxextra{users.forms.CreateUserForm.Meta attribute}, \hyperpage{67} + \item \spxentry{fields}\spxextra{users.forms.EditGroupForm.Meta attribute}, \hyperpage{67} + \item \spxentry{fields}\spxextra{users.forms.GroupsEditForm.Meta attribute}, \hyperpage{68} + \item \spxentry{fields}\spxextra{users.forms.SchoolForm.Meta attribute}, \hyperpage{68} + \item \spxentry{FIELDS\_CHOICES}\spxextra{users.forms.ExportForm attribute}, \hyperpage{67} + \item \spxentry{floating\_buttons}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{50} + \item \spxentry{floating\_buttons}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{FOOD}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{futd}\spxextra{gestion.models.Product attribute}, \hyperpage{35} + \item \spxentry{futg}\spxextra{gestion.models.Product attribute}, \hyperpage{35} + \item \spxentry{futp}\spxextra{gestion.models.Product attribute}, \hyperpage{35} + + \indexspace + \bigletter G + \item \spxentry{G\_PRESSION}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{galopin}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{15} + \item \spxentry{galopin}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{galopin\_id}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{15} + \item \spxentry{galopin\_id}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{gen\_releve()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{gen\_user\_infos()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{GeneralPreferences}\spxextra{class in preferences.models}, \hyperpage{50} + \item \spxentry{generalPreferences()}\spxextra{in module preferences.views}, \hyperpage{7} + \item \spxentry{GeneralPreferences.DoesNotExist}, \hyperpage{50} + \item \spxentry{GeneralPreferences.MultipleObjectsReturned}, \hyperpage{50} + \item \spxentry{GeneralPreferencesAdmin}\spxextra{class in preferences.admin}, \hyperpage{62} + \item \spxentry{GeneralPreferencesForm}\spxextra{class in preferences.forms}, \hyperpage{70} + \item \spxentry{GeneralPreferencesForm.Meta}\spxextra{class in preferences.forms}, \hyperpage{70} + \item \spxentry{GenerateReleveForm}\spxextra{class in gestion.forms}, \hyperpage{63} + \item \spxentry{gestion.admin}\spxextra{module}, \hyperpage{59} + \item \spxentry{gestion.forms}\spxextra{module}, \hyperpage{63} + \item \spxentry{gestion.models}\spxextra{module}, \hyperpage{9} + \item \spxentry{gestion.views}\spxextra{module}, \hyperpage{1} + \item \spxentry{GestionForm}\spxextra{class in gestion.forms}, \hyperpage{63} + \item \spxentry{get\_category\_display()}\spxextra{gestion.models.HistoricalProduct method}, + \hyperpage{24} + \item \spxentry{get\_category\_display()}\spxextra{gestion.models.Product method}, \hyperpage{36} + \item \spxentry{get\_config()}\spxextra{in module preferences.views}, \hyperpage{7} + \item \spxentry{get\_cotisation()}\spxextra{in module preferences.views}, \hyperpage{7} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalConsumption method}, + \hyperpage{11} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalConsumptionHistory method}, + \hyperpage{13} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalKeg method}, + \hyperpage{15} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalKegHistory method}, + \hyperpage{17} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalMenu method}, + \hyperpage{19} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalMenuHistory method}, + \hyperpage{21} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalPinte method}, + \hyperpage{23} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalProduct method}, + \hyperpage{24} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalRefund method}, + \hyperpage{27} + \item \spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalReload method}, + \hyperpage{29} + \item \spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalCotisation method}, + \hyperpage{51} + \item \spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalGeneralPreferences method}, + \hyperpage{53} + \item \spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalPaymentMethod method}, + \hyperpage{55} + \item \spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalCotisationHistory method}, + \hyperpage{40} + \item \spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalProfile method}, + \hyperpage{42} + \item \spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalSchool method}, + \hyperpage{44} + \item \spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalWhiteListHistory method}, + \hyperpage{45} + \item \spxentry{get\_menu()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{get\_message()}\spxextra{django\_tex.exceptions.TexError method}, \hyperpage{75} + \item \spxentry{get\_next\_by\_date()}\spxextra{gestion.models.ConsumptionHistory method}, + \hyperpage{10} + \item \spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}, + \hyperpage{13} + \item \spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}, + \hyperpage{21} + \item \spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalRefund method}, + \hyperpage{27} + \item \spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalReload method}, + \hyperpage{29} + \item \spxentry{get\_next\_by\_date()}\spxextra{gestion.models.MenuHistory method}, + \hyperpage{33} + \item \spxentry{get\_next\_by\_date()}\spxextra{gestion.models.Refund method}, \hyperpage{37} + \item \spxentry{get\_next\_by\_date()}\spxextra{gestion.models.Reload method}, \hyperpage{38} + \item \spxentry{get\_next\_by\_endDate()}\spxextra{users.models.CotisationHistory method}, + \hyperpage{39} + \item \spxentry{get\_next\_by\_endDate()}\spxextra{users.models.HistoricalCotisationHistory method}, + \hyperpage{40} + \item \spxentry{get\_next\_by\_endDate()}\spxextra{users.models.HistoricalWhiteListHistory method}, + \hyperpage{45} + \item \spxentry{get\_next\_by\_endDate()}\spxextra{users.models.WhiteListHistory method}, + \hyperpage{49} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumption method}, + \hyperpage{11} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}, + \hyperpage{13} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalKeg method}, + \hyperpage{15} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalKegHistory method}, + \hyperpage{17} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenu method}, + \hyperpage{19} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}, + \hyperpage{21} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalPinte method}, + \hyperpage{23} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalProduct method}, + \hyperpage{25} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalRefund method}, + \hyperpage{27} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalReload method}, + \hyperpage{29} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalCotisation method}, + \hyperpage{51} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalGeneralPreferences method}, + \hyperpage{53} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalPaymentMethod method}, + \hyperpage{55} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalCotisationHistory method}, + \hyperpage{40} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalProfile method}, + \hyperpage{42} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalSchool method}, + \hyperpage{44} + \item \spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalWhiteListHistory method}, + \hyperpage{45} + \item \spxentry{get\_next\_by\_last\_update\_date()}\spxextra{gestion.models.HistoricalPinte method}, + \hyperpage{23} + \item \spxentry{get\_next\_by\_last\_update\_date()}\spxextra{gestion.models.Pinte method}, + \hyperpage{34} + \item \spxentry{get\_next\_by\_openingDate()}\spxextra{gestion.models.HistoricalKegHistory method}, + \hyperpage{17} + \item \spxentry{get\_next\_by\_openingDate()}\spxextra{gestion.models.KegHistory method}, + \hyperpage{31} + \item \spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.CotisationHistory method}, + \hyperpage{39} + \item \spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.HistoricalCotisationHistory method}, + \hyperpage{40} + \item \spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.HistoricalWhiteListHistory method}, + \hyperpage{45} + \item \spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.WhiteListHistory method}, + \hyperpage{49} + \item \spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.ConsumptionHistory method}, + \hyperpage{10} + \item \spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}, + \hyperpage{13} + \item \spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}, + \hyperpage{21} + \item \spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalRefund method}, + \hyperpage{27} + \item \spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalReload method}, + \hyperpage{29} + \item \spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.MenuHistory method}, + \hyperpage{33} + \item \spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.Refund method}, \hyperpage{37} + \item \spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.Reload method}, \hyperpage{38} + \item \spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.CotisationHistory method}, + \hyperpage{39} + \item \spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.HistoricalCotisationHistory method}, + \hyperpage{40} + \item \spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.HistoricalWhiteListHistory method}, + \hyperpage{45} + \item \spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.WhiteListHistory method}, + \hyperpage{49} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumption method}, + \hyperpage{11} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}, + \hyperpage{13} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalKeg method}, + \hyperpage{15} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalKegHistory method}, + \hyperpage{17} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenu method}, + \hyperpage{19} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}, + \hyperpage{21} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalPinte method}, + \hyperpage{23} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalProduct method}, + \hyperpage{25} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalRefund method}, + \hyperpage{27} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalReload method}, + \hyperpage{29} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalCotisation method}, + \hyperpage{51} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalGeneralPreferences method}, + \hyperpage{53} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalPaymentMethod method}, + \hyperpage{55} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalCotisationHistory method}, + \hyperpage{40} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalProfile method}, + \hyperpage{42} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalSchool method}, + \hyperpage{44} + \item \spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalWhiteListHistory method}, + \hyperpage{46} + \item \spxentry{get\_previous\_by\_last\_update\_date()}\spxextra{gestion.models.HistoricalPinte method}, + \hyperpage{23} + \item \spxentry{get\_previous\_by\_last\_update\_date()}\spxextra{gestion.models.Pinte method}, + \hyperpage{34} + \item \spxentry{get\_previous\_by\_openingDate()}\spxextra{gestion.models.HistoricalKegHistory method}, + \hyperpage{17} + \item \spxentry{get\_previous\_by\_openingDate()}\spxextra{gestion.models.KegHistory method}, + \hyperpage{31} + \item \spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.CotisationHistory method}, + \hyperpage{39} + \item \spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.HistoricalCotisationHistory method}, + \hyperpage{40} + \item \spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.HistoricalWhiteListHistory method}, + \hyperpage{46} + \item \spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.WhiteListHistory method}, + \hyperpage{49} + \item \spxentry{get\_queryset()}\spxextra{gestion.views.ActiveProductsAutocomplete method}, + \hyperpage{1} + \item \spxentry{get\_queryset()}\spxextra{gestion.views.KegActiveAutocomplete method}, + \hyperpage{1} + \item \spxentry{get\_queryset()}\spxextra{gestion.views.KegPositiveAutocomplete method}, + \hyperpage{1} + \item \spxentry{get\_queryset()}\spxextra{gestion.views.MenusAutocomplete method}, \hyperpage{1} + \item \spxentry{get\_queryset()}\spxextra{gestion.views.ProductsAutocomplete method}, + \hyperpage{1} + \item \spxentry{get\_queryset()}\spxextra{users.views.ActiveUsersAutocomplete method}, + \hyperpage{4} + \item \spxentry{get\_queryset()}\spxextra{users.views.AdherentAutocomplete method}, \hyperpage{4} + \item \spxentry{get\_queryset()}\spxextra{users.views.AllUsersAutocomplete method}, \hyperpage{4} + \item \spxentry{get\_queryset()}\spxextra{users.views.NonAdminUserAutocomplete method}, + \hyperpage{4} + \item \spxentry{get\_queryset()}\spxextra{users.views.NonSuperUserAutocomplete method}, + \hyperpage{4} + \item \spxentry{getProduct()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{getUser()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{global\_message}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{50} + \item \spxentry{global\_message}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{global\_message()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{73} + \item \spxentry{grocer}\spxextra{preferences.models.GeneralPreferences attribute}, \hyperpage{50} + \item \spxentry{grocer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{grocer()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{73} + \item \spxentry{groupProfile()}\spxextra{in module users.views}, \hyperpage{5} + \item \spxentry{GroupsEditForm}\spxextra{class in users.forms}, \hyperpage{67} + \item \spxentry{GroupsEditForm.Meta}\spxextra{class in users.forms}, \hyperpage{68} + \item \spxentry{groupsIndex()}\spxextra{in module users.views}, \hyperpage{5} + + \indexspace + \bigletter H + \item \spxentry{HistoricalConsumption}\spxextra{class in gestion.models}, \hyperpage{10} + \item \spxentry{HistoricalConsumption.DoesNotExist}, \hyperpage{11} + \item \spxentry{HistoricalConsumption.MultipleObjectsReturned}, \hyperpage{11} + \item \spxentry{HistoricalConsumptionHistory}\spxextra{class in gestion.models}, \hyperpage{12} + \item \spxentry{HistoricalConsumptionHistory.DoesNotExist}, \hyperpage{12} + \item \spxentry{HistoricalConsumptionHistory.MultipleObjectsReturned}, \hyperpage{12} + \item \spxentry{HistoricalCotisation}\spxextra{class in preferences.models}, \hyperpage{51} + \item \spxentry{HistoricalCotisation.DoesNotExist}, \hyperpage{51} + \item \spxentry{HistoricalCotisation.MultipleObjectsReturned}, \hyperpage{51} + \item \spxentry{HistoricalCotisationHistory}\spxextra{class in users.models}, \hyperpage{39} + \item \spxentry{HistoricalCotisationHistory.DoesNotExist}, \hyperpage{39} + \item \spxentry{HistoricalCotisationHistory.MultipleObjectsReturned}, \hyperpage{39} + \item \spxentry{HistoricalGeneralPreferences}\spxextra{class in preferences.models}, + \hyperpage{52} + \item \spxentry{HistoricalGeneralPreferences.DoesNotExist}, \hyperpage{52} + \item \spxentry{HistoricalGeneralPreferences.MultipleObjectsReturned}, \hyperpage{53} + \item \spxentry{HistoricalKeg}\spxextra{class in gestion.models}, \hyperpage{14} + \item \spxentry{HistoricalKeg.DoesNotExist}, \hyperpage{15} + \item \spxentry{HistoricalKeg.MultipleObjectsReturned}, \hyperpage{15} + \item \spxentry{HistoricalKegHistory}\spxextra{class in gestion.models}, \hyperpage{17} + \item \spxentry{HistoricalKegHistory.DoesNotExist}, \hyperpage{17} + \item \spxentry{HistoricalKegHistory.MultipleObjectsReturned}, \hyperpage{17} + \item \spxentry{HistoricalMenu}\spxextra{class in gestion.models}, \hyperpage{18} + \item \spxentry{HistoricalMenu.DoesNotExist}, \hyperpage{19} + \item \spxentry{HistoricalMenu.MultipleObjectsReturned}, \hyperpage{19} + \item \spxentry{HistoricalMenuHistory}\spxextra{class in gestion.models}, \hyperpage{20} + \item \spxentry{HistoricalMenuHistory.DoesNotExist}, \hyperpage{20} + \item \spxentry{HistoricalMenuHistory.MultipleObjectsReturned}, \hyperpage{20} + \item \spxentry{HistoricalPaymentMethod}\spxextra{class in preferences.models}, \hyperpage{55} + \item \spxentry{HistoricalPaymentMethod.DoesNotExist}, \hyperpage{55} + \item \spxentry{HistoricalPaymentMethod.MultipleObjectsReturned}, \hyperpage{55} + \item \spxentry{HistoricalPinte}\spxextra{class in gestion.models}, \hyperpage{22} + \item \spxentry{HistoricalPinte.DoesNotExist}, \hyperpage{22} + \item \spxentry{HistoricalPinte.MultipleObjectsReturned}, \hyperpage{22} + \item \spxentry{HistoricalProduct}\spxextra{class in gestion.models}, \hyperpage{24} + \item \spxentry{HistoricalProduct.DoesNotExist}, \hyperpage{24} + \item \spxentry{HistoricalProduct.MultipleObjectsReturned}, \hyperpage{24} + \item \spxentry{HistoricalProfile}\spxextra{class in users.models}, \hyperpage{42} + \item \spxentry{HistoricalProfile.DoesNotExist}, \hyperpage{42} + \item \spxentry{HistoricalProfile.MultipleObjectsReturned}, \hyperpage{42} + \item \spxentry{HistoricalRefund}\spxextra{class in gestion.models}, \hyperpage{26} + \item \spxentry{HistoricalRefund.DoesNotExist}, \hyperpage{26} + \item \spxentry{HistoricalRefund.MultipleObjectsReturned}, \hyperpage{26} + \item \spxentry{HistoricalReload}\spxextra{class in gestion.models}, \hyperpage{28} + \item \spxentry{HistoricalReload.DoesNotExist}, \hyperpage{28} + \item \spxentry{HistoricalReload.MultipleObjectsReturned}, \hyperpage{28} + \item \spxentry{HistoricalSchool}\spxextra{class in users.models}, \hyperpage{44} + \item \spxentry{HistoricalSchool.DoesNotExist}, \hyperpage{44} + \item \spxentry{HistoricalSchool.MultipleObjectsReturned}, \hyperpage{44} + \item \spxentry{HistoricalWhiteListHistory}\spxextra{class in users.models}, \hyperpage{45} + \item \spxentry{HistoricalWhiteListHistory.DoesNotExist}, \hyperpage{45} + \item \spxentry{HistoricalWhiteListHistory.MultipleObjectsReturned}, \hyperpage{45} + \item \spxentry{history}\spxextra{gestion.models.Consumption attribute}, \hyperpage{9} + \item \spxentry{history}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{history}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{history}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{history}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{history}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{history}\spxextra{gestion.models.Pinte attribute}, \hyperpage{34} + \item \spxentry{history}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{history}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{history}\spxextra{gestion.models.Reload attribute}, \hyperpage{38} + \item \spxentry{history}\spxextra{preferences.models.Cotisation attribute}, \hyperpage{50} + \item \spxentry{history}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{50} + \item \spxentry{history}\spxextra{preferences.models.PaymentMethod attribute}, \hyperpage{57} + \item \spxentry{history}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{history}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{history}\spxextra{users.models.School attribute}, \hyperpage{48} + \item \spxentry{history}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{49} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalKeg attribute}, + \hyperpage{15} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{17} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalMenu attribute}, + \hyperpage{19} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{23} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalRefund attribute}, + \hyperpage{27} + \item \spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{29} + \item \spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{51} + \item \spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{55} + \item \spxentry{history\_change\_reason}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{40} + \item \spxentry{history\_change\_reason}\spxextra{users.models.HistoricalProfile attribute}, + \hyperpage{42} + \item \spxentry{history\_change\_reason}\spxextra{users.models.HistoricalSchool attribute}, + \hyperpage{44} + \item \spxentry{history\_change\_reason}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{15} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{17} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{23} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalRefund attribute}, + \hyperpage{27} + \item \spxentry{history\_date}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{29} + \item \spxentry{history\_date}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{51} + \item \spxentry{history\_date}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{history\_date}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{55} + \item \spxentry{history\_date}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{history\_date}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{42} + \item \spxentry{history\_date}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{44} + \item \spxentry{history\_date}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{17} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{23} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{25} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{27} + \item \spxentry{history\_id}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{29} + \item \spxentry{history\_id}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{history\_id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{history\_id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{55} + \item \spxentry{history\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{history\_id}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{42} + \item \spxentry{history\_id}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{44} + \item \spxentry{history\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{17} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalMenu attribute}, + \hyperpage{19} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{23} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalRefund attribute}, + \hyperpage{27} + \item \spxentry{history\_object}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{29} + \item \spxentry{history\_object}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{history\_object}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{history\_object}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{55} + \item \spxentry{history\_object}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{history\_object}\spxextra{users.models.HistoricalProfile attribute}, + \hyperpage{43} + \item \spxentry{history\_object}\spxextra{users.models.HistoricalSchool attribute}, + \hyperpage{44} + \item \spxentry{history\_object}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{17} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{23} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalRefund attribute}, + \hyperpage{27} + \item \spxentry{history\_type}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{29} + \item \spxentry{history\_type}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{history\_type}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{history\_type}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{55} + \item \spxentry{history\_type}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{history\_type}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{history\_type}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{44} + \item \spxentry{history\_type}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{13} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{17} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{23} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalRefund attribute}, + \hyperpage{27} + \item \spxentry{history\_user}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{29} + \item \spxentry{history\_user}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{history\_user}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{53} + \item \spxentry{history\_user}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{55} + \item \spxentry{history\_user}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{history\_user}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{history\_user}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{44} + \item \spxentry{history\_user}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{11} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalKeg attribute}, + \hyperpage{16} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{18} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalMenu attribute}, + \hyperpage{19} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{23} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalRefund attribute}, + \hyperpage{27} + \item \spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{29} + \item \spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{55} + \item \spxentry{history\_user\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{history\_user\_id}\spxextra{users.models.HistoricalProfile attribute}, + \hyperpage{43} + \item \spxentry{history\_user\_id}\spxextra{users.models.HistoricalSchool attribute}, + \hyperpage{44} + \item \spxentry{history\_user\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{home()}\spxextra{in module coopeV3.views}, \hyperpage{7} + \item \spxentry{home\_text}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{50} + \item \spxentry{home\_text}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{homepage()}\spxextra{in module coopeV3.views}, \hyperpage{7} + + \indexspace + \bigletter I + \item \spxentry{icon}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{icon}\spxextra{preferences.models.PaymentMethod attribute}, \hyperpage{57} + \item \spxentry{id}\spxextra{gestion.models.Consumption attribute}, \hyperpage{9} + \item \spxentry{id}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{id}\spxextra{gestion.models.HistoricalConsumption attribute}, \hyperpage{11} + \item \spxentry{id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{id}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{id}\spxextra{gestion.models.HistoricalKegHistory attribute}, \hyperpage{18} + \item \spxentry{id}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{id}\spxextra{gestion.models.HistoricalMenuHistory attribute}, \hyperpage{21} + \item \spxentry{id}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{23} + \item \spxentry{id}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{25} + \item \spxentry{id}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{27} + \item \spxentry{id}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{29} + \item \spxentry{id}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{id}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{id}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{id}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{id}\spxextra{gestion.models.Pinte attribute}, \hyperpage{34} + \item \spxentry{id}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{id}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{id}\spxextra{gestion.models.Reload attribute}, \hyperpage{38} + \item \spxentry{id}\spxextra{preferences.models.Cotisation attribute}, \hyperpage{50} + \item \spxentry{id}\spxextra{preferences.models.GeneralPreferences attribute}, \hyperpage{50} + \item \spxentry{id}\spxextra{preferences.models.HistoricalCotisation attribute}, \hyperpage{52} + \item \spxentry{id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{id}\spxextra{preferences.models.PaymentMethod attribute}, \hyperpage{57} + \item \spxentry{id}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{id}\spxextra{users.models.HistoricalCotisationHistory attribute}, \hyperpage{41} + \item \spxentry{id}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{id}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{44} + \item \spxentry{id}\spxextra{users.models.HistoricalWhiteListHistory attribute}, \hyperpage{46} + \item \spxentry{id}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{id}\spxextra{users.models.School attribute}, \hyperpage{48} + \item \spxentry{id}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{49} + \item \spxentry{inactive()}\spxextra{in module preferences.views}, \hyperpage{7} + \item \spxentry{index()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{12} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalKegHistory attribute}, \hyperpage{18} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{23} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{25} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{27} + \item \spxentry{instance}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{29} + \item \spxentry{instance}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{instance}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{instance}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{instance}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{instance}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{instance}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{44} + \item \spxentry{instance}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{12} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{18} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{19} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{21} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{23} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalRefund attribute}, + \hyperpage{27} + \item \spxentry{instance\_type}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{29} + \item \spxentry{instance\_type}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{instance\_type}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{instance\_type}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{instance\_type}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{instance\_type}\spxextra{users.models.HistoricalProfile attribute}, + \hyperpage{43} + \item \spxentry{instance\_type}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{45} + \item \spxentry{instance\_type}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{is\_active}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{is\_active}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{20} + \item \spxentry{is\_active}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{25} + \item \spxentry{is\_active}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{is\_active}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{is\_active}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{is\_active}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{50} + \item \spxentry{is\_active}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{is\_active}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{is\_active}\spxextra{preferences.models.PaymentMethod attribute}, \hyperpage{57} + \item \spxentry{is\_adherent}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{is\_usable\_in\_cotisation}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{is\_usable\_in\_cotisation}\spxextra{preferences.models.PaymentMethod attribute}, + \hyperpage{57} + \item \spxentry{is\_usable\_in\_reload}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{is\_usable\_in\_reload}\spxextra{preferences.models.PaymentMethod attribute}, + \hyperpage{57} + \item \spxentry{isCurrentKegHistory}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{18} + \item \spxentry{isCurrentKegHistory}\spxextra{gestion.models.KegHistory attribute}, + \hyperpage{31} + \item \spxentry{isDemi()}\spxextra{in module gestion.models}, \hyperpage{38} + \item \spxentry{isGalopin()}\spxextra{in module gestion.models}, \hyperpage{38} + \item \spxentry{isPinte()}\spxextra{in module gestion.models}, \hyperpage{38} + + \indexspace + \bigletter K + \item \spxentry{Keg}\spxextra{class in gestion.models}, \hyperpage{30} + \item \spxentry{keg}\spxextra{gestion.models.HistoricalKegHistory attribute}, \hyperpage{18} + \item \spxentry{keg}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{Keg.DoesNotExist}, \hyperpage{30} + \item \spxentry{Keg.MultipleObjectsReturned}, \hyperpage{30} + \item \spxentry{keg\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}, \hyperpage{18} + \item \spxentry{keg\_id}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{KegActiveAutocomplete}\spxextra{class in gestion.views}, \hyperpage{1} + \item \spxentry{KegAdmin}\spxextra{class in gestion.admin}, \hyperpage{59} + \item \spxentry{KegForm}\spxextra{class in gestion.forms}, \hyperpage{63} + \item \spxentry{KegForm.Meta}\spxextra{class in gestion.forms}, \hyperpage{63} + \item \spxentry{kegH()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{KegHistory}\spxextra{class in gestion.models}, \hyperpage{31} + \item \spxentry{KegHistory.DoesNotExist}, \hyperpage{31} + \item \spxentry{KegHistory.MultipleObjectsReturned}, \hyperpage{31} + \item \spxentry{keghistory\_set}\spxextra{gestion.models.Keg attribute}, \hyperpage{30} + \item \spxentry{KegHistoryAdmin}\spxextra{class in gestion.admin}, \hyperpage{59} + \item \spxentry{KegPositiveAutocomplete}\spxextra{class in gestion.views}, \hyperpage{1} + \item \spxentry{kegsList()}\spxextra{in module gestion.views}, \hyperpage{2} + + \indexspace + \bigletter L + \item \spxentry{last\_update\_date}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{23} + \item \spxentry{last\_update\_date}\spxextra{gestion.models.Pinte attribute}, \hyperpage{34} + \item \spxentry{list\_display}\spxextra{gestion.admin.ConsumptionAdmin attribute}, \hyperpage{59} + \item \spxentry{list\_display}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}, + \hyperpage{59} + \item \spxentry{list\_display}\spxextra{gestion.admin.KegAdmin attribute}, \hyperpage{59} + \item \spxentry{list\_display}\spxextra{gestion.admin.KegHistoryAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_display}\spxextra{gestion.admin.MenuAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_display}\spxextra{gestion.admin.MenuHistoryAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_display}\spxextra{gestion.admin.ProductAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_display}\spxextra{gestion.admin.RefundAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_display}\spxextra{gestion.admin.ReloadAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_display}\spxextra{preferences.admin.CotisationAdmin attribute}, + \hyperpage{61} + \item \spxentry{list\_display}\spxextra{preferences.admin.GeneralPreferencesAdmin attribute}, + \hyperpage{62} + \item \spxentry{list\_display}\spxextra{preferences.admin.PaymentMethodAdmin attribute}, + \hyperpage{62} + \item \spxentry{list\_display}\spxextra{users.admin.CotisationHistoryAdmin attribute}, + \hyperpage{61} + \item \spxentry{list\_display}\spxextra{users.admin.ProfileAdmin attribute}, \hyperpage{61} + \item \spxentry{list\_display}\spxextra{users.admin.WhiteListHistoryAdmin attribute}, + \hyperpage{61} + \item \spxentry{list\_filter}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}, + \hyperpage{59} + \item \spxentry{list\_filter}\spxextra{gestion.admin.KegAdmin attribute}, \hyperpage{59} + \item \spxentry{list\_filter}\spxextra{gestion.admin.KegHistoryAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_filter}\spxextra{gestion.admin.MenuAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_filter}\spxextra{gestion.admin.ProductAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_filter}\spxextra{gestion.admin.ReloadAdmin attribute}, \hyperpage{60} + \item \spxentry{list\_filter}\spxextra{preferences.admin.PaymentMethodAdmin attribute}, + \hyperpage{62} + \item \spxentry{list\_filter}\spxextra{users.admin.CotisationHistoryAdmin attribute}, + \hyperpage{61} + \item \spxentry{list\_filter}\spxextra{users.admin.ProfileAdmin attribute}, \hyperpage{61} + \item \spxentry{LoginForm}\spxextra{class in users.forms}, \hyperpage{68} + \item \spxentry{loginView()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{logout\_time()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{73} + \item \spxentry{logoutView()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{lookups()}\spxextra{users.admin.BalanceFilter method}, \hyperpage{61} + \item \spxentry{lost\_pintes\_allowed}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{51} + \item \spxentry{lost\_pintes\_allowed}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + + \indexspace + \bigletter M + \item \spxentry{manage()}\spxextra{in module gestion.views}, \hyperpage{2} + \item \spxentry{media}\spxextra{gestion.admin.ConsumptionAdmin attribute}, \hyperpage{59} + \item \spxentry{media}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}, \hyperpage{59} + \item \spxentry{media}\spxextra{gestion.admin.KegAdmin attribute}, \hyperpage{59} + \item \spxentry{media}\spxextra{gestion.admin.KegHistoryAdmin attribute}, \hyperpage{60} + \item \spxentry{media}\spxextra{gestion.admin.MenuAdmin attribute}, \hyperpage{60} + \item \spxentry{media}\spxextra{gestion.admin.MenuHistoryAdmin attribute}, \hyperpage{60} + \item \spxentry{media}\spxextra{gestion.admin.ProductAdmin attribute}, \hyperpage{60} + \item \spxentry{media}\spxextra{gestion.admin.RefundAdmin attribute}, \hyperpage{60} + \item \spxentry{media}\spxextra{gestion.admin.ReloadAdmin attribute}, \hyperpage{60} + \item \spxentry{media}\spxextra{gestion.forms.GenerateReleveForm attribute}, \hyperpage{63} + \item \spxentry{media}\spxextra{gestion.forms.GestionForm attribute}, \hyperpage{63} + \item \spxentry{media}\spxextra{gestion.forms.KegForm attribute}, \hyperpage{64} + \item \spxentry{media}\spxextra{gestion.forms.MenuForm attribute}, \hyperpage{64} + \item \spxentry{media}\spxextra{gestion.forms.PinteForm attribute}, \hyperpage{64} + \item \spxentry{media}\spxextra{gestion.forms.ProductForm attribute}, \hyperpage{64} + \item \spxentry{media}\spxextra{gestion.forms.RefundForm attribute}, \hyperpage{65} + \item \spxentry{media}\spxextra{gestion.forms.ReloadForm attribute}, \hyperpage{65} + \item \spxentry{media}\spxextra{gestion.forms.SearchMenuForm attribute}, \hyperpage{65} + \item \spxentry{media}\spxextra{gestion.forms.SearchProductForm attribute}, \hyperpage{65} + \item \spxentry{media}\spxextra{gestion.forms.SelectActiveKegForm attribute}, \hyperpage{66} + \item \spxentry{media}\spxextra{gestion.forms.SelectPositiveKegForm attribute}, \hyperpage{66} + \item \spxentry{media}\spxextra{preferences.admin.CotisationAdmin attribute}, \hyperpage{61} + \item \spxentry{media}\spxextra{preferences.admin.GeneralPreferencesAdmin attribute}, + \hyperpage{62} + \item \spxentry{media}\spxextra{preferences.admin.PaymentMethodAdmin attribute}, \hyperpage{62} + \item \spxentry{media}\spxextra{preferences.forms.CotisationForm attribute}, \hyperpage{70} + \item \spxentry{media}\spxextra{preferences.forms.GeneralPreferencesForm attribute}, + \hyperpage{70} + \item \spxentry{media}\spxextra{preferences.forms.PaymentMethodForm attribute}, \hyperpage{71} + \item \spxentry{media}\spxextra{users.admin.CotisationHistoryAdmin attribute}, \hyperpage{61} + \item \spxentry{media}\spxextra{users.admin.ProfileAdmin attribute}, \hyperpage{61} + \item \spxentry{media}\spxextra{users.admin.WhiteListHistoryAdmin attribute}, \hyperpage{61} + \item \spxentry{media}\spxextra{users.forms.addCotisationHistoryForm attribute}, \hyperpage{69} + \item \spxentry{media}\spxextra{users.forms.addWhiteListHistoryForm attribute}, \hyperpage{70} + \item \spxentry{media}\spxextra{users.forms.CreateGroupForm attribute}, \hyperpage{66} + \item \spxentry{media}\spxextra{users.forms.CreateUserForm attribute}, \hyperpage{67} + \item \spxentry{media}\spxextra{users.forms.EditGroupForm attribute}, \hyperpage{67} + \item \spxentry{media}\spxextra{users.forms.EditPasswordForm attribute}, \hyperpage{67} + \item \spxentry{media}\spxextra{users.forms.ExportForm attribute}, \hyperpage{67} + \item \spxentry{media}\spxextra{users.forms.GroupsEditForm attribute}, \hyperpage{68} + \item \spxentry{media}\spxextra{users.forms.LoginForm attribute}, \hyperpage{68} + \item \spxentry{media}\spxextra{users.forms.SchoolForm attribute}, \hyperpage{68} + \item \spxentry{media}\spxextra{users.forms.SelectNonAdminUserForm attribute}, \hyperpage{68} + \item \spxentry{media}\spxextra{users.forms.SelectNonSuperUserForm attribute}, \hyperpage{69} + \item \spxentry{media}\spxextra{users.forms.SelectUserForm attribute}, \hyperpage{69} + \item \spxentry{Menu}\spxextra{class in gestion.models}, \hyperpage{32} + \item \spxentry{menu}\spxextra{gestion.models.HistoricalMenuHistory attribute}, \hyperpage{21} + \item \spxentry{menu}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{menu}\spxextra{preferences.models.GeneralPreferences attribute}, \hyperpage{51} + \item \spxentry{menu}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{menu()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{73} + \item \spxentry{Menu.DoesNotExist}, \hyperpage{32} + \item \spxentry{Menu.MultipleObjectsReturned}, \hyperpage{32} + \item \spxentry{menu\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{22} + \item \spxentry{menu\_id}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{menu\_set}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{MenuAdmin}\spxextra{class in gestion.admin}, \hyperpage{60} + \item \spxentry{MenuForm}\spxextra{class in gestion.forms}, \hyperpage{64} + \item \spxentry{MenuForm.Meta}\spxextra{class in gestion.forms}, \hyperpage{64} + \item \spxentry{MenuHistory}\spxextra{class in gestion.models}, \hyperpage{32} + \item \spxentry{MenuHistory.DoesNotExist}, \hyperpage{32} + \item \spxentry{MenuHistory.MultipleObjectsReturned}, \hyperpage{32} + \item \spxentry{menuhistory\_set}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{menuhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}, + \hyperpage{57} + \item \spxentry{MenuHistoryAdmin}\spxextra{class in gestion.admin}, \hyperpage{60} + \item \spxentry{menus\_list()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{MenusAutocomplete}\spxextra{class in gestion.views}, \hyperpage{1} + \item \spxentry{model}\spxextra{gestion.forms.KegForm.Meta attribute}, \hyperpage{63} + \item \spxentry{model}\spxextra{gestion.forms.MenuForm.Meta attribute}, \hyperpage{64} + \item \spxentry{model}\spxextra{gestion.forms.ProductForm.Meta attribute}, \hyperpage{64} + \item \spxentry{model}\spxextra{gestion.forms.RefundForm.Meta attribute}, \hyperpage{65} + \item \spxentry{model}\spxextra{gestion.forms.ReloadForm.Meta attribute}, \hyperpage{65} + \item \spxentry{model}\spxextra{preferences.forms.CotisationForm.Meta attribute}, \hyperpage{70} + \item \spxentry{model}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}, + \hyperpage{70} + \item \spxentry{model}\spxextra{preferences.forms.PaymentMethodForm.Meta attribute}, + \hyperpage{71} + \item \spxentry{model}\spxextra{users.forms.addCotisationHistoryForm.Meta attribute}, + \hyperpage{69} + \item \spxentry{model}\spxextra{users.forms.addWhiteListHistoryForm.Meta attribute}, + \hyperpage{69} + \item \spxentry{model}\spxextra{users.forms.CreateGroupForm.Meta attribute}, \hyperpage{66} + \item \spxentry{model}\spxextra{users.forms.CreateUserForm.Meta attribute}, \hyperpage{67} + \item \spxentry{model}\spxextra{users.forms.EditGroupForm.Meta attribute}, \hyperpage{67} + \item \spxentry{model}\spxextra{users.forms.GroupsEditForm.Meta attribute}, \hyperpage{68} + \item \spxentry{model}\spxextra{users.forms.SchoolForm.Meta attribute}, \hyperpage{68} + + \indexspace + \bigletter N + \item \spxentry{name}\spxextra{django\_tex.models.TeXTemplateFile attribute}, \hyperpage{76} + \item \spxentry{name}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{name}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{20} + \item \spxentry{name}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{25} + \item \spxentry{name}\spxextra{gestion.models.Keg attribute}, \hyperpage{31} + \item \spxentry{name}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{name}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{name}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{name}\spxextra{preferences.models.PaymentMethod attribute}, \hyperpage{57} + \item \spxentry{name}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{45} + \item \spxentry{name}\spxextra{users.models.School attribute}, \hyperpage{48} + \item \spxentry{nb\_pintes}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{needQuantityButton}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{needQuantityButton}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{12} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{18} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{20} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{22} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{24} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{25} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{27} + \item \spxentry{next\_record}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{30} + \item \spxentry{next\_record}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{next\_record}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{next\_record}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{next\_record}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{next\_record}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{next\_record}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{45} + \item \spxentry{next\_record}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{NonAdminUserAutocomplete}\spxextra{class in users.views}, \hyperpage{4} + \item \spxentry{NonSuperUserAutocomplete}\spxextra{class in users.views}, \hyperpage{4} + + \indexspace + \bigletter O + \item \spxentry{objects}\spxextra{gestion.models.Consumption attribute}, \hyperpage{9} + \item \spxentry{objects}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalConsumption attribute}, \hyperpage{12} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalKegHistory attribute}, \hyperpage{18} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{20} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalMenuHistory attribute}, \hyperpage{22} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{24} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{25} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{28} + \item \spxentry{objects}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{30} + \item \spxentry{objects}\spxextra{gestion.models.Keg attribute}, \hyperpage{31} + \item \spxentry{objects}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{objects}\spxextra{gestion.models.Menu attribute}, \hyperpage{32} + \item \spxentry{objects}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{objects}\spxextra{gestion.models.Pinte attribute}, \hyperpage{34} + \item \spxentry{objects}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{objects}\spxextra{gestion.models.Refund attribute}, \hyperpage{37} + \item \spxentry{objects}\spxextra{gestion.models.Reload attribute}, \hyperpage{38} + \item \spxentry{objects}\spxextra{preferences.models.Cotisation attribute}, \hyperpage{50} + \item \spxentry{objects}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{51} + \item \spxentry{objects}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{objects}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{objects}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{objects}\spxextra{preferences.models.PaymentMethod attribute}, \hyperpage{57} + \item \spxentry{objects}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{objects}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{objects}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{objects}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{45} + \item \spxentry{objects}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{objects}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{objects}\spxextra{users.models.School attribute}, \hyperpage{48} + \item \spxentry{objects}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{49} + \item \spxentry{openDirectKeg()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{openingDate}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{18} + \item \spxentry{openingDate}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{openKeg()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{order()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{ordering}\spxextra{gestion.admin.ConsumptionAdmin attribute}, \hyperpage{59} + \item \spxentry{ordering}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}, + \hyperpage{59} + \item \spxentry{ordering}\spxextra{gestion.admin.KegAdmin attribute}, \hyperpage{59} + \item \spxentry{ordering}\spxextra{gestion.admin.KegHistoryAdmin attribute}, \hyperpage{60} + \item \spxentry{ordering}\spxextra{gestion.admin.MenuAdmin attribute}, \hyperpage{60} + \item \spxentry{ordering}\spxextra{gestion.admin.MenuHistoryAdmin attribute}, \hyperpage{60} + \item \spxentry{ordering}\spxextra{gestion.admin.ProductAdmin attribute}, \hyperpage{60} + \item \spxentry{ordering}\spxextra{gestion.admin.RefundAdmin attribute}, \hyperpage{60} + \item \spxentry{ordering}\spxextra{gestion.admin.ReloadAdmin attribute}, \hyperpage{60} + \item \spxentry{ordering}\spxextra{preferences.admin.CotisationAdmin attribute}, \hyperpage{62} + \item \spxentry{ordering}\spxextra{preferences.admin.PaymentMethodAdmin attribute}, + \hyperpage{62} + \item \spxentry{ordering}\spxextra{users.admin.CotisationHistoryAdmin attribute}, \hyperpage{61} + \item \spxentry{ordering}\spxextra{users.admin.ProfileAdmin attribute}, \hyperpage{61} + \item \spxentry{ordering}\spxextra{users.admin.WhiteListHistoryAdmin attribute}, \hyperpage{61} + + \indexspace + \bigletter P + \item \spxentry{P\_PRESSION}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{PANINI}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{parameter\_name}\spxextra{users.admin.BalanceFilter attribute}, \hyperpage{61} + \item \spxentry{paymentDate}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{paymentDate}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{paymentDate}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{paymentDate}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{49} + \item \spxentry{PaymentMethod}\spxextra{class in preferences.models}, \hyperpage{56} + \item \spxentry{paymentMethod}\spxextra{gestion.models.ConsumptionHistory attribute}, + \hyperpage{10} + \item \spxentry{paymentMethod}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{paymentMethod}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{22} + \item \spxentry{PaymentMethod}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{28} + \item \spxentry{paymentMethod}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{PaymentMethod}\spxextra{gestion.models.Reload attribute}, \hyperpage{37} + \item \spxentry{paymentMethod}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{paymentMethod}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{PaymentMethod.DoesNotExist}, \hyperpage{56} + \item \spxentry{PaymentMethod.MultipleObjectsReturned}, \hyperpage{56} + \item \spxentry{paymentMethod\_id}\spxextra{gestion.models.ConsumptionHistory attribute}, + \hyperpage{10} + \item \spxentry{paymentMethod\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{paymentMethod\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{22} + \item \spxentry{PaymentMethod\_id}\spxextra{gestion.models.HistoricalReload attribute}, + \hyperpage{28} + \item \spxentry{paymentMethod\_id}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{PaymentMethod\_id}\spxextra{gestion.models.Reload attribute}, \hyperpage{37} + \item \spxentry{paymentMethod\_id}\spxextra{users.models.CotisationHistory attribute}, + \hyperpage{39} + \item \spxentry{paymentMethod\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{41} + \item \spxentry{PaymentMethodAdmin}\spxextra{class in preferences.admin}, \hyperpage{62} + \item \spxentry{PaymentMethodForm}\spxextra{class in preferences.forms}, \hyperpage{70} + \item \spxentry{PaymentMethodForm.Meta}\spxextra{class in preferences.forms}, \hyperpage{70} + \item \spxentry{paymentMethodsIndex()}\spxextra{in module preferences.views}, \hyperpage{7} + \item \spxentry{PDFResponse}\spxextra{class in django\_tex.views}, \hyperpage{76} + \item \spxentry{Pinte}\spxextra{class in gestion.models}, \hyperpage{33} + \item \spxentry{pinte}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{pinte}\spxextra{gestion.models.Keg attribute}, \hyperpage{31} + \item \spxentry{Pinte.DoesNotExist}, \hyperpage{33} + \item \spxentry{Pinte.MultipleObjectsReturned}, \hyperpage{34} + \item \spxentry{pinte\_id}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{16} + \item \spxentry{pinte\_id}\spxextra{gestion.models.Keg attribute}, \hyperpage{31} + \item \spxentry{PinteForm}\spxextra{class in gestion.forms}, \hyperpage{64} + \item \spxentry{pintes\_list()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{pintes\_user\_list()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{positiveBalance()}\spxextra{users.models.Profile method}, \hyperpage{47} + \item \spxentry{preferences.admin}\spxextra{module}, \hyperpage{61} + \item \spxentry{preferences.forms}\spxextra{module}, \hyperpage{70} + \item \spxentry{preferences.models}\spxextra{module}, \hyperpage{49} + \item \spxentry{preferences.views}\spxextra{module}, \hyperpage{6} + \item \spxentry{president}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{51} + \item \spxentry{president}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{president()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{74} + \item \spxentry{prettify\_message()}\spxextra{in module django\_tex.exceptions}, \hyperpage{75} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{12} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{17} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{18} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalMenu attribute}, \hyperpage{20} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{22} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalPinte attribute}, \hyperpage{24} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{26} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalRefund attribute}, \hyperpage{28} + \item \spxentry{prev\_record}\spxextra{gestion.models.HistoricalReload attribute}, \hyperpage{30} + \item \spxentry{prev\_record}\spxextra{preferences.models.HistoricalCotisation attribute}, + \hyperpage{52} + \item \spxentry{prev\_record}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{prev\_record}\spxextra{preferences.models.HistoricalPaymentMethod attribute}, + \hyperpage{56} + \item \spxentry{prev\_record}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{42} + \item \spxentry{prev\_record}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{prev\_record}\spxextra{users.models.HistoricalSchool attribute}, \hyperpage{45} + \item \spxentry{prev\_record}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{46} + \item \spxentry{previous\_owner}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{24} + \item \spxentry{previous\_owner}\spxextra{gestion.models.Pinte attribute}, \hyperpage{34} + \item \spxentry{previous\_owner\_id}\spxextra{gestion.models.HistoricalPinte attribute}, + \hyperpage{24} + \item \spxentry{previous\_owner\_id}\spxextra{gestion.models.Pinte attribute}, \hyperpage{34} + \item \spxentry{Product}\spxextra{class in gestion.models}, \hyperpage{34} + \item \spxentry{product}\spxextra{gestion.models.Consumption attribute}, \hyperpage{9} + \item \spxentry{product}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{product}\spxextra{gestion.models.HistoricalConsumption attribute}, \hyperpage{12} + \item \spxentry{product}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{Product.DoesNotExist}, \hyperpage{34} + \item \spxentry{Product.MultipleObjectsReturned}, \hyperpage{34} + \item \spxentry{product\_id}\spxextra{gestion.models.Consumption attribute}, \hyperpage{9} + \item \spxentry{product\_id}\spxextra{gestion.models.ConsumptionHistory attribute}, + \hyperpage{10} + \item \spxentry{product\_id}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{12} + \item \spxentry{product\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{ProductAdmin}\spxextra{class in gestion.admin}, \hyperpage{60} + \item \spxentry{ProductForm}\spxextra{class in gestion.forms}, \hyperpage{64} + \item \spxentry{ProductForm.Meta}\spxextra{class in gestion.forms}, \hyperpage{64} + \item \spxentry{productProfile()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{ProductsAutocomplete}\spxextra{class in gestion.views}, \hyperpage{1} + \item \spxentry{productsIndex()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{productsList()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{Profile}\spxextra{class in users.models}, \hyperpage{47} + \item \spxentry{profile()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{Profile.DoesNotExist}, \hyperpage{47} + \item \spxentry{Profile.MultipleObjectsReturned}, \hyperpage{47} + \item \spxentry{profile\_set}\spxextra{users.models.School attribute}, \hyperpage{48} + \item \spxentry{ProfileAdmin}\spxextra{class in users.admin}, \hyperpage{61} + + \indexspace + \bigletter Q + \item \spxentry{quantity}\spxextra{gestion.models.Consumption attribute}, \hyperpage{9} + \item \spxentry{quantity}\spxextra{gestion.models.ConsumptionHistory attribute}, \hyperpage{10} + \item \spxentry{quantity}\spxextra{gestion.models.HistoricalConsumption attribute}, + \hyperpage{12} + \item \spxentry{quantity}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}, + \hyperpage{14} + \item \spxentry{quantity}\spxextra{gestion.models.HistoricalMenuHistory attribute}, + \hyperpage{22} + \item \spxentry{quantity}\spxextra{gestion.models.MenuHistory attribute}, \hyperpage{33} + \item \spxentry{quantitySold}\spxextra{gestion.models.HistoricalKegHistory attribute}, + \hyperpage{18} + \item \spxentry{quantitySold}\spxextra{gestion.models.KegHistory attribute}, \hyperpage{31} + \item \spxentry{QUERY\_TYPE\_CHOICES}\spxextra{users.forms.ExportForm attribute}, \hyperpage{67} + \item \spxentry{queryset()}\spxextra{users.admin.BalanceFilter method}, \hyperpage{61} + + \indexspace + \bigletter R + \item \spxentry{random\_filter()}\spxextra{in module users.templatetags.users\_extra}, + \hyperpage{74} + \item \spxentry{rank}\spxextra{users.models.Profile attribute}, \hyperpage{47} + \item \spxentry{ranking}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{ranking()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{Refund}\spxextra{class in gestion.models}, \hyperpage{37} + \item \spxentry{refund()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{Refund.DoesNotExist}, \hyperpage{37} + \item \spxentry{Refund.MultipleObjectsReturned}, \hyperpage{37} + \item \spxentry{RefundAdmin}\spxextra{class in gestion.admin}, \hyperpage{60} + \item \spxentry{RefundForm}\spxextra{class in gestion.forms}, \hyperpage{65} + \item \spxentry{RefundForm.Meta}\spxextra{class in gestion.forms}, \hyperpage{65} + \item \spxentry{release()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{release\_pintes()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{Reload}\spxextra{class in gestion.models}, \hyperpage{37} + \item \spxentry{reload()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{Reload.DoesNotExist}, \hyperpage{37} + \item \spxentry{Reload.MultipleObjectsReturned}, \hyperpage{37} + \item \spxentry{reload\_set}\spxextra{preferences.models.PaymentMethod attribute}, \hyperpage{57} + \item \spxentry{ReloadAdmin}\spxextra{class in gestion.admin}, \hyperpage{60} + \item \spxentry{ReloadForm}\spxextra{class in gestion.forms}, \hyperpage{65} + \item \spxentry{ReloadForm.Meta}\spxextra{class in gestion.forms}, \hyperpage{65} + \item \spxentry{removeAdmin()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{removeRight()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{removeSuperuser()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{removeUser()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{render\_template\_with\_context()}\spxextra{in module django\_tex.core}, + \hyperpage{75} + \item \spxentry{render\_to\_pdf()}\spxextra{in module django\_tex.views}, \hyperpage{76} + \item \spxentry{resetPassword()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalConsumption method}, + \hyperpage{12} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalConsumptionHistory method}, + \hyperpage{14} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalKeg method}, \hyperpage{17} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalKegHistory method}, + \hyperpage{18} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalMenu method}, \hyperpage{20} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalMenuHistory method}, + \hyperpage{22} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalPinte method}, \hyperpage{24} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalProduct method}, \hyperpage{26} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalRefund method}, \hyperpage{28} + \item \spxentry{revert\_url()}\spxextra{gestion.models.HistoricalReload method}, \hyperpage{30} + \item \spxentry{revert\_url()}\spxextra{preferences.models.HistoricalCotisation method}, + \hyperpage{52} + \item \spxentry{revert\_url()}\spxextra{preferences.models.HistoricalGeneralPreferences method}, + \hyperpage{54} + \item \spxentry{revert\_url()}\spxextra{preferences.models.HistoricalPaymentMethod method}, + \hyperpage{56} + \item \spxentry{revert\_url()}\spxextra{users.models.HistoricalCotisationHistory method}, + \hyperpage{42} + \item \spxentry{revert\_url()}\spxextra{users.models.HistoricalProfile method}, \hyperpage{43} + \item \spxentry{revert\_url()}\spxextra{users.models.HistoricalSchool method}, \hyperpage{45} + \item \spxentry{revert\_url()}\spxextra{users.models.HistoricalWhiteListHistory method}, + \hyperpage{46} + \item \spxentry{rules}\spxextra{preferences.models.GeneralPreferences attribute}, \hyperpage{51} + \item \spxentry{rules}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{rules()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{74} + \item \spxentry{run\_tex()}\spxextra{in module django\_tex.core}, \hyperpage{75} + + \indexspace + \bigletter S + \item \spxentry{save\_user\_profile()}\spxextra{in module users.models}, \hyperpage{49} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Consumption method}, + \hyperpage{9} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.ConsumptionHistory method}, + \hyperpage{10} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Keg method}, + \hyperpage{31} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.KegHistory method}, + \hyperpage{31} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Menu method}, + \hyperpage{32} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.MenuHistory method}, + \hyperpage{33} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Pinte method}, + \hyperpage{34} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Product method}, + \hyperpage{36} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Refund method}, + \hyperpage{37} + \item \spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Reload method}, + \hyperpage{38} + \item \spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.Cotisation method}, + \hyperpage{50} + \item \spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.GeneralPreferences method}, + \hyperpage{51} + \item \spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.PaymentMethod method}, + \hyperpage{58} + \item \spxentry{save\_without\_historical\_record()}\spxextra{users.models.CotisationHistory method}, + \hyperpage{39} + \item \spxentry{save\_without\_historical\_record()}\spxextra{users.models.Profile method}, + \hyperpage{47} + \item \spxentry{save\_without\_historical\_record()}\spxextra{users.models.School method}, + \hyperpage{48} + \item \spxentry{save\_without\_historical\_record()}\spxextra{users.models.WhiteListHistory method}, + \hyperpage{49} + \item \spxentry{School}\spxextra{class in users.models}, \hyperpage{48} + \item \spxentry{school}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{school}\spxextra{users.models.Profile attribute}, \hyperpage{48} + \item \spxentry{School.DoesNotExist}, \hyperpage{48} + \item \spxentry{School.MultipleObjectsReturned}, \hyperpage{48} + \item \spxentry{school\_id}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{school\_id}\spxextra{users.models.Profile attribute}, \hyperpage{48} + \item \spxentry{SchoolForm}\spxextra{class in users.forms}, \hyperpage{68} + \item \spxentry{SchoolForm.Meta}\spxextra{class in users.forms}, \hyperpage{68} + \item \spxentry{schoolsIndex()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{search\_fields}\spxextra{gestion.admin.ConsumptionAdmin attribute}, + \hyperpage{59} + \item \spxentry{search\_fields}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}, + \hyperpage{59} + \item \spxentry{search\_fields}\spxextra{gestion.admin.KegAdmin attribute}, \hyperpage{59} + \item \spxentry{search\_fields}\spxextra{gestion.admin.KegHistoryAdmin attribute}, \hyperpage{60} + \item \spxentry{search\_fields}\spxextra{gestion.admin.MenuAdmin attribute}, \hyperpage{60} + \item \spxentry{search\_fields}\spxextra{gestion.admin.MenuHistoryAdmin attribute}, + \hyperpage{60} + \item \spxentry{search\_fields}\spxextra{gestion.admin.ProductAdmin attribute}, \hyperpage{60} + \item \spxentry{search\_fields}\spxextra{gestion.admin.RefundAdmin attribute}, \hyperpage{60} + \item \spxentry{search\_fields}\spxextra{gestion.admin.ReloadAdmin attribute}, \hyperpage{61} + \item \spxentry{search\_fields}\spxextra{preferences.admin.PaymentMethodAdmin attribute}, + \hyperpage{62} + \item \spxentry{search\_fields}\spxextra{users.admin.CotisationHistoryAdmin attribute}, + \hyperpage{61} + \item \spxentry{search\_fields}\spxextra{users.admin.ProfileAdmin attribute}, \hyperpage{61} + \item \spxentry{search\_fields}\spxextra{users.admin.WhiteListHistoryAdmin attribute}, + \hyperpage{61} + \item \spxentry{searchMenu()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{SearchMenuForm}\spxextra{class in gestion.forms}, \hyperpage{65} + \item \spxentry{searchProduct()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{SearchProductForm}\spxextra{class in gestion.forms}, \hyperpage{65} + \item \spxentry{searchUser()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{secretary}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{51} + \item \spxentry{secretary}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{secretary()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{74} + \item \spxentry{SelectActiveKegForm}\spxextra{class in gestion.forms}, \hyperpage{66} + \item \spxentry{SelectNonAdminUserForm}\spxextra{class in users.forms}, \hyperpage{68} + \item \spxentry{SelectNonSuperUserForm}\spxextra{class in users.forms}, \hyperpage{69} + \item \spxentry{SelectPositiveKegForm}\spxextra{class in gestion.forms}, \hyperpage{66} + \item \spxentry{SelectUserForm}\spxextra{class in users.forms}, \hyperpage{69} + \item \spxentry{self\_or\_has\_perm()}\spxextra{in module coopeV3.acl}, \hyperpage{73} + \item \spxentry{showingMultiplier}\spxextra{gestion.models.HistoricalProduct attribute}, + \hyperpage{26} + \item \spxentry{showingMultiplier}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{SOFT}\spxextra{gestion.models.Product attribute}, \hyperpage{34} + \item \spxentry{statutes}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{51} + \item \spxentry{statutes}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{statutes()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{74} + \item \spxentry{stockBar}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{26} + \item \spxentry{stockBar}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{stockHold}\spxextra{gestion.models.HistoricalKeg attribute}, \hyperpage{17} + \item \spxentry{stockHold}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{26} + \item \spxentry{stockHold}\spxextra{gestion.models.Keg attribute}, \hyperpage{31} + \item \spxentry{stockHold}\spxextra{gestion.models.Product attribute}, \hyperpage{36} + \item \spxentry{str\_user()}\spxextra{in module users.models}, \hyperpage{49} + \item \spxentry{superuser\_required()}\spxextra{in module coopeV3.acl}, \hyperpage{73} + \item \spxentry{superusersIndex()}\spxextra{in module users.views}, \hyperpage{6} + \item \spxentry{switch\_activate()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{switch\_activate\_menu()}\spxextra{in module gestion.views}, \hyperpage{3} + \item \spxentry{switch\_activate\_user()}\spxextra{in module users.views}, \hyperpage{6} + + \indexspace + \bigletter T + \item \spxentry{TeXEngine}\spxextra{class in django\_tex.engine}, \hyperpage{75} + \item \spxentry{TexError}, \hyperpage{75} + \item \spxentry{TeXTemplateFile}\spxextra{class in django\_tex.models}, \hyperpage{76} + \item \spxentry{TeXTemplateFile.Meta}\spxextra{class in django\_tex.models}, \hyperpage{76} + \item \spxentry{title}\spxextra{django\_tex.models.TeXTemplateFile attribute}, \hyperpage{76} + \item \spxentry{title}\spxextra{users.admin.BalanceFilter attribute}, \hyperpage{61} + \item \spxentry{tokenizer()}\spxextra{in module django\_tex.exceptions}, \hyperpage{76} + \item \spxentry{treasurer}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{51} + \item \spxentry{treasurer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{treasurer()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{74} + \item \spxentry{TYPEINPUT\_CHOICES\_CATEGORIE}\spxextra{gestion.models.Product attribute}, + \hyperpage{34} + + \indexspace + \bigletter U + \item \spxentry{use\_pinte\_monitoring}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{51} + \item \spxentry{use\_pinte\_monitoring}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{54} + \item \spxentry{user}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{user}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{42} + \item \spxentry{user}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{43} + \item \spxentry{user}\spxextra{users.models.HistoricalWhiteListHistory attribute}, \hyperpage{47} + \item \spxentry{user}\spxextra{users.models.Profile attribute}, \hyperpage{48} + \item \spxentry{user}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{49} + \item \spxentry{user\_id}\spxextra{users.models.CotisationHistory attribute}, \hyperpage{39} + \item \spxentry{user\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}, + \hyperpage{42} + \item \spxentry{user\_id}\spxextra{users.models.HistoricalProfile attribute}, \hyperpage{44} + \item \spxentry{user\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}, + \hyperpage{47} + \item \spxentry{user\_id}\spxextra{users.models.Profile attribute}, \hyperpage{48} + \item \spxentry{user\_id}\spxextra{users.models.WhiteListHistory attribute}, \hyperpage{49} + \item \spxentry{user\_ranking()}\spxextra{gestion.models.Product method}, \hyperpage{36} + \item \spxentry{users.admin}\spxextra{module}, \hyperpage{61} + \item \spxentry{users.forms}\spxextra{module}, \hyperpage{66} + \item \spxentry{users.models}\spxextra{module}, \hyperpage{38} + \item \spxentry{users.templatetags.users\_extra}\spxextra{module}, \hyperpage{74} + \item \spxentry{users.views}\spxextra{module}, \hyperpage{4} + \item \spxentry{usersIndex()}\spxextra{in module users.views}, \hyperpage{6} + + \indexspace + \bigletter V + \item \spxentry{validate\_template\_path()}\spxextra{in module django\_tex.models}, + \hyperpage{76} + \item \spxentry{vice\_president}\spxextra{preferences.models.GeneralPreferences attribute}, + \hyperpage{51} + \item \spxentry{vice\_president}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}, + \hyperpage{55} + \item \spxentry{vice\_president()}\spxextra{in module coopeV3.templatetags.vip}, \hyperpage{74} + \item \spxentry{volume}\spxextra{gestion.models.HistoricalProduct attribute}, \hyperpage{26} + \item \spxentry{volume}\spxextra{gestion.models.Product attribute}, \hyperpage{37} + + \indexspace + \bigletter W + \item \spxentry{WhiteListHistory}\spxextra{class in users.models}, \hyperpage{48} + \item \spxentry{WhiteListHistory.DoesNotExist}, \hyperpage{48} + \item \spxentry{WhiteListHistory.MultipleObjectsReturned}, \hyperpage{48} + \item \spxentry{WhiteListHistoryAdmin}\spxextra{class in users.admin}, \hyperpage{61} + \item \spxentry{widgets}\spxextra{gestion.forms.KegForm.Meta attribute}, \hyperpage{64} + \item \spxentry{widgets}\spxextra{gestion.forms.MenuForm.Meta attribute}, \hyperpage{64} + \item \spxentry{widgets}\spxextra{gestion.forms.ProductForm.Meta attribute}, \hyperpage{64} + \item \spxentry{widgets}\spxextra{gestion.forms.RefundForm.Meta attribute}, \hyperpage{65} + \item \spxentry{widgets}\spxextra{gestion.forms.ReloadForm.Meta attribute}, \hyperpage{65} + \item \spxentry{widgets}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}, + \hyperpage{70} + +\end{sphinxtheindex} diff --git a/docs/_build/latex/CoopeV3.out b/docs/_build/latex/CoopeV3.out new file mode 100644 index 0000000..c3b4c0d --- /dev/null +++ b/docs/_build/latex/CoopeV3.out @@ -0,0 +1,32 @@ +\BOOKMARK [0][-]{chapter.1}{\376\377\000V\000i\000e\000w\000s\000\040\000d\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 1 +\BOOKMARK [1][-]{section.1.1}{\376\377\000G\000e\000s\000t\000i\000o\000n\000\040\000a\000p\000p\000\040\000v\000i\000e\000w\000s}{chapter.1}% 2 +\BOOKMARK [1][-]{section.1.2}{\376\377\000U\000s\000e\000r\000s\000\040\000a\000p\000p\000\040\000v\000i\000e\000w\000s}{chapter.1}% 3 +\BOOKMARK [1][-]{section.1.3}{\376\377\000P\000r\000e\000f\000e\000r\000e\000n\000c\000e\000s\000\040\000a\000p\000p\000\040\000v\000i\000e\000w\000s}{chapter.1}% 4 +\BOOKMARK [1][-]{section.1.4}{\376\377\000c\000o\000o\000p\000e\000V\0003\000\040\000a\000p\000p\000\040\000v\000i\000e\000w\000s}{chapter.1}% 5 +\BOOKMARK [0][-]{chapter.2}{\376\377\000M\000o\000d\000e\000l\000s\000\040\000d\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 6 +\BOOKMARK [1][-]{section.2.1}{\376\377\000G\000e\000s\000t\000i\000o\000n\000\040\000a\000p\000p\000\040\000m\000o\000d\000e\000l\000s}{chapter.2}% 7 +\BOOKMARK [1][-]{section.2.2}{\376\377\000U\000s\000e\000r\000s\000\040\000a\000p\000p\000\040\000m\000o\000d\000e\000l\000s}{chapter.2}% 8 +\BOOKMARK [1][-]{section.2.3}{\376\377\000P\000r\000e\000f\000e\000r\000e\000n\000c\000e\000s\000\040\000a\000p\000p\000\040\000m\000o\000d\000e\000l\000s}{chapter.2}% 9 +\BOOKMARK [0][-]{chapter.3}{\376\377\000A\000d\000m\000i\000n\000\040\000d\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 10 +\BOOKMARK [1][-]{section.3.1}{\376\377\000G\000e\000s\000t\000i\000o\000n\000\040\000a\000p\000p\000\040\000a\000d\000m\000i\000n}{chapter.3}% 11 +\BOOKMARK [1][-]{section.3.2}{\376\377\000U\000s\000e\000r\000s\000\040\000a\000p\000p\000\040\000a\000d\000m\000i\000n}{chapter.3}% 12 +\BOOKMARK [1][-]{section.3.3}{\376\377\000P\000r\000e\000f\000e\000r\000e\000n\000c\000e\000s\000\040\000a\000p\000p\000\040\000a\000d\000m\000i\000n}{chapter.3}% 13 +\BOOKMARK [0][-]{chapter.4}{\376\377\000F\000o\000r\000m\000s\000\040\000d\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 14 +\BOOKMARK [1][-]{section.4.1}{\376\377\000G\000e\000s\000t\000i\000o\000n\000\040\000a\000p\000p\000\040\000f\000o\000r\000m\000s}{chapter.4}% 15 +\BOOKMARK [1][-]{section.4.2}{\376\377\000U\000s\000e\000r\000s\000\040\000a\000p\000p\000\040\000f\000o\000r\000m\000s}{chapter.4}% 16 +\BOOKMARK [1][-]{section.4.3}{\376\377\000P\000r\000e\000f\000e\000r\000e\000n\000c\000e\000s\000\040\000a\000p\000p\000\040\000f\000o\000r\000m\000s}{chapter.4}% 17 +\BOOKMARK [0][-]{chapter.5}{\376\377\000U\000t\000i\000l\000s\000\040\000d\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 18 +\BOOKMARK [1][-]{section.5.1}{\376\377\000A\000C\000L}{chapter.5}% 19 +\BOOKMARK [1][-]{section.5.2}{\376\377\000C\000o\000o\000p\000e\000V\0003\000\040\000t\000e\000m\000p\000l\000a\000t\000e\000t\000a\000g\000s}{chapter.5}% 20 +\BOOKMARK [1][-]{section.5.3}{\376\377\000U\000s\000e\000r\000s\000\040\000t\000e\000m\000p\000l\000a\000t\000e\000t\000a\000g\000s}{chapter.5}% 21 +\BOOKMARK [0][-]{chapter.6}{\376\377\000D\000j\000a\000n\000g\000o\000\137\000t\000e\000x\000\040\000d\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 22 +\BOOKMARK [1][-]{section.6.1}{\376\377\000C\000o\000r\000e}{chapter.6}% 23 +\BOOKMARK [1][-]{section.6.2}{\376\377\000E\000n\000g\000i\000n\000e}{chapter.6}% 24 +\BOOKMARK [1][-]{section.6.3}{\376\377\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t}{chapter.6}% 25 +\BOOKMARK [1][-]{section.6.4}{\376\377\000E\000x\000c\000e\000p\000t\000i\000o\000n\000s}{chapter.6}% 26 +\BOOKMARK [1][-]{section.6.5}{\376\377\000F\000i\000l\000t\000e\000r\000s}{chapter.6}% 27 +\BOOKMARK [1][-]{section.6.6}{\376\377\000M\000o\000d\000e\000l\000s}{chapter.6}% 28 +\BOOKMARK [1][-]{section.6.7}{\376\377\000V\000i\000e\000w\000s}{chapter.6}% 29 +\BOOKMARK [0][-]{chapter.7}{\376\377\000I\000n\000d\000i\000c\000e\000s\000\040\000a\000n\000d\000\040\000t\000a\000b\000l\000e\000s}{}% 30 +\BOOKMARK [0][-]{section*.1207}{\376\377\000P\000y\000t\000h\000o\000n\000\040\000M\000o\000d\000u\000l\000e\000\040\000I\000n\000d\000e\000x}{}% 31 +\BOOKMARK [0][-]{section*.1208}{\376\377\000I\000n\000d\000e\000x}{}% 32 diff --git a/docs/_build/latex/CoopeV3.pdf b/docs/_build/latex/CoopeV3.pdf new file mode 100644 index 0000000..ae205f9 Binary files /dev/null and b/docs/_build/latex/CoopeV3.pdf differ diff --git a/docs/_build/latex/CoopeV3.tex b/docs/_build/latex/CoopeV3.tex new file mode 100644 index 0000000..2937a8d --- /dev/null +++ b/docs/_build/latex/CoopeV3.tex @@ -0,0 +1,9983 @@ +%% Generated by Sphinx. +\def\sphinxdocclass{report} +\documentclass[letterpaper,10pt,english]{sphinxmanual} +\ifdefined\pdfpxdimen + \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen +\fi \sphinxpxdimen=.75bp\relax + +\PassOptionsToPackage{warn}{textcomp} +\usepackage[utf8]{inputenc} +\ifdefined\DeclareUnicodeCharacter +% support both utf8 and utf8x syntaxes +\edef\sphinxdqmaybe{\ifdefined\DeclareUnicodeCharacterAsOptional\string"\fi} + \DeclareUnicodeCharacter{\sphinxdqmaybe00A0}{\nobreakspace} + \DeclareUnicodeCharacter{\sphinxdqmaybe2500}{\sphinxunichar{2500}} + \DeclareUnicodeCharacter{\sphinxdqmaybe2502}{\sphinxunichar{2502}} + \DeclareUnicodeCharacter{\sphinxdqmaybe2514}{\sphinxunichar{2514}} + \DeclareUnicodeCharacter{\sphinxdqmaybe251C}{\sphinxunichar{251C}} + \DeclareUnicodeCharacter{\sphinxdqmaybe2572}{\textbackslash} +\fi +\usepackage{cmap} +\usepackage[T1]{fontenc} +\usepackage{amsmath,amssymb,amstext} +\usepackage{babel} +\usepackage{times} +\usepackage[Sonny]{fncychap} +\ChNameVar{\Large\normalfont\sffamily} +\ChTitleVar{\Large\normalfont\sffamily} +\usepackage{sphinx} + +\fvset{fontsize=\small} +\usepackage{geometry} + +% Include hyperref last. +\usepackage{hyperref} +% Fix anchor placement for figures with captions. +\usepackage{hypcap}% it must be loaded after hyperref. +% Set up styles of URL: it should be placed after hyperref. +\urlstyle{same} +\addto\captionsenglish{\renewcommand{\contentsname}{Contents:}} + +\addto\captionsenglish{\renewcommand{\figurename}{Fig.\@ }} +\makeatletter +\def\fnum@figure{\figurename\thefigure{}} +\makeatother +\addto\captionsenglish{\renewcommand{\tablename}{Table }} +\makeatletter +\def\fnum@table{\tablename\thetable{}} +\makeatother +\addto\captionsenglish{\renewcommand{\literalblockname}{Listing}} + +\addto\captionsenglish{\renewcommand{\literalblockcontinuedname}{continued from previous page}} +\addto\captionsenglish{\renewcommand{\literalblockcontinuesname}{continues on next page}} +\addto\captionsenglish{\renewcommand{\sphinxnonalphabeticalgroupname}{Non-alphabetical}} +\addto\captionsenglish{\renewcommand{\sphinxsymbolsname}{Symbols}} +\addto\captionsenglish{\renewcommand{\sphinxnumbersname}{Numbers}} + +\addto\extrasenglish{\def\pageautorefname{page}} + +\setcounter{tocdepth}{1} + + + +\title{CoopeV3 Documentation} +\date{Feb 28, 2019} +\release{3.4.0} +\author{Yoann Pietri} +\newcommand{\sphinxlogo}{\vbox{}} +\renewcommand{\releasename}{Release} +\makeindex +\begin{document} + +\ifdefined\shorthandoff + \ifnum\catcode`\=\string=\active\shorthandoff{=}\fi + \ifnum\catcode`\"=\active\shorthandoff{"}\fi +\fi + +\pagestyle{empty} +\sphinxmaketitle +\pagestyle{plain} +\sphinxtableofcontents +\pagestyle{normal} +\phantomsection\label{\detokenize{index::doc}} + + + +\chapter{Views documentation} +\label{\detokenize{modules/views:views-documentation}}\label{\detokenize{modules/views::doc}} + +\section{Gestion app views} +\label{\detokenize{modules/views:module-gestion.views}}\label{\detokenize{modules/views:gestion-app-views}}\index{gestion.views (module)@\spxentry{gestion.views}\spxextra{module}}\index{ActiveProductsAutocomplete (class in gestion.views)@\spxentry{ActiveProductsAutocomplete}\spxextra{class in gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.ActiveProductsAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{ActiveProductsAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete view for active {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{products}}}}}. +\index{get\_queryset() (gestion.views.ActiveProductsAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.ActiveProductsAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.ActiveProductsAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{KegActiveAutocomplete (class in gestion.views)@\spxentry{KegActiveAutocomplete}\spxextra{class in gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.KegActiveAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{KegActiveAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete view for active {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{kegs}}}}}. +\index{get\_queryset() (gestion.views.KegActiveAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.KegActiveAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.KegActiveAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{KegPositiveAutocomplete (class in gestion.views)@\spxentry{KegPositiveAutocomplete}\spxextra{class in gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.KegPositiveAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{KegPositiveAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete view for {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{kegs}}}}} with positive stockHold. +\index{get\_queryset() (gestion.views.KegPositiveAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.KegPositiveAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.KegPositiveAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{MenusAutocomplete (class in gestion.views)@\spxentry{MenusAutocomplete}\spxextra{class in gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.MenusAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{MenusAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete view for active {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{menus}}}}}. +\index{get\_queryset() (gestion.views.MenusAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.MenusAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.MenusAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ProductsAutocomplete (class in gestion.views)@\spxentry{ProductsAutocomplete}\spxextra{class in gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.ProductsAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{ProductsAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete view for all {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{products}}}}}. +\index{get\_queryset() (gestion.views.ProductsAutocomplete method)@\spxentry{get\_queryset()}\spxextra{gestion.views.ProductsAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.ProductsAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{addKeg() (in module gestion.views)@\spxentry{addKeg()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.addKeg}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{addKeg}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.KegForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.KegForm}}}}} to add a {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Keg}}}}}. + +\end{fulllineitems} + +\index{addMenu() (in module gestion.views)@\spxentry{addMenu()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.addMenu}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{addMenu}}}{\emph{request}}{} +Display a {\hyperref[\detokenize{modules/forms:gestion.forms.MenuForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.MenuForm}}}}} to add a {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}}. + +\end{fulllineitems} + +\index{addProduct() (in module gestion.views)@\spxentry{addProduct()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.addProduct}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{addProduct}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.ProductForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.ProductForm}}}}} to add a product. + +\end{fulllineitems} + +\index{add\_pintes() (in module gestion.views)@\spxentry{add\_pintes()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.add_pintes}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{add\_pintes}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.PinteForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.PinteForm}}}}} to add one or more {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Pinte}}}}}. + +\end{fulllineitems} + +\index{allocate() (in module gestion.views)@\spxentry{allocate()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.allocate}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{allocate}}}{\emph{pinte\_pk}, \emph{user}}{} +Allocate a {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Pinte}}}}} to a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) or release the pinte if user is None + +\end{fulllineitems} + +\index{cancel\_consumption() (in module gestion.views)@\spxentry{cancel\_consumption()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.cancel_consumption}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{cancel\_consumption}}}{\emph{request}, \emph{pk}}{} +Delete a {\hyperref[\detokenize{modules/models:gestion.models.ConsumptionHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{consumption history}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the consumption history to delete. + +\end{description} + +\end{fulllineitems} + +\index{cancel\_menu() (in module gestion.views)@\spxentry{cancel\_menu()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.cancel_menu}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{cancel\_menu}}}{\emph{request}, \emph{pk}}{} +Delete a {\hyperref[\detokenize{modules/models:gestion.models.MenuHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{menu history}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the menu history to delete. + +\end{description} + +\end{fulllineitems} + +\index{cancel\_reload() (in module gestion.views)@\spxentry{cancel\_reload()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.cancel_reload}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{cancel\_reload}}}{\emph{request}, \emph{pk}}{} +Delete a {\hyperref[\detokenize{modules/models:gestion.models.Reload}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Reload}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the reload to delete. + +\end{description} + +\end{fulllineitems} + +\index{closeDirectKeg() (in module gestion.views)@\spxentry{closeDirectKeg()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.closeDirectKeg}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{closeDirectKeg}}}{\emph{request}, \emph{pk}}{} +Closes a class:\sphinxtitleref{gestion.models.Keg}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the class:\sphinxtitleref{gestion.models.Keg} to open. + +\end{description} + +\end{fulllineitems} + +\index{closeKeg() (in module gestion.views)@\spxentry{closeKeg()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.closeKeg}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{closeKeg}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.SelectPositiveKegForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.SelectPositiveKegForm}}}}} to open a {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Keg}}}}}. + +\end{fulllineitems} + +\index{editKeg() (in module gestion.views)@\spxentry{editKeg()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.editKeg}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{editKeg}}}{\emph{request}, \emph{pk}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.KegForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.KegForm}}}}} to edit a {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Keg}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Keg}}}}} to edit. + +\end{description} + +\end{fulllineitems} + +\index{editProduct() (in module gestion.views)@\spxentry{editProduct()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.editProduct}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{editProduct}}}{\emph{request}, \emph{pk}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.ProductForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.ProductForm}}}}} to edit a product. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the the {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}} to edit. + +\end{description} + +\end{fulllineitems} + +\index{edit\_menu() (in module gestion.views)@\spxentry{edit\_menu()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.edit_menu}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{edit\_menu}}}{\emph{request}, \emph{pk}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.MenuForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.MenuForm}}}}} to edit a {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}} to edit. + +\end{description} + +\end{fulllineitems} + +\index{gen\_releve() (in module gestion.views)@\spxentry{gen\_releve()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.gen_releve}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{gen\_releve}}}{\emph{request}}{} +Displays a \sphinxcode{\sphinxupquote{forms.gestion.GenerateReleveForm}} to generate a releve. + +\end{fulllineitems} + +\index{getProduct() (in module gestion.views)@\spxentry{getProduct()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.getProduct}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{getProduct}}}{\emph{request}, \emph{pk}}{} +Get a {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}} by barcode and return it in JSON format. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}} to get infos. + +\end{description} + +\end{fulllineitems} + +\index{get\_menu() (in module gestion.views)@\spxentry{get\_menu()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.get_menu}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{get\_menu}}}{\emph{request}, \emph{pk}}{} +Get a {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}} by pk and return it in JSON format. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}}. + +\end{description} + +\end{fulllineitems} + +\index{kegH() (in module gestion.views)@\spxentry{kegH()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.kegH}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{kegH}}}{\emph{request}, \emph{pk}}{} +Display the {\hyperref[\detokenize{modules/models:gestion.models.KegHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{history}}}}} of requested {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Keg}}}}}. + +\end{fulllineitems} + +\index{kegsList() (in module gestion.views)@\spxentry{kegsList()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.kegsList}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{kegsList}}}{\emph{request}}{} +Display the list of {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{kegs}}}}}. + +\end{fulllineitems} + +\index{manage() (in module gestion.views)@\spxentry{manage()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.manage}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{manage}}}{\emph{request}}{} +Displays the manage view. + +\end{fulllineitems} + +\index{menus\_list() (in module gestion.views)@\spxentry{menus\_list()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.menus_list}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{menus\_list}}}{\emph{request}}{} +Display the list of {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{menus}}}}}. + +\end{fulllineitems} + +\index{openDirectKeg() (in module gestion.views)@\spxentry{openDirectKeg()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.openDirectKeg}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{openDirectKeg}}}{\emph{request}, \emph{pk}}{} +Opens a class:\sphinxtitleref{gestion.models.Keg}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the class:\sphinxtitleref{gestion.models.Keg} to open. + +\end{description} + +\end{fulllineitems} + +\index{openKeg() (in module gestion.views)@\spxentry{openKeg()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.openKeg}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{openKeg}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.SelectPositiveKegForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.SelectPositiveKegForm}}}}} to open a {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Keg}}}}}. + +\end{fulllineitems} + +\index{order() (in module gestion.views)@\spxentry{order()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.order}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{order}}}{\emph{request}}{} +Processes the given order. The order is passed through POST. + +\end{fulllineitems} + +\index{pintes\_list() (in module gestion.views)@\spxentry{pintes\_list()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.pintes_list}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{pintes\_list}}}{\emph{request}}{} +Displays the list of {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Pinte}}}}} + +\end{fulllineitems} + +\index{pintes\_user\_list() (in module gestion.views)@\spxentry{pintes\_user\_list()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.pintes_user_list}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{pintes\_user\_list}}}{\emph{request}}{} +Displays the list of user, who have unreturned {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Pinte(s)}}}}}. + +\end{fulllineitems} + +\index{productProfile() (in module gestion.views)@\spxentry{productProfile()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.productProfile}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{productProfile}}}{\emph{request}, \emph{pk}}{} +Displays the profile of a {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}} to display profile. + +\end{description} + +\end{fulllineitems} + +\index{productsIndex() (in module gestion.views)@\spxentry{productsIndex()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.productsIndex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{productsIndex}}}{\emph{request}}{} +Displays the products manage static page. + +\end{fulllineitems} + +\index{productsList() (in module gestion.views)@\spxentry{productsList()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.productsList}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{productsList}}}{\emph{request}}{} +Display the list of {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{products}}}}}. + +\end{fulllineitems} + +\index{ranking() (in module gestion.views)@\spxentry{ranking()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.ranking}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{ranking}}}{\emph{request}}{} +Displays the ranking page. + +\end{fulllineitems} + +\index{refund() (in module gestion.views)@\spxentry{refund()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.refund}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{refund}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.RefundForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Refund form}}}}}. + +\end{fulllineitems} + +\index{release() (in module gestion.views)@\spxentry{release()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.release}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{release}}}{\emph{request}, \emph{pinte\_pk}}{} +View to release a {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Pinte}}}}}. +\begin{description} +\item[{pinte\_pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Pinte}}}}} to release. + +\end{description} + +\end{fulllineitems} + +\index{release\_pintes() (in module gestion.views)@\spxentry{release\_pintes()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.release_pintes}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{release\_pintes}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.PinteForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.PinteForm}}}}} to release one or more {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Pinte}}}}}. + +\end{fulllineitems} + +\index{reload() (in module gestion.views)@\spxentry{reload()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.reload}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{reload}}}{\emph{request}}{} +Displays a \sphinxcode{\sphinxupquote{Reload form}}. + +\end{fulllineitems} + +\index{searchMenu() (in module gestion.views)@\spxentry{searchMenu()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.searchMenu}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{searchMenu}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:gestion.forms.SearchMenuForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.forms.SearchMenuForm}}}}} to search a {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}}. + +\end{fulllineitems} + +\index{searchProduct() (in module gestion.views)@\spxentry{searchProduct()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.searchProduct}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{searchProduct}}}{\emph{request}}{} +Displays a \sphinxcode{\sphinxupquote{gestion.forms.SearchProduct}} to search a {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}}. + +\end{fulllineitems} + +\index{switch\_activate() (in module gestion.views)@\spxentry{switch\_activate()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.switch_activate}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{switch\_activate}}}{\emph{request}, \emph{pk}}{} +Switch the active status of the requested {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}} to display profile. + +\end{description} + +\end{fulllineitems} + +\index{switch\_activate\_menu() (in module gestion.views)@\spxentry{switch\_activate\_menu()}\spxextra{in module gestion.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:gestion.views.switch_activate_menu}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.views.}}\sphinxbfcode{\sphinxupquote{switch\_activate\_menu}}}{\emph{request}, \emph{pk}}{} +Switch active status of a {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}}. + +\end{fulllineitems} + + + +\section{Users app views} +\label{\detokenize{modules/views:module-users.views}}\label{\detokenize{modules/views:users-app-views}}\index{users.views (module)@\spxentry{users.views}\spxextra{module}}\index{ActiveUsersAutocomplete (class in users.views)@\spxentry{ActiveUsersAutocomplete}\spxextra{class in users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.ActiveUsersAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{ActiveUsersAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete for active users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{get\_queryset() (users.views.ActiveUsersAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.ActiveUsersAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.ActiveUsersAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{AdherentAutocomplete (class in users.views)@\spxentry{AdherentAutocomplete}\spxextra{class in users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.AdherentAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{AdherentAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete for adherents (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{get\_queryset() (users.views.AdherentAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.AdherentAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.AdherentAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{AllUsersAutocomplete (class in users.views)@\spxentry{AllUsersAutocomplete}\spxextra{class in users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.AllUsersAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{AllUsersAutocomplete}}}{\emph{**kwargs}}{} +Autcomplete for all users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{get\_queryset() (users.views.AllUsersAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.AllUsersAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.AllUsersAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{NonAdminUserAutocomplete (class in users.views)@\spxentry{NonAdminUserAutocomplete}\spxextra{class in users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.NonAdminUserAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{NonAdminUserAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete for non-admin users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{get\_queryset() (users.views.NonAdminUserAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.NonAdminUserAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.NonAdminUserAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{NonSuperUserAutocomplete (class in users.views)@\spxentry{NonSuperUserAutocomplete}\spxextra{class in users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.NonSuperUserAutocomplete}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{NonSuperUserAutocomplete}}}{\emph{**kwargs}}{} +Autocomplete for non-superuser users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{get\_queryset() (users.views.NonSuperUserAutocomplete method)@\spxentry{get\_queryset()}\spxextra{users.views.NonSuperUserAutocomplete method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.NonSuperUserAutocomplete.get_queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_queryset}}}{}{} +Filter the queryset with GET{[}‘q’{]}. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{addAdmin() (in module users.views)@\spxentry{addAdmin()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.addAdmin}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{addAdmin}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.SelectNonAdminUserForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.forms.SelectNonAdminUserForm}}}}} to select a non admin user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) and add it to the admins. + +\end{fulllineitems} + +\index{addCotisationHistory() (in module users.views)@\spxentry{addCotisationHistory()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.addCotisationHistory}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{addCotisationHistory}}}{\emph{request}, \emph{pk}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.addCotisationHistoryForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.forms.addCotisationHistoryForm}}}}} to add a \sphinxcode{\sphinxupquote{Cotisation History \textless{}users.models.CotisationHistory}} to the requested user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\begin{description} +\item[{pk}] \leavevmode +The primary key of the user to add a cotisation history + +\end{description} + +\end{fulllineitems} + +\index{addSuperuser() (in module users.views)@\spxentry{addSuperuser()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.addSuperuser}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{addSuperuser}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.SelectNonAdminUserForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.forms.SelectNonAdminUserForm}}}}} to select a non superuser user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) and add it to the superusers. + +\end{fulllineitems} + +\index{addWhiteListHistory() (in module users.views)@\spxentry{addWhiteListHistory()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.addWhiteListHistory}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{addWhiteListHistory}}}{\emph{request}, \emph{pk}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.addWhiteListHistoryForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.forms.addWhiteListHistoryForm}}}}} to add a {\hyperref[\detokenize{modules/models:users.models.WhiteListHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{WhiteListHistory}}}}} to the requested user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{adminsIndex() (in module users.views)@\spxentry{adminsIndex()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.adminsIndex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{adminsIndex}}}{\emph{request}}{} +Lists the staff (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}} with is\_staff True) + +\end{fulllineitems} + +\index{allReloads() (in module users.views)@\spxentry{allReloads()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.allReloads}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{allReloads}}}{\emph{request}, \emph{pk}, \emph{page}}{} +Display all the {\hyperref[\detokenize{modules/models:gestion.models.Reload}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{reloads}}}}} of the requested user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{all\_consumptions() (in module users.views)@\spxentry{all\_consumptions()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.all_consumptions}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{all\_consumptions}}}{\emph{request}, \emph{pk}, \emph{page}}{} +Display all the \sphinxtitleref{consumptions \textless{}gestion.models.ConsumptionHistory\textgreater{}} of the requested user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{all\_menus() (in module users.views)@\spxentry{all\_menus()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.all_menus}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{all\_menus}}}{\emph{request}, \emph{pk}, \emph{page}}{} +Display all the \sphinxtitleref{menus \textless{}gestion.models.MenuHistory\textgreater{}} of the requested user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{createGroup() (in module users.views)@\spxentry{createGroup()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.createGroup}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{createGroup}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.CreateGroupForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{CreateGroupForm}}}}} to create a group (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). + +\end{fulllineitems} + +\index{createSchool() (in module users.views)@\spxentry{createSchool()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.createSchool}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{createSchool}}}{\emph{request}}{} +Displays {\hyperref[\detokenize{modules/forms:users.forms.SchoolForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{SchoolForm}}}}} to add a {\hyperref[\detokenize{modules/models:users.models.School}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{School}}}}}. + +\end{fulllineitems} + +\index{createUser() (in module users.views)@\spxentry{createUser()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.createUser}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{createUser}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.CreateUserForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{CreateUserForm}}}}} to create a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{deleteCotisationHistory() (in module users.views)@\spxentry{deleteCotisationHistory()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.deleteCotisationHistory}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{deleteCotisationHistory}}}{\emph{request}, \emph{pk}}{} +Delete the requested {\hyperref[\detokenize{modules/models:users.models.CotisationHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{CotisationHistory}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of tthe CotisationHistory to delete. + +\end{description} + +\end{fulllineitems} + +\index{deleteGroup() (in module users.views)@\spxentry{deleteGroup()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.deleteGroup}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{deleteGroup}}}{\emph{request}, \emph{pk}}{} +Deletes the requested group (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). +\begin{description} +\item[{pk}] \leavevmode +The primary key of the group to delete + +\end{description} + +\end{fulllineitems} + +\index{deleteSchool() (in module users.views)@\spxentry{deleteSchool()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.deleteSchool}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{deleteSchool}}}{\emph{request}, \emph{pk}}{} +Deletes a {\hyperref[\detokenize{modules/models:users.models.School}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.models.School}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the School to delete. + +\end{description} + +\end{fulllineitems} + +\index{editGroup() (in module users.views)@\spxentry{editGroup()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.editGroup}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{editGroup}}}{\emph{request}, \emph{pk}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.EditGroupForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{EditGroupForm}}}}} to edit a group (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). +\begin{description} +\item[{pk}] \leavevmode +The primary key of the group to edit. + +\end{description} + +\end{fulllineitems} + +\index{editGroups() (in module users.views)@\spxentry{editGroups()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.editGroups}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{editGroups}}}{\emph{request}, \emph{pk}}{} +Displays a \sphinxcode{\sphinxupquote{users.form.GroupsEditForm}} to edit the groups of a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{editPassword() (in module users.views)@\spxentry{editPassword()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.editPassword}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{editPassword}}}{\emph{request}, \emph{pk}}{} +Displays a \sphinxcode{\sphinxupquote{users.form.EditPasswordForm}} to edit the password of a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{editSchool() (in module users.views)@\spxentry{editSchool()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.editSchool}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{editSchool}}}{\emph{request}, \emph{pk}}{} +Displays {\hyperref[\detokenize{modules/forms:users.forms.SchoolForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{SchoolForm}}}}} to edit a {\hyperref[\detokenize{modules/models:users.models.School}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{School}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the school to edit. + +\end{description} + +\end{fulllineitems} + +\index{editUser() (in module users.views)@\spxentry{editUser()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.editUser}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{editUser}}}{\emph{request}, \emph{pk}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.CreateUserForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{CreateUserForm}}}}} to edit a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{export\_csv() (in module users.views)@\spxentry{export\_csv()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.export_csv}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{export\_csv}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.ExportForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.forms.ExportForm}}}}} to export csv files of users. + +\end{fulllineitems} + +\index{gen\_user\_infos() (in module users.views)@\spxentry{gen\_user\_infos()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.gen_user_infos}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{gen\_user\_infos}}}{\emph{request}, \emph{pk}}{} +Generates a latex document include adhesion certificate and list of \sphinxtitleref{cotisations \textless{}users.models.CotisationHistory\textgreater{}}. + +\end{fulllineitems} + +\index{getUser() (in module users.views)@\spxentry{getUser()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.getUser}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{getUser}}}{\emph{request}, \emph{pk}}{} +Get requested user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) and return username, balance and is\_adherent in JSON format. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the user to get infos. + +\end{description} + +\end{fulllineitems} + +\index{groupProfile() (in module users.views)@\spxentry{groupProfile()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.groupProfile}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{groupProfile}}}{\emph{request}, \emph{pk}}{} +Displays the profile of a group (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). + +\end{fulllineitems} + +\index{groupsIndex() (in module users.views)@\spxentry{groupsIndex()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.groupsIndex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{groupsIndex}}}{\emph{request}}{} +Displays all the groups (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). + +\end{fulllineitems} + +\index{index() (in module users.views)@\spxentry{index()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.index}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{index}}}{\emph{request}}{} +Display the index for user related actions. + +\end{fulllineitems} + +\index{loginView() (in module users.views)@\spxentry{loginView()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.loginView}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{loginView}}}{\emph{request}}{} +Displays the {\hyperref[\detokenize{modules/forms:users.forms.LoginForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.forms.LoginForm}}}}}. + +\end{fulllineitems} + +\index{logoutView() (in module users.views)@\spxentry{logoutView()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.logoutView}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{logoutView}}}{\emph{request}}{} +Logout the logged user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{profile() (in module users.views)@\spxentry{profile()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.profile}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{profile}}}{\emph{request}, \emph{pk}}{} +Displays the profile for the requested user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\begin{description} +\item[{pk}] \leavevmode +The primary key of the user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) to display profile + +\end{description} + +\end{fulllineitems} + +\index{removeAdmin() (in module users.views)@\spxentry{removeAdmin()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.removeAdmin}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{removeAdmin}}}{\emph{request}, \emph{pk}}{} +Removes an user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) from staff. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) to remove from staff + +\end{description} + +\end{fulllineitems} + +\index{removeRight() (in module users.views)@\spxentry{removeRight()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.removeRight}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{removeRight}}}{\emph{request}, \emph{groupPk}, \emph{permissionPk}}{} +Removes a right from a given group (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). + +\end{fulllineitems} + +\index{removeSuperuser() (in module users.views)@\spxentry{removeSuperuser()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.removeSuperuser}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{removeSuperuser}}}{\emph{request}, \emph{pk}}{} +Removes a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) from superusers. + +\end{fulllineitems} + +\index{removeUser() (in module users.views)@\spxentry{removeUser()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.removeUser}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{removeUser}}}{\emph{request}, \emph{groupPk}, \emph{userPk}}{} +Removes a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) from a given group (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). + +\end{fulllineitems} + +\index{resetPassword() (in module users.views)@\spxentry{resetPassword()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.resetPassword}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{resetPassword}}}{\emph{request}, \emph{pk}}{} +Reset the password of a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{schoolsIndex() (in module users.views)@\spxentry{schoolsIndex()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.schoolsIndex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{schoolsIndex}}}{\emph{request}}{} +Lists the {\hyperref[\detokenize{modules/models:users.models.School}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Schools}}}}}. + +\end{fulllineitems} + +\index{searchUser() (in module users.views)@\spxentry{searchUser()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.searchUser}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{searchUser}}}{\emph{request}}{} +Displays a {\hyperref[\detokenize{modules/forms:users.forms.SelectUserForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{SelectUserForm}}}}} to search a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{superusersIndex() (in module users.views)@\spxentry{superusersIndex()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.superusersIndex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{superusersIndex}}}{\emph{request}}{} +Lists the superusers (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}} with is\_superuser True). + +\end{fulllineitems} + +\index{switch\_activate\_user() (in module users.views)@\spxentry{switch\_activate\_user()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.switch_activate_user}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{switch\_activate\_user}}}{\emph{request}, \emph{pk}}{} +Switch the active status of the requested user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\begin{description} +\item[{pk}] \leavevmode +The primary key of the user to switch status + +\end{description} + +\end{fulllineitems} + +\index{usersIndex() (in module users.views)@\spxentry{usersIndex()}\spxextra{in module users.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:users.views.usersIndex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.views.}}\sphinxbfcode{\sphinxupquote{usersIndex}}}{\emph{request}}{} +Display the list of all users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + + + +\section{Preferences app views} +\label{\detokenize{modules/views:module-preferences.views}}\label{\detokenize{modules/views:preferences-app-views}}\index{preferences.views (module)@\spxentry{preferences.views}\spxextra{module}}\index{addCotisation() (in module preferences.views)@\spxentry{addCotisation()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.addCotisation}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{addCotisation}}}{\emph{request}}{} +View which displays a {\hyperref[\detokenize{modules/forms:preferences.forms.CotisationForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{CotisationForm}}}}} to create a {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}}. + +\end{fulllineitems} + +\index{addPaymentMethod() (in module preferences.views)@\spxentry{addPaymentMethod()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.addPaymentMethod}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{addPaymentMethod}}}{\emph{request}}{} +View which displays a {\hyperref[\detokenize{modules/forms:preferences.forms.PaymentMethodForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethodForm}}}}} to create a {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethod}}}}}. + +\end{fulllineitems} + +\index{cotisationsIndex() (in module preferences.views)@\spxentry{cotisationsIndex()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.cotisationsIndex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{cotisationsIndex}}}{\emph{request}}{} +View which lists all the {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}}. + +\end{fulllineitems} + +\index{deleteCotisation() (in module preferences.views)@\spxentry{deleteCotisation()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.deleteCotisation}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{deleteCotisation}}}{\emph{request}, \emph{pk}}{} +Delete a {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}} to delete. + +\end{description} + +\end{fulllineitems} + +\index{deletePaymentMethod() (in module preferences.views)@\spxentry{deletePaymentMethod()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.deletePaymentMethod}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{deletePaymentMethod}}}{\emph{request}, \emph{pk}}{} +Delete a {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethod}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethod}}}}} to delete. + +\end{description} + +\end{fulllineitems} + +\index{editCotisation() (in module preferences.views)@\spxentry{editCotisation()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.editCotisation}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{editCotisation}}}{\emph{request}, \emph{pk}}{} +View which displays a {\hyperref[\detokenize{modules/forms:preferences.forms.CotisationForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{CotisationForm}}}}} to edit a {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}} to edit. + +\end{description} + +\end{fulllineitems} + +\index{editPaymentMethod() (in module preferences.views)@\spxentry{editPaymentMethod()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.editPaymentMethod}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{editPaymentMethod}}}{\emph{request}, \emph{pk}}{} +View which displays a {\hyperref[\detokenize{modules/forms:preferences.forms.PaymentMethodForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethodForm}}}}} to edit a {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethod}}}}}. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethod}}}}} to edit. + +\end{description} + +\end{fulllineitems} + +\index{generalPreferences() (in module preferences.views)@\spxentry{generalPreferences()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.generalPreferences}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{generalPreferences}}}{\emph{request}}{} +View which displays a {\hyperref[\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{GeneralPreferencesForm}}}}} to edit the {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{GeneralPreferences}}}}}. + +\end{fulllineitems} + +\index{get\_config() (in module preferences.views)@\spxentry{get\_config()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.get_config}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{get\_config}}}{\emph{request}}{} +Load the {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{GeneralPreferences}}}}} and return it in json format (except for {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.statutes}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{statutes}}}}}, {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.rules}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{rules}}}}} and {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{menu}}}}}) + +\end{fulllineitems} + +\index{get\_cotisation() (in module preferences.views)@\spxentry{get\_cotisation()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.get_cotisation}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{get\_cotisation}}}{\emph{request}, \emph{pk}}{} +Return the requested {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}} in json format. +\begin{description} +\item[{pk}] \leavevmode +The primary key of the requested {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}}. + +\end{description} + +\end{fulllineitems} + +\index{inactive() (in module preferences.views)@\spxentry{inactive()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.inactive}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{inactive}}}{\emph{request}}{} +View which displays the inactive message (if the site is inactive). + +\end{fulllineitems} + +\index{paymentMethodsIndex() (in module preferences.views)@\spxentry{paymentMethodsIndex()}\spxextra{in module preferences.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:preferences.views.paymentMethodsIndex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{preferences.views.}}\sphinxbfcode{\sphinxupquote{paymentMethodsIndex}}}{\emph{request}}{} +View which lists all the {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethod}}}}}. + +\end{fulllineitems} + + + +\section{coopeV3 app views} +\label{\detokenize{modules/views:module-coopeV3.views}}\label{\detokenize{modules/views:coopev3-app-views}}\index{coopeV3.views (module)@\spxentry{coopeV3.views}\spxextra{module}}\index{coope\_runner() (in module coopeV3.views)@\spxentry{coope\_runner()}\spxextra{in module coopeV3.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:coopeV3.views.coope_runner}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.views.}}\sphinxbfcode{\sphinxupquote{coope\_runner}}}{\emph{request}}{} +Just an easter egg + +\end{fulllineitems} + +\index{home() (in module coopeV3.views)@\spxentry{home()}\spxextra{in module coopeV3.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:coopeV3.views.home}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.views.}}\sphinxbfcode{\sphinxupquote{home}}}{\emph{request}}{} +Redirect the user either to {\hyperref[\detokenize{modules/views:gestion.views.manage}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{manage()}}}}} view (if connected and staff) or {\hyperref[\detokenize{modules/views:coopeV3.views.homepage}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{homepage()}}}}} view (if connected and not staff) or {\hyperref[\detokenize{modules/views:users.views.loginView}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{loginView()}}}}} view (if not connected). + +\end{fulllineitems} + +\index{homepage() (in module coopeV3.views)@\spxentry{homepage()}\spxextra{in module coopeV3.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/views:coopeV3.views.homepage}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.views.}}\sphinxbfcode{\sphinxupquote{homepage}}}{\emph{request}}{} +View which displays the {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.home_text}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{home\_text}}}}} and active {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Kegs}}}}}. + +\end{fulllineitems} + + + +\chapter{Models documentation} +\label{\detokenize{modules/models:models-documentation}}\label{\detokenize{modules/models::doc}} + +\section{Gestion app models} +\label{\detokenize{modules/models:module-gestion.models}}\label{\detokenize{modules/models:gestion-app-models}}\index{gestion.models (module)@\spxentry{gestion.models}\spxextra{module}}\index{Consumption (class in gestion.models)@\spxentry{Consumption}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{Consumption}}}{\emph{*args}, \emph{**kwargs}}{} +Stores total consumptions. +\index{Consumption.DoesNotExist@\spxentry{Consumption.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{Consumption.MultipleObjectsReturned@\spxentry{Consumption.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{customer (gestion.models.Consumption attribute)@\spxentry{customer}\spxextra{gestion.models.Consumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Client (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{customer\_id (gestion.models.Consumption attribute)@\spxentry{customer\_id}\spxextra{gestion.models.Consumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history (gestion.models.Consumption attribute)@\spxentry{history}\spxextra{gestion.models.Consumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.Consumption attribute)@\spxentry{id}\spxextra{gestion.models.Consumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (gestion.models.Consumption attribute)@\spxentry{objects}\spxextra{gestion.models.Consumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{product (gestion.models.Consumption attribute)@\spxentry{product}\spxextra{gestion.models.Consumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.product}}\pysigline{\sphinxbfcode{\sphinxupquote{product}}} +A {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}} instance. + +\end{fulllineitems} + +\index{product\_id (gestion.models.Consumption attribute)@\spxentry{product\_id}\spxextra{gestion.models.Consumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.product_id}}\pysigline{\sphinxbfcode{\sphinxupquote{product\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{quantity (gestion.models.Consumption attribute)@\spxentry{quantity}\spxextra{gestion.models.Consumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.quantity}}\pysigline{\sphinxbfcode{\sphinxupquote{quantity}}} +The total number of {\hyperref[\detokenize{modules/models:gestion.models.Consumption.product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Consumption.product}}}}} consumed by the \sphinxcode{\sphinxupquote{gestion.models.Consumption.consumer}}. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.Consumption method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Consumption method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Consumption.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ConsumptionHistory (class in gestion.models)@\spxentry{ConsumptionHistory}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{ConsumptionHistory}}}{\emph{*args}, \emph{**kwargs}}{} +Stores consumption history related to Product +\index{ConsumptionHistory.DoesNotExist@\spxentry{ConsumptionHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{ConsumptionHistory.MultipleObjectsReturned@\spxentry{ConsumptionHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.ConsumptionHistory attribute)@\spxentry{amount}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +Price of the purchase. + +\end{fulllineitems} + +\index{coopeman (gestion.models.ConsumptionHistory attribute)@\spxentry{coopeman}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Coopeman (:class:django.contrib.auth.models.User{}`) who collected the money. + +\end{fulllineitems} + +\index{coopeman\_id (gestion.models.ConsumptionHistory attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{customer (gestion.models.ConsumptionHistory attribute)@\spxentry{customer}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Client (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{customer\_id (gestion.models.ConsumptionHistory attribute)@\spxentry{customer\_id}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{date (gestion.models.ConsumptionHistory attribute)@\spxentry{date}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.date}}\pysigline{\sphinxbfcode{\sphinxupquote{date}}} +Date of the purhcase. + +\end{fulllineitems} + +\index{get\_next\_by\_date() (gestion.models.ConsumptionHistory method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.ConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.get_next_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_date() (gestion.models.ConsumptionHistory method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.ConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.get_previous_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history (gestion.models.ConsumptionHistory attribute)@\spxentry{history}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.ConsumptionHistory attribute)@\spxentry{id}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (gestion.models.ConsumptionHistory attribute)@\spxentry{objects}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{paymentMethod (gestion.models.ConsumptionHistory attribute)@\spxentry{paymentMethod}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.paymentMethod}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod}}} +{\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Payment Method}}}}} of the product purchased. + +\end{fulllineitems} + +\index{paymentMethod\_id (gestion.models.ConsumptionHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.paymentMethod_id}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{product (gestion.models.ConsumptionHistory attribute)@\spxentry{product}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.product}}\pysigline{\sphinxbfcode{\sphinxupquote{product}}} +\sphinxcode{\sphinxupquote{gestion.models.product}} purchased. + +\end{fulllineitems} + +\index{product\_id (gestion.models.ConsumptionHistory attribute)@\spxentry{product\_id}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.product_id}}\pysigline{\sphinxbfcode{\sphinxupquote{product\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{quantity (gestion.models.ConsumptionHistory attribute)@\spxentry{quantity}\spxextra{gestion.models.ConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.quantity}}\pysigline{\sphinxbfcode{\sphinxupquote{quantity}}} +Quantity of {\hyperref[\detokenize{modules/models:gestion.models.ConsumptionHistory.product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.ConsumptionHistory.product}}}}} taken. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.ConsumptionHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.ConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.ConsumptionHistory.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalConsumption (class in gestion.models)@\spxentry{HistoricalConsumption}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalConsumption}}}{\emph{id}, \emph{quantity}, \emph{customer}, \emph{product}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalConsumption.DoesNotExist@\spxentry{HistoricalConsumption.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalConsumption.MultipleObjectsReturned@\spxentry{HistoricalConsumption.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{customer (gestion.models.HistoricalConsumption attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{customer\_id (gestion.models.HistoricalConsumption attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalConsumption method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalConsumption method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalConsumption method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumption method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalConsumption method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumption method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalConsumption attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalConsumption attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalConsumption attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalConsumption attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Consumption}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumption}}}}} + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalConsumption attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalConsumption attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalConsumption attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{product (gestion.models.HistoricalConsumption attribute)@\spxentry{product}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.product}}\pysigline{\sphinxbfcode{\sphinxupquote{product}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{product\_id (gestion.models.HistoricalConsumption attribute)@\spxentry{product\_id}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.product_id}}\pysigline{\sphinxbfcode{\sphinxupquote{product\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{quantity (gestion.models.HistoricalConsumption attribute)@\spxentry{quantity}\spxextra{gestion.models.HistoricalConsumption attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.quantity}}\pysigline{\sphinxbfcode{\sphinxupquote{quantity}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalConsumption method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalConsumption method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumption.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalConsumptionHistory (class in gestion.models)@\spxentry{HistoricalConsumptionHistory}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalConsumptionHistory}}}{\emph{id}, \emph{quantity}, \emph{date}, \emph{amount}, \emph{customer}, \emph{paymentMethod}, \emph{product}, \emph{coopeman}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalConsumptionHistory.DoesNotExist@\spxentry{HistoricalConsumptionHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalConsumptionHistory.MultipleObjectsReturned@\spxentry{HistoricalConsumptionHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{coopeman (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{coopeman}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{coopeman\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{customer (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{customer\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{date (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{date}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.date}}\pysigline{\sphinxbfcode{\sphinxupquote{date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_date() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.get_next_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_date() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.get_previous_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.ConsumptionHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{ConsumptionHistory}}}}} + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{paymentMethod (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{paymentMethod}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.paymentMethod}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{paymentMethod\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.paymentMethod_id}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{product (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{product}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.product}}\pysigline{\sphinxbfcode{\sphinxupquote{product}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{product\_id (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{product\_id}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.product_id}}\pysigline{\sphinxbfcode{\sphinxupquote{product\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{quantity (gestion.models.HistoricalConsumptionHistory attribute)@\spxentry{quantity}\spxextra{gestion.models.HistoricalConsumptionHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.quantity}}\pysigline{\sphinxbfcode{\sphinxupquote{quantity}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalConsumptionHistory method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalConsumptionHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalConsumptionHistory.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalKeg (class in gestion.models)@\spxentry{HistoricalKeg}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalKeg}}}{\emph{id}, \emph{name}, \emph{stockHold}, \emph{barcode}, \emph{amount}, \emph{capacity}, \emph{is\_active}, \emph{pinte}, \emph{demi}, \emph{galopin}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalKeg.DoesNotExist@\spxentry{HistoricalKeg.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalKeg.MultipleObjectsReturned@\spxentry{HistoricalKeg.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.HistoricalKeg attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{barcode (gestion.models.HistoricalKeg attribute)@\spxentry{barcode}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.barcode}}\pysigline{\sphinxbfcode{\sphinxupquote{barcode}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{capacity (gestion.models.HistoricalKeg attribute)@\spxentry{capacity}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.capacity}}\pysigline{\sphinxbfcode{\sphinxupquote{capacity}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{demi (gestion.models.HistoricalKeg attribute)@\spxentry{demi}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.demi}}\pysigline{\sphinxbfcode{\sphinxupquote{demi}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{demi\_id (gestion.models.HistoricalKeg attribute)@\spxentry{demi\_id}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.demi_id}}\pysigline{\sphinxbfcode{\sphinxupquote{demi\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{galopin (gestion.models.HistoricalKeg attribute)@\spxentry{galopin}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.galopin}}\pysigline{\sphinxbfcode{\sphinxupquote{galopin}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{galopin\_id (gestion.models.HistoricalKeg attribute)@\spxentry{galopin\_id}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.galopin_id}}\pysigline{\sphinxbfcode{\sphinxupquote{galopin\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalKeg method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalKeg method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalKeg method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalKeg method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalKeg method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalKeg method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalKeg attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalKeg attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalKeg attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalKeg attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalKeg attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalKeg attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalKeg attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalKeg attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalKeg attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalKeg attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Keg}}}}} + +\end{fulllineitems} + +\index{is\_active (gestion.models.HistoricalKeg attribute)@\spxentry{is\_active}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{name (gestion.models.HistoricalKeg attribute)@\spxentry{name}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalKeg attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalKeg attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{pinte (gestion.models.HistoricalKeg attribute)@\spxentry{pinte}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.pinte}}\pysigline{\sphinxbfcode{\sphinxupquote{pinte}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{pinte\_id (gestion.models.HistoricalKeg attribute)@\spxentry{pinte\_id}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.pinte_id}}\pysigline{\sphinxbfcode{\sphinxupquote{pinte\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalKeg attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalKeg method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalKeg method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + +\index{stockHold (gestion.models.HistoricalKeg attribute)@\spxentry{stockHold}\spxextra{gestion.models.HistoricalKeg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKeg.stockHold}}\pysigline{\sphinxbfcode{\sphinxupquote{stockHold}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalKegHistory (class in gestion.models)@\spxentry{HistoricalKegHistory}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalKegHistory}}}{\emph{id}, \emph{openingDate}, \emph{quantitySold}, \emph{amountSold}, \emph{closingDate}, \emph{isCurrentKegHistory}, \emph{keg}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalKegHistory.DoesNotExist@\spxentry{HistoricalKegHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalKegHistory.MultipleObjectsReturned@\spxentry{HistoricalKegHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amountSold (gestion.models.HistoricalKegHistory attribute)@\spxentry{amountSold}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.amountSold}}\pysigline{\sphinxbfcode{\sphinxupquote{amountSold}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{closingDate (gestion.models.HistoricalKegHistory attribute)@\spxentry{closingDate}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.closingDate}}\pysigline{\sphinxbfcode{\sphinxupquote{closingDate}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalKegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalKegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_openingDate() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_next\_by\_openingDate()}\spxextra{gestion.models.HistoricalKegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.get_next_by_openingDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_openingDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: openingDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalKegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_openingDate() (gestion.models.HistoricalKegHistory method)@\spxentry{get\_previous\_by\_openingDate()}\spxextra{gestion.models.HistoricalKegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.get_previous_by_openingDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_openingDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: openingDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalKegHistory attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalKegHistory attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalKegHistory attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalKegHistory attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.KegHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{KegHistory}}}}} + +\end{fulllineitems} + +\index{isCurrentKegHistory (gestion.models.HistoricalKegHistory attribute)@\spxentry{isCurrentKegHistory}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.isCurrentKegHistory}}\pysigline{\sphinxbfcode{\sphinxupquote{isCurrentKegHistory}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{keg (gestion.models.HistoricalKegHistory attribute)@\spxentry{keg}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.keg}}\pysigline{\sphinxbfcode{\sphinxupquote{keg}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{keg\_id (gestion.models.HistoricalKegHistory attribute)@\spxentry{keg\_id}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.keg_id}}\pysigline{\sphinxbfcode{\sphinxupquote{keg\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalKegHistory attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalKegHistory attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{openingDate (gestion.models.HistoricalKegHistory attribute)@\spxentry{openingDate}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.openingDate}}\pysigline{\sphinxbfcode{\sphinxupquote{openingDate}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalKegHistory attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{quantitySold (gestion.models.HistoricalKegHistory attribute)@\spxentry{quantitySold}\spxextra{gestion.models.HistoricalKegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.quantitySold}}\pysigline{\sphinxbfcode{\sphinxupquote{quantitySold}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalKegHistory method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalKegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalKegHistory.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalMenu (class in gestion.models)@\spxentry{HistoricalMenu}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalMenu}}}{\emph{id}, \emph{name}, \emph{amount}, \emph{barcode}, \emph{is\_active}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalMenu.DoesNotExist@\spxentry{HistoricalMenu.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalMenu.MultipleObjectsReturned@\spxentry{HistoricalMenu.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.HistoricalMenu attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{barcode (gestion.models.HistoricalMenu attribute)@\spxentry{barcode}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.barcode}}\pysigline{\sphinxbfcode{\sphinxupquote{barcode}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalMenu method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalMenu method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalMenu method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenu method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalMenu method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenu method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalMenu attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalMenu attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalMenu attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalMenu attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalMenu attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalMenu attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalMenu attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalMenu attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalMenu attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalMenu attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Menu}}}}} + +\end{fulllineitems} + +\index{is\_active (gestion.models.HistoricalMenu attribute)@\spxentry{is\_active}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{name (gestion.models.HistoricalMenu attribute)@\spxentry{name}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalMenu attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalMenu attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalMenu attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalMenu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalMenu method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalMenu method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenu.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalMenuHistory (class in gestion.models)@\spxentry{HistoricalMenuHistory}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalMenuHistory}}}{\emph{id}, \emph{quantity}, \emph{date}, \emph{amount}, \emph{customer}, \emph{paymentMethod}, \emph{menu}, \emph{coopeman}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalMenuHistory.DoesNotExist@\spxentry{HistoricalMenuHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalMenuHistory.MultipleObjectsReturned@\spxentry{HistoricalMenuHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.HistoricalMenuHistory attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{coopeman (gestion.models.HistoricalMenuHistory attribute)@\spxentry{coopeman}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{coopeman\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{customer (gestion.models.HistoricalMenuHistory attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{customer\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{date (gestion.models.HistoricalMenuHistory attribute)@\spxentry{date}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.date}}\pysigline{\sphinxbfcode{\sphinxupquote{date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalMenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_date() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.get_next_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_date() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.get_previous_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalMenuHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalMenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalMenuHistory attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalMenuHistory attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.MenuHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{MenuHistory}}}}} + +\end{fulllineitems} + +\index{menu (gestion.models.HistoricalMenuHistory attribute)@\spxentry{menu}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.menu}}\pysigline{\sphinxbfcode{\sphinxupquote{menu}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{menu\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{menu\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.menu_id}}\pysigline{\sphinxbfcode{\sphinxupquote{menu\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalMenuHistory attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalMenuHistory attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{paymentMethod (gestion.models.HistoricalMenuHistory attribute)@\spxentry{paymentMethod}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.paymentMethod}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{paymentMethod\_id (gestion.models.HistoricalMenuHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.paymentMethod_id}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalMenuHistory attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{quantity (gestion.models.HistoricalMenuHistory attribute)@\spxentry{quantity}\spxextra{gestion.models.HistoricalMenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.quantity}}\pysigline{\sphinxbfcode{\sphinxupquote{quantity}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalMenuHistory method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalMenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalMenuHistory.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalPinte (class in gestion.models)@\spxentry{HistoricalPinte}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalPinte}}}{\emph{id}, \emph{last\_update\_date}, \emph{current\_owner}, \emph{previous\_owner}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalPinte.DoesNotExist@\spxentry{HistoricalPinte.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalPinte.MultipleObjectsReturned@\spxentry{HistoricalPinte.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{current\_owner (gestion.models.HistoricalPinte attribute)@\spxentry{current\_owner}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.current_owner}}\pysigline{\sphinxbfcode{\sphinxupquote{current\_owner}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{current\_owner\_id (gestion.models.HistoricalPinte attribute)@\spxentry{current\_owner\_id}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.current_owner_id}}\pysigline{\sphinxbfcode{\sphinxupquote{current\_owner\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalPinte method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalPinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalPinte method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalPinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_last\_update\_date() (gestion.models.HistoricalPinte method)@\spxentry{get\_next\_by\_last\_update\_date()}\spxextra{gestion.models.HistoricalPinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.get_next_by_last_update_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_last\_update\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: last\_update\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalPinte method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalPinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_last\_update\_date() (gestion.models.HistoricalPinte method)@\spxentry{get\_previous\_by\_last\_update\_date()}\spxextra{gestion.models.HistoricalPinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.get_previous_by_last_update_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_last\_update\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: last\_update\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalPinte attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalPinte attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalPinte attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalPinte attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalPinte attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalPinte attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalPinte attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalPinte attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalPinte attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalPinte attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Pinte}}}}} + +\end{fulllineitems} + +\index{last\_update\_date (gestion.models.HistoricalPinte attribute)@\spxentry{last\_update\_date}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.last_update_date}}\pysigline{\sphinxbfcode{\sphinxupquote{last\_update\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalPinte attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalPinte attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalPinte attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{previous\_owner (gestion.models.HistoricalPinte attribute)@\spxentry{previous\_owner}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.previous_owner}}\pysigline{\sphinxbfcode{\sphinxupquote{previous\_owner}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{previous\_owner\_id (gestion.models.HistoricalPinte attribute)@\spxentry{previous\_owner\_id}\spxextra{gestion.models.HistoricalPinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.previous_owner_id}}\pysigline{\sphinxbfcode{\sphinxupquote{previous\_owner\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalPinte method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalPinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalPinte.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalProduct (class in gestion.models)@\spxentry{HistoricalProduct}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalProduct}}}{\emph{id}, \emph{name}, \emph{amount}, \emph{stockHold}, \emph{stockBar}, \emph{barcode}, \emph{category}, \emph{needQuantityButton}, \emph{is\_active}, \emph{volume}, \emph{deg}, \emph{adherentRequired}, \emph{showingMultiplier}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalProduct.DoesNotExist@\spxentry{HistoricalProduct.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalProduct.MultipleObjectsReturned@\spxentry{HistoricalProduct.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{adherentRequired (gestion.models.HistoricalProduct attribute)@\spxentry{adherentRequired}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.adherentRequired}}\pysigline{\sphinxbfcode{\sphinxupquote{adherentRequired}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{amount (gestion.models.HistoricalProduct attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{barcode (gestion.models.HistoricalProduct attribute)@\spxentry{barcode}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.barcode}}\pysigline{\sphinxbfcode{\sphinxupquote{barcode}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{category (gestion.models.HistoricalProduct attribute)@\spxentry{category}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.category}}\pysigline{\sphinxbfcode{\sphinxupquote{category}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{deg (gestion.models.HistoricalProduct attribute)@\spxentry{deg}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.deg}}\pysigline{\sphinxbfcode{\sphinxupquote{deg}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_category\_display() (gestion.models.HistoricalProduct method)@\spxentry{get\_category\_display()}\spxextra{gestion.models.HistoricalProduct method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.get_category_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_category\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: category\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalProduct method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalProduct method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalProduct method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalProduct method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalProduct method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalProduct method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalProduct attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalProduct attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalProduct attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalProduct attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalProduct attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalProduct attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalProduct attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalProduct attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalProduct attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalProduct attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Product}}}}} + +\end{fulllineitems} + +\index{is\_active (gestion.models.HistoricalProduct attribute)@\spxentry{is\_active}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{name (gestion.models.HistoricalProduct attribute)@\spxentry{name}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{needQuantityButton (gestion.models.HistoricalProduct attribute)@\spxentry{needQuantityButton}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.needQuantityButton}}\pysigline{\sphinxbfcode{\sphinxupquote{needQuantityButton}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalProduct attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalProduct attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalProduct attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalProduct method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalProduct method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + +\index{showingMultiplier (gestion.models.HistoricalProduct attribute)@\spxentry{showingMultiplier}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.showingMultiplier}}\pysigline{\sphinxbfcode{\sphinxupquote{showingMultiplier}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{stockBar (gestion.models.HistoricalProduct attribute)@\spxentry{stockBar}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.stockBar}}\pysigline{\sphinxbfcode{\sphinxupquote{stockBar}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{stockHold (gestion.models.HistoricalProduct attribute)@\spxentry{stockHold}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.stockHold}}\pysigline{\sphinxbfcode{\sphinxupquote{stockHold}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{volume (gestion.models.HistoricalProduct attribute)@\spxentry{volume}\spxextra{gestion.models.HistoricalProduct attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalProduct.volume}}\pysigline{\sphinxbfcode{\sphinxupquote{volume}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalRefund (class in gestion.models)@\spxentry{HistoricalRefund}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalRefund}}}{\emph{id}, \emph{date}, \emph{amount}, \emph{customer}, \emph{coopeman}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalRefund.DoesNotExist@\spxentry{HistoricalRefund.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalRefund.MultipleObjectsReturned@\spxentry{HistoricalRefund.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.HistoricalRefund attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{coopeman (gestion.models.HistoricalRefund attribute)@\spxentry{coopeman}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{coopeman\_id (gestion.models.HistoricalRefund attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{customer (gestion.models.HistoricalRefund attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{customer\_id (gestion.models.HistoricalRefund attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{date (gestion.models.HistoricalRefund attribute)@\spxentry{date}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.date}}\pysigline{\sphinxbfcode{\sphinxupquote{date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalRefund method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalRefund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_date() (gestion.models.HistoricalRefund method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalRefund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.get_next_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalRefund method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalRefund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_date() (gestion.models.HistoricalRefund method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalRefund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.get_previous_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalRefund method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalRefund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalRefund attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalRefund attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalRefund attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalRefund attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalRefund attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalRefund attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalRefund attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalRefund attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalRefund attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalRefund attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Refund}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Refund}}}}} + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalRefund attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalRefund attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalRefund attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalRefund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalRefund method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalRefund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalRefund.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalReload (class in gestion.models)@\spxentry{HistoricalReload}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{HistoricalReload}}}{\emph{id}, \emph{amount}, \emph{date}, \emph{customer}, \emph{PaymentMethod}, \emph{coopeman}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalReload.DoesNotExist@\spxentry{HistoricalReload.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalReload.MultipleObjectsReturned@\spxentry{HistoricalReload.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{PaymentMethod (gestion.models.HistoricalReload attribute)@\spxentry{PaymentMethod}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.PaymentMethod}}\pysigline{\sphinxbfcode{\sphinxupquote{PaymentMethod}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{PaymentMethod\_id (gestion.models.HistoricalReload attribute)@\spxentry{PaymentMethod\_id}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.PaymentMethod_id}}\pysigline{\sphinxbfcode{\sphinxupquote{PaymentMethod\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{amount (gestion.models.HistoricalReload attribute)@\spxentry{amount}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{coopeman (gestion.models.HistoricalReload attribute)@\spxentry{coopeman}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{coopeman\_id (gestion.models.HistoricalReload attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{customer (gestion.models.HistoricalReload attribute)@\spxentry{customer}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{customer\_id (gestion.models.HistoricalReload attribute)@\spxentry{customer\_id}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{date (gestion.models.HistoricalReload attribute)@\spxentry{date}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.date}}\pysigline{\sphinxbfcode{\sphinxupquote{date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (gestion.models.HistoricalReload method)@\spxentry{get\_history\_type\_display()}\spxextra{gestion.models.HistoricalReload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_date() (gestion.models.HistoricalReload method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.HistoricalReload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.get_next_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (gestion.models.HistoricalReload method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{gestion.models.HistoricalReload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_date() (gestion.models.HistoricalReload method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.HistoricalReload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.get_previous_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (gestion.models.HistoricalReload method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{gestion.models.HistoricalReload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (gestion.models.HistoricalReload attribute)@\spxentry{history\_change\_reason}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (gestion.models.HistoricalReload attribute)@\spxentry{history\_date}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (gestion.models.HistoricalReload attribute)@\spxentry{history\_id}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (gestion.models.HistoricalReload attribute)@\spxentry{history\_object}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (gestion.models.HistoricalReload attribute)@\spxentry{history\_type}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (gestion.models.HistoricalReload attribute)@\spxentry{history\_user}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (gestion.models.HistoricalReload attribute)@\spxentry{history\_user\_id}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (gestion.models.HistoricalReload attribute)@\spxentry{id}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (gestion.models.HistoricalReload attribute)@\spxentry{instance}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (gestion.models.HistoricalReload attribute)@\spxentry{instance\_type}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Reload}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Reload}}}}} + +\end{fulllineitems} + +\index{next\_record (gestion.models.HistoricalReload attribute)@\spxentry{next\_record}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (gestion.models.HistoricalReload attribute)@\spxentry{objects}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (gestion.models.HistoricalReload attribute)@\spxentry{prev\_record}\spxextra{gestion.models.HistoricalReload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (gestion.models.HistoricalReload method)@\spxentry{revert\_url()}\spxextra{gestion.models.HistoricalReload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.HistoricalReload.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Keg (class in gestion.models)@\spxentry{Keg}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{Keg}}}{\emph{*args}, \emph{**kwargs}}{} +Stores a keg. +\index{Keg.DoesNotExist@\spxentry{Keg.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{Keg.MultipleObjectsReturned@\spxentry{Keg.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.Keg attribute)@\spxentry{amount}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +The price of the keg. + +\end{fulllineitems} + +\index{barcode (gestion.models.Keg attribute)@\spxentry{barcode}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.barcode}}\pysigline{\sphinxbfcode{\sphinxupquote{barcode}}} +The barcode of the keg. + +\end{fulllineitems} + +\index{capacity (gestion.models.Keg attribute)@\spxentry{capacity}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.capacity}}\pysigline{\sphinxbfcode{\sphinxupquote{capacity}}} +The capacity, in liters, of the keg. + +\end{fulllineitems} + +\index{demi (gestion.models.Keg attribute)@\spxentry{demi}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.demi}}\pysigline{\sphinxbfcode{\sphinxupquote{demi}}} +The related {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Product}}}}} for demi. + +\end{fulllineitems} + +\index{demi\_id (gestion.models.Keg attribute)@\spxentry{demi\_id}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.demi_id}}\pysigline{\sphinxbfcode{\sphinxupquote{demi\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{galopin (gestion.models.Keg attribute)@\spxentry{galopin}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.galopin}}\pysigline{\sphinxbfcode{\sphinxupquote{galopin}}} +The related {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Product}}}}} for galopin. + +\end{fulllineitems} + +\index{galopin\_id (gestion.models.Keg attribute)@\spxentry{galopin\_id}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.galopin_id}}\pysigline{\sphinxbfcode{\sphinxupquote{galopin\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history (gestion.models.Keg attribute)@\spxentry{history}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.Keg attribute)@\spxentry{id}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{is\_active (gestion.models.Keg attribute)@\spxentry{is\_active}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +If True, will be displayed on {\hyperref[\detokenize{modules/views:gestion.views.manage}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{manage()}}}}} view + +\end{fulllineitems} + +\index{keghistory\_set (gestion.models.Keg attribute)@\spxentry{keghistory\_set}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.keghistory_set}}\pysigline{\sphinxbfcode{\sphinxupquote{keghistory\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{name (gestion.models.Keg attribute)@\spxentry{name}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +The name of the keg. + +\end{fulllineitems} + +\index{objects (gestion.models.Keg attribute)@\spxentry{objects}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{pinte (gestion.models.Keg attribute)@\spxentry{pinte}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.pinte}}\pysigline{\sphinxbfcode{\sphinxupquote{pinte}}} +The related {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Product}}}}} for pint. + +\end{fulllineitems} + +\index{pinte\_id (gestion.models.Keg attribute)@\spxentry{pinte\_id}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.pinte_id}}\pysigline{\sphinxbfcode{\sphinxupquote{pinte\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.Keg method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Keg method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + +\index{stockHold (gestion.models.Keg attribute)@\spxentry{stockHold}\spxextra{gestion.models.Keg attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Keg.stockHold}}\pysigline{\sphinxbfcode{\sphinxupquote{stockHold}}} +The number of this keg in the hold. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{KegHistory (class in gestion.models)@\spxentry{KegHistory}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{KegHistory}}}{\emph{*args}, \emph{**kwargs}}{} +Stores a keg history, related to {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Keg}}}}}. +\index{KegHistory.DoesNotExist@\spxentry{KegHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{KegHistory.MultipleObjectsReturned@\spxentry{KegHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amountSold (gestion.models.KegHistory attribute)@\spxentry{amountSold}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.amountSold}}\pysigline{\sphinxbfcode{\sphinxupquote{amountSold}}} +The quantity, in euros, sold. + +\end{fulllineitems} + +\index{closingDate (gestion.models.KegHistory attribute)@\spxentry{closingDate}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.closingDate}}\pysigline{\sphinxbfcode{\sphinxupquote{closingDate}}} +The date when the keg was closed + +\end{fulllineitems} + +\index{get\_next\_by\_openingDate() (gestion.models.KegHistory method)@\spxentry{get\_next\_by\_openingDate()}\spxextra{gestion.models.KegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.get_next_by_openingDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_openingDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: openingDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_openingDate() (gestion.models.KegHistory method)@\spxentry{get\_previous\_by\_openingDate()}\spxextra{gestion.models.KegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.get_previous_by_openingDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_openingDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: openingDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history (gestion.models.KegHistory attribute)@\spxentry{history}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.KegHistory attribute)@\spxentry{id}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{isCurrentKegHistory (gestion.models.KegHistory attribute)@\spxentry{isCurrentKegHistory}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.isCurrentKegHistory}}\pysigline{\sphinxbfcode{\sphinxupquote{isCurrentKegHistory}}} +If True, it corresponds to the current Keg history of {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Keg}}}}} instance. + +\end{fulllineitems} + +\index{keg (gestion.models.KegHistory attribute)@\spxentry{keg}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.keg}}\pysigline{\sphinxbfcode{\sphinxupquote{keg}}} +The {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Keg}}}}} instance. + +\end{fulllineitems} + +\index{keg\_id (gestion.models.KegHistory attribute)@\spxentry{keg\_id}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.keg_id}}\pysigline{\sphinxbfcode{\sphinxupquote{keg\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (gestion.models.KegHistory attribute)@\spxentry{objects}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{openingDate (gestion.models.KegHistory attribute)@\spxentry{openingDate}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.openingDate}}\pysigline{\sphinxbfcode{\sphinxupquote{openingDate}}} +The date when the keg was opened. + +\end{fulllineitems} + +\index{quantitySold (gestion.models.KegHistory attribute)@\spxentry{quantitySold}\spxextra{gestion.models.KegHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.quantitySold}}\pysigline{\sphinxbfcode{\sphinxupquote{quantitySold}}} +The quantity, in liters, sold. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.KegHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.KegHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.KegHistory.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Menu (class in gestion.models)@\spxentry{Menu}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{Menu}}}{\emph{*args}, \emph{**kwargs}}{} +Stores menus. +\index{Menu.DoesNotExist@\spxentry{Menu.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{Menu.MultipleObjectsReturned@\spxentry{Menu.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{adherent\_required (gestion.models.Menu attribute)@\spxentry{adherent\_required}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.adherent_required}}\pysigline{\sphinxbfcode{\sphinxupquote{adherent\_required}}} +Test if the menu contains a restricted {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Product}}}}} + +\end{fulllineitems} + +\index{amount (gestion.models.Menu attribute)@\spxentry{amount}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +Price of the menu. + +\end{fulllineitems} + +\index{articles (gestion.models.Menu attribute)@\spxentry{articles}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.articles}}\pysigline{\sphinxbfcode{\sphinxupquote{articles}}} +Stores {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Products}}}}} contained in the menu + +\end{fulllineitems} + +\index{barcode (gestion.models.Menu attribute)@\spxentry{barcode}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.barcode}}\pysigline{\sphinxbfcode{\sphinxupquote{barcode}}} +Barcode of the menu. + +\end{fulllineitems} + +\index{history (gestion.models.Menu attribute)@\spxentry{history}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.Menu attribute)@\spxentry{id}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{is\_active (gestion.models.Menu attribute)@\spxentry{is\_active}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +If True, the menu will be displayed on the {\hyperref[\detokenize{modules/views:gestion.views.manage}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.views.manage()}}}}} view + +\end{fulllineitems} + +\index{menuhistory\_set (gestion.models.Menu attribute)@\spxentry{menuhistory\_set}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.menuhistory_set}}\pysigline{\sphinxbfcode{\sphinxupquote{menuhistory\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{name (gestion.models.Menu attribute)@\spxentry{name}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +Name of the menu. + +\end{fulllineitems} + +\index{objects (gestion.models.Menu attribute)@\spxentry{objects}\spxextra{gestion.models.Menu attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.Menu method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Menu method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Menu.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{MenuHistory (class in gestion.models)@\spxentry{MenuHistory}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{MenuHistory}}}{\emph{*args}, \emph{**kwargs}}{} +Stores MenuHistory related to {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Menu}}}}}. +\index{MenuHistory.DoesNotExist@\spxentry{MenuHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{MenuHistory.MultipleObjectsReturned@\spxentry{MenuHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.MenuHistory attribute)@\spxentry{amount}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +Price of the purchase. + +\end{fulllineitems} + +\index{coopeman (gestion.models.MenuHistory attribute)@\spxentry{coopeman}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Coopeman (:class:django.contrib.auth.models.User{}`) who collected the money. + +\end{fulllineitems} + +\index{coopeman\_id (gestion.models.MenuHistory attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{customer (gestion.models.MenuHistory attribute)@\spxentry{customer}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{customer\_id (gestion.models.MenuHistory attribute)@\spxentry{customer\_id}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{date (gestion.models.MenuHistory attribute)@\spxentry{date}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.date}}\pysigline{\sphinxbfcode{\sphinxupquote{date}}} +Date of the purhcase. + +\end{fulllineitems} + +\index{get\_next\_by\_date() (gestion.models.MenuHistory method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.MenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.get_next_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_date() (gestion.models.MenuHistory method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.MenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.get_previous_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history (gestion.models.MenuHistory attribute)@\spxentry{history}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.MenuHistory attribute)@\spxentry{id}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{menu (gestion.models.MenuHistory attribute)@\spxentry{menu}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.menu}}\pysigline{\sphinxbfcode{\sphinxupquote{menu}}} +{\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}} purchased. + +\end{fulllineitems} + +\index{menu\_id (gestion.models.MenuHistory attribute)@\spxentry{menu\_id}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.menu_id}}\pysigline{\sphinxbfcode{\sphinxupquote{menu\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (gestion.models.MenuHistory attribute)@\spxentry{objects}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{paymentMethod (gestion.models.MenuHistory attribute)@\spxentry{paymentMethod}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.paymentMethod}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod}}} +{\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Payment Method}}}}} of the Menu purchased. + +\end{fulllineitems} + +\index{paymentMethod\_id (gestion.models.MenuHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.paymentMethod_id}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{quantity (gestion.models.MenuHistory attribute)@\spxentry{quantity}\spxextra{gestion.models.MenuHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.quantity}}\pysigline{\sphinxbfcode{\sphinxupquote{quantity}}} +Client (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.MenuHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.MenuHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.MenuHistory.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Pinte (class in gestion.models)@\spxentry{Pinte}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{Pinte}}}{\emph{*args}, \emph{**kwargs}}{} +Stores a physical pinte +\index{Pinte.DoesNotExist@\spxentry{Pinte.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{Pinte.MultipleObjectsReturned@\spxentry{Pinte.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{current\_owner (gestion.models.Pinte attribute)@\spxentry{current\_owner}\spxextra{gestion.models.Pinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.current_owner}}\pysigline{\sphinxbfcode{\sphinxupquote{current\_owner}}} +The current owner (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{current\_owner\_id (gestion.models.Pinte attribute)@\spxentry{current\_owner\_id}\spxextra{gestion.models.Pinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.current_owner_id}}\pysigline{\sphinxbfcode{\sphinxupquote{current\_owner\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_next\_by\_last\_update\_date() (gestion.models.Pinte method)@\spxentry{get\_next\_by\_last\_update\_date()}\spxextra{gestion.models.Pinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.get_next_by_last_update_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_last\_update\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: last\_update\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_last\_update\_date() (gestion.models.Pinte method)@\spxentry{get\_previous\_by\_last\_update\_date()}\spxextra{gestion.models.Pinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.get_previous_by_last_update_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_last\_update\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: last\_update\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history (gestion.models.Pinte attribute)@\spxentry{history}\spxextra{gestion.models.Pinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.Pinte attribute)@\spxentry{id}\spxextra{gestion.models.Pinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{last\_update\_date (gestion.models.Pinte attribute)@\spxentry{last\_update\_date}\spxextra{gestion.models.Pinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.last_update_date}}\pysigline{\sphinxbfcode{\sphinxupquote{last\_update\_date}}} +The last update date + +\end{fulllineitems} + +\index{objects (gestion.models.Pinte attribute)@\spxentry{objects}\spxextra{gestion.models.Pinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{previous\_owner (gestion.models.Pinte attribute)@\spxentry{previous\_owner}\spxextra{gestion.models.Pinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.previous_owner}}\pysigline{\sphinxbfcode{\sphinxupquote{previous\_owner}}} +The previous owner (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{previous\_owner\_id (gestion.models.Pinte attribute)@\spxentry{previous\_owner\_id}\spxextra{gestion.models.Pinte attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.previous_owner_id}}\pysigline{\sphinxbfcode{\sphinxupquote{previous\_owner\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.Pinte method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Pinte method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Pinte.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Product (class in gestion.models)@\spxentry{Product}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{Product}}}{\emph{*args}, \emph{**kwargs}}{} +Stores a product. +\index{BOTTLE (gestion.models.Product attribute)@\spxentry{BOTTLE}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.BOTTLE}}\pysigline{\sphinxbfcode{\sphinxupquote{BOTTLE}}\sphinxbfcode{\sphinxupquote{ = 'BT'}}} +\end{fulllineitems} + +\index{D\_PRESSION (gestion.models.Product attribute)@\spxentry{D\_PRESSION}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.D_PRESSION}}\pysigline{\sphinxbfcode{\sphinxupquote{D\_PRESSION}}\sphinxbfcode{\sphinxupquote{ = 'DP'}}} +\end{fulllineitems} + +\index{Product.DoesNotExist@\spxentry{Product.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{FOOD (gestion.models.Product attribute)@\spxentry{FOOD}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.FOOD}}\pysigline{\sphinxbfcode{\sphinxupquote{FOOD}}\sphinxbfcode{\sphinxupquote{ = 'FO'}}} +\end{fulllineitems} + +\index{G\_PRESSION (gestion.models.Product attribute)@\spxentry{G\_PRESSION}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.G_PRESSION}}\pysigline{\sphinxbfcode{\sphinxupquote{G\_PRESSION}}\sphinxbfcode{\sphinxupquote{ = 'GP'}}} +\end{fulllineitems} + +\index{Product.MultipleObjectsReturned@\spxentry{Product.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{PANINI (gestion.models.Product attribute)@\spxentry{PANINI}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.PANINI}}\pysigline{\sphinxbfcode{\sphinxupquote{PANINI}}\sphinxbfcode{\sphinxupquote{ = 'PA'}}} +\end{fulllineitems} + +\index{P\_PRESSION (gestion.models.Product attribute)@\spxentry{P\_PRESSION}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.P_PRESSION}}\pysigline{\sphinxbfcode{\sphinxupquote{P\_PRESSION}}\sphinxbfcode{\sphinxupquote{ = 'PP'}}} +\end{fulllineitems} + +\index{SOFT (gestion.models.Product attribute)@\spxentry{SOFT}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.SOFT}}\pysigline{\sphinxbfcode{\sphinxupquote{SOFT}}\sphinxbfcode{\sphinxupquote{ = 'SO'}}} +\end{fulllineitems} + +\index{TYPEINPUT\_CHOICES\_CATEGORIE (gestion.models.Product attribute)@\spxentry{TYPEINPUT\_CHOICES\_CATEGORIE}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.TYPEINPUT_CHOICES_CATEGORIE}}\pysigline{\sphinxbfcode{\sphinxupquote{TYPEINPUT\_CHOICES\_CATEGORIE}}\sphinxbfcode{\sphinxupquote{ = (('PP', 'Pinte Pression'), ('DP', 'Demi Pression'), ('GP', 'Galopin pression'), ('BT', 'Bouteille'), ('SO', 'Soft'), ('FO', 'En-cas'), ('PA', 'Ingredients panini'))}}} +\end{fulllineitems} + +\index{adherentRequired (gestion.models.Product attribute)@\spxentry{adherentRequired}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.adherentRequired}}\pysigline{\sphinxbfcode{\sphinxupquote{adherentRequired}}} +If True, only adherents will be able to buy this product + +\end{fulllineitems} + +\index{amount (gestion.models.Product attribute)@\spxentry{amount}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +The price of the product. + +\end{fulllineitems} + +\index{barcode (gestion.models.Product attribute)@\spxentry{barcode}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.barcode}}\pysigline{\sphinxbfcode{\sphinxupquote{barcode}}} +The barcode of the product. + +\end{fulllineitems} + +\index{category (gestion.models.Product attribute)@\spxentry{category}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.category}}\pysigline{\sphinxbfcode{\sphinxupquote{category}}} +The category of the product + +\end{fulllineitems} + +\index{consumption\_set (gestion.models.Product attribute)@\spxentry{consumption\_set}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.consumption_set}}\pysigline{\sphinxbfcode{\sphinxupquote{consumption\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{consumptionhistory\_set (gestion.models.Product attribute)@\spxentry{consumptionhistory\_set}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.consumptionhistory_set}}\pysigline{\sphinxbfcode{\sphinxupquote{consumptionhistory\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{deg (gestion.models.Product attribute)@\spxentry{deg}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.deg}}\pysigline{\sphinxbfcode{\sphinxupquote{deg}}} +Degree of alcohol, if relevant + +\end{fulllineitems} + +\index{futd (gestion.models.Product attribute)@\spxentry{futd}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.futd}}\pysigline{\sphinxbfcode{\sphinxupquote{futd}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{futg (gestion.models.Product attribute)@\spxentry{futg}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.futg}}\pysigline{\sphinxbfcode{\sphinxupquote{futg}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{futp (gestion.models.Product attribute)@\spxentry{futp}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.futp}}\pysigline{\sphinxbfcode{\sphinxupquote{futp}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{get\_category\_display() (gestion.models.Product method)@\spxentry{get\_category\_display()}\spxextra{gestion.models.Product method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.get_category_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_category\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: category\textgreater{}}}{} +\end{fulllineitems} + +\index{history (gestion.models.Product attribute)@\spxentry{history}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.Product attribute)@\spxentry{id}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{is\_active (gestion.models.Product attribute)@\spxentry{is\_active}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +If True, will be displayed on the {\hyperref[\detokenize{modules/views:gestion.views.manage}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.views.manage()}}}}} view. + +\end{fulllineitems} + +\index{menu\_set (gestion.models.Product attribute)@\spxentry{menu\_set}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.menu_set}}\pysigline{\sphinxbfcode{\sphinxupquote{menu\_set}}} +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Pizza}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{toppings} \PYG{o}{=} \PYG{n}{ManyToManyField}\PYG{p}{(}\PYG{n}{Topping}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{pizzas}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Pizza.toppings}} and \sphinxcode{\sphinxupquote{Topping.pizzas}} are \sphinxcode{\sphinxupquote{ManyToManyDescriptor}} +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{name (gestion.models.Product attribute)@\spxentry{name}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +The name of the product. + +\end{fulllineitems} + +\index{needQuantityButton (gestion.models.Product attribute)@\spxentry{needQuantityButton}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.needQuantityButton}}\pysigline{\sphinxbfcode{\sphinxupquote{needQuantityButton}}} +If True, a javascript quantity button will be displayed + +\end{fulllineitems} + +\index{objects (gestion.models.Product attribute)@\spxentry{objects}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{ranking (gestion.models.Product attribute)@\spxentry{ranking}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.ranking}}\pysigline{\sphinxbfcode{\sphinxupquote{ranking}}} +Get the first 25 users with \sphinxcode{\sphinxupquote{user\_ranking()}} + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.Product method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Product method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + +\index{showingMultiplier (gestion.models.Product attribute)@\spxentry{showingMultiplier}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.showingMultiplier}}\pysigline{\sphinxbfcode{\sphinxupquote{showingMultiplier}}} +On the graphs on {\hyperref[\detokenize{modules/views:users.views.profile}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.views.profile()}}}}} view, the number of total consumptions is divised by the showingMultiplier + +\end{fulllineitems} + +\index{stockBar (gestion.models.Product attribute)@\spxentry{stockBar}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.stockBar}}\pysigline{\sphinxbfcode{\sphinxupquote{stockBar}}} +Number of product at the bar. + +\end{fulllineitems} + +\index{stockHold (gestion.models.Product attribute)@\spxentry{stockHold}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.stockHold}}\pysigline{\sphinxbfcode{\sphinxupquote{stockHold}}} +Number of product in the hold. + +\end{fulllineitems} + +\index{user\_ranking() (gestion.models.Product method)@\spxentry{user\_ranking()}\spxextra{gestion.models.Product method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.user_ranking}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{user\_ranking}}}{\emph{pk}}{} +Return the user ranking for the product + +\end{fulllineitems} + +\index{volume (gestion.models.Product attribute)@\spxentry{volume}\spxextra{gestion.models.Product attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Product.volume}}\pysigline{\sphinxbfcode{\sphinxupquote{volume}}} +The volume, if relevant, of the product + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Refund (class in gestion.models)@\spxentry{Refund}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{Refund}}}{\emph{*args}, \emph{**kwargs}}{} +Stores refunds. +\index{Refund.DoesNotExist@\spxentry{Refund.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{Refund.MultipleObjectsReturned@\spxentry{Refund.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (gestion.models.Refund attribute)@\spxentry{amount}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +Amount of the refund. + +\end{fulllineitems} + +\index{coopeman (gestion.models.Refund attribute)@\spxentry{coopeman}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Coopeman (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) who realized the refund. + +\end{fulllineitems} + +\index{coopeman\_id (gestion.models.Refund attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{customer (gestion.models.Refund attribute)@\spxentry{customer}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Client (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{customer\_id (gestion.models.Refund attribute)@\spxentry{customer\_id}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{date (gestion.models.Refund attribute)@\spxentry{date}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.date}}\pysigline{\sphinxbfcode{\sphinxupquote{date}}} +Date of the refund + +\end{fulllineitems} + +\index{get\_next\_by\_date() (gestion.models.Refund method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.Refund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.get_next_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_date() (gestion.models.Refund method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.Refund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.get_previous_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history (gestion.models.Refund attribute)@\spxentry{history}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.Refund attribute)@\spxentry{id}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (gestion.models.Refund attribute)@\spxentry{objects}\spxextra{gestion.models.Refund attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.Refund method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Refund method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Refund.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Reload (class in gestion.models)@\spxentry{Reload}\spxextra{class in gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{Reload}}}{\emph{*args}, \emph{**kwargs}}{} +Stores reloads. +\index{Reload.DoesNotExist@\spxentry{Reload.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{Reload.MultipleObjectsReturned@\spxentry{Reload.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{PaymentMethod (gestion.models.Reload attribute)@\spxentry{PaymentMethod}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.PaymentMethod}}\pysigline{\sphinxbfcode{\sphinxupquote{PaymentMethod}}} +{\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Payment Method}}}}} of the reload. + +\end{fulllineitems} + +\index{PaymentMethod\_id (gestion.models.Reload attribute)@\spxentry{PaymentMethod\_id}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.PaymentMethod_id}}\pysigline{\sphinxbfcode{\sphinxupquote{PaymentMethod\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{amount (gestion.models.Reload attribute)@\spxentry{amount}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +Amount of the reload. + +\end{fulllineitems} + +\index{coopeman (gestion.models.Reload attribute)@\spxentry{coopeman}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Coopeman (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) who collected the reload. + +\end{fulllineitems} + +\index{coopeman\_id (gestion.models.Reload attribute)@\spxentry{coopeman\_id}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{customer (gestion.models.Reload attribute)@\spxentry{customer}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.customer}}\pysigline{\sphinxbfcode{\sphinxupquote{customer}}} +Client (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{customer\_id (gestion.models.Reload attribute)@\spxentry{customer\_id}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.customer_id}}\pysigline{\sphinxbfcode{\sphinxupquote{customer\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{date (gestion.models.Reload attribute)@\spxentry{date}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.date}}\pysigline{\sphinxbfcode{\sphinxupquote{date}}} +Date of the reload. + +\end{fulllineitems} + +\index{get\_next\_by\_date() (gestion.models.Reload method)@\spxentry{get\_next\_by\_date()}\spxextra{gestion.models.Reload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.get_next_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_date() (gestion.models.Reload method)@\spxentry{get\_previous\_by\_date()}\spxextra{gestion.models.Reload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.get_previous_by_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history (gestion.models.Reload attribute)@\spxentry{history}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (gestion.models.Reload attribute)@\spxentry{id}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (gestion.models.Reload attribute)@\spxentry{objects}\spxextra{gestion.models.Reload attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{save\_without\_historical\_record() (gestion.models.Reload method)@\spxentry{save\_without\_historical\_record()}\spxextra{gestion.models.Reload method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.Reload.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{isDemi() (in module gestion.models)@\spxentry{isDemi()}\spxextra{in module gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.isDemi}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{isDemi}}}{\emph{id}}{} +\end{fulllineitems} + +\index{isGalopin() (in module gestion.models)@\spxentry{isGalopin()}\spxextra{in module gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.isGalopin}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{isGalopin}}}{\emph{id}}{} +\end{fulllineitems} + +\index{isPinte() (in module gestion.models)@\spxentry{isPinte()}\spxextra{in module gestion.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:gestion.models.isPinte}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{gestion.models.}}\sphinxbfcode{\sphinxupquote{isPinte}}}{\emph{id}}{} +\end{fulllineitems} + + + +\section{Users app models} +\label{\detokenize{modules/models:module-users.models}}\label{\detokenize{modules/models:users-app-models}}\index{users.models (module)@\spxentry{users.models}\spxextra{module}}\index{CotisationHistory (class in users.models)@\spxentry{CotisationHistory}\spxextra{class in users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{CotisationHistory}}}{\emph{*args}, \emph{**kwargs}}{} +Stores cotisation histories, related to {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.Cotisation}}}}}. +\index{CotisationHistory.DoesNotExist@\spxentry{CotisationHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{CotisationHistory.MultipleObjectsReturned@\spxentry{CotisationHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (users.models.CotisationHistory attribute)@\spxentry{amount}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +Price, in euros, of the cotisation. + +\end{fulllineitems} + +\index{coopeman (users.models.CotisationHistory attribute)@\spxentry{coopeman}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +User (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) who registered the cotisation. + +\end{fulllineitems} + +\index{coopeman\_id (users.models.CotisationHistory attribute)@\spxentry{coopeman\_id}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{cotisation (users.models.CotisationHistory attribute)@\spxentry{cotisation}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.cotisation}}\pysigline{\sphinxbfcode{\sphinxupquote{cotisation}}} +{\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}} related. + +\end{fulllineitems} + +\index{cotisation\_id (users.models.CotisationHistory attribute)@\spxentry{cotisation\_id}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.cotisation_id}}\pysigline{\sphinxbfcode{\sphinxupquote{cotisation\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{duration (users.models.CotisationHistory attribute)@\spxentry{duration}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.duration}}\pysigline{\sphinxbfcode{\sphinxupquote{duration}}} +Duration, in days, of the cotisation. + +\end{fulllineitems} + +\index{endDate (users.models.CotisationHistory attribute)@\spxentry{endDate}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.endDate}}\pysigline{\sphinxbfcode{\sphinxupquote{endDate}}} +End date of the cotisation. + +\end{fulllineitems} + +\index{get\_next\_by\_endDate() (users.models.CotisationHistory method)@\spxentry{get\_next\_by\_endDate()}\spxextra{users.models.CotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.get_next_by_endDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_endDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: endDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_paymentDate() (users.models.CotisationHistory method)@\spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.CotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.get_next_by_paymentDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_paymentDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: paymentDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_endDate() (users.models.CotisationHistory method)@\spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.CotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.get_previous_by_endDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_endDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: endDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_paymentDate() (users.models.CotisationHistory method)@\spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.CotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.get_previous_by_paymentDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_paymentDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: paymentDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history (users.models.CotisationHistory attribute)@\spxentry{history}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (users.models.CotisationHistory attribute)@\spxentry{id}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (users.models.CotisationHistory attribute)@\spxentry{objects}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{paymentDate (users.models.CotisationHistory attribute)@\spxentry{paymentDate}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.paymentDate}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentDate}}} +Date of the payment. + +\end{fulllineitems} + +\index{paymentMethod (users.models.CotisationHistory attribute)@\spxentry{paymentMethod}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.paymentMethod}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod}}} +{\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Payment method}}}}} used. + +\end{fulllineitems} + +\index{paymentMethod\_id (users.models.CotisationHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.paymentMethod_id}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (users.models.CotisationHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{users.models.CotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + +\index{user (users.models.CotisationHistory attribute)@\spxentry{user}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}} +Client (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{user\_id (users.models.CotisationHistory attribute)@\spxentry{user\_id}\spxextra{users.models.CotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.CotisationHistory.user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalCotisationHistory (class in users.models)@\spxentry{HistoricalCotisationHistory}\spxextra{class in users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{HistoricalCotisationHistory}}}{\emph{id}, \emph{amount}, \emph{duration}, \emph{paymentDate}, \emph{endDate}, \emph{user}, \emph{paymentMethod}, \emph{cotisation}, \emph{coopeman}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalCotisationHistory.DoesNotExist@\spxentry{HistoricalCotisationHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalCotisationHistory.MultipleObjectsReturned@\spxentry{HistoricalCotisationHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (users.models.HistoricalCotisationHistory attribute)@\spxentry{amount}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{coopeman (users.models.HistoricalCotisationHistory attribute)@\spxentry{coopeman}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{coopeman\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{coopeman\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{cotisation (users.models.HistoricalCotisationHistory attribute)@\spxentry{cotisation}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.cotisation}}\pysigline{\sphinxbfcode{\sphinxupquote{cotisation}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{cotisation\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{cotisation\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.cotisation_id}}\pysigline{\sphinxbfcode{\sphinxupquote{cotisation\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{duration (users.models.HistoricalCotisationHistory attribute)@\spxentry{duration}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.duration}}\pysigline{\sphinxbfcode{\sphinxupquote{duration}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{endDate (users.models.HistoricalCotisationHistory attribute)@\spxentry{endDate}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.endDate}}\pysigline{\sphinxbfcode{\sphinxupquote{endDate}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalCotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_endDate() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_next\_by\_endDate()}\spxextra{users.models.HistoricalCotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.get_next_by_endDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_endDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: endDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalCotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_paymentDate() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.HistoricalCotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.get_next_by_paymentDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_paymentDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: paymentDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_endDate() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.HistoricalCotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.get_previous_by_endDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_endDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: endDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalCotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_paymentDate() (users.models.HistoricalCotisationHistory method)@\spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.HistoricalCotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.get_previous_by_paymentDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_paymentDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: paymentDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_change\_reason}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_date}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_object}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_type}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_user}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{history\_user\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (users.models.HistoricalCotisationHistory attribute)@\spxentry{id}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (users.models.HistoricalCotisationHistory attribute)@\spxentry{instance}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (users.models.HistoricalCotisationHistory attribute)@\spxentry{instance\_type}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:users.models.CotisationHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{CotisationHistory}}}}} + +\end{fulllineitems} + +\index{next\_record (users.models.HistoricalCotisationHistory attribute)@\spxentry{next\_record}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (users.models.HistoricalCotisationHistory attribute)@\spxentry{objects}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{paymentDate (users.models.HistoricalCotisationHistory attribute)@\spxentry{paymentDate}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.paymentDate}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentDate}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{paymentMethod (users.models.HistoricalCotisationHistory attribute)@\spxentry{paymentMethod}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.paymentMethod}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{paymentMethod\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{paymentMethod\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.paymentMethod_id}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentMethod\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{prev\_record (users.models.HistoricalCotisationHistory attribute)@\spxentry{prev\_record}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (users.models.HistoricalCotisationHistory method)@\spxentry{revert\_url()}\spxextra{users.models.HistoricalCotisationHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + +\index{user (users.models.HistoricalCotisationHistory attribute)@\spxentry{user}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{user\_id (users.models.HistoricalCotisationHistory attribute)@\spxentry{user\_id}\spxextra{users.models.HistoricalCotisationHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalCotisationHistory.user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalProfile (class in users.models)@\spxentry{HistoricalProfile}\spxextra{class in users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{HistoricalProfile}}}{\emph{id}, \emph{credit}, \emph{debit}, \emph{cotisationEnd}, \emph{user}, \emph{school}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalProfile.DoesNotExist@\spxentry{HistoricalProfile.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalProfile.MultipleObjectsReturned@\spxentry{HistoricalProfile.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{cotisationEnd (users.models.HistoricalProfile attribute)@\spxentry{cotisationEnd}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.cotisationEnd}}\pysigline{\sphinxbfcode{\sphinxupquote{cotisationEnd}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{credit (users.models.HistoricalProfile attribute)@\spxentry{credit}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.credit}}\pysigline{\sphinxbfcode{\sphinxupquote{credit}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{debit (users.models.HistoricalProfile attribute)@\spxentry{debit}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.debit}}\pysigline{\sphinxbfcode{\sphinxupquote{debit}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (users.models.HistoricalProfile method)@\spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalProfile method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (users.models.HistoricalProfile method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalProfile method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (users.models.HistoricalProfile method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalProfile method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (users.models.HistoricalProfile attribute)@\spxentry{history\_change\_reason}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (users.models.HistoricalProfile attribute)@\spxentry{history\_date}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (users.models.HistoricalProfile attribute)@\spxentry{history\_id}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (users.models.HistoricalProfile attribute)@\spxentry{history\_object}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (users.models.HistoricalProfile attribute)@\spxentry{history\_type}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (users.models.HistoricalProfile attribute)@\spxentry{history\_user}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (users.models.HistoricalProfile attribute)@\spxentry{history\_user\_id}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (users.models.HistoricalProfile attribute)@\spxentry{id}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (users.models.HistoricalProfile attribute)@\spxentry{instance}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (users.models.HistoricalProfile attribute)@\spxentry{instance\_type}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:users.models.Profile}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Profile}}}}} + +\end{fulllineitems} + +\index{next\_record (users.models.HistoricalProfile attribute)@\spxentry{next\_record}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (users.models.HistoricalProfile attribute)@\spxentry{objects}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (users.models.HistoricalProfile attribute)@\spxentry{prev\_record}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (users.models.HistoricalProfile method)@\spxentry{revert\_url()}\spxextra{users.models.HistoricalProfile method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + +\index{school (users.models.HistoricalProfile attribute)@\spxentry{school}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.school}}\pysigline{\sphinxbfcode{\sphinxupquote{school}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{school\_id (users.models.HistoricalProfile attribute)@\spxentry{school\_id}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.school_id}}\pysigline{\sphinxbfcode{\sphinxupquote{school\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{user (users.models.HistoricalProfile attribute)@\spxentry{user}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{user\_id (users.models.HistoricalProfile attribute)@\spxentry{user\_id}\spxextra{users.models.HistoricalProfile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalProfile.user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalSchool (class in users.models)@\spxentry{HistoricalSchool}\spxextra{class in users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{HistoricalSchool}}}{\emph{id}, \emph{name}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalSchool.DoesNotExist@\spxentry{HistoricalSchool.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalSchool.MultipleObjectsReturned@\spxentry{HistoricalSchool.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{get\_history\_type\_display() (users.models.HistoricalSchool method)@\spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalSchool method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (users.models.HistoricalSchool method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalSchool method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (users.models.HistoricalSchool method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalSchool method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (users.models.HistoricalSchool attribute)@\spxentry{history\_change\_reason}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (users.models.HistoricalSchool attribute)@\spxentry{history\_date}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (users.models.HistoricalSchool attribute)@\spxentry{history\_id}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (users.models.HistoricalSchool attribute)@\spxentry{history\_object}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (users.models.HistoricalSchool attribute)@\spxentry{history\_type}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (users.models.HistoricalSchool attribute)@\spxentry{history\_user}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (users.models.HistoricalSchool attribute)@\spxentry{history\_user\_id}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (users.models.HistoricalSchool attribute)@\spxentry{id}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (users.models.HistoricalSchool attribute)@\spxentry{instance}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (users.models.HistoricalSchool attribute)@\spxentry{instance\_type}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:users.models.School}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{School}}}}} + +\end{fulllineitems} + +\index{name (users.models.HistoricalSchool attribute)@\spxentry{name}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (users.models.HistoricalSchool attribute)@\spxentry{next\_record}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (users.models.HistoricalSchool attribute)@\spxentry{objects}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (users.models.HistoricalSchool attribute)@\spxentry{prev\_record}\spxextra{users.models.HistoricalSchool attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (users.models.HistoricalSchool method)@\spxentry{revert\_url()}\spxextra{users.models.HistoricalSchool method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalSchool.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalWhiteListHistory (class in users.models)@\spxentry{HistoricalWhiteListHistory}\spxextra{class in users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{HistoricalWhiteListHistory}}}{\emph{id}, \emph{paymentDate}, \emph{endDate}, \emph{duration}, \emph{user}, \emph{coopeman}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalWhiteListHistory.DoesNotExist@\spxentry{HistoricalWhiteListHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalWhiteListHistory.MultipleObjectsReturned@\spxentry{HistoricalWhiteListHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{coopeman (users.models.HistoricalWhiteListHistory attribute)@\spxentry{coopeman}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{coopeman\_id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{coopeman\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{duration (users.models.HistoricalWhiteListHistory attribute)@\spxentry{duration}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.duration}}\pysigline{\sphinxbfcode{\sphinxupquote{duration}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{endDate (users.models.HistoricalWhiteListHistory attribute)@\spxentry{endDate}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.endDate}}\pysigline{\sphinxbfcode{\sphinxupquote{endDate}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_history\_type\_display()}\spxextra{users.models.HistoricalWhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_endDate() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_next\_by\_endDate()}\spxextra{users.models.HistoricalWhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.get_next_by_endDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_endDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: endDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{users.models.HistoricalWhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_paymentDate() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.HistoricalWhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.get_next_by_paymentDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_paymentDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: paymentDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_endDate() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.HistoricalWhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.get_previous_by_endDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_endDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: endDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{users.models.HistoricalWhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_paymentDate() (users.models.HistoricalWhiteListHistory method)@\spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.HistoricalWhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.get_previous_by_paymentDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_paymentDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: paymentDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_change\_reason}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_date}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_object}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_type}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_user}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{history\_user\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{id}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (users.models.HistoricalWhiteListHistory attribute)@\spxentry{instance}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (users.models.HistoricalWhiteListHistory attribute)@\spxentry{instance\_type}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:users.models.WhiteListHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{WhiteListHistory}}}}} + +\end{fulllineitems} + +\index{next\_record (users.models.HistoricalWhiteListHistory attribute)@\spxentry{next\_record}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (users.models.HistoricalWhiteListHistory attribute)@\spxentry{objects}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{paymentDate (users.models.HistoricalWhiteListHistory attribute)@\spxentry{paymentDate}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.paymentDate}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentDate}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{prev\_record (users.models.HistoricalWhiteListHistory attribute)@\spxentry{prev\_record}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (users.models.HistoricalWhiteListHistory method)@\spxentry{revert\_url()}\spxextra{users.models.HistoricalWhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + +\index{user (users.models.HistoricalWhiteListHistory attribute)@\spxentry{user}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{user\_id (users.models.HistoricalWhiteListHistory attribute)@\spxentry{user\_id}\spxextra{users.models.HistoricalWhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.HistoricalWhiteListHistory.user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Profile (class in users.models)@\spxentry{Profile}\spxextra{class in users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{Profile}}}{\emph{*args}, \emph{**kwargs}}{} +Stores user profile. +\index{Profile.DoesNotExist@\spxentry{Profile.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{Profile.MultipleObjectsReturned@\spxentry{Profile.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{alcohol (users.models.Profile attribute)@\spxentry{alcohol}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.alcohol}}\pysigline{\sphinxbfcode{\sphinxupquote{alcohol}}} +Computes ingerated alcohol. + +\end{fulllineitems} + +\index{balance (users.models.Profile attribute)@\spxentry{balance}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.balance}}\pysigline{\sphinxbfcode{\sphinxupquote{balance}}} +Computes client balance (\sphinxcode{\sphinxupquote{gestion.models.Profile.credit}} - \sphinxcode{\sphinxupquote{gestion.models.Profile.debit}}). + +\end{fulllineitems} + +\index{cotisationEnd (users.models.Profile attribute)@\spxentry{cotisationEnd}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.cotisationEnd}}\pysigline{\sphinxbfcode{\sphinxupquote{cotisationEnd}}} +Date of end of cotisation for the client + +\end{fulllineitems} + +\index{credit (users.models.Profile attribute)@\spxentry{credit}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.credit}}\pysigline{\sphinxbfcode{\sphinxupquote{credit}}} +Amount of money, in euros, put on the account + +\end{fulllineitems} + +\index{debit (users.models.Profile attribute)@\spxentry{debit}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.debit}}\pysigline{\sphinxbfcode{\sphinxupquote{debit}}} +Amount of money, in euros, spent form the account + +\end{fulllineitems} + +\index{history (users.models.Profile attribute)@\spxentry{history}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (users.models.Profile attribute)@\spxentry{id}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{is\_adherent (users.models.Profile attribute)@\spxentry{is\_adherent}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.is_adherent}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_adherent}}} +Test if a client is adherent. + +\end{fulllineitems} + +\index{nb\_pintes (users.models.Profile attribute)@\spxentry{nb\_pintes}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.nb_pintes}}\pysigline{\sphinxbfcode{\sphinxupquote{nb\_pintes}}} +Return the number of {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Pinte(s)}}}}} currently owned. + +\end{fulllineitems} + +\index{objects (users.models.Profile attribute)@\spxentry{objects}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{positiveBalance() (users.models.Profile method)@\spxentry{positiveBalance()}\spxextra{users.models.Profile method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.positiveBalance}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{positiveBalance}}}{}{} +Test if the client balance is positive or null. + +\end{fulllineitems} + +\index{rank (users.models.Profile attribute)@\spxentry{rank}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.rank}}\pysigline{\sphinxbfcode{\sphinxupquote{rank}}} +Computes the rank (by \sphinxcode{\sphinxupquote{gestion.models.Profile.debit}}) of the client. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (users.models.Profile method)@\spxentry{save\_without\_historical\_record()}\spxextra{users.models.Profile method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + +\index{school (users.models.Profile attribute)@\spxentry{school}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.school}}\pysigline{\sphinxbfcode{\sphinxupquote{school}}} +{\hyperref[\detokenize{modules/models:users.models.School}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{School}}}}} of the client + +\end{fulllineitems} + +\index{school\_id (users.models.Profile attribute)@\spxentry{school\_id}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.school_id}}\pysigline{\sphinxbfcode{\sphinxupquote{school\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{user (users.models.Profile attribute)@\spxentry{user}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}} +Client (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{user\_id (users.models.Profile attribute)@\spxentry{user\_id}\spxextra{users.models.Profile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.Profile.user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{School (class in users.models)@\spxentry{School}\spxextra{class in users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{School}}}{\emph{*args}, \emph{**kwargs}}{} +Stores school. +\index{School.DoesNotExist@\spxentry{School.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{School.MultipleObjectsReturned@\spxentry{School.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{history (users.models.School attribute)@\spxentry{history}\spxextra{users.models.School attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (users.models.School attribute)@\spxentry{id}\spxextra{users.models.School attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{name (users.models.School attribute)@\spxentry{name}\spxextra{users.models.School attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +The name of the school + +\end{fulllineitems} + +\index{objects (users.models.School attribute)@\spxentry{objects}\spxextra{users.models.School attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{profile\_set (users.models.School attribute)@\spxentry{profile\_set}\spxextra{users.models.School attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School.profile_set}}\pysigline{\sphinxbfcode{\sphinxupquote{profile\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (users.models.School method)@\spxentry{save\_without\_historical\_record()}\spxextra{users.models.School method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.School.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{WhiteListHistory (class in users.models)@\spxentry{WhiteListHistory}\spxextra{class in users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{WhiteListHistory}}}{\emph{*args}, \emph{**kwargs}}{} +Stores whitelist history. +\index{WhiteListHistory.DoesNotExist@\spxentry{WhiteListHistory.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{WhiteListHistory.MultipleObjectsReturned@\spxentry{WhiteListHistory.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{coopeman (users.models.WhiteListHistory attribute)@\spxentry{coopeman}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.coopeman}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman}}} +User (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) who registered the cotisation. + +\end{fulllineitems} + +\index{coopeman\_id (users.models.WhiteListHistory attribute)@\spxentry{coopeman\_id}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.coopeman_id}}\pysigline{\sphinxbfcode{\sphinxupquote{coopeman\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{duration (users.models.WhiteListHistory attribute)@\spxentry{duration}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.duration}}\pysigline{\sphinxbfcode{\sphinxupquote{duration}}} +Duration, in days, of the whitelist + +\end{fulllineitems} + +\index{endDate (users.models.WhiteListHistory attribute)@\spxentry{endDate}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.endDate}}\pysigline{\sphinxbfcode{\sphinxupquote{endDate}}} +End date of the whitelist. + +\end{fulllineitems} + +\index{get\_next\_by\_endDate() (users.models.WhiteListHistory method)@\spxentry{get\_next\_by\_endDate()}\spxextra{users.models.WhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.get_next_by_endDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_endDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: endDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_next\_by\_paymentDate() (users.models.WhiteListHistory method)@\spxentry{get\_next\_by\_paymentDate()}\spxextra{users.models.WhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.get_next_by_paymentDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_paymentDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: paymentDate\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_endDate() (users.models.WhiteListHistory method)@\spxentry{get\_previous\_by\_endDate()}\spxextra{users.models.WhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.get_previous_by_endDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_endDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: endDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_paymentDate() (users.models.WhiteListHistory method)@\spxentry{get\_previous\_by\_paymentDate()}\spxextra{users.models.WhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.get_previous_by_paymentDate}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_paymentDate}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: paymentDate\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history (users.models.WhiteListHistory attribute)@\spxentry{history}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (users.models.WhiteListHistory attribute)@\spxentry{id}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (users.models.WhiteListHistory attribute)@\spxentry{objects}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{paymentDate (users.models.WhiteListHistory attribute)@\spxentry{paymentDate}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.paymentDate}}\pysigline{\sphinxbfcode{\sphinxupquote{paymentDate}}} +Date of the beginning of the whitelist. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (users.models.WhiteListHistory method)@\spxentry{save\_without\_historical\_record()}\spxextra{users.models.WhiteListHistory method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + +\index{user (users.models.WhiteListHistory attribute)@\spxentry{user}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}} +Client (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + +\index{user\_id (users.models.WhiteListHistory attribute)@\spxentry{user\_id}\spxextra{users.models.WhiteListHistory attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.WhiteListHistory.user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{create\_user\_profile() (in module users.models)@\spxentry{create\_user\_profile()}\spxextra{in module users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.create_user_profile}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{create\_user\_profile}}}{\emph{sender}, \emph{instance}, \emph{created}, \emph{**kwargs}}{} +Create profile when user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) is created. + +\end{fulllineitems} + +\index{save\_user\_profile() (in module users.models)@\spxentry{save\_user\_profile()}\spxextra{in module users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.save_user_profile}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{save\_user\_profile}}}{\emph{sender}, \emph{instance}, \emph{**kwargs}}{} +Save profile when user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) is saved. + +\end{fulllineitems} + +\index{str\_user() (in module users.models)@\spxentry{str\_user()}\spxextra{in module users.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:users.models.str_user}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.models.}}\sphinxbfcode{\sphinxupquote{str\_user}}}{\emph{self}}{} +Rewrite str method for user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). + +\end{fulllineitems} + + + +\section{Preferences app models} +\label{\detokenize{modules/models:module-preferences.models}}\label{\detokenize{modules/models:preferences-app-models}}\index{preferences.models (module)@\spxentry{preferences.models}\spxextra{module}}\index{Cotisation (class in preferences.models)@\spxentry{Cotisation}\spxextra{class in preferences.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.models.}}\sphinxbfcode{\sphinxupquote{Cotisation}}}{\emph{*args}, \emph{**kwargs}}{} +Stores cotisations. +\index{Cotisation.DoesNotExist@\spxentry{Cotisation.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{Cotisation.MultipleObjectsReturned@\spxentry{Cotisation.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (preferences.models.Cotisation attribute)@\spxentry{amount}\spxextra{preferences.models.Cotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +Price of the cotisation. + +\end{fulllineitems} + +\index{cotisationhistory\_set (preferences.models.Cotisation attribute)@\spxentry{cotisationhistory\_set}\spxextra{preferences.models.Cotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.cotisationhistory_set}}\pysigline{\sphinxbfcode{\sphinxupquote{cotisationhistory\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{duration (preferences.models.Cotisation attribute)@\spxentry{duration}\spxextra{preferences.models.Cotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.duration}}\pysigline{\sphinxbfcode{\sphinxupquote{duration}}} +Duration (in days) of the cotisation + +\end{fulllineitems} + +\index{history (preferences.models.Cotisation attribute)@\spxentry{history}\spxextra{preferences.models.Cotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{id (preferences.models.Cotisation attribute)@\spxentry{id}\spxextra{preferences.models.Cotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{objects (preferences.models.Cotisation attribute)@\spxentry{objects}\spxextra{preferences.models.Cotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{save\_without\_historical\_record() (preferences.models.Cotisation method)@\spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.Cotisation method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.Cotisation.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{GeneralPreferences (class in preferences.models)@\spxentry{GeneralPreferences}\spxextra{class in preferences.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.models.}}\sphinxbfcode{\sphinxupquote{GeneralPreferences}}}{\emph{*args}, \emph{**kwargs}}{} +Stores a unique line of general preferences +\index{GeneralPreferences.DoesNotExist@\spxentry{GeneralPreferences.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{GeneralPreferences.MultipleObjectsReturned@\spxentry{GeneralPreferences.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{active\_message (preferences.models.GeneralPreferences attribute)@\spxentry{active\_message}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.active_message}}\pysigline{\sphinxbfcode{\sphinxupquote{active\_message}}} +Message displayed on the {\hyperref[\detokenize{modules/views:preferences.views.inactive}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{inactive()}}}}} + +\end{fulllineitems} + +\index{automatic\_logout\_time (preferences.models.GeneralPreferences attribute)@\spxentry{automatic\_logout\_time}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.automatic_logout_time}}\pysigline{\sphinxbfcode{\sphinxupquote{automatic\_logout\_time}}} +Duration after which the user is automatically disconnected if inactive + +\end{fulllineitems} + +\index{brewer (preferences.models.GeneralPreferences attribute)@\spxentry{brewer}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.brewer}}\pysigline{\sphinxbfcode{\sphinxupquote{brewer}}} +The name of the brewer + +\end{fulllineitems} + +\index{floating\_buttons (preferences.models.GeneralPreferences attribute)@\spxentry{floating\_buttons}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.floating_buttons}}\pysigline{\sphinxbfcode{\sphinxupquote{floating\_buttons}}} +If True, displays floating paymentButtons on the {\hyperref[\detokenize{modules/views:gestion.views.manage}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{manage()}}}}} view. + +\end{fulllineitems} + +\index{global\_message (preferences.models.GeneralPreferences attribute)@\spxentry{global\_message}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.global_message}}\pysigline{\sphinxbfcode{\sphinxupquote{global\_message}}} +List of messages, separated by a carriage return. One will be chosen randomly at each request on displayed in the header + +\end{fulllineitems} + +\index{grocer (preferences.models.GeneralPreferences attribute)@\spxentry{grocer}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.grocer}}\pysigline{\sphinxbfcode{\sphinxupquote{grocer}}} +The name of the grocer + +\end{fulllineitems} + +\index{history (preferences.models.GeneralPreferences attribute)@\spxentry{history}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{home\_text (preferences.models.GeneralPreferences attribute)@\spxentry{home\_text}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.home_text}}\pysigline{\sphinxbfcode{\sphinxupquote{home\_text}}} +Text display on the home page + +\end{fulllineitems} + +\index{id (preferences.models.GeneralPreferences attribute)@\spxentry{id}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{is\_active (preferences.models.GeneralPreferences attribute)@\spxentry{is\_active}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +If True, the site will be accessible. If False, all the requests are redirect to {\hyperref[\detokenize{modules/views:preferences.views.inactive}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{inactive()}}}}}. + +\end{fulllineitems} + +\index{lost\_pintes\_allowed (preferences.models.GeneralPreferences attribute)@\spxentry{lost\_pintes\_allowed}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.lost_pintes_allowed}}\pysigline{\sphinxbfcode{\sphinxupquote{lost\_pintes\_allowed}}} +If \textgreater{} 0, a user will be blocked if he has losted more pints than the value + +\end{fulllineitems} + +\index{menu (preferences.models.GeneralPreferences attribute)@\spxentry{menu}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.menu}}\pysigline{\sphinxbfcode{\sphinxupquote{menu}}} +The file of the menu + +\end{fulllineitems} + +\index{objects (preferences.models.GeneralPreferences attribute)@\spxentry{objects}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{president (preferences.models.GeneralPreferences attribute)@\spxentry{president}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.president}}\pysigline{\sphinxbfcode{\sphinxupquote{president}}} +The name of the president + +\end{fulllineitems} + +\index{rules (preferences.models.GeneralPreferences attribute)@\spxentry{rules}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.rules}}\pysigline{\sphinxbfcode{\sphinxupquote{rules}}} +The file of the internal rules + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (preferences.models.GeneralPreferences method)@\spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.GeneralPreferences method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + +\index{secretary (preferences.models.GeneralPreferences attribute)@\spxentry{secretary}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.secretary}}\pysigline{\sphinxbfcode{\sphinxupquote{secretary}}} +The name of the secretary + +\end{fulllineitems} + +\index{statutes (preferences.models.GeneralPreferences attribute)@\spxentry{statutes}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.statutes}}\pysigline{\sphinxbfcode{\sphinxupquote{statutes}}} +The file of the statutes + +\end{fulllineitems} + +\index{treasurer (preferences.models.GeneralPreferences attribute)@\spxentry{treasurer}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.treasurer}}\pysigline{\sphinxbfcode{\sphinxupquote{treasurer}}} +The name of the treasurer + +\end{fulllineitems} + +\index{use\_pinte\_monitoring (preferences.models.GeneralPreferences attribute)@\spxentry{use\_pinte\_monitoring}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.use_pinte_monitoring}}\pysigline{\sphinxbfcode{\sphinxupquote{use\_pinte\_monitoring}}} +If True, alert will be displayed to allocate pints during order + +\end{fulllineitems} + +\index{vice\_president (preferences.models.GeneralPreferences attribute)@\spxentry{vice\_president}\spxextra{preferences.models.GeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.GeneralPreferences.vice_president}}\pysigline{\sphinxbfcode{\sphinxupquote{vice\_president}}} +The name of the vice-president + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalCotisation (class in preferences.models)@\spxentry{HistoricalCotisation}\spxextra{class in preferences.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.models.}}\sphinxbfcode{\sphinxupquote{HistoricalCotisation}}}{\emph{id}, \emph{amount}, \emph{duration}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalCotisation.DoesNotExist@\spxentry{HistoricalCotisation.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalCotisation.MultipleObjectsReturned@\spxentry{HistoricalCotisation.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{amount (preferences.models.HistoricalCotisation attribute)@\spxentry{amount}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.amount}}\pysigline{\sphinxbfcode{\sphinxupquote{amount}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{duration (preferences.models.HistoricalCotisation attribute)@\spxentry{duration}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.duration}}\pysigline{\sphinxbfcode{\sphinxupquote{duration}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (preferences.models.HistoricalCotisation method)@\spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalCotisation method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (preferences.models.HistoricalCotisation method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalCotisation method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (preferences.models.HistoricalCotisation method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalCotisation method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_date}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_id}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_object}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_type}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_user}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (preferences.models.HistoricalCotisation attribute)@\spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (preferences.models.HistoricalCotisation attribute)@\spxentry{id}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (preferences.models.HistoricalCotisation attribute)@\spxentry{instance}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (preferences.models.HistoricalCotisation attribute)@\spxentry{instance\_type}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}} + +\end{fulllineitems} + +\index{next\_record (preferences.models.HistoricalCotisation attribute)@\spxentry{next\_record}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (preferences.models.HistoricalCotisation attribute)@\spxentry{objects}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (preferences.models.HistoricalCotisation attribute)@\spxentry{prev\_record}\spxextra{preferences.models.HistoricalCotisation attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (preferences.models.HistoricalCotisation method)@\spxentry{revert\_url()}\spxextra{preferences.models.HistoricalCotisation method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalCotisation.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalGeneralPreferences (class in preferences.models)@\spxentry{HistoricalGeneralPreferences}\spxextra{class in preferences.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.models.}}\sphinxbfcode{\sphinxupquote{HistoricalGeneralPreferences}}}{\emph{id}, \emph{is\_active}, \emph{active\_message}, \emph{global\_message}, \emph{president}, \emph{vice\_president}, \emph{treasurer}, \emph{secretary}, \emph{brewer}, \emph{grocer}, \emph{use\_pinte\_monitoring}, \emph{lost\_pintes\_allowed}, \emph{floating\_buttons}, \emph{home\_text}, \emph{automatic\_logout\_time}, \emph{statutes}, \emph{rules}, \emph{menu}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalGeneralPreferences.DoesNotExist@\spxentry{HistoricalGeneralPreferences.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalGeneralPreferences.MultipleObjectsReturned@\spxentry{HistoricalGeneralPreferences.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{active\_message (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{active\_message}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.active_message}}\pysigline{\sphinxbfcode{\sphinxupquote{active\_message}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{automatic\_logout\_time (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{automatic\_logout\_time}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.automatic_logout_time}}\pysigline{\sphinxbfcode{\sphinxupquote{automatic\_logout\_time}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{brewer (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{brewer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.brewer}}\pysigline{\sphinxbfcode{\sphinxupquote{brewer}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{floating\_buttons (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{floating\_buttons}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.floating_buttons}}\pysigline{\sphinxbfcode{\sphinxupquote{floating\_buttons}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (preferences.models.HistoricalGeneralPreferences method)@\spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalGeneralPreferences method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (preferences.models.HistoricalGeneralPreferences method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalGeneralPreferences method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (preferences.models.HistoricalGeneralPreferences method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalGeneralPreferences method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{global\_message (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{global\_message}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.global_message}}\pysigline{\sphinxbfcode{\sphinxupquote{global\_message}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{grocer (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{grocer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.grocer}}\pysigline{\sphinxbfcode{\sphinxupquote{grocer}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_change\_reason (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_date}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_object}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_type}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_user}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{home\_text (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{home\_text}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.home_text}}\pysigline{\sphinxbfcode{\sphinxupquote{home\_text}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{id}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{instance}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{instance\_type}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{GeneralPreferences}}}}} + +\end{fulllineitems} + +\index{is\_active (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{is\_active}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{lost\_pintes\_allowed (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{lost\_pintes\_allowed}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.lost_pintes_allowed}}\pysigline{\sphinxbfcode{\sphinxupquote{lost\_pintes\_allowed}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{menu (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{menu}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.menu}}\pysigline{\sphinxbfcode{\sphinxupquote{menu}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{next\_record}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{objects}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{president (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{president}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.president}}\pysigline{\sphinxbfcode{\sphinxupquote{president}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{prev\_record (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{prev\_record}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (preferences.models.HistoricalGeneralPreferences method)@\spxentry{revert\_url()}\spxextra{preferences.models.HistoricalGeneralPreferences method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + +\index{rules (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{rules}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.rules}}\pysigline{\sphinxbfcode{\sphinxupquote{rules}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{secretary (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{secretary}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.secretary}}\pysigline{\sphinxbfcode{\sphinxupquote{secretary}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{statutes (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{statutes}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.statutes}}\pysigline{\sphinxbfcode{\sphinxupquote{statutes}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{treasurer (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{treasurer}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.treasurer}}\pysigline{\sphinxbfcode{\sphinxupquote{treasurer}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{use\_pinte\_monitoring (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{use\_pinte\_monitoring}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.use_pinte_monitoring}}\pysigline{\sphinxbfcode{\sphinxupquote{use\_pinte\_monitoring}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{vice\_president (preferences.models.HistoricalGeneralPreferences attribute)@\spxentry{vice\_president}\spxextra{preferences.models.HistoricalGeneralPreferences attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalGeneralPreferences.vice_president}}\pysigline{\sphinxbfcode{\sphinxupquote{vice\_president}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{HistoricalPaymentMethod (class in preferences.models)@\spxentry{HistoricalPaymentMethod}\spxextra{class in preferences.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.models.}}\sphinxbfcode{\sphinxupquote{HistoricalPaymentMethod}}}{\emph{id}, \emph{name}, \emph{is\_active}, \emph{is\_usable\_in\_cotisation}, \emph{is\_usable\_in\_reload}, \emph{affect\_balance}, \emph{icon}, \emph{history\_id}, \emph{history\_change\_reason}, \emph{history\_date}, \emph{history\_user}, \emph{history\_type}}{}~\index{HistoricalPaymentMethod.DoesNotExist@\spxentry{HistoricalPaymentMethod.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{HistoricalPaymentMethod.MultipleObjectsReturned@\spxentry{HistoricalPaymentMethod.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{affect\_balance (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{affect\_balance}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.affect_balance}}\pysigline{\sphinxbfcode{\sphinxupquote{affect\_balance}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{get\_history\_type\_display() (preferences.models.HistoricalPaymentMethod method)@\spxentry{get\_history\_type\_display()}\spxextra{preferences.models.HistoricalPaymentMethod method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.get_history_type_display}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_history\_type\_display}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.CharField: history\_type\textgreater{}}}{} +\end{fulllineitems} + +\index{get\_next\_by\_history\_date() (preferences.models.HistoricalPaymentMethod method)@\spxentry{get\_next\_by\_history\_date()}\spxextra{preferences.models.HistoricalPaymentMethod method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.get_next_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_next\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=True}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{get\_previous\_by\_history\_date() (preferences.models.HistoricalPaymentMethod method)@\spxentry{get\_previous\_by\_history\_date()}\spxextra{preferences.models.HistoricalPaymentMethod method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.get_previous_by_history_date}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_previous\_by\_history\_date}}}{\emph{*}, \emph{field=\textless{}django.db.models.fields.DateTimeField: history\_date\textgreater{}}, \emph{is\_next=False}, \emph{**kwargs}}{} +\end{fulllineitems} + +\index{history\_change\_reason (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_change\_reason}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.history_change_reason}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_change\_reason}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_date (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_date}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.history_date}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_date}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_id (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.history_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_object (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_object}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.history_object}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_object}}} +\end{fulllineitems} + +\index{history\_type (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_type}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.history_type}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_type}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{history\_user (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_user}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.history_user}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user}}} +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Child.parent}} is a \sphinxcode{\sphinxupquote{ForwardManyToOneDescriptor}} instance. + +\end{fulllineitems} + +\index{history\_user\_id (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{history\_user\_id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.history_user_id}}\pysigline{\sphinxbfcode{\sphinxupquote{history\_user\_id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{icon (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{icon}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.icon}}\pysigline{\sphinxbfcode{\sphinxupquote{icon}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{id (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{id}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{instance (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{instance}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.instance}}\pysigline{\sphinxbfcode{\sphinxupquote{instance}}} +\end{fulllineitems} + +\index{instance\_type (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{instance\_type}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.instance_type}}\pysigline{\sphinxbfcode{\sphinxupquote{instance\_type}}} +alias of {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethod}}}}} + +\end{fulllineitems} + +\index{is\_active (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{is\_active}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{is\_usable\_in\_cotisation (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{is\_usable\_in\_cotisation}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.is_usable_in_cotisation}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_usable\_in\_cotisation}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{is\_usable\_in\_reload (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{is\_usable\_in\_reload}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.is_usable_in_reload}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_usable\_in\_reload}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{name (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{name}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{next\_record (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{next\_record}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.next_record}}\pysigline{\sphinxbfcode{\sphinxupquote{next\_record}}} +Get the next history record for the instance. \sphinxtitleref{None} if last. + +\end{fulllineitems} + +\index{objects (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{objects}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{prev\_record (preferences.models.HistoricalPaymentMethod attribute)@\spxentry{prev\_record}\spxextra{preferences.models.HistoricalPaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.prev_record}}\pysigline{\sphinxbfcode{\sphinxupquote{prev\_record}}} +Get the previous history record for the instance. \sphinxtitleref{None} if first. + +\end{fulllineitems} + +\index{revert\_url() (preferences.models.HistoricalPaymentMethod method)@\spxentry{revert\_url()}\spxextra{preferences.models.HistoricalPaymentMethod method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.HistoricalPaymentMethod.revert_url}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{revert\_url}}}{}{} +URL for this change in the default admin site. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{PaymentMethod (class in preferences.models)@\spxentry{PaymentMethod}\spxextra{class in preferences.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.models.}}\sphinxbfcode{\sphinxupquote{PaymentMethod}}}{\emph{*args}, \emph{**kwargs}}{} +Stores payment methods. +\index{PaymentMethod.DoesNotExist@\spxentry{PaymentMethod.DoesNotExist}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.DoesNotExist}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{DoesNotExist}}} +\end{fulllineitems} + +\index{PaymentMethod.MultipleObjectsReturned@\spxentry{PaymentMethod.MultipleObjectsReturned}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.MultipleObjectsReturned}}\pysigline{\sphinxbfcode{\sphinxupquote{exception }}\sphinxbfcode{\sphinxupquote{MultipleObjectsReturned}}} +\end{fulllineitems} + +\index{affect\_balance (preferences.models.PaymentMethod attribute)@\spxentry{affect\_balance}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.affect_balance}}\pysigline{\sphinxbfcode{\sphinxupquote{affect\_balance}}} +If true, the PaymentMethod will decrease the user’s balance when used. + +\end{fulllineitems} + +\index{consumptionhistory\_set (preferences.models.PaymentMethod attribute)@\spxentry{consumptionhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.consumptionhistory_set}}\pysigline{\sphinxbfcode{\sphinxupquote{consumptionhistory\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{cotisationhistory\_set (preferences.models.PaymentMethod attribute)@\spxentry{cotisationhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.cotisationhistory_set}}\pysigline{\sphinxbfcode{\sphinxupquote{cotisationhistory\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{history (preferences.models.PaymentMethod attribute)@\spxentry{history}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.history}}\pysigline{\sphinxbfcode{\sphinxupquote{history}}\sphinxbfcode{\sphinxupquote{ = \textless{}simple\_history.manager.HistoryManager object\textgreater{}}}} +\end{fulllineitems} + +\index{icon (preferences.models.PaymentMethod attribute)@\spxentry{icon}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.icon}}\pysigline{\sphinxbfcode{\sphinxupquote{icon}}} +A font awesome icon (without the fa) + +\end{fulllineitems} + +\index{id (preferences.models.PaymentMethod attribute)@\spxentry{id}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{is\_active (preferences.models.PaymentMethod attribute)@\spxentry{is\_active}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +If False, the PaymentMethod can’t be use anywhere. + +\end{fulllineitems} + +\index{is\_usable\_in\_cotisation (preferences.models.PaymentMethod attribute)@\spxentry{is\_usable\_in\_cotisation}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.is_usable_in_cotisation}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_usable\_in\_cotisation}}} +If true, the PaymentMethod can be used to pay cotisation. + +\end{fulllineitems} + +\index{is\_usable\_in\_reload (preferences.models.PaymentMethod attribute)@\spxentry{is\_usable\_in\_reload}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.is_usable_in_reload}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_usable\_in\_reload}}} +If true, the PaymentMethod can be used to reload an user account. + +\end{fulllineitems} + +\index{menuhistory\_set (preferences.models.PaymentMethod attribute)@\spxentry{menuhistory\_set}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.menuhistory_set}}\pysigline{\sphinxbfcode{\sphinxupquote{menuhistory\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{name (preferences.models.PaymentMethod attribute)@\spxentry{name}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +The name of the PaymentMethod. + +\end{fulllineitems} + +\index{objects (preferences.models.PaymentMethod attribute)@\spxentry{objects}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}\sphinxbfcode{\sphinxupquote{ = \textless{}django.db.models.manager.Manager object\textgreater{}}}} +\end{fulllineitems} + +\index{reload\_set (preferences.models.PaymentMethod attribute)@\spxentry{reload\_set}\spxextra{preferences.models.PaymentMethod attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.reload_set}}\pysigline{\sphinxbfcode{\sphinxupquote{reload\_set}}} +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{k}{class} \PYG{n+nc}{Child}\PYG{p}{(}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{parent} \PYG{o}{=} \PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{Parent}\PYG{p}{,} \PYG{n}{related\PYGZus{}name}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{children}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} +\end{sphinxVerbatim} + +\sphinxcode{\sphinxupquote{Parent.children}} is a \sphinxcode{\sphinxupquote{ReverseManyToOneDescriptor}} instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by \sphinxcode{\sphinxupquote{create\_forward\_many\_to\_many\_manager()}} defined below. + +\end{fulllineitems} + +\index{save\_without\_historical\_record() (preferences.models.PaymentMethod method)@\spxentry{save\_without\_historical\_record()}\spxextra{preferences.models.PaymentMethod method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/models:preferences.models.PaymentMethod.save_without_historical_record}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{save\_without\_historical\_record}}}{\emph{*args}, \emph{**kwargs}}{} +Save model without saving a historical record + +Make sure you know what you’re doing before you use this method. + +\end{fulllineitems} + + +\end{fulllineitems} + + + +\chapter{Admin documentation} +\label{\detokenize{modules/admin:admin-documentation}}\label{\detokenize{modules/admin::doc}} + +\section{Gestion app admin} +\label{\detokenize{modules/admin:module-gestion.admin}}\label{\detokenize{modules/admin:gestion-app-admin}}\index{gestion.admin (module)@\spxentry{gestion.admin}\spxextra{module}}\index{ConsumptionAdmin (class in gestion.admin)@\spxentry{ConsumptionAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{ConsumptionAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.Consumption}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumptions}}}}}. +\index{list\_display (gestion.admin.ConsumptionAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.ConsumptionAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'product', 'quantity')}}} +\end{fulllineitems} + +\index{media (gestion.admin.ConsumptionAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.ConsumptionAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.ConsumptionAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.ConsumptionAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('-quantity',)}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.ConsumptionAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.ConsumptionAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'product')}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ConsumptionHistoryAdmin (class in gestion.admin)@\spxentry{ConsumptionHistoryAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionHistoryAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{ConsumptionHistoryAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.ConsumptionHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumption Histories}}}}}. +\index{list\_display (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionHistoryAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'product', 'quantity', 'paymentMethod', 'date', 'amount')}}} +\end{fulllineitems} + +\index{list\_filter (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionHistoryAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('paymentMethod',)}}} +\end{fulllineitems} + +\index{media (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionHistoryAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionHistoryAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('-date',)}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.ConsumptionHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.ConsumptionHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ConsumptionHistoryAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'product')}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{KegAdmin (class in gestion.admin)@\spxentry{KegAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{KegAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Kegs}}}}}. +\index{list\_display (gestion.admin.KegAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.KegAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('name', 'stockHold', 'capacity', 'is\_active')}}} +\end{fulllineitems} + +\index{list\_filter (gestion.admin.KegAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.KegAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('capacity', 'is\_active')}}} +\end{fulllineitems} + +\index{media (gestion.admin.KegAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.KegAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.KegAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.KegAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('name',)}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.KegAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.KegAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('name',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{KegHistoryAdmin (class in gestion.admin)@\spxentry{KegHistoryAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegHistoryAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{KegHistoryAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.KegHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Keg Histories}}}}}. +\index{list\_display (gestion.admin.KegHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.KegHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegHistoryAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('keg', 'openingDate', 'closingDate', 'isCurrentKegHistory', 'quantitySold')}}} +\end{fulllineitems} + +\index{list\_filter (gestion.admin.KegHistoryAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.KegHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegHistoryAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('isCurrentKegHistory', 'keg')}}} +\end{fulllineitems} + +\index{media (gestion.admin.KegHistoryAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.KegHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegHistoryAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.KegHistoryAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.KegHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegHistoryAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('-openingDate', 'quantitySold')}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.KegHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.KegHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.KegHistoryAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('keg',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{MenuAdmin (class in gestion.admin)@\spxentry{MenuAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{MenuAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Menu}}}}}. +\index{list\_display (gestion.admin.MenuAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.MenuAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('name', 'amount', 'is\_active')}}} +\end{fulllineitems} + +\index{list\_filter (gestion.admin.MenuAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.MenuAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('is\_active',)}}} +\end{fulllineitems} + +\index{media (gestion.admin.MenuAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.MenuAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.MenuAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.MenuAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('name', 'amount')}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.MenuAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.MenuAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('name',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{MenuHistoryAdmin (class in gestion.admin)@\spxentry{MenuHistoryAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuHistoryAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{MenuHistoryAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.MenuHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Menu Histories}}}}}. +\index{list\_display (gestion.admin.MenuHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.MenuHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuHistoryAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'menu', 'paymentMethod', 'date', 'quantity', 'amount')}}} +\end{fulllineitems} + +\index{media (gestion.admin.MenuHistoryAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.MenuHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuHistoryAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.MenuHistoryAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.MenuHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuHistoryAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('-date',)}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.MenuHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.MenuHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.MenuHistoryAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'menu')}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ProductAdmin (class in gestion.admin)@\spxentry{ProductAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ProductAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{ProductAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Products}}}}}. +\index{list\_display (gestion.admin.ProductAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.ProductAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ProductAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('name', 'amount', 'is\_active', 'category', 'adherentRequired', 'stockHold', 'stockBar', 'volume', 'deg')}}} +\end{fulllineitems} + +\index{list\_filter (gestion.admin.ProductAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.ProductAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ProductAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('is\_active', 'adherentRequired', 'category')}}} +\end{fulllineitems} + +\index{media (gestion.admin.ProductAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.ProductAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ProductAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.ProductAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.ProductAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ProductAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('name', 'amount', 'stockHold', 'stockBar', 'deg')}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.ProductAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.ProductAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ProductAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('name',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{RefundAdmin (class in gestion.admin)@\spxentry{RefundAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.RefundAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{RefundAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.Refund}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Refunds}}}}}. +\index{list\_display (gestion.admin.RefundAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.RefundAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.RefundAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'amount', 'date')}}} +\end{fulllineitems} + +\index{media (gestion.admin.RefundAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.RefundAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.RefundAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.RefundAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.RefundAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.RefundAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('-date', 'amount', 'customer')}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.RefundAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.RefundAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.RefundAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('customer',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ReloadAdmin (class in gestion.admin)@\spxentry{ReloadAdmin}\spxextra{class in gestion.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ReloadAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.admin.}}\sphinxbfcode{\sphinxupquote{ReloadAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:gestion.models.Reload}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Reloads}}}}}. +\index{list\_display (gestion.admin.ReloadAdmin attribute)@\spxentry{list\_display}\spxextra{gestion.admin.ReloadAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ReloadAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'amount', 'date', 'PaymentMethod')}}} +\end{fulllineitems} + +\index{list\_filter (gestion.admin.ReloadAdmin attribute)@\spxentry{list\_filter}\spxextra{gestion.admin.ReloadAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ReloadAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('PaymentMethod',)}}} +\end{fulllineitems} + +\index{media (gestion.admin.ReloadAdmin attribute)@\spxentry{media}\spxextra{gestion.admin.ReloadAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ReloadAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (gestion.admin.ReloadAdmin attribute)@\spxentry{ordering}\spxextra{gestion.admin.ReloadAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ReloadAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('-date', 'amount', 'customer')}}} +\end{fulllineitems} + +\index{search\_fields (gestion.admin.ReloadAdmin attribute)@\spxentry{search\_fields}\spxextra{gestion.admin.ReloadAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:gestion.admin.ReloadAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('customer',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + + + +\section{Users app admin} +\label{\detokenize{modules/admin:module-users.admin}}\label{\detokenize{modules/admin:users-app-admin}}\index{users.admin (module)@\spxentry{users.admin}\spxextra{module}}\index{BalanceFilter (class in users.admin)@\spxentry{BalanceFilter}\spxextra{class in users.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.BalanceFilter}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.admin.}}\sphinxbfcode{\sphinxupquote{BalanceFilter}}}{\emph{request}, \emph{params}, \emph{model}, \emph{model\_admin}}{} +A filter which filters according to the sign of the balance +\index{lookups() (users.admin.BalanceFilter method)@\spxentry{lookups()}\spxextra{users.admin.BalanceFilter method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.BalanceFilter.lookups}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{lookups}}}{\emph{request}, \emph{model\_admin}}{} +Must be overridden to return a list of tuples (value, verbose value) + +\end{fulllineitems} + +\index{parameter\_name (users.admin.BalanceFilter attribute)@\spxentry{parameter\_name}\spxextra{users.admin.BalanceFilter attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.BalanceFilter.parameter_name}}\pysigline{\sphinxbfcode{\sphinxupquote{parameter\_name}}\sphinxbfcode{\sphinxupquote{ = 'solde'}}} +\end{fulllineitems} + +\index{queryset() (users.admin.BalanceFilter method)@\spxentry{queryset()}\spxextra{users.admin.BalanceFilter method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.BalanceFilter.queryset}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{queryset}}}{\emph{request}, \emph{queryset}}{} +Return the filtered queryset. + +\end{fulllineitems} + +\index{title (users.admin.BalanceFilter attribute)@\spxentry{title}\spxextra{users.admin.BalanceFilter attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.BalanceFilter.title}}\pysigline{\sphinxbfcode{\sphinxupquote{title}}\sphinxbfcode{\sphinxupquote{ = 'Solde'}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{CotisationHistoryAdmin (class in users.admin)@\spxentry{CotisationHistoryAdmin}\spxextra{class in users.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.CotisationHistoryAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.admin.}}\sphinxbfcode{\sphinxupquote{CotisationHistoryAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:users.models.CotisationHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumptions}}}}}. +\index{list\_display (users.admin.CotisationHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{users.admin.CotisationHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.CotisationHistoryAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('user', 'amount', 'duration', 'paymentDate', 'endDate', 'paymentMethod')}}} +\end{fulllineitems} + +\index{list\_filter (users.admin.CotisationHistoryAdmin attribute)@\spxentry{list\_filter}\spxextra{users.admin.CotisationHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.CotisationHistoryAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('paymentMethod',)}}} +\end{fulllineitems} + +\index{media (users.admin.CotisationHistoryAdmin attribute)@\spxentry{media}\spxextra{users.admin.CotisationHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.CotisationHistoryAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (users.admin.CotisationHistoryAdmin attribute)@\spxentry{ordering}\spxextra{users.admin.CotisationHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.CotisationHistoryAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('user', 'amount', 'duration', 'paymentDate', 'endDate')}}} +\end{fulllineitems} + +\index{search\_fields (users.admin.CotisationHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{users.admin.CotisationHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.CotisationHistoryAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('user',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ProfileAdmin (class in users.admin)@\spxentry{ProfileAdmin}\spxextra{class in users.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.ProfileAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.admin.}}\sphinxbfcode{\sphinxupquote{ProfileAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:users.models.Profile}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumptions}}}}}. +\index{list\_display (users.admin.ProfileAdmin attribute)@\spxentry{list\_display}\spxextra{users.admin.ProfileAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.ProfileAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('user', 'credit', 'debit', 'balance', 'school', 'cotisationEnd', 'is\_adherent')}}} +\end{fulllineitems} + +\index{list\_filter (users.admin.ProfileAdmin attribute)@\spxentry{list\_filter}\spxextra{users.admin.ProfileAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.ProfileAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('school', \textless{}class 'users.admin.BalanceFilter'\textgreater{})}}} +\end{fulllineitems} + +\index{media (users.admin.ProfileAdmin attribute)@\spxentry{media}\spxextra{users.admin.ProfileAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.ProfileAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (users.admin.ProfileAdmin attribute)@\spxentry{ordering}\spxextra{users.admin.ProfileAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.ProfileAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('user', '-credit', '-debit')}}} +\end{fulllineitems} + +\index{search\_fields (users.admin.ProfileAdmin attribute)@\spxentry{search\_fields}\spxextra{users.admin.ProfileAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.ProfileAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('user',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{WhiteListHistoryAdmin (class in users.admin)@\spxentry{WhiteListHistoryAdmin}\spxextra{class in users.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.WhiteListHistoryAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.admin.}}\sphinxbfcode{\sphinxupquote{WhiteListHistoryAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:users.models.WhiteListHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumptions}}}}}. +\index{list\_display (users.admin.WhiteListHistoryAdmin attribute)@\spxentry{list\_display}\spxextra{users.admin.WhiteListHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.WhiteListHistoryAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('user', 'paymentDate', 'endDate', 'duration')}}} +\end{fulllineitems} + +\index{media (users.admin.WhiteListHistoryAdmin attribute)@\spxentry{media}\spxextra{users.admin.WhiteListHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.WhiteListHistoryAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (users.admin.WhiteListHistoryAdmin attribute)@\spxentry{ordering}\spxextra{users.admin.WhiteListHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.WhiteListHistoryAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('user', 'duration', 'paymentDate', 'endDate')}}} +\end{fulllineitems} + +\index{search\_fields (users.admin.WhiteListHistoryAdmin attribute)@\spxentry{search\_fields}\spxextra{users.admin.WhiteListHistoryAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:users.admin.WhiteListHistoryAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('user',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + + + +\section{Preferences app admin} +\label{\detokenize{modules/admin:module-preferences.admin}}\label{\detokenize{modules/admin:preferences-app-admin}}\index{preferences.admin (module)@\spxentry{preferences.admin}\spxextra{module}}\index{CotisationAdmin (class in preferences.admin)@\spxentry{CotisationAdmin}\spxextra{class in preferences.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.CotisationAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.admin.}}\sphinxbfcode{\sphinxupquote{CotisationAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumptions}}}}}. +\index{list\_display (preferences.admin.CotisationAdmin attribute)@\spxentry{list\_display}\spxextra{preferences.admin.CotisationAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.CotisationAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('\_\_str\_\_', 'amount', 'duration')}}} +\end{fulllineitems} + +\index{media (preferences.admin.CotisationAdmin attribute)@\spxentry{media}\spxextra{preferences.admin.CotisationAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.CotisationAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (preferences.admin.CotisationAdmin attribute)@\spxentry{ordering}\spxextra{preferences.admin.CotisationAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.CotisationAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('-duration', '-amount')}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{GeneralPreferencesAdmin (class in preferences.admin)@\spxentry{GeneralPreferencesAdmin}\spxextra{class in preferences.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.GeneralPreferencesAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.admin.}}\sphinxbfcode{\sphinxupquote{GeneralPreferencesAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumptions}}}}}. +\index{list\_display (preferences.admin.GeneralPreferencesAdmin attribute)@\spxentry{list\_display}\spxextra{preferences.admin.GeneralPreferencesAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.GeneralPreferencesAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('is\_active', 'president', 'vice\_president', 'treasurer', 'secretary', 'brewer', 'grocer', 'use\_pinte\_monitoring', 'lost\_pintes\_allowed', 'floating\_buttons', 'automatic\_logout\_time')}}} +\end{fulllineitems} + +\index{media (preferences.admin.GeneralPreferencesAdmin attribute)@\spxentry{media}\spxextra{preferences.admin.GeneralPreferencesAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.GeneralPreferencesAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{PaymentMethodAdmin (class in preferences.admin)@\spxentry{PaymentMethodAdmin}\spxextra{class in preferences.admin}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.PaymentMethodAdmin}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.admin.}}\sphinxbfcode{\sphinxupquote{PaymentMethodAdmin}}}{\emph{model}, \emph{admin\_site}}{} +The admin class for {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Consumptions}}}}}. +\index{list\_display (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{list\_display}\spxextra{preferences.admin.PaymentMethodAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.PaymentMethodAdmin.list_display}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_display}}\sphinxbfcode{\sphinxupquote{ = ('name', 'is\_active', 'is\_usable\_in\_cotisation', 'is\_usable\_in\_reload', 'affect\_balance')}}} +\end{fulllineitems} + +\index{list\_filter (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{list\_filter}\spxextra{preferences.admin.PaymentMethodAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.PaymentMethodAdmin.list_filter}}\pysigline{\sphinxbfcode{\sphinxupquote{list\_filter}}\sphinxbfcode{\sphinxupquote{ = ('is\_active', 'is\_usable\_in\_cotisation', 'is\_usable\_in\_reload', 'affect\_balance')}}} +\end{fulllineitems} + +\index{media (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{media}\spxextra{preferences.admin.PaymentMethodAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.PaymentMethodAdmin.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + +\index{ordering (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{ordering}\spxextra{preferences.admin.PaymentMethodAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.PaymentMethodAdmin.ordering}}\pysigline{\sphinxbfcode{\sphinxupquote{ordering}}\sphinxbfcode{\sphinxupquote{ = ('name',)}}} +\end{fulllineitems} + +\index{search\_fields (preferences.admin.PaymentMethodAdmin attribute)@\spxentry{search\_fields}\spxextra{preferences.admin.PaymentMethodAdmin attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/admin:preferences.admin.PaymentMethodAdmin.search_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{search\_fields}}\sphinxbfcode{\sphinxupquote{ = ('name',)}}} +\end{fulllineitems} + + +\end{fulllineitems} + + + +\chapter{Forms documentation} +\label{\detokenize{modules/forms:forms-documentation}}\label{\detokenize{modules/forms::doc}} + +\section{Gestion app forms} +\label{\detokenize{modules/forms:module-gestion.forms}}\label{\detokenize{modules/forms:gestion-app-forms}}\index{gestion.forms (module)@\spxentry{gestion.forms}\spxextra{module}}\index{GenerateReleveForm (class in gestion.forms)@\spxentry{GenerateReleveForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.GenerateReleveForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{GenerateReleveForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to generate a releve. +\index{base\_fields (gestion.forms.GenerateReleveForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.GenerateReleveForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.GenerateReleveForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'begin': \textless{}django.forms.fields.DateTimeField object\textgreater{}, 'end': \textless{}django.forms.fields.DateTimeField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.GenerateReleveForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.GenerateReleveForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.GenerateReleveForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'begin': \textless{}django.forms.fields.DateTimeField object\textgreater{}, 'end': \textless{}django.forms.fields.DateTimeField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.GenerateReleveForm attribute)@\spxentry{media}\spxextra{gestion.forms.GenerateReleveForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.GenerateReleveForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{GestionForm (class in gestion.forms)@\spxentry{GestionForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.GestionForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{GestionForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form for the {\hyperref[\detokenize{modules/views:gestion.views.manage}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{manage()}}}}} view. +\index{base\_fields (gestion.forms.GestionForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.GestionForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.GestionForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'client': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'product': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.GestionForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.GestionForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.GestionForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'client': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'product': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.GestionForm attribute)@\spxentry{media}\spxextra{gestion.forms.GestionForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.GestionForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{KegForm (class in gestion.forms)@\spxentry{KegForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.KegForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{KegForm}}}{\emph{*args}, \emph{**kwargs}}{} +A form to create and edit a {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Keg}}}}}. +\index{KegForm.Meta (class in gestion.forms)@\spxentry{KegForm.Meta}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.KegForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{exclude (gestion.forms.KegForm.Meta attribute)@\spxentry{exclude}\spxextra{gestion.forms.KegForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.KegForm.Meta.exclude}}\pysigline{\sphinxbfcode{\sphinxupquote{exclude}}\sphinxbfcode{\sphinxupquote{ = ('is\_active',)}}} +\end{fulllineitems} + +\index{model (gestion.forms.KegForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.KegForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.KegForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Keg}}}}} + +\end{fulllineitems} + +\index{widgets (gestion.forms.KegForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.KegForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.KegForm.Meta.widgets}}\pysigline{\sphinxbfcode{\sphinxupquote{widgets}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}class 'django.forms.widgets.TextInput'\textgreater{}\}}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (gestion.forms.KegForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.KegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.KegForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}django.forms.fields.DecimalField object\textgreater{}, 'barcode': \textless{}django.forms.fields.CharField object\textgreater{}, 'capacity': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'demi': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'galopin': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'name': \textless{}django.forms.fields.CharField object\textgreater{}, 'pinte': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'stockHold': \textless{}django.forms.fields.IntegerField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.KegForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.KegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.KegForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.KegForm attribute)@\spxentry{media}\spxextra{gestion.forms.KegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.KegForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{MenuForm (class in gestion.forms)@\spxentry{MenuForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.MenuForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{MenuForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to create and edit a {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Menu}}}}}. +\index{MenuForm.Meta (class in gestion.forms)@\spxentry{MenuForm.Meta}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.MenuForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (gestion.forms.MenuForm.Meta attribute)@\spxentry{fields}\spxextra{gestion.forms.MenuForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.MenuForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = '\_\_all\_\_'}}} +\end{fulllineitems} + +\index{model (gestion.forms.MenuForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.MenuForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.MenuForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Menu}}}}} + +\end{fulllineitems} + +\index{widgets (gestion.forms.MenuForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.MenuForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.MenuForm.Meta.widgets}}\pysigline{\sphinxbfcode{\sphinxupquote{widgets}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}class 'django.forms.widgets.TextInput'\textgreater{}\}}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (gestion.forms.MenuForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.MenuForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.MenuForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}django.forms.fields.DecimalField object\textgreater{}, 'articles': \textless{}django.forms.models.ModelMultipleChoiceField object\textgreater{}, 'barcode': \textless{}django.forms.fields.CharField object\textgreater{}, 'is\_active': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'name': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.MenuForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.MenuForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.MenuForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.MenuForm attribute)@\spxentry{media}\spxextra{gestion.forms.MenuForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.MenuForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{PinteForm (class in gestion.forms)@\spxentry{PinteForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.PinteForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{PinteForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to free {\hyperref[\detokenize{modules/models:gestion.models.Pinte}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Pints}}}}}. +\index{base\_fields (gestion.forms.PinteForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.PinteForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.PinteForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'begin': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'end': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'ids': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.PinteForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.PinteForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.PinteForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'begin': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'end': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'ids': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.PinteForm attribute)@\spxentry{media}\spxextra{gestion.forms.PinteForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.PinteForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ProductForm (class in gestion.forms)@\spxentry{ProductForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ProductForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{ProductForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to create and edit a {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Product}}}}}. +\index{ProductForm.Meta (class in gestion.forms)@\spxentry{ProductForm.Meta}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ProductForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (gestion.forms.ProductForm.Meta attribute)@\spxentry{fields}\spxextra{gestion.forms.ProductForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ProductForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = '\_\_all\_\_'}}} +\end{fulllineitems} + +\index{model (gestion.forms.ProductForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.ProductForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ProductForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Product}}}}} + +\end{fulllineitems} + +\index{widgets (gestion.forms.ProductForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.ProductForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ProductForm.Meta.widgets}}\pysigline{\sphinxbfcode{\sphinxupquote{widgets}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}class 'django.forms.widgets.TextInput'\textgreater{}\}}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (gestion.forms.ProductForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.ProductForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ProductForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'adherentRequired': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'amount': \textless{}django.forms.fields.DecimalField object\textgreater{}, 'barcode': \textless{}django.forms.fields.CharField object\textgreater{}, 'category': \textless{}django.forms.fields.TypedChoiceField object\textgreater{}, 'deg': \textless{}django.forms.fields.DecimalField object\textgreater{}, 'is\_active': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'name': \textless{}django.forms.fields.CharField object\textgreater{}, 'needQuantityButton': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'showingMultiplier': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'stockBar': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'stockHold': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'volume': \textless{}django.forms.fields.IntegerField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.ProductForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.ProductForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ProductForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.ProductForm attribute)@\spxentry{media}\spxextra{gestion.forms.ProductForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ProductForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{RefundForm (class in gestion.forms)@\spxentry{RefundForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.RefundForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{RefundForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to create a {\hyperref[\detokenize{modules/models:gestion.models.Refund}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Refund}}}}}. +\index{RefundForm.Meta (class in gestion.forms)@\spxentry{RefundForm.Meta}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.RefundForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (gestion.forms.RefundForm.Meta attribute)@\spxentry{fields}\spxextra{gestion.forms.RefundForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.RefundForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'amount')}}} +\end{fulllineitems} + +\index{model (gestion.forms.RefundForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.RefundForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.RefundForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Refund}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Refund}}}}} + +\end{fulllineitems} + +\index{widgets (gestion.forms.RefundForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.RefundForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.RefundForm.Meta.widgets}}\pysigline{\sphinxbfcode{\sphinxupquote{widgets}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}class 'django.forms.widgets.TextInput'\textgreater{}, 'customer': \textless{}dal\_select2.widgets.ModelSelect2 object\textgreater{}\}}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (gestion.forms.RefundForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.RefundForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.RefundForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}django.forms.fields.DecimalField object\textgreater{}, 'customer': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.RefundForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.RefundForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.RefundForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.RefundForm attribute)@\spxentry{media}\spxextra{gestion.forms.RefundForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.RefundForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ReloadForm (class in gestion.forms)@\spxentry{ReloadForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ReloadForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{ReloadForm}}}{\emph{*args}, \emph{**kwargs}}{} +A form to create a {\hyperref[\detokenize{modules/models:gestion.models.Reload}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Reload}}}}}. +\index{ReloadForm.Meta (class in gestion.forms)@\spxentry{ReloadForm.Meta}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ReloadForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (gestion.forms.ReloadForm.Meta attribute)@\spxentry{fields}\spxextra{gestion.forms.ReloadForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ReloadForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = ('customer', 'amount', 'PaymentMethod')}}} +\end{fulllineitems} + +\index{model (gestion.forms.ReloadForm.Meta attribute)@\spxentry{model}\spxextra{gestion.forms.ReloadForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ReloadForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:gestion.models.Reload}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{gestion.models.Reload}}}}} + +\end{fulllineitems} + +\index{widgets (gestion.forms.ReloadForm.Meta attribute)@\spxentry{widgets}\spxextra{gestion.forms.ReloadForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ReloadForm.Meta.widgets}}\pysigline{\sphinxbfcode{\sphinxupquote{widgets}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}class 'django.forms.widgets.TextInput'\textgreater{}, 'customer': \textless{}dal\_select2.widgets.ModelSelect2 object\textgreater{}\}}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (gestion.forms.ReloadForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.ReloadForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ReloadForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'PaymentMethod': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'amount': \textless{}django.forms.fields.DecimalField object\textgreater{}, 'customer': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.ReloadForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.ReloadForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ReloadForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.ReloadForm attribute)@\spxentry{media}\spxextra{gestion.forms.ReloadForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.ReloadForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{SearchMenuForm (class in gestion.forms)@\spxentry{SearchMenuForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SearchMenuForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{SearchMenuForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to search a {\hyperref[\detokenize{modules/models:gestion.models.Menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Menu}}}}}. +\index{base\_fields (gestion.forms.SearchMenuForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.SearchMenuForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SearchMenuForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'menu': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.SearchMenuForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.SearchMenuForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SearchMenuForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'menu': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.SearchMenuForm attribute)@\spxentry{media}\spxextra{gestion.forms.SearchMenuForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SearchMenuForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{SearchProductForm (class in gestion.forms)@\spxentry{SearchProductForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SearchProductForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{SearchProductForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to search a {\hyperref[\detokenize{modules/models:gestion.models.Product}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Product}}}}}. +\index{base\_fields (gestion.forms.SearchProductForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.SearchProductForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SearchProductForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'product': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.SearchProductForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.SearchProductForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SearchProductForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'product': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.SearchProductForm attribute)@\spxentry{media}\spxextra{gestion.forms.SearchProductForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SearchProductForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{SelectActiveKegForm (class in gestion.forms)@\spxentry{SelectActiveKegForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SelectActiveKegForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{SelectActiveKegForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to search an active {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Keg}}}}}. +\index{base\_fields (gestion.forms.SelectActiveKegForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.SelectActiveKegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SelectActiveKegForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'keg': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.SelectActiveKegForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.SelectActiveKegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SelectActiveKegForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'keg': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.SelectActiveKegForm attribute)@\spxentry{media}\spxextra{gestion.forms.SelectActiveKegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SelectActiveKegForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{SelectPositiveKegForm (class in gestion.forms)@\spxentry{SelectPositiveKegForm}\spxextra{class in gestion.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SelectPositiveKegForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{gestion.forms.}}\sphinxbfcode{\sphinxupquote{SelectPositiveKegForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +A form to search a {\hyperref[\detokenize{modules/models:gestion.models.Keg}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Keg}}}}} with a positive stockhold. +\index{base\_fields (gestion.forms.SelectPositiveKegForm attribute)@\spxentry{base\_fields}\spxextra{gestion.forms.SelectPositiveKegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SelectPositiveKegForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'keg': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (gestion.forms.SelectPositiveKegForm attribute)@\spxentry{declared\_fields}\spxextra{gestion.forms.SelectPositiveKegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SelectPositiveKegForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'keg': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (gestion.forms.SelectPositiveKegForm attribute)@\spxentry{media}\spxextra{gestion.forms.SelectPositiveKegForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:gestion.forms.SelectPositiveKegForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + + + +\section{Users app forms} +\label{\detokenize{modules/forms:module-users.forms}}\label{\detokenize{modules/forms:users-app-forms}}\index{users.forms (module)@\spxentry{users.forms}\spxextra{module}}\index{CreateGroupForm (class in users.forms)@\spxentry{CreateGroupForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateGroupForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{CreateGroupForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to create a new group (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). +\index{CreateGroupForm.Meta (class in users.forms)@\spxentry{CreateGroupForm.Meta}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateGroupForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (users.forms.CreateGroupForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.CreateGroupForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateGroupForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = ('name',)}}} +\end{fulllineitems} + +\index{model (users.forms.CreateGroupForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.CreateGroupForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateGroupForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of \sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (users.forms.CreateGroupForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.CreateGroupForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateGroupForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'name': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.CreateGroupForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.CreateGroupForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateGroupForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (users.forms.CreateGroupForm attribute)@\spxentry{media}\spxextra{users.forms.CreateGroupForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateGroupForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{CreateUserForm (class in users.forms)@\spxentry{CreateUserForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateUserForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{CreateUserForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to create a new user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{CreateUserForm.Meta (class in users.forms)@\spxentry{CreateUserForm.Meta}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateUserForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (users.forms.CreateUserForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.CreateUserForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateUserForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = ('username', 'last\_name', 'first\_name', 'email')}}} +\end{fulllineitems} + +\index{model (users.forms.CreateUserForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.CreateUserForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateUserForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of \sphinxcode{\sphinxupquote{django.contrib.auth.models.User}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (users.forms.CreateUserForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.CreateUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateUserForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'email': \textless{}django.forms.fields.EmailField object\textgreater{}, 'first\_name': \textless{}django.forms.fields.CharField object\textgreater{}, 'last\_name': \textless{}django.forms.fields.CharField object\textgreater{}, 'school': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'username': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.CreateUserForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.CreateUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateUserForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'school': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (users.forms.CreateUserForm attribute)@\spxentry{media}\spxextra{users.forms.CreateUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.CreateUserForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{EditGroupForm (class in users.forms)@\spxentry{EditGroupForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditGroupForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{EditGroupForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to edit a group (\sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). +\index{EditGroupForm.Meta (class in users.forms)@\spxentry{EditGroupForm.Meta}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditGroupForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (users.forms.EditGroupForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.EditGroupForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditGroupForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = '\_\_all\_\_'}}} +\end{fulllineitems} + +\index{model (users.forms.EditGroupForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.EditGroupForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditGroupForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of \sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (users.forms.EditGroupForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.EditGroupForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditGroupForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'name': \textless{}django.forms.fields.CharField object\textgreater{}, 'permissions': \textless{}django.forms.models.ModelMultipleChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.EditGroupForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.EditGroupForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditGroupForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (users.forms.EditGroupForm attribute)@\spxentry{media}\spxextra{users.forms.EditGroupForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditGroupForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{EditPasswordForm (class in users.forms)@\spxentry{EditPasswordForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditPasswordForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{EditPasswordForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to change the password of a user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{base\_fields (users.forms.EditPasswordForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.EditPasswordForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditPasswordForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'password': \textless{}django.forms.fields.CharField object\textgreater{}, 'password1': \textless{}django.forms.fields.CharField object\textgreater{}, 'password2': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{clean\_password2() (users.forms.EditPasswordForm method)@\spxentry{clean\_password2()}\spxextra{users.forms.EditPasswordForm method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditPasswordForm.clean_password2}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{clean\_password2}}}{}{} +Verify if the two new passwords are identical + +\end{fulllineitems} + +\index{declared\_fields (users.forms.EditPasswordForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.EditPasswordForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditPasswordForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'password': \textless{}django.forms.fields.CharField object\textgreater{}, 'password1': \textless{}django.forms.fields.CharField object\textgreater{}, 'password2': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (users.forms.EditPasswordForm attribute)@\spxentry{media}\spxextra{users.forms.EditPasswordForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.EditPasswordForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ExportForm (class in users.forms)@\spxentry{ExportForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.ExportForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{ExportForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to export list of users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}) to csv file +\index{FIELDS\_CHOICES (users.forms.ExportForm attribute)@\spxentry{FIELDS\_CHOICES}\spxextra{users.forms.ExportForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.ExportForm.FIELDS_CHOICES}}\pysigline{\sphinxbfcode{\sphinxupquote{FIELDS\_CHOICES}}\sphinxbfcode{\sphinxupquote{ = (('username', "Nom d'utilisateur"), ('last\_name', 'Nom'), ('first\_name', 'Prénom'), ('email', 'Adresse mail'), ('school', 'École'), ('balance', 'Solde'), ('credit', 'Crédit'), ('debit', 'Débit'))}}} +\end{fulllineitems} + +\index{QUERY\_TYPE\_CHOICES (users.forms.ExportForm attribute)@\spxentry{QUERY\_TYPE\_CHOICES}\spxextra{users.forms.ExportForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.ExportForm.QUERY_TYPE_CHOICES}}\pysigline{\sphinxbfcode{\sphinxupquote{QUERY\_TYPE\_CHOICES}}\sphinxbfcode{\sphinxupquote{ = (('all', 'Tous les comptes'), ('all\_active', 'Tous les comptes actifs'), ('adherent', 'Tous les adhérents'), ('adherent\_active', 'Tous les adhérents actifs'))}}} +\end{fulllineitems} + +\index{base\_fields (users.forms.ExportForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.ExportForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.ExportForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'fields': \textless{}django.forms.fields.MultipleChoiceField object\textgreater{}, 'group': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'query\_type': \textless{}django.forms.fields.ChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.ExportForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.ExportForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.ExportForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'fields': \textless{}django.forms.fields.MultipleChoiceField object\textgreater{}, 'group': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'query\_type': \textless{}django.forms.fields.ChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (users.forms.ExportForm attribute)@\spxentry{media}\spxextra{users.forms.ExportForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.ExportForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{GroupsEditForm (class in users.forms)@\spxentry{GroupsEditForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.GroupsEditForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{GroupsEditForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to edit a user’s list of groups (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}} and \sphinxcode{\sphinxupquote{django.contrib.auth.models.Group}}). +\index{GroupsEditForm.Meta (class in users.forms)@\spxentry{GroupsEditForm.Meta}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.GroupsEditForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (users.forms.GroupsEditForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.GroupsEditForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.GroupsEditForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = ('groups',)}}} +\end{fulllineitems} + +\index{model (users.forms.GroupsEditForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.GroupsEditForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.GroupsEditForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of \sphinxcode{\sphinxupquote{django.contrib.auth.models.User}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (users.forms.GroupsEditForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.GroupsEditForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.GroupsEditForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'groups': \textless{}django.forms.models.ModelMultipleChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.GroupsEditForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.GroupsEditForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.GroupsEditForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (users.forms.GroupsEditForm attribute)@\spxentry{media}\spxextra{users.forms.GroupsEditForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.GroupsEditForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{LoginForm (class in users.forms)@\spxentry{LoginForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.LoginForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{LoginForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to log in. +\index{base\_fields (users.forms.LoginForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.LoginForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.LoginForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'password': \textless{}django.forms.fields.CharField object\textgreater{}, 'username': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.LoginForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.LoginForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.LoginForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'password': \textless{}django.forms.fields.CharField object\textgreater{}, 'username': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (users.forms.LoginForm attribute)@\spxentry{media}\spxextra{users.forms.LoginForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.LoginForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{SchoolForm (class in users.forms)@\spxentry{SchoolForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SchoolForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{SchoolForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to add and edit a {\hyperref[\detokenize{modules/models:users.models.School}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.models.School}}}}}. +\index{SchoolForm.Meta (class in users.forms)@\spxentry{SchoolForm.Meta}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SchoolForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (users.forms.SchoolForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.SchoolForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SchoolForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = '\_\_all\_\_'}}} +\end{fulllineitems} + +\index{model (users.forms.SchoolForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.SchoolForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SchoolForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:users.models.School}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.models.School}}}}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (users.forms.SchoolForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.SchoolForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SchoolForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'name': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.SchoolForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.SchoolForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SchoolForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (users.forms.SchoolForm attribute)@\spxentry{media}\spxextra{users.forms.SchoolForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SchoolForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{SelectNonAdminUserForm (class in users.forms)@\spxentry{SelectNonAdminUserForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectNonAdminUserForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{SelectNonAdminUserForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to select a user from all non-staff users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{base\_fields (users.forms.SelectNonAdminUserForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.SelectNonAdminUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectNonAdminUserForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'user': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.SelectNonAdminUserForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.SelectNonAdminUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectNonAdminUserForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'user': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (users.forms.SelectNonAdminUserForm attribute)@\spxentry{media}\spxextra{users.forms.SelectNonAdminUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectNonAdminUserForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{SelectNonSuperUserForm (class in users.forms)@\spxentry{SelectNonSuperUserForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectNonSuperUserForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{SelectNonSuperUserForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to select a user from all non-superuser users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{base\_fields (users.forms.SelectNonSuperUserForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.SelectNonSuperUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectNonSuperUserForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'user': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.SelectNonSuperUserForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.SelectNonSuperUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectNonSuperUserForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'user': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (users.forms.SelectNonSuperUserForm attribute)@\spxentry{media}\spxextra{users.forms.SelectNonSuperUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectNonSuperUserForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{SelectUserForm (class in users.forms)@\spxentry{SelectUserForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectUserForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{SelectUserForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{field\_order=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to select a user from all users (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{base\_fields (users.forms.SelectUserForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.SelectUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectUserForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'user': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.SelectUserForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.SelectUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectUserForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'user': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{media (users.forms.SelectUserForm attribute)@\spxentry{media}\spxextra{users.forms.SelectUserForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.SelectUserForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{addCotisationHistoryForm (class in users.forms)@\spxentry{addCotisationHistoryForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addCotisationHistoryForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{addCotisationHistoryForm}}}{\emph{*args}, \emph{**kwargs}}{} +Form to add a {\hyperref[\detokenize{modules/models:users.models.CotisationHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.models.CotisationHistory}}}}} to user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{addCotisationHistoryForm.Meta (class in users.forms)@\spxentry{addCotisationHistoryForm.Meta}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addCotisationHistoryForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (users.forms.addCotisationHistoryForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.addCotisationHistoryForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addCotisationHistoryForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = ('cotisation', 'paymentMethod')}}} +\end{fulllineitems} + +\index{model (users.forms.addCotisationHistoryForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.addCotisationHistoryForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addCotisationHistoryForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:users.models.CotisationHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.models.CotisationHistory}}}}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (users.forms.addCotisationHistoryForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.addCotisationHistoryForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addCotisationHistoryForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'cotisation': \textless{}django.forms.models.ModelChoiceField object\textgreater{}, 'paymentMethod': \textless{}django.forms.models.ModelChoiceField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.addCotisationHistoryForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.addCotisationHistoryForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addCotisationHistoryForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (users.forms.addCotisationHistoryForm attribute)@\spxentry{media}\spxextra{users.forms.addCotisationHistoryForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addCotisationHistoryForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{addWhiteListHistoryForm (class in users.forms)@\spxentry{addWhiteListHistoryForm}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addWhiteListHistoryForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{users.forms.}}\sphinxbfcode{\sphinxupquote{addWhiteListHistoryForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to add a {\hyperref[\detokenize{modules/models:users.models.WhiteListHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.models.WhiteListHistory}}}}} to user (\sphinxcode{\sphinxupquote{django.contrib.auth.models.User}}). +\index{addWhiteListHistoryForm.Meta (class in users.forms)@\spxentry{addWhiteListHistoryForm.Meta}\spxextra{class in users.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addWhiteListHistoryForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (users.forms.addWhiteListHistoryForm.Meta attribute)@\spxentry{fields}\spxextra{users.forms.addWhiteListHistoryForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addWhiteListHistoryForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = ('duration',)}}} +\end{fulllineitems} + +\index{model (users.forms.addWhiteListHistoryForm.Meta attribute)@\spxentry{model}\spxextra{users.forms.addWhiteListHistoryForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addWhiteListHistoryForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:users.models.WhiteListHistory}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{users.models.WhiteListHistory}}}}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (users.forms.addWhiteListHistoryForm attribute)@\spxentry{base\_fields}\spxextra{users.forms.addWhiteListHistoryForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addWhiteListHistoryForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'duration': \textless{}django.forms.fields.IntegerField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (users.forms.addWhiteListHistoryForm attribute)@\spxentry{declared\_fields}\spxextra{users.forms.addWhiteListHistoryForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addWhiteListHistoryForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (users.forms.addWhiteListHistoryForm attribute)@\spxentry{media}\spxextra{users.forms.addWhiteListHistoryForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:users.forms.addWhiteListHistoryForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + + + +\section{Preferences app forms} +\label{\detokenize{modules/forms:module-preferences.forms}}\label{\detokenize{modules/forms:preferences-app-forms}}\index{preferences.forms (module)@\spxentry{preferences.forms}\spxextra{module}}\index{CotisationForm (class in preferences.forms)@\spxentry{CotisationForm}\spxextra{class in preferences.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.CotisationForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.forms.}}\sphinxbfcode{\sphinxupquote{CotisationForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to add and edit {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{Cotisation}}}}}. +\index{CotisationForm.Meta (class in preferences.forms)@\spxentry{CotisationForm.Meta}\spxextra{class in preferences.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.CotisationForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (preferences.forms.CotisationForm.Meta attribute)@\spxentry{fields}\spxextra{preferences.forms.CotisationForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.CotisationForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = '\_\_all\_\_'}}} +\end{fulllineitems} + +\index{model (preferences.forms.CotisationForm.Meta attribute)@\spxentry{model}\spxextra{preferences.forms.CotisationForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.CotisationForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:preferences.models.Cotisation}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.Cotisation}}}}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (preferences.forms.CotisationForm attribute)@\spxentry{base\_fields}\spxextra{preferences.forms.CotisationForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.CotisationForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'amount': \textless{}django.forms.fields.DecimalField object\textgreater{}, 'duration': \textless{}django.forms.fields.IntegerField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (preferences.forms.CotisationForm attribute)@\spxentry{declared\_fields}\spxextra{preferences.forms.CotisationForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.CotisationForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (preferences.forms.CotisationForm attribute)@\spxentry{media}\spxextra{preferences.forms.CotisationForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.CotisationForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{GeneralPreferencesForm (class in preferences.forms)@\spxentry{GeneralPreferencesForm}\spxextra{class in preferences.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.forms.}}\sphinxbfcode{\sphinxupquote{GeneralPreferencesForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to edit the {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{GeneralPreferences}}}}}. +\index{GeneralPreferencesForm.Meta (class in preferences.forms)@\spxentry{GeneralPreferencesForm.Meta}\spxextra{class in preferences.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (preferences.forms.GeneralPreferencesForm.Meta attribute)@\spxentry{fields}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = '\_\_all\_\_'}}} +\end{fulllineitems} + +\index{model (preferences.forms.GeneralPreferencesForm.Meta attribute)@\spxentry{model}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences}}}}} + +\end{fulllineitems} + +\index{widgets (preferences.forms.GeneralPreferencesForm.Meta attribute)@\spxentry{widgets}\spxextra{preferences.forms.GeneralPreferencesForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm.Meta.widgets}}\pysigline{\sphinxbfcode{\sphinxupquote{widgets}}\sphinxbfcode{\sphinxupquote{ = \{'active\_message': \textless{}django.forms.widgets.Textarea object\textgreater{}, 'brewer': \textless{}django.forms.widgets.TextInput object\textgreater{}, 'global\_message': \textless{}django.forms.widgets.Textarea object\textgreater{}, 'grocer': \textless{}django.forms.widgets.TextInput object\textgreater{}, 'home\_text': \textless{}django.forms.widgets.Textarea object\textgreater{}, 'president': \textless{}django.forms.widgets.TextInput object\textgreater{}, 'secretary': \textless{}django.forms.widgets.TextInput object\textgreater{}, 'treasurer': \textless{}django.forms.widgets.TextInput object\textgreater{}, 'vice\_president': \textless{}django.forms.widgets.TextInput object\textgreater{}\}}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (preferences.forms.GeneralPreferencesForm attribute)@\spxentry{base\_fields}\spxextra{preferences.forms.GeneralPreferencesForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'active\_message': \textless{}django.forms.fields.CharField object\textgreater{}, 'automatic\_logout\_time': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'brewer': \textless{}django.forms.fields.CharField object\textgreater{}, 'floating\_buttons': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'global\_message': \textless{}django.forms.fields.CharField object\textgreater{}, 'grocer': \textless{}django.forms.fields.CharField object\textgreater{}, 'home\_text': \textless{}django.forms.fields.CharField object\textgreater{}, 'is\_active': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'lost\_pintes\_allowed': \textless{}django.forms.fields.IntegerField object\textgreater{}, 'menu': \textless{}django.forms.fields.FileField object\textgreater{}, 'president': \textless{}django.forms.fields.CharField object\textgreater{}, 'rules': \textless{}django.forms.fields.FileField object\textgreater{}, 'secretary': \textless{}django.forms.fields.CharField object\textgreater{}, 'statutes': \textless{}django.forms.fields.FileField object\textgreater{}, 'treasurer': \textless{}django.forms.fields.CharField object\textgreater{}, 'use\_pinte\_monitoring': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'vice\_president': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (preferences.forms.GeneralPreferencesForm attribute)@\spxentry{declared\_fields}\spxextra{preferences.forms.GeneralPreferencesForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (preferences.forms.GeneralPreferencesForm attribute)@\spxentry{media}\spxextra{preferences.forms.GeneralPreferencesForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.GeneralPreferencesForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{PaymentMethodForm (class in preferences.forms)@\spxentry{PaymentMethodForm}\spxextra{class in preferences.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.PaymentMethodForm}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{preferences.forms.}}\sphinxbfcode{\sphinxupquote{PaymentMethodForm}}}{\emph{data=None}, \emph{files=None}, \emph{auto\_id='id\_\%s'}, \emph{prefix=None}, \emph{initial=None}, \emph{error\_class=\textless{}class 'django.forms.utils.ErrorList'\textgreater{}}, \emph{label\_suffix=None}, \emph{empty\_permitted=False}, \emph{instance=None}, \emph{use\_required\_attribute=None}, \emph{renderer=None}}{} +Form to add and edit {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{PaymentMethod}}}}}. +\index{PaymentMethodForm.Meta (class in preferences.forms)@\spxentry{PaymentMethodForm.Meta}\spxextra{class in preferences.forms}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.PaymentMethodForm.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{fields (preferences.forms.PaymentMethodForm.Meta attribute)@\spxentry{fields}\spxextra{preferences.forms.PaymentMethodForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.PaymentMethodForm.Meta.fields}}\pysigline{\sphinxbfcode{\sphinxupquote{fields}}\sphinxbfcode{\sphinxupquote{ = '\_\_all\_\_'}}} +\end{fulllineitems} + +\index{model (preferences.forms.PaymentMethodForm.Meta attribute)@\spxentry{model}\spxextra{preferences.forms.PaymentMethodForm.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.PaymentMethodForm.Meta.model}}\pysigline{\sphinxbfcode{\sphinxupquote{model}}} +alias of {\hyperref[\detokenize{modules/models:preferences.models.PaymentMethod}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.PaymentMethod}}}}} + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{base\_fields (preferences.forms.PaymentMethodForm attribute)@\spxentry{base\_fields}\spxextra{preferences.forms.PaymentMethodForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.PaymentMethodForm.base_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{base\_fields}}\sphinxbfcode{\sphinxupquote{ = \{'affect\_balance': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'icon': \textless{}django.forms.fields.CharField object\textgreater{}, 'is\_active': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'is\_usable\_in\_cotisation': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'is\_usable\_in\_reload': \textless{}django.forms.fields.BooleanField object\textgreater{}, 'name': \textless{}django.forms.fields.CharField object\textgreater{}\}}}} +\end{fulllineitems} + +\index{declared\_fields (preferences.forms.PaymentMethodForm attribute)@\spxentry{declared\_fields}\spxextra{preferences.forms.PaymentMethodForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.PaymentMethodForm.declared_fields}}\pysigline{\sphinxbfcode{\sphinxupquote{declared\_fields}}\sphinxbfcode{\sphinxupquote{ = \{\}}}} +\end{fulllineitems} + +\index{media (preferences.forms.PaymentMethodForm attribute)@\spxentry{media}\spxextra{preferences.forms.PaymentMethodForm attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/forms:preferences.forms.PaymentMethodForm.media}}\pysigline{\sphinxbfcode{\sphinxupquote{media}}} +\end{fulllineitems} + + +\end{fulllineitems} + + + +\chapter{Utils documentation} +\label{\detokenize{modules/utils:utils-documentation}}\label{\detokenize{modules/utils::doc}} + +\section{ACL} +\label{\detokenize{modules/utils:module-coopeV3.acl}}\label{\detokenize{modules/utils:acl}}\index{coopeV3.acl (module)@\spxentry{coopeV3.acl}\spxextra{module}}\index{acl\_and() (in module coopeV3.acl)@\spxentry{acl\_and()}\spxextra{in module coopeV3.acl}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.acl.acl_and}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.acl.}}\sphinxbfcode{\sphinxupquote{acl\_and}}}{\emph{*perms}}{} +Test if a user has all perms + +\end{fulllineitems} + +\index{acl\_or() (in module coopeV3.acl)@\spxentry{acl\_or()}\spxextra{in module coopeV3.acl}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.acl.acl_or}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.acl.}}\sphinxbfcode{\sphinxupquote{acl\_or}}}{\emph{*perms}}{} +Test if a user has one of perms + +\end{fulllineitems} + +\index{active\_required() (in module coopeV3.acl)@\spxentry{active\_required()}\spxextra{in module coopeV3.acl}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.acl.active_required}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.acl.}}\sphinxbfcode{\sphinxupquote{active\_required}}}{\emph{view}}{} +Test if the site is active ({\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.is_active}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.is\_active}}}}}). + +\end{fulllineitems} + +\index{admin\_required() (in module coopeV3.acl)@\spxentry{admin\_required()}\spxextra{in module coopeV3.acl}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.acl.admin_required}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.acl.}}\sphinxbfcode{\sphinxupquote{admin\_required}}}{\emph{view}}{} +Test if the user is staff. + +\end{fulllineitems} + +\index{self\_or\_has\_perm() (in module coopeV3.acl)@\spxentry{self\_or\_has\_perm()}\spxextra{in module coopeV3.acl}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.acl.self_or_has_perm}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.acl.}}\sphinxbfcode{\sphinxupquote{self\_or\_has\_perm}}}{\emph{pkName}, \emph{perm}}{} +Test if the user is the request user (pk) or has perm permission. + +\end{fulllineitems} + +\index{superuser\_required() (in module coopeV3.acl)@\spxentry{superuser\_required()}\spxextra{in module coopeV3.acl}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.acl.superuser_required}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.acl.}}\sphinxbfcode{\sphinxupquote{superuser\_required}}}{\emph{view}}{} +Test if the user is superuser. + +\end{fulllineitems} + + + +\section{CoopeV3 templatetags} +\label{\detokenize{modules/utils:module-coopeV3.templatetags.vip}}\label{\detokenize{modules/utils:coopev3-templatetags}}\index{coopeV3.templatetags.vip (module)@\spxentry{coopeV3.templatetags.vip}\spxextra{module}}\index{brewer() (in module coopeV3.templatetags.vip)@\spxentry{brewer()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.brewer}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{brewer}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.brewer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.brewer}}}}}. + +\end{fulllineitems} + +\index{global\_message() (in module coopeV3.templatetags.vip)@\spxentry{global\_message()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.global_message}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{global\_message}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.global_message}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.global\_message}}}}}. + +\end{fulllineitems} + +\index{grocer() (in module coopeV3.templatetags.vip)@\spxentry{grocer()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.grocer}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{grocer}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.grocer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.grocer}}}}}. + +\end{fulllineitems} + +\index{logout\_time() (in module coopeV3.templatetags.vip)@\spxentry{logout\_time()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.logout_time}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{logout\_time}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.automatic_logout_time}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.automatic\_logout\_time}}}}}. + +\end{fulllineitems} + +\index{menu() (in module coopeV3.templatetags.vip)@\spxentry{menu()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.menu}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{menu}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.menu}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.menu}}}}}. + +\end{fulllineitems} + +\index{president() (in module coopeV3.templatetags.vip)@\spxentry{president()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.president}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{president}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.president}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.president}}}}}. + +\end{fulllineitems} + +\index{rules() (in module coopeV3.templatetags.vip)@\spxentry{rules()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.rules}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{rules}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.rules}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.rules}}}}}. + +\end{fulllineitems} + +\index{secretary() (in module coopeV3.templatetags.vip)@\spxentry{secretary()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.secretary}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{secretary}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.secretary}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.secretary}}}}}. + +\end{fulllineitems} + +\index{statutes() (in module coopeV3.templatetags.vip)@\spxentry{statutes()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.statutes}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{statutes}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.statutes}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.statutes}}}}}. + +\end{fulllineitems} + +\index{treasurer() (in module coopeV3.templatetags.vip)@\spxentry{treasurer()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.treasurer}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{treasurer}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.treasurer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.treasurer}}}}}. + +\end{fulllineitems} + +\index{vice\_president() (in module coopeV3.templatetags.vip)@\spxentry{vice\_president()}\spxextra{in module coopeV3.templatetags.vip}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:coopeV3.templatetags.vip.vice_president}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{coopeV3.templatetags.vip.}}\sphinxbfcode{\sphinxupquote{vice\_president}}}{}{} +A tag which returns {\hyperref[\detokenize{modules/models:preferences.models.GeneralPreferences.vice_president}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{preferences.models.GeneralPreferences.vice\_president}}}}}. + +\end{fulllineitems} + + + +\section{Users templatetags} +\label{\detokenize{modules/utils:module-users.templatetags.users_extra}}\label{\detokenize{modules/utils:users-templatetags}}\index{users.templatetags.users\_extra (module)@\spxentry{users.templatetags.users\_extra}\spxextra{module}}\index{random\_filter() (in module users.templatetags.users\_extra)@\spxentry{random\_filter()}\spxextra{in module users.templatetags.users\_extra}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/utils:users.templatetags.users_extra.random_filter}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{users.templatetags.users\_extra.}}\sphinxbfcode{\sphinxupquote{random\_filter}}}{\emph{a}, \emph{b}}{} +\end{fulllineitems} + + + +\chapter{Django\_tex documentation} +\label{\detokenize{modules/django_tex:django-tex-documentation}}\label{\detokenize{modules/django_tex::doc}} + +\section{Core} +\label{\detokenize{modules/django_tex:module-django_tex.core}}\label{\detokenize{modules/django_tex:core}}\index{django\_tex.core (module)@\spxentry{django\_tex.core}\spxextra{module}}\index{compile\_template\_to\_pdf() (in module django\_tex.core)@\spxentry{compile\_template\_to\_pdf()}\spxextra{in module django\_tex.core}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.core.compile_template_to_pdf}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.core.}}\sphinxbfcode{\sphinxupquote{compile\_template\_to\_pdf}}}{\emph{template\_name}, \emph{context}}{} +Compile the source with {\hyperref[\detokenize{modules/django_tex:django_tex.core.render_template_with_context}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{render\_template\_with\_context()}}}}} and {\hyperref[\detokenize{modules/django_tex:django_tex.core.run_tex}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{run\_tex()}}}}}. + +\end{fulllineitems} + +\index{render\_template\_with\_context() (in module django\_tex.core)@\spxentry{render\_template\_with\_context()}\spxextra{in module django\_tex.core}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.core.render_template_with_context}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.core.}}\sphinxbfcode{\sphinxupquote{render\_template\_with\_context}}}{\emph{template\_name}, \emph{context}}{} +Render the template + +\end{fulllineitems} + +\index{run\_tex() (in module django\_tex.core)@\spxentry{run\_tex()}\spxextra{in module django\_tex.core}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.core.run_tex}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.core.}}\sphinxbfcode{\sphinxupquote{run\_tex}}}{\emph{source}}{} +Copy the source to temp dict and run latex. + +\end{fulllineitems} + + + +\section{Engine} +\label{\detokenize{modules/django_tex:module-django_tex.engine}}\label{\detokenize{modules/django_tex:engine}}\index{django\_tex.engine (module)@\spxentry{django\_tex.engine}\spxextra{module}}\index{TeXEngine (class in django\_tex.engine)@\spxentry{TeXEngine}\spxextra{class in django\_tex.engine}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.engine.TeXEngine}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{django\_tex.engine.}}\sphinxbfcode{\sphinxupquote{TeXEngine}}}{\emph{params}}{}~\index{app\_dirname (django\_tex.engine.TeXEngine attribute)@\spxentry{app\_dirname}\spxextra{django\_tex.engine.TeXEngine attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.engine.TeXEngine.app_dirname}}\pysigline{\sphinxbfcode{\sphinxupquote{app\_dirname}}\sphinxbfcode{\sphinxupquote{ = 'templates'}}} +\end{fulllineitems} + + +\end{fulllineitems} + + + +\section{Environment} +\label{\detokenize{modules/django_tex:module-django_tex.environment}}\label{\detokenize{modules/django_tex:environment}}\index{django\_tex.environment (module)@\spxentry{django\_tex.environment}\spxextra{module}}\index{environment() (in module django\_tex.environment)@\spxentry{environment()}\spxextra{in module django\_tex.environment}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.environment.environment}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.environment.}}\sphinxbfcode{\sphinxupquote{environment}}}{\emph{**options}}{} +\end{fulllineitems} + + + +\section{Exceptions} +\label{\detokenize{modules/django_tex:module-django_tex.exceptions}}\label{\detokenize{modules/django_tex:exceptions}}\index{django\_tex.exceptions (module)@\spxentry{django\_tex.exceptions}\spxextra{module}}\index{TexError@\spxentry{TexError}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.exceptions.TexError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{exception }}\sphinxcode{\sphinxupquote{django\_tex.exceptions.}}\sphinxbfcode{\sphinxupquote{TexError}}}{\emph{log}, \emph{source}}{}~\index{get\_message() (django\_tex.exceptions.TexError method)@\spxentry{get\_message()}\spxextra{django\_tex.exceptions.TexError method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.exceptions.TexError.get_message}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_message}}}{}{} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{prettify\_message() (in module django\_tex.exceptions)@\spxentry{prettify\_message()}\spxextra{in module django\_tex.exceptions}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.exceptions.prettify_message}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.exceptions.}}\sphinxbfcode{\sphinxupquote{prettify\_message}}}{\emph{message}}{} +Helper methods that removes consecutive whitespaces and newline characters + +\end{fulllineitems} + +\index{tokenizer() (in module django\_tex.exceptions)@\spxentry{tokenizer()}\spxextra{in module django\_tex.exceptions}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.exceptions.tokenizer}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.exceptions.}}\sphinxbfcode{\sphinxupquote{tokenizer}}}{\emph{code}}{} +\end{fulllineitems} + + + +\section{Filters} +\label{\detokenize{modules/django_tex:module-django_tex.filters}}\label{\detokenize{modules/django_tex:filters}}\index{django\_tex.filters (module)@\spxentry{django\_tex.filters}\spxextra{module}}\index{do\_linebreaks() (in module django\_tex.filters)@\spxentry{do\_linebreaks()}\spxextra{in module django\_tex.filters}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.filters.do_linebreaks}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.filters.}}\sphinxbfcode{\sphinxupquote{do\_linebreaks}}}{\emph{value}}{} +\end{fulllineitems} + + + +\section{Models} +\label{\detokenize{modules/django_tex:module-django_tex.models}}\label{\detokenize{modules/django_tex:models}}\index{django\_tex.models (module)@\spxentry{django\_tex.models}\spxextra{module}}\index{TeXTemplateFile (class in django\_tex.models)@\spxentry{TeXTemplateFile}\spxextra{class in django\_tex.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.models.TeXTemplateFile}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{django\_tex.models.}}\sphinxbfcode{\sphinxupquote{TeXTemplateFile}}}{\emph{*args}, \emph{**kwargs}}{}~\index{TeXTemplateFile.Meta (class in django\_tex.models)@\spxentry{TeXTemplateFile.Meta}\spxextra{class in django\_tex.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.models.TeXTemplateFile.Meta}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Meta}}}~\index{abstract (django\_tex.models.TeXTemplateFile.Meta attribute)@\spxentry{abstract}\spxextra{django\_tex.models.TeXTemplateFile.Meta attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.models.TeXTemplateFile.Meta.abstract}}\pysigline{\sphinxbfcode{\sphinxupquote{abstract}}\sphinxbfcode{\sphinxupquote{ = False}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{name (django\_tex.models.TeXTemplateFile attribute)@\spxentry{name}\spxextra{django\_tex.models.TeXTemplateFile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.models.TeXTemplateFile.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + +\index{title (django\_tex.models.TeXTemplateFile attribute)@\spxentry{title}\spxextra{django\_tex.models.TeXTemplateFile attribute}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.models.TeXTemplateFile.title}}\pysigline{\sphinxbfcode{\sphinxupquote{title}}} +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{validate\_template\_path() (in module django\_tex.models)@\spxentry{validate\_template\_path()}\spxextra{in module django\_tex.models}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.models.validate_template_path}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.models.}}\sphinxbfcode{\sphinxupquote{validate\_template\_path}}}{\emph{name}}{} +\end{fulllineitems} + + + +\section{Views} +\label{\detokenize{modules/django_tex:module-django_tex.views}}\label{\detokenize{modules/django_tex:views}}\index{django\_tex.views (module)@\spxentry{django\_tex.views}\spxextra{module}}\index{PDFResponse (class in django\_tex.views)@\spxentry{PDFResponse}\spxextra{class in django\_tex.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.views.PDFResponse}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{django\_tex.views.}}\sphinxbfcode{\sphinxupquote{PDFResponse}}}{\emph{content}, \emph{filename=None}}{} +\end{fulllineitems} + +\index{render\_to\_pdf() (in module django\_tex.views)@\spxentry{render\_to\_pdf()}\spxextra{in module django\_tex.views}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{modules/django_tex:django_tex.views.render_to_pdf}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{django\_tex.views.}}\sphinxbfcode{\sphinxupquote{render\_to\_pdf}}}{\emph{request}, \emph{template\_name}, \emph{context=None}, \emph{filename=None}}{} +\end{fulllineitems} + + + +\chapter{Indices and tables} +\label{\detokenize{index:indices-and-tables}}\begin{itemize} +\item {} +\DUrole{xref,std,std-ref}{genindex} + +\item {} +\DUrole{xref,std,std-ref}{modindex} + +\item {} +\DUrole{xref,std,std-ref}{search} + +\end{itemize} + + +\renewcommand{\indexname}{Python Module Index} +\begin{sphinxtheindex} +\let\bigletter\sphinxstyleindexlettergroup +\bigletter{c} +\item\relax\sphinxstyleindexentry{coopeV3.acl}\sphinxstyleindexpageref{modules/utils:\detokenize{module-coopeV3.acl}} +\item\relax\sphinxstyleindexentry{coopeV3.templatetags.vip}\sphinxstyleindexpageref{modules/utils:\detokenize{module-coopeV3.templatetags.vip}} +\item\relax\sphinxstyleindexentry{coopeV3.views}\sphinxstyleindexpageref{modules/views:\detokenize{module-coopeV3.views}} +\indexspace +\bigletter{d} +\item\relax\sphinxstyleindexentry{django\_tex.core}\sphinxstyleindexpageref{modules/django_tex:\detokenize{module-django_tex.core}} +\item\relax\sphinxstyleindexentry{django\_tex.engine}\sphinxstyleindexpageref{modules/django_tex:\detokenize{module-django_tex.engine}} +\item\relax\sphinxstyleindexentry{django\_tex.environment}\sphinxstyleindexpageref{modules/django_tex:\detokenize{module-django_tex.environment}} +\item\relax\sphinxstyleindexentry{django\_tex.exceptions}\sphinxstyleindexpageref{modules/django_tex:\detokenize{module-django_tex.exceptions}} +\item\relax\sphinxstyleindexentry{django\_tex.filters}\sphinxstyleindexpageref{modules/django_tex:\detokenize{module-django_tex.filters}} +\item\relax\sphinxstyleindexentry{django\_tex.models}\sphinxstyleindexpageref{modules/django_tex:\detokenize{module-django_tex.models}} +\item\relax\sphinxstyleindexentry{django\_tex.views}\sphinxstyleindexpageref{modules/django_tex:\detokenize{module-django_tex.views}} +\indexspace +\bigletter{g} +\item\relax\sphinxstyleindexentry{gestion.admin}\sphinxstyleindexpageref{modules/admin:\detokenize{module-gestion.admin}} +\item\relax\sphinxstyleindexentry{gestion.forms}\sphinxstyleindexpageref{modules/forms:\detokenize{module-gestion.forms}} +\item\relax\sphinxstyleindexentry{gestion.models}\sphinxstyleindexpageref{modules/models:\detokenize{module-gestion.models}} +\item\relax\sphinxstyleindexentry{gestion.views}\sphinxstyleindexpageref{modules/views:\detokenize{module-gestion.views}} +\indexspace +\bigletter{p} +\item\relax\sphinxstyleindexentry{preferences.admin}\sphinxstyleindexpageref{modules/admin:\detokenize{module-preferences.admin}} +\item\relax\sphinxstyleindexentry{preferences.forms}\sphinxstyleindexpageref{modules/forms:\detokenize{module-preferences.forms}} +\item\relax\sphinxstyleindexentry{preferences.models}\sphinxstyleindexpageref{modules/models:\detokenize{module-preferences.models}} +\item\relax\sphinxstyleindexentry{preferences.views}\sphinxstyleindexpageref{modules/views:\detokenize{module-preferences.views}} +\indexspace +\bigletter{u} +\item\relax\sphinxstyleindexentry{users.admin}\sphinxstyleindexpageref{modules/admin:\detokenize{module-users.admin}} +\item\relax\sphinxstyleindexentry{users.forms}\sphinxstyleindexpageref{modules/forms:\detokenize{module-users.forms}} +\item\relax\sphinxstyleindexentry{users.models}\sphinxstyleindexpageref{modules/models:\detokenize{module-users.models}} +\item\relax\sphinxstyleindexentry{users.templatetags.users\_extra}\sphinxstyleindexpageref{modules/utils:\detokenize{module-users.templatetags.users_extra}} +\item\relax\sphinxstyleindexentry{users.views}\sphinxstyleindexpageref{modules/views:\detokenize{module-users.views}} +\end{sphinxtheindex} + +\renewcommand{\indexname}{Index} +\printindex +\end{document} \ No newline at end of file diff --git a/docs/_build/latex/CoopeV3.toc b/docs/_build/latex/CoopeV3.toc new file mode 100644 index 0000000..459d086 --- /dev/null +++ b/docs/_build/latex/CoopeV3.toc @@ -0,0 +1,33 @@ +\babel@toc {english}{} +\contentsline {chapter}{\numberline {1}Views documentation}{1}{chapter.1} +\contentsline {section}{\numberline {1.1}Gestion app views}{1}{section.1.1} +\contentsline {section}{\numberline {1.2}Users app views}{4}{section.1.2} +\contentsline {section}{\numberline {1.3}Preferences app views}{6}{section.1.3} +\contentsline {section}{\numberline {1.4}coopeV3 app views}{7}{section.1.4} +\contentsline {chapter}{\numberline {2}Models documentation}{9}{chapter.2} +\contentsline {section}{\numberline {2.1}Gestion app models}{9}{section.2.1} +\contentsline {section}{\numberline {2.2}Users app models}{38}{section.2.2} +\contentsline {section}{\numberline {2.3}Preferences app models}{49}{section.2.3} +\contentsline {chapter}{\numberline {3}Admin documentation}{59}{chapter.3} +\contentsline {section}{\numberline {3.1}Gestion app admin}{59}{section.3.1} +\contentsline {section}{\numberline {3.2}Users app admin}{61}{section.3.2} +\contentsline {section}{\numberline {3.3}Preferences app admin}{61}{section.3.3} +\contentsline {chapter}{\numberline {4}Forms documentation}{63}{chapter.4} +\contentsline {section}{\numberline {4.1}Gestion app forms}{63}{section.4.1} +\contentsline {section}{\numberline {4.2}Users app forms}{66}{section.4.2} +\contentsline {section}{\numberline {4.3}Preferences app forms}{70}{section.4.3} +\contentsline {chapter}{\numberline {5}Utils documentation}{73}{chapter.5} +\contentsline {section}{\numberline {5.1}ACL}{73}{section.5.1} +\contentsline {section}{\numberline {5.2}CoopeV3 templatetags}{73}{section.5.2} +\contentsline {section}{\numberline {5.3}Users templatetags}{74}{section.5.3} +\contentsline {chapter}{\numberline {6}Django\_tex documentation}{75}{chapter.6} +\contentsline {section}{\numberline {6.1}Core}{75}{section.6.1} +\contentsline {section}{\numberline {6.2}Engine}{75}{section.6.2} +\contentsline {section}{\numberline {6.3}Environment}{75}{section.6.3} +\contentsline {section}{\numberline {6.4}Exceptions}{75}{section.6.4} +\contentsline {section}{\numberline {6.5}Filters}{76}{section.6.5} +\contentsline {section}{\numberline {6.6}Models}{76}{section.6.6} +\contentsline {section}{\numberline {6.7}Views}{76}{section.6.7} +\contentsline {chapter}{\numberline {7}Indices and tables}{77}{chapter.7} +\contentsline {chapter}{Python Module Index}{79}{section*.1207} +\contentsline {chapter}{Index}{81}{section*.1208} diff --git a/docs/_build/latex/LICRcyr2utf8.xdy b/docs/_build/latex/LICRcyr2utf8.xdy new file mode 100644 index 0000000..a9ca1c8 --- /dev/null +++ b/docs/_build/latex/LICRcyr2utf8.xdy @@ -0,0 +1,101 @@ +;; -*- coding: utf-8; mode: Lisp; -*- +;; style file for xindy +;; filename: LICRcyr2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of Cyrillic to utf-8 +;; usage: for use with pdflatex produced .idx files. +;; Contributed by the Sphinx team, July 2018. +(merge-rule "\IeC {\'\CYRG }" "Ѓ" :string) +(merge-rule "\IeC {\'\CYRK }" "Ќ" :string) +(merge-rule "\IeC {\'\cyrg }" "ѓ" :string) +(merge-rule "\IeC {\'\cyrk }" "ќ" :string) +(merge-rule "\IeC {\CYRA }" "А" :string) +(merge-rule "\IeC {\CYRB }" "Б" :string) +(merge-rule "\IeC {\CYRC }" "Ц" :string) +(merge-rule "\IeC {\CYRCH }" "Ч" :string) +(merge-rule "\IeC {\CYRD }" "Д" :string) +(merge-rule "\IeC {\CYRDJE }" "Ђ" :string) +(merge-rule "\IeC {\CYRDZE }" "Ѕ" :string) +(merge-rule "\IeC {\CYRDZHE }" "Џ" :string) +(merge-rule "\IeC {\CYRE }" "Е" :string) +(merge-rule "\IeC {\CYREREV }" "Э" :string) +(merge-rule "\IeC {\CYRERY }" "Ы" :string) +(merge-rule "\IeC {\CYRF }" "Ф" :string) +(merge-rule "\IeC {\CYRG }" "Г" :string) +(merge-rule "\IeC {\CYRGUP }" "Ґ" :string) +(merge-rule "\IeC {\CYRH }" "Х" :string) +(merge-rule "\IeC {\CYRHRDSN }" "Ъ" :string) +(merge-rule "\IeC {\CYRI }" "И" :string) +(merge-rule "\IeC {\CYRIE }" "Є" :string) +(merge-rule "\IeC {\CYRII }" "І" :string) +(merge-rule "\IeC {\CYRISHRT }" "Й" :string) +(merge-rule "\IeC {\CYRJE }" "Ј" :string) +(merge-rule "\IeC {\CYRK }" "К" :string) +(merge-rule "\IeC {\CYRL }" "Л" :string) +(merge-rule "\IeC {\CYRLJE }" "Љ" :string) +(merge-rule "\IeC {\CYRM }" "М" :string) +(merge-rule "\IeC {\CYRN }" "Н" :string) +(merge-rule "\IeC {\CYRNJE }" "Њ" :string) +(merge-rule "\IeC {\CYRO }" "О" :string) +(merge-rule "\IeC {\CYRP }" "П" :string) +(merge-rule "\IeC {\CYRR }" "Р" :string) +(merge-rule "\IeC {\CYRS }" "С" :string) +(merge-rule "\IeC {\CYRSFTSN }" "Ь" :string) +(merge-rule "\IeC {\CYRSH }" "Ш" :string) +(merge-rule "\IeC {\CYRSHCH }" "Щ" :string) +(merge-rule "\IeC {\CYRT }" "Т" :string) +(merge-rule "\IeC {\CYRTSHE }" "Ћ" :string) +(merge-rule "\IeC {\CYRU }" "У" :string) +(merge-rule "\IeC {\CYRUSHRT }" "Ў" :string) +(merge-rule "\IeC {\CYRV }" "В" :string) +(merge-rule "\IeC {\CYRYA }" "Я" :string) +(merge-rule "\IeC {\CYRYI }" "Ї" :string) +(merge-rule "\IeC {\CYRYO }" "Ё" :string) +(merge-rule "\IeC {\CYRYU }" "Ю" :string) +(merge-rule "\IeC {\CYRZ }" "З" :string) +(merge-rule "\IeC {\CYRZH }" "Ж" :string) +(merge-rule "\IeC {\cyra }" "а" :string) +(merge-rule "\IeC {\cyrb }" "б" :string) +(merge-rule "\IeC {\cyrc }" "ц" :string) +(merge-rule "\IeC {\cyrch }" "ч" :string) +(merge-rule "\IeC {\cyrd }" "д" :string) +(merge-rule "\IeC {\cyrdje }" "ђ" :string) +(merge-rule "\IeC {\cyrdze }" "ѕ" :string) +(merge-rule "\IeC {\cyrdzhe }" "џ" :string) +(merge-rule "\IeC {\cyre }" "е" :string) +(merge-rule "\IeC {\cyrerev }" "э" :string) +(merge-rule "\IeC {\cyrery }" "ы" :string) +(merge-rule "\IeC {\cyrf }" "ф" :string) +(merge-rule "\IeC {\cyrg }" "г" :string) +(merge-rule "\IeC {\cyrgup }" "ґ" :string) +(merge-rule "\IeC {\cyrh }" "х" :string) +(merge-rule "\IeC {\cyrhrdsn }" "ъ" :string) +(merge-rule "\IeC {\cyri }" "и" :string) +(merge-rule "\IeC {\cyrie }" "є" :string) +(merge-rule "\IeC {\cyrii }" "і" :string) +(merge-rule "\IeC {\cyrishrt }" "й" :string) +(merge-rule "\IeC {\cyrje }" "ј" :string) +(merge-rule "\IeC {\cyrk }" "к" :string) +(merge-rule "\IeC {\cyrl }" "л" :string) +(merge-rule "\IeC {\cyrlje }" "љ" :string) +(merge-rule "\IeC {\cyrm }" "м" :string) +(merge-rule "\IeC {\cyrn }" "н" :string) +(merge-rule "\IeC {\cyrnje }" "њ" :string) +(merge-rule "\IeC {\cyro }" "о" :string) +(merge-rule "\IeC {\cyrp }" "п" :string) +(merge-rule "\IeC {\cyrr }" "р" :string) +(merge-rule "\IeC {\cyrs }" "с" :string) +(merge-rule "\IeC {\cyrsftsn }" "ь" :string) +(merge-rule "\IeC {\cyrsh }" "ш" :string) +(merge-rule "\IeC {\cyrshch }" "щ" :string) +(merge-rule "\IeC {\cyrt }" "т" :string) +(merge-rule "\IeC {\cyrtshe }" "ћ" :string) +(merge-rule "\IeC {\cyru }" "у" :string) +(merge-rule "\IeC {\cyrushrt }" "ў" :string) +(merge-rule "\IeC {\cyrv }" "в" :string) +(merge-rule "\IeC {\cyrya }" "я" :string) +(merge-rule "\IeC {\cyryi }" "ї" :string) +(merge-rule "\IeC {\cyryo }" "ё" :string) +(merge-rule "\IeC {\cyryu }" "ю" :string) +(merge-rule "\IeC {\cyrz }" "з" :string) +(merge-rule "\IeC {\cyrzh }" "ж" :string) diff --git a/docs/_build/latex/LICRlatin2utf8.xdy b/docs/_build/latex/LICRlatin2utf8.xdy new file mode 100644 index 0000000..31c80f9 --- /dev/null +++ b/docs/_build/latex/LICRlatin2utf8.xdy @@ -0,0 +1,239 @@ +;; style file for xindy +;; filename: LICRlatin2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of letters (as arising in .idx index +;; file) to UTF-8 encoding for correct sorting by xindy. +;; usage: for use with the pdflatex engine, +;; *not* for use with xelatex or lualatex. +;; +;; This is based upon xindy's distributed file tex/inputenc/utf8.xdy. +;; The modifications include: +;; +;; - Updates for compatibility with current LaTeX macro encoding. +;; +;; - Systematic usage of the \IeC {...} mark-up, because mark-up in +;; tex/inputenc/utf8.xdy was using it on seemingly random basis, and +;; Sphinx coercing of xindy usability for both Latin and Cyrillic scripts +;; with pdflatex requires its systematic presence here. +;; +;; - Support for some extra letters: Ÿ, Ŋ, ŋ, Œ, œ, IJ, ij, ȷ and ẞ. +;; +;; Indeed Sphinx needs to support for pdflatex engine all Unicode letters +;; available in TeX T1 font encoding. The above letters are found in +;; that encoding but not in the Latin1, 2, 3 charsets which are those +;; covered by original tex/inputenc/utf8.xdy. +;; +;; - There is a problem that ȷ is not supported out-of-the box by LaTeX +;; with inputenc, one must add explicitely +;; \DeclareUnicodeCharacter{0237}{\j} +;; to preamble of LaTeX document. However this character is not supported +;; by the TeX "times" font used by default by Sphinx for pdflatex engine. +;; +;; **Update**: since LaTeX 2018/12/01, the \j as well as \SS, \k{} and +;; \.{} need no extra user declaration anymore. +;; +;; - ẞ needs \DeclareUnicodeCharacter{1E9E}{\SS} (but ß needs no extra set-up). +;; +;; - U+02DB (˛) and U+02D9 (˙) are also not supported by inputenc +;; out of the box and require +;; \DeclareUnicodeCharacter{02DB}{\k{}} +;; \DeclareUnicodeCharacter{02D9}{\.{}} +;; to be added to preamble. +;; +;; - U+0127 ħ and U+0126 Ħ are absent from TeX T1+TS1 font encodings. +;; +;; - Characters Ŋ and ŋ are not supported by TeX font "times" used by +;; default by Sphinx for pdflatex engine but they are supported by +;; some TeX fonts, in particular by the default LaTeX font for T1 +;; encoding. +;; +;; - " and ~ must be escaped as ~" and resp. ~~ in xindy merge rules. +;; +;; Contributed by the Sphinx team, July 2018. +;; +;; See sphinx.xdy for superior figures, as they are escaped by LaTeX writer. +(merge-rule "\IeC {\textonesuperior }" "¹" :string) +(merge-rule "\IeC {\texttwosuperior }" "²" :string) +(merge-rule "\IeC {\textthreesuperior }" "³" :string) +(merge-rule "\IeC {\'a}" "á" :string) +(merge-rule "\IeC {\'A}" "Á" :string) +(merge-rule "\IeC {\`a}" "à" :string) +(merge-rule "\IeC {\`A}" "À" :string) +(merge-rule "\IeC {\^a}" "â" :string) +(merge-rule "\IeC {\^A}" "Â" :string) +(merge-rule "\IeC {\~"a}" "ä" :string) +(merge-rule "\IeC {\~"A}" "Ä" :string) +(merge-rule "\IeC {\~~a}" "ã" :string) +(merge-rule "\IeC {\~~A}" "Ã" :string) +(merge-rule "\IeC {\c c}" "ç" :string) +(merge-rule "\IeC {\c C}" "Ç" :string) +(merge-rule "\IeC {\'c}" "ć" :string) +(merge-rule "\IeC {\'C}" "Ć" :string) +(merge-rule "\IeC {\^c}" "ĉ" :string) +(merge-rule "\IeC {\^C}" "Ĉ" :string) +(merge-rule "\IeC {\.c}" "ċ" :string) +(merge-rule "\IeC {\.C}" "Ċ" :string) +(merge-rule "\IeC {\c s}" "ş" :string) +(merge-rule "\IeC {\c S}" "Ş" :string) +(merge-rule "\IeC {\c t}" "ţ" :string) +(merge-rule "\IeC {\c T}" "Ţ" :string) +(merge-rule "\IeC {\-}" "­" :string); soft hyphen +(merge-rule "\IeC {\textdiv }" "÷" :string) +(merge-rule "\IeC {\'e}" "é" :string) +(merge-rule "\IeC {\'E}" "É" :string) +(merge-rule "\IeC {\`e}" "è" :string) +(merge-rule "\IeC {\`E}" "È" :string) +(merge-rule "\IeC {\^e}" "ê" :string) +(merge-rule "\IeC {\^E}" "Ê" :string) +(merge-rule "\IeC {\~"e}" "ë" :string) +(merge-rule "\IeC {\~"E}" "Ë" :string) +(merge-rule "\IeC {\^g}" "ĝ" :string) +(merge-rule "\IeC {\^G}" "Ĝ" :string) +(merge-rule "\IeC {\.g}" "ġ" :string) +(merge-rule "\IeC {\.G}" "Ġ" :string) +(merge-rule "\IeC {\^h}" "ĥ" :string) +(merge-rule "\IeC {\^H}" "Ĥ" :string) +(merge-rule "\IeC {\H o}" "ő" :string) +(merge-rule "\IeC {\H O}" "Ő" :string) +(merge-rule "\IeC {\textacutedbl }" "˝" :string) +(merge-rule "\IeC {\H u}" "ű" :string) +(merge-rule "\IeC {\H U}" "Ű" :string) +(merge-rule "\IeC {\ae }" "æ" :string) +(merge-rule "\IeC {\AE }" "Æ" :string) +(merge-rule "\IeC {\textcopyright }" "©" :string) +(merge-rule "\IeC {\c \ }" "¸" :string) +(merge-rule "\IeC {\dh }" "ð" :string) +(merge-rule "\IeC {\DH }" "Ð" :string) +(merge-rule "\IeC {\dj }" "đ" :string) +(merge-rule "\IeC {\DJ }" "Đ" :string) +(merge-rule "\IeC {\guillemotleft }" "«" :string) +(merge-rule "\IeC {\guillemotright }" "»" :string) +(merge-rule "\IeC {\'\i }" "í" :string) +(merge-rule "\IeC {\`\i }" "ì" :string) +(merge-rule "\IeC {\^\i }" "î" :string) +(merge-rule "\IeC {\~"\i }" "ï" :string) +(merge-rule "\IeC {\i }" "ı" :string) +(merge-rule "\IeC {\^\j }" "ĵ" :string) +(merge-rule "\IeC {\k {}}" "˛" :string) +(merge-rule "\IeC {\l }" "ł" :string) +(merge-rule "\IeC {\L }" "Ł" :string) +(merge-rule "\IeC {\nobreakspace }" " " :string) +(merge-rule "\IeC {\o }" "ø" :string) +(merge-rule "\IeC {\O }" "Ø" :string) +(merge-rule "\IeC {\textsterling }" "£" :string) +(merge-rule "\IeC {\textparagraph }" "¶" :string) +(merge-rule "\IeC {\ss }" "ß" :string) +(merge-rule "\IeC {\textsection }" "§" :string) +(merge-rule "\IeC {\textbrokenbar }" "¦" :string) +(merge-rule "\IeC {\textcent }" "¢" :string) +(merge-rule "\IeC {\textcurrency }" "¤" :string) +(merge-rule "\IeC {\textdegree }" "°" :string) +(merge-rule "\IeC {\textexclamdown }" "¡" :string) +(merge-rule "\IeC {\texthbar }" "ħ" :string) +(merge-rule "\IeC {\textHbar }" "Ħ" :string) +(merge-rule "\IeC {\textonehalf }" "½" :string) +(merge-rule "\IeC {\textonequarter }" "¼" :string) +(merge-rule "\IeC {\textordfeminine }" "ª" :string) +(merge-rule "\IeC {\textordmasculine }" "º" :string) +(merge-rule "\IeC {\textperiodcentered }" "·" :string) +(merge-rule "\IeC {\textquestiondown }" "¿" :string) +(merge-rule "\IeC {\textregistered }" "®" :string) +(merge-rule "\IeC {\textthreequarters }" "¾" :string) +(merge-rule "\IeC {\textyen }" "¥" :string) +(merge-rule "\IeC {\th }" "þ" :string) +(merge-rule "\IeC {\TH }" "Þ" :string) +(merge-rule "\IeC {\'I}" "Í" :string) +(merge-rule "\IeC {\`I}" "Ì" :string) +(merge-rule "\IeC {\^I}" "Î" :string) +(merge-rule "\IeC {\~"I}" "Ï" :string) +(merge-rule "\IeC {\.I}" "İ" :string) +(merge-rule "\IeC {\^J}" "Ĵ" :string) +(merge-rule "\IeC {\k a}" "ą" :string) +(merge-rule "\IeC {\k A}" "Ą" :string) +(merge-rule "\IeC {\k e}" "ę" :string) +(merge-rule "\IeC {\k E}" "Ę" :string) +(merge-rule "\IeC {\'l}" "ĺ" :string) +(merge-rule "\IeC {\'L}" "Ĺ" :string) +(merge-rule "\IeC {\textlnot }" "¬" :string) +(merge-rule "\IeC {\textmu }" "µ" :string) +(merge-rule "\IeC {\'n}" "ń" :string) +(merge-rule "\IeC {\'N}" "Ń" :string) +(merge-rule "\IeC {\~~n}" "ñ" :string) +(merge-rule "\IeC {\~~N}" "Ñ" :string) +(merge-rule "\IeC {\'o}" "ó" :string) +(merge-rule "\IeC {\'O}" "Ó" :string) +(merge-rule "\IeC {\`o}" "ò" :string) +(merge-rule "\IeC {\`O}" "Ò" :string) +(merge-rule "\IeC {\^o}" "ô" :string) +(merge-rule "\IeC {\^O}" "Ô" :string) +(merge-rule "\IeC {\~"o}" "ö" :string) +(merge-rule "\IeC {\~"O}" "Ö" :string) +(merge-rule "\IeC {\~~o}" "õ" :string) +(merge-rule "\IeC {\~~O}" "Õ" :string) +(merge-rule "\IeC {\textpm }" "±" :string) +(merge-rule "\IeC {\r a}" "å" :string) +(merge-rule "\IeC {\r A}" "Å" :string) +(merge-rule "\IeC {\'r}" "ŕ" :string) +(merge-rule "\IeC {\'R}" "Ŕ" :string) +(merge-rule "\IeC {\r u}" "ů" :string) +(merge-rule "\IeC {\r U}" "Ů" :string) +(merge-rule "\IeC {\'s}" "ś" :string) +(merge-rule "\IeC {\'S}" "Ś" :string) +(merge-rule "\IeC {\^s}" "ŝ" :string) +(merge-rule "\IeC {\^S}" "Ŝ" :string) +(merge-rule "\IeC {\textasciidieresis }" "¨" :string) +(merge-rule "\IeC {\textasciimacron }" "¯" :string) +(merge-rule "\IeC {\.{}}" "˙" :string) +(merge-rule "\IeC {\textasciiacute }" "´" :string) +(merge-rule "\IeC {\texttimes }" "×" :string) +(merge-rule "\IeC {\u a}" "ă" :string) +(merge-rule "\IeC {\u A}" "Ă" :string) +(merge-rule "\IeC {\u g}" "ğ" :string) +(merge-rule "\IeC {\u G}" "Ğ" :string) +(merge-rule "\IeC {\textasciibreve }" "˘" :string) +(merge-rule "\IeC {\'u}" "ú" :string) +(merge-rule "\IeC {\'U}" "Ú" :string) +(merge-rule "\IeC {\`u}" "ù" :string) +(merge-rule "\IeC {\`U}" "Ù" :string) +(merge-rule "\IeC {\^u}" "û" :string) +(merge-rule "\IeC {\^U}" "Û" :string) +(merge-rule "\IeC {\~"u}" "ü" :string) +(merge-rule "\IeC {\~"U}" "Ü" :string) +(merge-rule "\IeC {\u u}" "ŭ" :string) +(merge-rule "\IeC {\u U}" "Ŭ" :string) +(merge-rule "\IeC {\v c}" "č" :string) +(merge-rule "\IeC {\v C}" "Č" :string) +(merge-rule "\IeC {\v d}" "ď" :string) +(merge-rule "\IeC {\v D}" "Ď" :string) +(merge-rule "\IeC {\v e}" "ě" :string) +(merge-rule "\IeC {\v E}" "Ě" :string) +(merge-rule "\IeC {\v l}" "ľ" :string) +(merge-rule "\IeC {\v L}" "Ľ" :string) +(merge-rule "\IeC {\v n}" "ň" :string) +(merge-rule "\IeC {\v N}" "Ň" :string) +(merge-rule "\IeC {\v r}" "ř" :string) +(merge-rule "\IeC {\v R}" "Ř" :string) +(merge-rule "\IeC {\v s}" "š" :string) +(merge-rule "\IeC {\v S}" "Š" :string) +(merge-rule "\IeC {\textasciicaron }" "ˇ" :string) +(merge-rule "\IeC {\v t}" "ť" :string) +(merge-rule "\IeC {\v T}" "Ť" :string) +(merge-rule "\IeC {\v z}" "ž" :string) +(merge-rule "\IeC {\v Z}" "Ž" :string) +(merge-rule "\IeC {\'y}" "ý" :string) +(merge-rule "\IeC {\'Y}" "Ý" :string) +(merge-rule "\IeC {\~"y}" "ÿ" :string) +(merge-rule "\IeC {\'z}" "ź" :string) +(merge-rule "\IeC {\'Z}" "Ź" :string) +(merge-rule "\IeC {\.z}" "ż" :string) +(merge-rule "\IeC {\.Z}" "Ż" :string) +;; letters not in Latin1, 2, 3 but available in TeX T1 font encoding +(merge-rule "\IeC {\~"Y}" "Ÿ" :string) +(merge-rule "\IeC {\NG }" "Ŋ" :string) +(merge-rule "\IeC {\ng }" "ŋ" :string) +(merge-rule "\IeC {\OE }" "Œ" :string) +(merge-rule "\IeC {\oe }" "œ" :string) +(merge-rule "\IeC {\IJ }" "IJ" :string) +(merge-rule "\IeC {\ij }" "ij" :string) +(merge-rule "\IeC {\j }" "ȷ" :string) +(merge-rule "\IeC {\SS }" "ẞ" :string) diff --git a/docs/_build/latex/LatinRules.xdy b/docs/_build/latex/LatinRules.xdy new file mode 100644 index 0000000..99f14a2 --- /dev/null +++ b/docs/_build/latex/LatinRules.xdy @@ -0,0 +1,607 @@ +;; style file for xindy +;; filename: LatinRules.xdy +;; +;; It is based upon xindy's files lang/general/utf8.xdy and +;; lang/general/utf8-lang.xdy which implement +;; "a general sorting order for Western European languages" +;; +;; The aim for Sphinx is to be able to index in a Cyrillic document +;; also terms using the Latin alphabets, inclusive of letters +;; with diacritics. To this effect the xindy rules from lang/general +;; got manually re-coded to avoid collisions with the encoding +;; done by xindy for sorting words in Cyrillic languages, which was +;; observed not to use bytes with octal encoding 0o266 or higher. +;; +;; So here we use only 0o266 or higher bytes. +;; (Ŋ, ŋ, IJ, and ij are absent from +;; lang/general/utf8.xdy and not included here) +;; Contributed by the Sphinx team, 2018. + +(define-letter-group "A" :prefixes ("")) +(define-letter-group "B" :after "A" :prefixes ("")) +(define-letter-group "C" :after "B" :prefixes ("")) +(define-letter-group "D" :after "C" :prefixes ("")) +(define-letter-group "E" :after "D" :prefixes ("")) +(define-letter-group "F" :after "E" :prefixes ("")) +(define-letter-group "G" :after "F" :prefixes ("")) +(define-letter-group "H" :after "G" :prefixes ("")) +(define-letter-group "I" :after "H" :prefixes ("")) +(define-letter-group "J" :after "I" :prefixes ("")) +(define-letter-group "K" :after "J" :prefixes ("")) +(define-letter-group "L" :after "K" :prefixes ("")) +(define-letter-group "M" :after "L" :prefixes ("")) +(define-letter-group "N" :after "M" :prefixes ("")) +(define-letter-group "O" :after "N" :prefixes ("")) +(define-letter-group "P" :after "O" :prefixes ("")) +(define-letter-group "Q" :after "P" :prefixes ("")) +(define-letter-group "R" :after "Q" :prefixes ("")) +(define-letter-group "S" :after "R" :prefixes ("")) +(define-letter-group "T" :after "S" :prefixes ("")) +(define-letter-group "U" :after "T" :prefixes ("")) +(define-letter-group "V" :after "U" :prefixes ("")) +(define-letter-group "W" :after "V" :prefixes ("")) +(define-letter-group "X" :after "W" :prefixes ("")) +(define-letter-group "Y" :after "X" :prefixes ("")) +(define-letter-group "Z" :after "Y" :prefixes ("")) + +(define-rule-set "sphinx-xy-alphabetize" + + :rules (("À" "" :string) + ("Ă" "" :string) + ("â" "" :string) + ("Ä" "" :string) + ("à" "" :string) + ("Å" "" :string) + ("Ã" "" :string) + ("Á" "" :string) + ("á" "" :string) + ("ã" "" :string) + ("Â" "" :string) + ("ă" "" :string) + ("å" "" :string) + ("ą" "" :string) + ("ä" "" :string) + ("Ą" "" :string) + ("æ" "" :string) + ("Æ" "" :string) + ("ć" "" :string) + ("ĉ" "" :string) + ("ç" "" :string) + ("Č" "" :string) + ("č" "" :string) + ("Ĉ" "" :string) + ("Ç" "" :string) + ("Ć" "" :string) + ("ď" "" :string) + ("Đ" "" :string) + ("Ď" "" :string) + ("đ" "" :string) + ("ê" "" :string) + ("Ę" "" :string) + ("Ě" "" :string) + ("ë" "" :string) + ("ě" "" :string) + ("é" "" :string) + ("È" "" :string) + ("Ë" "" :string) + ("É" "" :string) + ("è" "" :string) + ("Ê" "" :string) + ("ę" "" :string) + ("ĝ" "" :string) + ("ğ" "" :string) + ("Ğ" "" :string) + ("Ĝ" "" :string) + ("ĥ" "" :string) + ("Ĥ" "" :string) + ("Ï" "" :string) + ("Í" "" :string) + ("ï" "" :string) + ("Î" "" :string) + ("î" "" :string) + ("ı" "" :string) + ("İ" "" :string) + ("í" "" :string) + ("Ì" "" :string) + ("ì" "" :string) + ("Ĵ" "" :string) + ("ĵ" "" :string) + ("ł" "" :string) + ("Ł" "" :string) + ("ľ" "" :string) + ("Ľ" "" :string) + ("ń" "" :string) + ("Ń" "" :string) + ("ñ" "" :string) + ("ň" "" :string) + ("Ñ" "" :string) + ("Ň" "" :string) + ("Õ" "" :string) + ("Ő" "" :string) + ("ó" "" :string) + ("ö" "" :string) + ("ô" "" :string) + ("ő" "" :string) + ("Ø" "" :string) + ("Ö" "" :string) + ("õ" "" :string) + ("Ô" "" :string) + ("ø" "" :string) + ("Ó" "" :string) + ("Ò" "" :string) + ("ò" "" :string) + ("œ" "ĺ" :string) + ("Œ" "ĺ" :string) + ("Ř" "" :string) + ("ř" "" :string) + ("Ŕ" "" :string) + ("ŕ" "" :string) + ("ŝ" "" :string) + ("Ś" "" :string) + ("ș" "" :string) + ("ş" "" :string) + ("Ŝ" "" :string) + ("ś" "" :string) + ("Ș" "" :string) + ("š" "" :string) + ("Ş" "" :string) + ("Š" "" :string) + ("ß" "" :string) + ("Ț" "" :string) + ("Ť" "" :string) + ("ț" "" :string) + ("ť" "" :string) + ("û" "" :string) + ("ŭ" "" :string) + ("ů" "" :string) + ("ű" "" :string) + ("ù" "" :string) + ("Ŭ" "" :string) + ("Ù" "" :string) + ("Ű" "" :string) + ("Ü" "" :string) + ("Ů" "" :string) + ("ú" "" :string) + ("Ú" "" :string) + ("Û" "" :string) + ("ü" "" :string) + ("ÿ" "" :string) + ("Ý" "" :string) + ("Ÿ" "" :string) + ("ý" "" :string) + ("Ż" "" :string) + ("Ž" "" :string) + ("Ź" "" :string) + ("ž" "" :string) + ("ż" "" :string) + ("ź" "" :string) + ("a" "" :string) + ("A" "" :string) + ("b" "" :string) + ("B" "" :string) + ("c" "" :string) + ("C" "" :string) + ("d" "" :string) + ("D" "" :string) + ("e" "" :string) + ("E" "" :string) + ("F" "" :string) + ("f" "" :string) + ("G" "" :string) + ("g" "" :string) + ("H" "" :string) + ("h" "" :string) + ("i" "" :string) + ("I" "" :string) + ("J" "" :string) + ("j" "" :string) + ("K" "" :string) + ("k" "" :string) + ("L" "" :string) + ("l" "" :string) + ("M" "" :string) + ("m" "" :string) + ("n" "" :string) + ("N" "" :string) + ("O" "" :string) + ("o" "" :string) + ("p" "" :string) + ("P" "" :string) + ("Q" "" :string) + ("q" "" :string) + ("r" "" :string) + ("R" "" :string) + ("S" "" :string) + ("s" "" :string) + ("t" "" :string) + ("T" "" :string) + ("u" "" :string) + ("U" "" :string) + ("v" "" :string) + ("V" "" :string) + ("W" "" :string) + ("w" "" :string) + ("x" "" :string) + ("X" "" :string) + ("Y" "" :string) + ("y" "" :string) + ("z" "" :string) + ("Z" "" :string) + )) + +(define-rule-set "sphinx-xy-resolve-diacritics" + + :rules (("Ĥ" "" :string) + ("ó" "" :string) + ("ľ" "" :string) + ("Ř" "" :string) + ("ĝ" "" :string) + ("ď" "" :string) + ("Ě" "" :string) + ("ĥ" "" :string) + ("Č" "" :string) + ("Ĵ" "" :string) + ("ě" "" :string) + ("ž" "" :string) + ("Ď" "" :string) + ("ř" "" :string) + ("Ž" "" :string) + ("ı" "" :string) + ("Ť" "" :string) + ("á" "" :string) + ("č" "" :string) + ("Á" "" :string) + ("ň" "" :string) + ("Š" "" :string) + ("Ň" "" :string) + ("ĵ" "" :string) + ("ť" "" :string) + ("Ó" "" :string) + ("ý" "" :string) + ("Ĝ" "" :string) + ("Ú" "" :string) + ("Ľ" "" :string) + ("š" "" :string) + ("Ý" "" :string) + ("ú" "" :string) + ("Ś" "" :string) + ("ć" "" :string) + ("Ł" "" :string) + ("ł" "" :string) + ("ń" "" :string) + ("À" "" :string) + ("Ź" "" :string) + ("à" "" :string) + ("Ń" "" :string) + ("Đ" "" :string) + ("ÿ" "" :string) + ("ś" "" :string) + ("Ğ" "" :string) + ("ğ" "" :string) + ("Ù" "" :string) + ("İ" "" :string) + ("đ" "" :string) + ("ù" "" :string) + ("Ț" "" :string) + ("é" "" :string) + ("ŕ" "" :string) + ("Ć" "" :string) + ("ț" "" :string) + ("ò" "" :string) + ("ź" "" :string) + ("Ò" "" :string) + ("Ÿ" "" :string) + ("Ŕ" "" :string) + ("É" "" :string) + ("ĉ" "" :string) + ("ô" "" :string) + ("Í" "" :string) + ("ŝ" "" :string) + ("Ż" "" :string) + ("Ă" "" :string) + ("Ŝ" "" :string) + ("ñ" "" :string) + ("ŭ" "" :string) + ("í" "" :string) + ("È" "" :string) + ("Ô" "" :string) + ("Ŭ" "" :string) + ("ż" "" :string) + ("Ñ" "" :string) + ("è" "" :string) + ("Ĉ" "" :string) + ("ă" "" :string) + ("â" "" :string) + ("û" "" :string) + ("ê" "" :string) + ("Õ" "" :string) + ("õ" "" :string) + ("ș" "" :string) + ("ç" "" :string) + ("Â" "" :string) + ("Ê" "" :string) + ("Û" "" :string) + ("Ç" "" :string) + ("ì" "" :string) + ("Ì" "" :string) + ("Ș" "" :string) + ("ö" "" :string) + ("Ö" "" :string) + ("ş" "" :string) + ("ů" "" :string) + ("ë" "" :string) + ("ã" "" :string) + ("î" "" :string) + ("Î" "" :string) + ("Ã" "" :string) + ("Ş" "" :string) + ("Ů" "" :string) + ("Ë" "" :string) + ("ï" "" :string) + ("Ő" "" :string) + ("Ï" "" :string) + ("Ę" "" :string) + ("ő" "" :string) + ("Ü" "" :string) + ("Å" "" :string) + ("ü" "" :string) + ("ę" "" :string) + ("å" "" :string) + ("Ä" "" :string) + ("ű" "" :string) + ("Ø" "" :string) + ("ø" "" :string) + ("Ű" "" :string) + ("ä" "" :string) + ("Ą" "" :string) + ("ą" "" :string) + ("œ" "" :string) + ("ß" "" :string) + ("Æ" "" :string) + ("Œ" "" :string) + ("æ" "" :string) + ("e" "" :string) + ("t" "" :string) + ("L" "" :string) + ("Y" "" :string) + ("J" "" :string) + ("a" "" :string) + ("p" "" :string) + ("u" "" :string) + ("j" "" :string) + ("b" "" :string) + ("G" "" :string) + ("U" "" :string) + ("F" "" :string) + ("H" "" :string) + ("i" "" :string) + ("z" "" :string) + ("c" "" :string) + ("l" "" :string) + ("A" "" :string) + ("Q" "" :string) + ("w" "" :string) + ("D" "" :string) + ("R" "" :string) + ("d" "" :string) + ("s" "" :string) + ("r" "" :string) + ("k" "" :string) + ("v" "" :string) + ("m" "" :string) + ("P" "" :string) + ("y" "" :string) + ("K" "" :string) + ("q" "" :string) + ("S" "" :string) + ("I" "" :string) + ("C" "" :string) + ("M" "" :string) + ("Z" "" :string) + ("T" "" :string) + ("W" "" :string) + ("B" "" :string) + ("h" "" :string) + ("x" "" :string) + ("X" "" :string) + ("f" "" :string) + ("E" "" :string) + ("V" "" :string) + ("N" "" :string) + ("O" "" :string) + ("o" "" :string) + ("g" "" :string) + ("n" "" :string) + )) + +(define-rule-set "sphinx-xy-resolve-case" + + :rules (("Ú" "8" :string) + ("Ÿ" "8" :string) + ("Ç" "8" :string) + ("Ĉ" "8" :string) + ("Ŕ" "8" :string) + ("Ľ" "8" :string) + ("Ů" "8" :string) + ("Ý" "8" :string) + ("É" "8" :string) + ("Ë" "8" :string) + ("Ș" "8" :string) + ("Ì" "8" :string) + ("Ê" "8" :string) + ("Ň" "8" :string) + ("Ą" "8" :string) + ("Š" "8" :string) + ("Û" "8" :string) + ("Ş" "8" :string) + ("Ć" "8" :string) + ("Ò" "8" :string) + ("Ĝ" "8" :string) + ("Ñ" "8" :string) + ("Ó" "8" :string) + ("Î" "8" :string) + ("Á" "8" :string) + ("Ã" "8" :string) + ("Ț" "8" :string) + ("Å" "8" :string) + ("Ğ" "8" :string) + ("Ü" "8" :string) + ("È" "8" :string) + ("Ô" "8" :string) + ("İ" "8" :string) + ("Ű" "8" :string) + ("Ù" "8" :string) + ("Ŭ" "8" :string) + ("Â" "8" :string) + ("Ť" "8" :string) + ("Ń" "8" :string) + ("Ď" "8" :string) + ("Ź" "8" :string) + ("Ž" "8" :string) + ("Đ" "8" :string) + ("Ŝ" "8" :string) + ("Č" "8" :string) + ("Ĵ" "8" :string) + ("Ö" "8" :string) + ("Ø" "8" :string) + ("Ż" "8" :string) + ("Ł" "8" :string) + ("Ă" "8" :string) + ("Ě" "8" :string) + ("Ő" "8" :string) + ("Õ" "8" :string) + ("Ę" "8" :string) + ("Ï" "8" :string) + ("À" "8" :string) + ("Ĥ" "8" :string) + ("Ä" "8" :string) + ("Ś" "8" :string) + ("Ř" "8" :string) + ("Í" "8" :string) + ("Œ" "89" :string) + ("Æ" "89" :string) + ("ì" "9" :string) + ("è" "9" :string) + ("ą" "9" :string) + ("š" "9" :string) + ("ú" "9" :string) + ("å" "9" :string) + ("ă" "9" :string) + ("ę" "9" :string) + ("ü" "9" :string) + ("ź" "9" :string) + ("ò" "9" :string) + ("ť" "9" :string) + ("ț" "9" :string) + ("ĵ" "9" :string) + ("ŕ" "9" :string) + ("ż" "9" :string) + ("ä" "9" :string) + ("ý" "9" :string) + ("ù" "9" :string) + ("á" "9" :string) + ("é" "9" :string) + ("č" "9" :string) + ("ň" "9" :string) + ("ś" "9" :string) + ("ø" "9" :string) + ("í" "9" :string) + ("đ" "9" :string) + ("ı" "9" :string) + ("ğ" "9" :string) + ("î" "9" :string) + ("ã" "9" :string) + ("à" "9" :string) + ("ř" "9" :string) + ("ő" "9" :string) + ("ů" "9" :string) + ("ș" "9" :string) + ("ÿ" "9" :string) + ("ë" "9" :string) + ("ŭ" "9" :string) + ("ç" "9" :string) + ("ű" "9" :string) + ("ñ" "9" :string) + ("õ" "9" :string) + ("ě" "9" :string) + ("ş" "9" :string) + ("ž" "9" :string) + ("ĝ" "9" :string) + ("ŝ" "9" :string) + ("ń" "9" :string) + ("û" "9" :string) + ("ł" "9" :string) + ("ď" "9" :string) + ("ĥ" "9" :string) + ("ê" "9" :string) + ("ô" "9" :string) + ("ĉ" "9" :string) + ("â" "9" :string) + ("ć" "9" :string) + ("ï" "9" :string) + ("ö" "9" :string) + ("ľ" "9" :string) + ("ó" "9" :string) + ("æ" "99" :string) + ("ß" "99" :string) + ("œ" "99" :string) + ("N" "8" :string) + ("V" "8" :string) + ("O" "8" :string) + ("X" "8" :string) + ("E" "8" :string) + ("P" "8" :string) + ("K" "8" :string) + ("T" "8" :string) + ("Z" "8" :string) + ("M" "8" :string) + ("C" "8" :string) + ("I" "8" :string) + ("S" "8" :string) + ("B" "8" :string) + ("W" "8" :string) + ("D" "8" :string) + ("R" "8" :string) + ("H" "8" :string) + ("F" "8" :string) + ("Q" "8" :string) + ("A" "8" :string) + ("G" "8" :string) + ("U" "8" :string) + ("J" "8" :string) + ("Y" "8" :string) + ("L" "8" :string) + ("o" "9" :string) + ("n" "9" :string) + ("g" "9" :string) + ("x" "9" :string) + ("f" "9" :string) + ("y" "9" :string) + ("q" "9" :string) + ("h" "9" :string) + ("w" "9" :string) + ("s" "9" :string) + ("d" "9" :string) + ("v" "9" :string) + ("k" "9" :string) + ("r" "9" :string) + ("m" "9" :string) + ("z" "9" :string) + ("c" "9" :string) + ("i" "9" :string) + ("l" "9" :string) + ("b" "9" :string) + ("j" "9" :string) + ("a" "9" :string) + ("p" "9" :string) + ("u" "9" :string) + ("t" "9" :string) + ("e" "9" :string) + )) + +(use-rule-set :run 0 + :rule-set ("sphinx-xy-alphabetize")) +(use-rule-set :run 1 + :rule-set ("sphinx-xy-resolve-diacritics")) +(use-rule-set :run 2 + :rule-set ("sphinx-xy-resolve-case")) diff --git a/docs/_build/latex/Makefile b/docs/_build/latex/Makefile new file mode 100644 index 0000000..c561680 --- /dev/null +++ b/docs/_build/latex/Makefile @@ -0,0 +1,68 @@ +# Makefile for Sphinx LaTeX output + +ALLDOCS = $(basename $(wildcard *.tex)) +ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) +ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) +ALLXDV = +ALLPS = $(addsuffix .ps,$(ALLDOCS)) +ALLIMGS = $(wildcard *.png *.gif *.jpg *.jpeg) + +# Prefix for archive names +ARCHIVEPREFIX = +# Additional LaTeX options (passed via variables in latexmkrc/latexmkjarc file) +export LATEXOPTS = +# Additional latexmk options +LATEXMKOPTS = +# format: pdf or dvi (used only by archive targets) +FMT = pdf + +LATEX = latexmk -dvi +PDFLATEX = latexmk -pdf -dvi- -ps- + + +%.png %.gif %.jpg %.jpeg: FORCE_MAKE + extractbb '$@' + +%.dvi: %.tex FORCE_MAKE + $(LATEX) $(LATEXMKOPTS) '$<' + +%.ps: %.dvi + dvips '$<' + +%.pdf: %.tex FORCE_MAKE + $(PDFLATEX) $(LATEXMKOPTS) '$<' + +all: $(ALLPDF) + +all-dvi: $(ALLDVI) + +all-ps: $(ALLPS) + +all-pdf: $(ALLPDF) + +zip: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +tar: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +gz: tar + gzip -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz + +bz2: tar + bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +xz: tar + xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +clean: + rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI) $(ALLXDV) *.fls *.fdb_latexmk + +.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz +.PHONY: FORCE_MAKE \ No newline at end of file diff --git a/docs/_build/latex/footnotehyper-sphinx.sty b/docs/_build/latex/footnotehyper-sphinx.sty new file mode 100644 index 0000000..b6692cf --- /dev/null +++ b/docs/_build/latex/footnotehyper-sphinx.sty @@ -0,0 +1,269 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{footnotehyper-sphinx}% + [2017/10/27 v1.7 hyperref aware footnote.sty for sphinx (JFB)] +%% +%% Package: footnotehyper-sphinx +%% Version: based on footnotehyper.sty 2017/03/07 v1.0 +%% as available at https://www.ctan.org/pkg/footnotehyper +%% License: the one applying to Sphinx +%% +%% Refer to the PDF documentation at https://www.ctan.org/pkg/footnotehyper for +%% the code comments. +%% +%% Differences: +%% 1. a partial tabulary compatibility layer added (enough for Sphinx mark-up), +%% 2. use of \spx@opt@BeforeFootnote from sphinx.sty, +%% 3. use of \sphinxunactivateextrasandspace from sphinx.sty, +%% 4. macro definition \sphinxfootnotemark, +%% 5. macro definition \sphinxlongtablepatch +%% 6. replaced an \undefined by \@undefined +\DeclareOption*{\PackageWarning{footnotehyper-sphinx}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +\newbox\FNH@notes +\newdimen\FNH@width +\let\FNH@colwidth\columnwidth +\newif\ifFNH@savingnotes +\AtBeginDocument {% + \let\FNH@latex@footnote \footnote + \let\FNH@latex@footnotetext\footnotetext + \let\FNH@H@@footnotetext \@footnotetext + \newenvironment{savenotes} + {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}% + \let\spewnotes \FNH@spewnotes + \let\footnote \FNH@footnote + \let\footnotetext \FNH@footnotetext + \let\endfootnote \FNH@endfntext + \let\endfootnotetext\FNH@endfntext + \@ifpackageloaded{hyperref} + {\ifHy@hyperfootnotes + \let\FNH@H@@footnotetext\H@@footnotetext + \else + \let\FNH@hyper@fntext\FNH@nohyp@fntext + \fi}% + {\let\FNH@hyper@fntext\FNH@nohyp@fntext}% +}% +\def\FNH@hyper@fntext{\FNH@fntext\FNH@hyper@fntext@i}% +\def\FNH@nohyp@fntext{\FNH@fntext\FNH@nohyp@fntext@i}% +\def\FNH@fntext #1{% + \ifx\ifmeasuring@\@undefined + \expandafter\@secondoftwo\else\expandafter\@firstofone\fi +% these two lines modified for Sphinx (tabulary compatibility): + {\ifmeasuring@\expandafter\@gobbletwo\else\expandafter\@firstofone\fi}% + {\ifx\equation$\expandafter\@gobbletwo\fi #1}%$ +}% +\long\def\FNH@hyper@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext + {\rule\z@\footnotesep\ignorespaces + \ifHy@nesting\expandafter\ltx@firstoftwo + \else\expandafter\ltx@secondoftwo + \fi + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}{#1}}% + {\Hy@raisedlink + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}% + {\relax}}% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + #1}% + \@finalstrut\strutbox + }% + \FNH@endnote + }% +}% +\long\def\FNH@nohyp@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext{\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \FNH@endnote + }% +}% +\def\FNH@startnote{% + \hsize\FNH@colwidth + \interlinepenalty\interfootnotelinepenalty + \reset@font\footnotesize + \floatingpenalty\@MM + \@parboxrestore + \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}% + \color@begingroup +}% +\def\FNH@endnote{\color@endgroup}% +\def\FNH@savenotes{% + \begingroup + \ifFNH@savingnotes\else + \FNH@savingnotestrue + \let\@footnotetext \FNH@hyper@fntext + \let\@mpfootnotetext \FNH@hyper@fntext + \let\H@@mpfootnotetext\FNH@nohyp@fntext + \FNH@width\columnwidth + \let\FNH@colwidth\FNH@width + \global\setbox\FNH@notes\box\voidb@x + \let\FNH@thempfn\thempfn + \let\FNH@mpfn\@mpfn + \ifx\@minipagerestore\relax\let\@minipagerestore\@empty\fi + \expandafter\def\expandafter\@minipagerestore\expandafter{% + \@minipagerestore + \let\thempfn\FNH@thempfn + \let\@mpfn\FNH@mpfn + }% + \fi +}% +\def\FNH@spewnotes {% + \endgroup + \ifFNH@savingnotes\else + \ifvoid\FNH@notes\else + \begingroup + \let\@makefntext\@empty + \let\@finalstrut\@gobble + \let\rule\@gobbletwo + \FNH@H@@footnotetext{\unvbox\FNH@notes}% + \endgroup + \fi + \fi +}% +\def\FNH@footnote@envname {footnote}% +\def\FNH@footnotetext@envname{footnotetext}% +\def\FNH@footnote{% +% this line added for Sphinx: + \spx@opt@BeforeFootnote + \ifx\@currenvir\FNH@footnote@envname + \expandafter\FNH@footnoteenv + \else + \expandafter\FNH@latex@footnote + \fi +}% +\def\FNH@footnoteenv{% +% this line added for Sphinx (footnotes in parsed literal blocks): + \catcode13=5 \sphinxunactivateextrasandspace + \@ifnextchar[% + \FNH@footnoteenv@i %] + {\stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnoteenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext +}% +\def\FNH@footnotetext{% + \ifx\@currenvir\FNH@footnotetext@envname + \expandafter\FNH@footnotetextenv + \else + \expandafter\FNH@latex@footnotetext + \fi +}% +\def\FNH@footnotetextenv{% + \@ifnextchar[% + \FNH@footnotetextenv@i %] + {\protected@xdef\@thefnmark{\thempfn}% + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnotetextenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \ifFNH@savingnotes + \def\FNH@endfntext@fntext{\FNH@nohyp@fntext}% + \else + \def\FNH@endfntext@fntext{\FNH@H@@footnotetext}% + \fi + \FNH@startfntext +}% +\def\FNH@startfntext{% + \setbox\z@\vbox\bgroup + \FNH@startnote + \FNH@prefntext + \rule\z@\footnotesep\ignorespaces +}% +\def\FNH@endfntext {% + \@finalstrut\strutbox + \FNH@postfntext + \FNH@endnote + \egroup + \begingroup + \let\@makefntext\@empty\let\@finalstrut\@gobble\let\rule\@gobbletwo + \FNH@endfntext@fntext {\unvbox\z@}% + \endgroup +}% +\AtBeginDocument{% + \let\FNH@@makefntext\@makefntext + \ifx\@makefntextFB\@undefined + \expandafter\@gobble\else\expandafter\@firstofone\fi + {\ifFBFrenchFootnotes \let\FNH@@makefntext\@makefntextFB \else + \let\FNH@@makefntext\@makefntextORI\fi}% + \expandafter\FNH@check@a\FNH@@makefntext{1.2!3?4,}% + \FNH@@@1.2!3?4,\FNH@@@\relax +}% +\long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{% + \ifx\relax#3\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi + \FNH@bad@makefntext@alert + {\def\FNH@prefntext{#1}\def\FNH@postfntext{#2}\FNH@check@b}% +}% +\def\FNH@check@b #1\relax{% + \expandafter\expandafter\expandafter\FNH@check@c + \expandafter\meaning\expandafter\FNH@prefntext + \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax +}% +\def\FNH@check@c #11.2!3?4,#2#3\relax{% + \ifx\FNH@check@c#2\expandafter\@gobble\fi\FNH@bad@makefntext@alert +}% +% slight reformulation for Sphinx +\def\FNH@bad@makefntext@alert{% + \PackageWarningNoLine{footnotehyper-sphinx}% + {Footnotes will be sub-optimal, sorry. This is due to the document class or^^J + some package modifying macro \string\@makefntext.^^J + You can try to report this incompatibility at^^J + https://github.com/sphinx-doc/sphinx with this info:}% + \typeout{\meaning\@makefntext}% + \let\FNH@prefntext\@empty\let\FNH@postfntext\@empty +}% +% this macro from original footnote.sty is not used anymore by Sphinx +% but for simplicity sake let's just keep it as is +\def\makesavenoteenv{\@ifnextchar[\FNH@msne@ii\FNH@msne@i}%] +\def\FNH@msne@i #1{% + \expandafter\let\csname FNH$#1\expandafter\endcsname %$ + \csname #1\endcsname + \expandafter\let\csname endFNH$#1\expandafter\endcsname %$ + \csname end#1\endcsname + \FNH@msne@ii[#1]{FNH$#1}%$ +}% +\def\FNH@msne@ii[#1]#2{% + \expandafter\edef\csname#1\endcsname{% + \noexpand\savenotes + \expandafter\noexpand\csname#2\endcsname + }% + \expandafter\edef\csname end#1\endcsname{% + \expandafter\noexpand\csname end#2\endcsname + \noexpand\expandafter + \noexpand\spewnotes + \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi + }% +}% +% end of footnotehyper 2017/02/16 v0.99 +% some extras for Sphinx : +% \sphinxfootnotemark: usable in section titles and silently removed from TOCs. +\def\sphinxfootnotemark [#1]% + {\ifx\thepage\relax\else\protect\spx@opt@BeforeFootnote + \protect\footnotemark[#1]\fi}% +\AtBeginDocument{% + % let hyperref less complain + \pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}% + % to obtain hyperlinked footnotes in longtable environment we must replace + % hyperref's patch of longtable's patch of \@footnotetext by our own + \let\LT@p@ftntext\FNH@hyper@fntext + % this *requires* longtable to be used always wrapped in savenotes environment +}% +\endinput +%% +%% End of file `footnotehyper-sphinx.sty'. diff --git a/docs/_build/latex/latexmkjarc b/docs/_build/latex/latexmkjarc new file mode 100644 index 0000000..5b315d6 --- /dev/null +++ b/docs/_build/latex/latexmkjarc @@ -0,0 +1,22 @@ +$latex = 'platex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; +$dvipdf = 'dvipdfmx %O -o %D %S'; +$makeindex = 'internal mendex %S %B %D'; +sub mendex { + my ($source, $basename, $destination) = @_; + my $dictfile = $basename . ".dic"; + unlink($destination); + system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source); + if ($? > 0) { + print("mendex exited with error code $? (ignored)\n"); + } + if (!-e $destination) { + # create an empty .ind file if nothing + open(FH, ">" . $destination); + close(FH); + } + return 0; +} +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} diff --git a/docs/_build/latex/latexmkrc b/docs/_build/latex/latexmkrc new file mode 100644 index 0000000..bba17fa --- /dev/null +++ b/docs/_build/latex/latexmkrc @@ -0,0 +1,9 @@ +$latex = 'latex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$pdflatex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$xelatex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$makeindex = 'makeindex -s python.ist %O -o %D %S'; +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} \ No newline at end of file diff --git a/docs/_build/latex/make.bat b/docs/_build/latex/make.bat new file mode 100644 index 0000000..94bda21 --- /dev/null +++ b/docs/_build/latex/make.bat @@ -0,0 +1,31 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +pushd %~dp0 + +set PDFLATEX=latexmk -pdf -dvi- -ps- + +set "LATEXOPTS= " + +if "%1" == "" goto all-pdf + +if "%1" == "all-pdf" ( + :all-pdf + for %%i in (*.tex) do ( + %PDFLATEX% %LATEXMKOPTS% %%i + ) + goto end +) + +if "%1" == "all-pdf-ja" ( + goto all-pdf +) + +if "%1" == "clean" ( + del /q /s *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz *.fls *.fdb_latexmk + goto end +) + +:end +popd \ No newline at end of file diff --git a/docs/_build/latex/python.ist b/docs/_build/latex/python.ist new file mode 100644 index 0000000..70536a6 --- /dev/null +++ b/docs/_build/latex/python.ist @@ -0,0 +1,16 @@ +line_max 100 +headings_flag 1 +heading_prefix " \\bigletter " + +preamble "\\begin{sphinxtheindex} +\\let\\bigletter\\sphinxstyleindexlettergroup +\\let\\spxpagem \\sphinxstyleindexpagemain +\\let\\spxentry \\sphinxstyleindexentry +\\let\\spxextra \\sphinxstyleindexextra + +" + +postamble "\n\n\\end{sphinxtheindex}\n" + +symhead_positive "{\\sphinxsymbolsname}" +numhead_positive "{\\sphinxnumbersname}" diff --git a/docs/_build/latex/sphinx.sty b/docs/_build/latex/sphinx.sty new file mode 100644 index 0000000..de6664c --- /dev/null +++ b/docs/_build/latex/sphinx.sty @@ -0,0 +1,1826 @@ +% +% sphinx.sty +% +% Adapted from the old python.sty, mostly written by Fred Drake, +% by Georg Brandl. +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{sphinx}[2019/01/12 v1.8.4 LaTeX package (Sphinx markup)] + +% provides \ltx@ifundefined +% (many packages load ltxcmds: graphicx does for pdftex and lualatex but +% not xelatex, and anyhow kvoptions does, but it may be needed in future to +% use \sphinxdeprecationwarning earlier, and it needs \ltx@ifundefined) +\RequirePackage{ltxcmds} + +%% for deprecation warnings +\newcommand\sphinxdeprecationwarning[4]{% #1 the deprecated macro or name, +% #2 = when deprecated, #3 = when removed, #4 = additional info + \edef\spx@tempa{\detokenize{#1}}% + \ltx@ifundefined{sphinx_depr_\spx@tempa}{% + \global\expandafter\let\csname sphinx_depr_\spx@tempa\endcsname\spx@tempa + \expandafter\AtEndDocument\expandafter{\expandafter\let\expandafter + \sphinxdeprecatedmacro\csname sphinx_depr_\spx@tempa\endcsname + \PackageWarningNoLine{sphinx}{^^J**** SPHINX DEPRECATION WARNING:^^J + \sphinxdeprecatedmacro^^J + \@spaces- is deprecated at Sphinx #2^^J + \@spaces- and removed at Sphinx #3.^^J + #4^^J****}}% + }{% warning already emitted (at end of latex log), don't repeat + }} + + +%% PACKAGES +% +% we delay handling of options to after having loaded packages, because +% of the need to use \definecolor. +\RequirePackage{graphicx} +\@ifclassloaded{memoir}{}{\RequirePackage{fancyhdr}} +% for \text macro and \iffirstchoice@ conditional even if amsmath not loaded +\RequirePackage{amstext} +\RequirePackage{textcomp}% "warn" option issued from template +\RequirePackage{titlesec} +\@ifpackagelater{titlesec}{2016/03/15}% + {\@ifpackagelater{titlesec}{2016/03/21}% + {}% + {\newif\ifsphinx@ttlpatch@ok + \IfFileExists{etoolbox.sty}{% + \RequirePackage{etoolbox}% + \patchcmd{\ttlh@hang}{\parindent\z@}{\parindent\z@\leavevmode}% + {\sphinx@ttlpatch@oktrue}{}% + \ifsphinx@ttlpatch@ok + \patchcmd{\ttlh@hang}{\noindent}{}{}{\sphinx@ttlpatch@okfalse}% + \fi + }{}% + \ifsphinx@ttlpatch@ok + \typeout{^^J Package Sphinx Info: ^^J + **** titlesec 2.10.1 successfully patched for bugfix ****^^J}% + \else + \AtEndDocument{\PackageWarningNoLine{sphinx}{^^J% +******** titlesec 2.10.1 has a bug, (section numbers disappear) ......|^^J% +******** and Sphinx could not patch it, perhaps because your local ...|^^J% +******** copy is already fixed without a changed release date. .......|^^J% +******** If not, you must update titlesec! ...........................|}}% + \fi + }% + }{} +\RequirePackage{tabulary} +% tabulary has a bug with its re-definition of \multicolumn in its first pass +% which is not \long. But now Sphinx does not use LaTeX's \multicolumn but its +% own macro. Hence we don't even need to patch tabulary. See sphinxmulticell.sty +% X or S (Sphinx) may have meanings if some table package is loaded hence +% \X was chosen to avoid possibility of conflict +\newcolumntype{\X}[2]{p{\dimexpr + (\linewidth-\arrayrulewidth)*#1/#2-\tw@\tabcolsep-\arrayrulewidth\relax}} +\newcolumntype{\Y}[1]{p{\dimexpr + #1\dimexpr\linewidth-\arrayrulewidth\relax-\tw@\tabcolsep-\arrayrulewidth\relax}} +% using here T (for Tabulary) feels less of a problem than the X could be +\newcolumntype{T}{J}% +% For tables allowing pagebreaks +\RequirePackage{longtable} +% User interface to set-up whitespace before and after tables: +\newcommand*\sphinxtablepre {0pt}% +\newcommand*\sphinxtablepost{\medskipamount}% +% Space from caption baseline to top of table or frame of literal-block +\newcommand*\sphinxbelowcaptionspace{.5\sphinxbaselineskip}% +% as one can not use \baselineskip from inside longtable (it is zero there) +% we need \sphinxbaselineskip, which defaults to \baselineskip +\def\sphinxbaselineskip{\baselineskip}% +% The following is to ensure that, whether tabular(y) or longtable: +% - if a caption is on top of table: +% a) the space between its last baseline and the top rule of table is +% exactly \sphinxbelowcaptionspace +% b) the space from last baseline of previous text to first baseline of +% caption is exactly \parskip+\baselineskip+ height of a strut. +% c) the caption text will wrap at width \LTcapwidth (4in) +% - make sure this works also if "caption" package is loaded by user +% (with its width or margin option taking place of \LTcapwidth role) +% TODO: obtain same for caption of literal block: a) & c) DONE, b) TO BE DONE +% +% To modify space below such top caption, adjust \sphinxbelowcaptionspace +% To add or remove space above such top caption, adjust \sphinxtablepre: +% notice that \abovecaptionskip, \belowcaptionskip, \LTpre are **ignored** +% A. Table with longtable +\def\sphinxatlongtablestart + {\par + \vskip\parskip + \vskip\dimexpr\sphinxtablepre\relax % adjust vertical position + \vbox{}% get correct baseline from above + \LTpre\z@skip\LTpost\z@skip % set to zero longtable's own skips + \edef\sphinxbaselineskip{\dimexpr\the\dimexpr\baselineskip\relax\relax}% + }% +% Compatibility with caption package +\def\sphinxthelongtablecaptionisattop{% + \spx@ifcaptionpackage{\noalign{\vskip-\belowcaptionskip}}{}% +}% +% Achieves exactly \sphinxbelowcaptionspace below longtable caption +\def\sphinxlongtablecapskipadjust + {\dimexpr-\dp\strutbox + -\spx@ifcaptionpackage{\abovecaptionskip}{\sphinxbaselineskip}% + +\sphinxbelowcaptionspace\relax}% +\def\sphinxatlongtableend{\prevdepth\z@\vskip\sphinxtablepost\relax}% +% B. Table with tabular or tabulary +\def\sphinxattablestart{\par\vskip\dimexpr\sphinxtablepre\relax}% +\let\sphinxattableend\sphinxatlongtableend +% This is used by tabular and tabulary templates +\newcommand*\sphinxcapstartof[1]{% + \vskip\parskip + \vbox{}% force baselineskip for good positioning by capstart of hyperanchor + % hyperref puts the anchor 6pt above this baseline; in case of caption + % this baseline will be \ht\strutbox above first baseline of caption + \def\@captype{#1}% + \capstart +% move back vertically, as tabular (or its caption) will compensate + \vskip-\baselineskip\vskip-\parskip +}% +\def\sphinxthecaptionisattop{% locate it after \sphinxcapstartof + \spx@ifcaptionpackage + {\caption@setposition{t}% + \vskip\baselineskip\vskip\parskip % undo those from \sphinxcapstartof + \vskip-\belowcaptionskip % anticipate caption package skip + % caption package uses a \vbox, not a \vtop, so "single line" case + % gives different result from "multi-line" without this: + \nointerlineskip + }% + {}% +}% +\def\sphinxthecaptionisatbottom{% (not finalized; for template usage) + \spx@ifcaptionpackage{\caption@setposition{b}}{}% +}% +% The aim of \sphinxcaption is to apply to tabular(y) the maximal width +% of caption as done by longtable +\def\sphinxtablecapwidth{\LTcapwidth}% +\newcommand\sphinxcaption{\@dblarg\spx@caption}% +\long\def\spx@caption[#1]#2{% + \noindent\hb@xt@\linewidth{\hss + \vtop{\@tempdima\dimexpr\sphinxtablecapwidth\relax +% don't exceed linewidth for the caption width + \ifdim\@tempdima>\linewidth\hsize\linewidth\else\hsize\@tempdima\fi +% longtable ignores \abovecaptionskip/\belowcaptionskip, so do the same here + \abovecaptionskip\sphinxabovecaptionskip % \z@skip + \belowcaptionskip\sphinxbelowcaptionskip % \z@skip + \caption[{#1}]% + {\strut\ignorespaces#2\ifhmode\unskip\@finalstrut\strutbox\fi}% + }\hss}% + \par\prevdepth\dp\strutbox +}% +\def\sphinxabovecaptionskip{\z@skip}% Do not use! Flagged for removal +\def\sphinxbelowcaptionskip{\z@skip}% Do not use! Flagged for removal +% This wrapper of \abovecaptionskip is used in sphinxVerbatim for top +% caption, and with another value in sphinxVerbatimintable +% TODO: To unify space above caption of a code-block with the one above +% caption of a table/longtable, \abovecaptionskip must not be used +% This auxiliary will get renamed and receive a different meaning +% in future. +\def\spx@abovecaptionskip{\abovecaptionskip}% +% Achieve \sphinxbelowcaptionspace below a caption located above a tabular +% or a tabulary +\newcommand\sphinxaftertopcaption +{% + \spx@ifcaptionpackage + {\par\prevdepth\dp\strutbox\nobreak\vskip-\abovecaptionskip}{\nobreak}% + \vskip\dimexpr\sphinxbelowcaptionspace\relax + \vskip-\baselineskip\vskip-\parskip +}% +% varwidth is crucial for our handling of general contents in merged cells +\RequirePackage{varwidth} +% but addition of a compatibility patch with hyperref is needed +% (tested with varwidth v 0.92 Mar 2009) +\AtBeginDocument {% + \let\@@vwid@Hy@raisedlink\Hy@raisedlink + \long\def\@vwid@Hy@raisedlink#1{\@vwid@wrap{\@@vwid@Hy@raisedlink{#1}}}% + \edef\@vwid@setup{% + \let\noexpand\Hy@raisedlink\noexpand\@vwid@Hy@raisedlink % HYPERREF ! + \unexpanded\expandafter{\@vwid@setup}}% +}% +% Homemade package to handle merged cells +\RequirePackage{sphinxmulticell} +\RequirePackage{makeidx} +% For framing code-blocks and warning type notices, and shadowing topics +\RequirePackage{framed} +% The xcolor package draws better fcolorboxes around verbatim code +\IfFileExists{xcolor.sty}{ + \RequirePackage{xcolor} +}{ + \RequirePackage{color} +} +% For highlighted code. +\RequirePackage{fancyvrb} +\define@key{FV}{hllines}{\def\sphinx@verbatim@checkifhl##1{\in@{, ##1,}{#1}}} +% sphinxVerbatim must be usable by third party without requiring hllines set-up +\def\sphinxresetverbatimhllines{\def\sphinx@verbatim@checkifhl##1{\in@false}} +\sphinxresetverbatimhllines +% For hyperlinked footnotes in tables; also for gathering footnotes from +% topic and warning blocks. Also to allow code-blocks in footnotes. +\RequirePackage{footnotehyper-sphinx} +% For the H specifier. Do not \restylefloat{figure}, it breaks Sphinx code +% for allowing figures in tables. +\RequirePackage{float} +% For floating figures in the text. Better to load after float. +\RequirePackage{wrapfig} +% Separate paragraphs by space by default. +\IfFileExists{parskip-2001-04-09.sty}% since September 2018 TeXLive update +% new parskip.sty, but let it rollback to old one. +% hopefully TeX installation not broken and LaTeX kernel not too old + {\RequirePackage{parskip}[=v1]} +% standard one from 1989. Admittedly \section of article/book gives possibly +% anomalous spacing, but we can't require September 2018 release for some time. + {\RequirePackage{parskip}} +% For parsed-literal blocks. +\RequirePackage{alltt} +% Display "real" single quotes in literal blocks. +\RequirePackage{upquote} +% control caption around literal-block +\RequirePackage{capt-of} +\RequirePackage{needspace} +% LaTeX 2018-04-01 and later provides \@removefromreset +\ltx@ifundefined{@removefromreset} + {\RequirePackage{remreset}} + {}% avoid warning +% to make pdf with correct encoded bookmarks in Japanese +% this should precede the hyperref package +\ifx\kanjiskip\@undefined +% for non-Japanese: make sure bookmarks are ok also with lualatex + \PassOptionsToPackage{pdfencoding=unicode}{hyperref} +\else + \RequirePackage{atbegshi} + \ifx\ucs\@undefined + \ifnum 42146=\euc"A4A2 + \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}} + \else + \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}} + \fi + \else + \AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UCS2}} + \fi +\fi + +\ifx\@jsc@uplatextrue\@undefined\else + \PassOptionsToPackage{setpagesize=false}{hyperref} +\fi + +% These options can be overriden inside 'hyperref' key +% or by later use of \hypersetup. +\PassOptionsToPackage{colorlinks,breaklinks,% + linkcolor=InnerLinkColor,filecolor=OuterLinkColor,% + menucolor=OuterLinkColor,urlcolor=OuterLinkColor,% + citecolor=InnerLinkColor}{hyperref} + +% stylesheet for highlighting with pygments +\RequirePackage{sphinxhighlight} +% fix baseline increase from Pygments latex formatter in case of error tokens +% and keep \fboxsep's scope local via added braces +\def\PYG@tok@err{% + \def\PYG@bc##1{{\setlength{\fboxsep}{-\fboxrule}% + \fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}% +} +\def\PYG@tok@cs{% + \def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}% + \def\PYG@bc##1{{\setlength{\fboxsep}{0pt}% + \colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}% +}% + + +%% OPTIONS +% +% Handle options via "kvoptions" (later loaded by hyperref anyhow) +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix + +% Sphinx legacy text layout: 1in margins on all four sides +\ifx\@jsc@uplatextrue\@undefined +\DeclareStringOption[1in]{hmargin} +\DeclareStringOption[1in]{vmargin} +\DeclareStringOption[.5in]{marginpar} +\else +% Japanese standard document classes handle \mag in a special way +\DeclareStringOption[\inv@mag in]{hmargin} +\DeclareStringOption[\inv@mag in]{vmargin} +\DeclareStringOption[.5\dimexpr\inv@mag in\relax]{marginpar} +\fi + +\DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0} +\DeclareStringOption[-1]{numfigreset} +\DeclareBoolOption[false]{nonumfigreset} +\DeclareBoolOption[false]{mathnumfig} +% \DeclareBoolOption[false]{usespart}% not used +% dimensions, we declare the \dimen registers here. +\newdimen\sphinxverbatimsep +\newdimen\sphinxverbatimborder +\newdimen\sphinxshadowsep +\newdimen\sphinxshadowsize +\newdimen\sphinxshadowrule +% \DeclareStringOption is not convenient for the handling of these dimensions +% because we want to assign the values to the corresponding registers. Even if +% we added the code to the key handler it would be too late for the initial +% set-up and we would need to do initial assignments explicitely. We end up +% using \define@key directly. +% verbatim +\sphinxverbatimsep=\fboxsep + \define@key{sphinx}{verbatimsep}{\sphinxverbatimsep\dimexpr #1\relax} +\sphinxverbatimborder=\fboxrule + \define@key{sphinx}{verbatimborder}{\sphinxverbatimborder\dimexpr #1\relax} +% topic boxes +\sphinxshadowsep =5pt + \define@key{sphinx}{shadowsep}{\sphinxshadowsep\dimexpr #1\relax} +\sphinxshadowsize=4pt + \define@key{sphinx}{shadowsize}{\sphinxshadowsize\dimexpr #1\relax} +\sphinxshadowrule=\fboxrule + \define@key{sphinx}{shadowrule}{\sphinxshadowrule\dimexpr #1\relax} +% verbatim +\DeclareBoolOption[true]{verbatimwithframe} +\DeclareBoolOption[true]{verbatimwrapslines} +\DeclareBoolOption[true]{verbatimhintsturnover} +\DeclareBoolOption[true]{inlineliteralwraps} +\DeclareStringOption[t]{literalblockcappos} +\DeclareStringOption[r]{verbatimcontinuedalign} +\DeclareStringOption[r]{verbatimcontinuesalign} +% parsed literal +\DeclareBoolOption[true]{parsedliteralwraps} +% \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX +\DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace} +\DeclareStringOption % must use braces to hide the brackets + [{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]% + {verbatimcontinued} +% notices/admonitions +% the dimensions for notices/admonitions are kept as macros and assigned to +% \spx@notice@border at time of use, hence \DeclareStringOption is ok for this +\newdimen\spx@notice@border +\DeclareStringOption[0.5pt]{noteborder} +\DeclareStringOption[0.5pt]{hintborder} +\DeclareStringOption[0.5pt]{importantborder} +\DeclareStringOption[0.5pt]{tipborder} +\DeclareStringOption[1pt]{warningborder} +\DeclareStringOption[1pt]{cautionborder} +\DeclareStringOption[1pt]{attentionborder} +\DeclareStringOption[1pt]{dangerborder} +\DeclareStringOption[1pt]{errorborder} +% footnotes +\DeclareStringOption[\mbox{ }]{AtStartFootnote} +% we need a public macro name for direct use in latex file +\newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote} +% no such need for this one, as it is used inside other macros +\DeclareStringOption[\leavevmode\unskip]{BeforeFootnote} +% some font styling. +\DeclareStringOption[\sffamily\bfseries]{HeaderFamily} +% colours +% same problems as for dimensions: we want the key handler to use \definecolor. +% first, some colours with no prefix, for backwards compatibility +\newcommand*{\sphinxDeclareColorOption}[2]{% + \definecolor{#1}#2% + \define@key{sphinx}{#1}{\definecolor{#1}##1}% +}% +\sphinxDeclareColorOption{TitleColor}{{rgb}{0.126,0.263,0.361}} +\sphinxDeclareColorOption{InnerLinkColor}{{rgb}{0.208,0.374,0.486}} +\sphinxDeclareColorOption{OuterLinkColor}{{rgb}{0.216,0.439,0.388}} +\sphinxDeclareColorOption{VerbatimColor}{{rgb}{1,1,1}} +\sphinxDeclareColorOption{VerbatimBorderColor}{{rgb}{0,0,0}} +% now the colours defined with "sphinx" prefix in their names +\newcommand*{\sphinxDeclareSphinxColorOption}[2]{% + % set the initial default + \definecolor{sphinx#1}#2% + % set the key handler. The "value" ##1 must be acceptable by \definecolor. + \define@key{sphinx}{#1}{\definecolor{sphinx#1}##1}% +}% +% Default color chosen to be as in minted.sty LaTeX package! +\sphinxDeclareSphinxColorOption{VerbatimHighlightColor}{{rgb}{0.878,1,1}} +% admonition boxes, "light" style +\sphinxDeclareSphinxColorOption{noteBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{hintBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{importantBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{tipBorderColor}{{rgb}{0,0,0}} +% admonition boxes, "heavy" style +\sphinxDeclareSphinxColorOption{warningBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{cautionBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{attentionBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{dangerBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{errorBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{warningBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{cautionBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{attentionBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{dangerBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{errorBgColor}{{rgb}{1,1,1}} + +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessKeyvalOptions* +% don't allow use of maxlistdepth via \sphinxsetup. +\DisableKeyvalOption{sphinx}{maxlistdepth} +\DisableKeyvalOption{sphinx}{numfigreset} +\DisableKeyvalOption{sphinx}{nonumfigreset} +\DisableKeyvalOption{sphinx}{mathnumfig} +% user interface: options can be changed midway in a document! +\newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}} + + +%% MAXLISTDEPTH +% +% remove LaTeX's cap on nesting depth if 'maxlistdepth' key used. +% This is a hack, which works with the standard classes: it assumes \@toodeep +% is always used in "true" branches: "\if ... \@toodeep \else .. \fi." + +% will force use the "false" branch (if there is one) +\def\spx@toodeep@hack{\fi\iffalse} + +% do nothing if 'maxlistdepth' key not used or if package enumitem loaded. +\ifnum\spx@opt@maxlistdepth=\z@\expandafter\@gobbletwo\fi +\AtBeginDocument{% +\@ifpackageloaded{enumitem}{\remove@to@nnil}{}% + \let\spx@toodeepORI\@toodeep + \def\@toodeep{% + \ifnum\@listdepth<\spx@opt@maxlistdepth\relax + \expandafter\spx@toodeep@hack + \else + \expandafter\spx@toodeepORI + \fi}% +% define all missing \@list... macros + \count@\@ne + \loop + \ltx@ifundefined{@list\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \expandafter\let + \csname @list\romannumeral\the\count@\expandafter\endcsname + \csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname + % workaround 2.6--3.2d babel-french issue (fixed in 3.2e; no change needed) + \ltx@ifundefined{leftmargin\romannumeral\the\count@} + {\expandafter\let + \csname leftmargin\romannumeral\the\count@\expandafter\endcsname + \csname leftmargin\romannumeral\the\numexpr\count@-\@ne\endcsname}{}% + \advance\count@\@ne + \repeat +% define all missing enum... counters and \labelenum... macros and \p@enum.. + \count@\@ne + \loop + \ltx@ifundefined{c@enum\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \newcounter{enum\romannumeral\the\count@}% + \expandafter\def + \csname labelenum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname theenum\romannumeral\the\numexpr\count@\endcsname.}% + \expandafter\def + \csname p@enum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname p@enum\romannumeral\the\numexpr\count@-\@ne\expandafter + \endcsname\csname theenum\romannumeral\the\numexpr\count@-\@ne\endcsname.}% + \advance\count@\@ne + \repeat +% define all missing labelitem... macros + \count@\@ne + \loop + \ltx@ifundefined{labelitem\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \expandafter\let + \csname labelitem\romannumeral\the\count@\expandafter\endcsname + \csname labelitem\romannumeral\the\numexpr\count@-\@ne\endcsname + \advance\count@\@ne + \repeat + \PackageInfo{sphinx}{maximal list depth extended to \spx@opt@maxlistdepth}% +\@gobble\@nnil +} + + +%% INDEX, BIBLIOGRAPHY, APPENDIX, TABLE OF CONTENTS +% +% fix the double index and bibliography on the table of contents +% in jsclasses (Japanese standard document classes) +\ifx\@jsc@uplatextrue\@undefined\else + \renewenvironment{sphinxtheindex} + {\cleardoublepage\phantomsection + \begin{theindex}} + {\end{theindex}} + + \renewenvironment{sphinxthebibliography}[1] + {\cleardoublepage% \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}} + {\end{thebibliography}} +\fi + +% disable \@chappos in Appendix in pTeX +\ifx\kanjiskip\@undefined\else + \let\py@OldAppendix=\appendix + \renewcommand{\appendix}{ + \py@OldAppendix + \gdef\@chappos{} + } +\fi + +% make commands known to non-Sphinx document classes +\providecommand*{\sphinxtableofcontents}{\tableofcontents} +\ltx@ifundefined{sphinxthebibliography} + {\newenvironment + {sphinxthebibliography}{\begin{thebibliography}}{\end{thebibliography}}% + } + {}% else clause of \ltx@ifundefined +\ltx@ifundefined{sphinxtheindex} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}% + {}% else clause of \ltx@ifundefined + +% for usage with xindy: this string gets internationalized in preamble +\newcommand*{\sphinxnonalphabeticalgroupname}{} +% redefined in preamble, headings for makeindex produced index +\newcommand*{\sphinxsymbolsname}{} +\newcommand*{\sphinxnumbersname}{} + +%% COLOR (general) +% +% FIXME: \normalcolor should probably be used in place of \py@NormalColor +% elsewhere, and \py@NormalColor should never be defined. \normalcolor +% switches to the colour from last \color call in preamble. +\def\py@NormalColor{\color{black}} +% FIXME: it is probably better to use \color{TitleColor}, as TitleColor +% can be customized from 'sphinxsetup', and drop usage of \py@TitleColor +\def\py@TitleColor{\color{TitleColor}} +% FIXME: this line should be dropped, as "9" is default anyhow. +\ifdefined\pdfcompresslevel\pdfcompresslevel = 9 \fi + + +%% PAGE STYLING +% +% Style parameters and macros used by most documents here +\raggedbottom +\sloppy +\hbadness = 5000 % don't print trivial gripes + +% Use \pagestyle{normal} as the primary pagestyle for text. +% Redefine the 'normal' header/footer style when using "fancyhdr" package: +\@ifpackageloaded{fancyhdr}{% + \ltx@ifundefined{c@chapter} + {% no \chapter, "howto" (non-Japanese) docclass + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[C]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + % Same as 'plain', this way we can use it in template + % FIXME: shouldn't this have a running header with Name and Release like 'manual'? + \fancypagestyle{normal}{ + \fancyhf{} + \fancyfoot[C]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + }% + {% classes with \chapter command + \fancypagestyle{normal}{ + \fancyhf{} + % FIXME: this presupposes "twoside". + % If "oneside" class option, there are warnings in LaTeX log. + \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} + \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} + \fancyhead[LE,RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \renewcommand{\headrulewidth}{0.4pt} + \renewcommand{\footrulewidth}{0.4pt} + % define chaptermark with \@chappos when \@chappos is available for Japanese + \ltx@ifundefined{@chappos}{} + {\def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}}} + } + % Update the plain style so we get the page number & footer line, + % but not a chapter or section title. This is to keep the first + % page of a chapter `clean.' + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0.4pt} + } + } + } + {% no fancyhdr: memoir class + % Provide default for 'normal' style simply as an alias of 'plain' style + % This way we can use \pagestyle{normal} in LaTeX template + \def\ps@normal{\ps@plain} + % Users of memoir class are invited to redefine 'normal' style in preamble + } + +% geometry +\ifx\kanjiskip\@undefined + \PassOptionsToPackage{% + hmargin={\unexpanded{\spx@opt@hmargin}},% + vmargin={\unexpanded{\spx@opt@vmargin}},% + marginpar=\unexpanded{\spx@opt@marginpar}} + {geometry} +\else + % set text width for Japanese documents to be integer multiple of 1zw + % and text height to be integer multiple of \baselineskip + % the execution is delayed to \sphinxsetup then geometry.sty + \normalsize\normalfont + \newcommand*\sphinxtextwidthja[1]{% + \if@twocolumn\tw@\fi + \dimexpr + \numexpr\dimexpr\paperwidth-\tw@\dimexpr#1\relax\relax/ + \dimexpr\if@twocolumn\tw@\else\@ne\fi zw\relax + zw\relax}% + \newcommand*\sphinxmarginparwidthja[1]{% + \dimexpr\numexpr\dimexpr#1\relax/\dimexpr1zw\relax zw\relax}% + \newcommand*\sphinxtextlinesja[1]{% + \numexpr\@ne+\dimexpr\paperheight-\topskip-\tw@\dimexpr#1\relax\relax/ + \baselineskip\relax}% + \ifx\@jsc@uplatextrue\@undefined\else + % the way we found in order for the papersize special written by + % geometry in the dvi file to be correct in case of jsbook class + \ifnum\mag=\@m\else % do nothing special if nomag class option or 10pt + \PassOptionsToPackage{truedimen}{geometry}% + \fi + \fi + \PassOptionsToPackage{% + hmarginratio={1:1},% + textwidth=\unexpanded{\sphinxtextwidthja{\spx@opt@hmargin}},% + vmarginratio={1:1},% + lines=\unexpanded{\sphinxtextlinesja{\spx@opt@vmargin}},% + marginpar=\unexpanded{\sphinxmarginparwidthja{\spx@opt@marginpar}},% + footskip=2\baselineskip,% + }{geometry}% + \AtBeginDocument + {% update a dimension used by the jsclasses + \ifx\@jsc@uplatextrue\@undefined\else\fullwidth\textwidth\fi + % for some reason, jreport normalizes all dimensions with \@settopoint + \@ifclassloaded{jreport} + {\@settopoint\textwidth\@settopoint\textheight\@settopoint\marginparwidth} + {}% <-- "false" clause of \@ifclassloaded + }% +\fi + +% fix fncychap's bug which uses prematurely the \textwidth value +\@ifpackagewith{fncychap}{Bjornstrup} + {\AtBeginDocument{\mylen\textwidth\advance\mylen-2\myhi}}% + {}% <-- "false" clause of \@ifpackagewith + + +%% TITLES +% +% Since Sphinx 1.5, users should use HeaderFamily key to 'sphinxsetup' rather +% than defining their own \py@HeaderFamily command (which is still possible). +% Memo: \py@HeaderFamily is also used by \maketitle as defined in +% sphinxmanual.cls/sphinxhowto.cls +\newcommand{\py@HeaderFamily}{\spx@opt@HeaderFamily} + +% This sets up the fancy chapter headings that make the documents look +% at least a little better than the usual LaTeX output. +\@ifpackagewith{fncychap}{Bjarne}{ + \ChNameVar {\raggedleft\normalsize \py@HeaderFamily} + \ChNumVar {\raggedleft\Large \py@HeaderFamily} + \ChTitleVar{\raggedleft\Large \py@HeaderFamily} + % This creates (numbered) chapter heads without the leading \vspace*{}: + \def\@makechapterhead#1{% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \DOCH + \fi + \fi + \interlinepenalty\@M + \if@mainmatter + \DOTI{#1}% + \else% + \DOTIS{#1}% + \fi + }} +}{}% <-- "false" clause of \@ifpackagewith + +% Augment the sectioning commands used to get our own font family in place, +% and reset some internal data items (\titleformat from titlesec package) +\titleformat{\section}{\Large\py@HeaderFamily}% + {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subsection}{\large\py@HeaderFamily}% + {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subsubsection}{\py@HeaderFamily}% + {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} +% By default paragraphs (and subsubsections) will not be numbered because +% sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2 +\titleformat{\paragraph}{\py@HeaderFamily}% + {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subparagraph}{\py@HeaderFamily}% + {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} + + +%% GRAPHICS +% +% \sphinxincludegraphics defined to resize images larger than the line width, +% except if height or width option present. +% +% If scale is present, rescale before fitting to line width. (since 1.5) +\newbox\spx@image@box +\newcommand*{\sphinxincludegraphics}[2][]{% + \in@{height}{#1}\ifin@\else\in@{width}{#1}\fi + \ifin@ % height or width present + \includegraphics[#1]{#2}% + \else % no height nor width (but #1 may be "scale=...") + \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% + \ifdim \wd\spx@image@box>\linewidth + \setbox\spx@image@box\box\voidb@x % clear memory + \includegraphics[#1,width=\linewidth]{#2}% + \else + \setbox\spx@image@box\box\voidb@x % clear memory + \includegraphics[#1]{#2}% + \fi + \fi +} +% \sphinxsafeincludegraphics resizes images larger than the line width, +% or taller than about the text height (whether or not height/width options +% were used). This is requested to avoid a crash with \MakeFramed as used by +% sphinxShadowBox (topic/contents) and sphinxheavybox (admonitions), and also +% by sphinxVerbatim (but a priori no image inclusion there). +\newdimen\spx@image@maxheight +% default maximal setting will get reduced by sphinxShadowBox/sphinxheavybox +\AtBeginDocument{\spx@image@maxheight\textheight} +\newcommand*{\sphinxsafeincludegraphics}[2][]{% + \gdef\spx@includegraphics@options{#1}% + \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% + \in@false + \ifdim \wd\spx@image@box>\linewidth + \g@addto@macro\spx@includegraphics@options{,width=\linewidth}% + \in@true + \fi + % no rotation, no need to worry about depth + \ifdim \ht\spx@image@box>\spx@image@maxheight + \g@addto@macro\spx@includegraphics@options{,height=\spx@image@maxheight}% + \in@true + \fi + \ifin@ + \g@addto@macro\spx@includegraphics@options{,keepaspectratio}% + \fi + \setbox\spx@image@box\box\voidb@x % clear memory + \expandafter\includegraphics\expandafter[\spx@includegraphics@options]{#2}% +}% + + +%% FIGURE IN TABLE +% +\newenvironment{sphinxfigure-in-table}[1][\linewidth]{% + \def\@captype{figure}% + \sphinxsetvskipsforfigintablecaption + \begin{minipage}{#1}% +}{\end{minipage}} +% store the original \caption macro for usage with figures inside longtable +% and tabulary cells. Make sure we get the final \caption in presence of +% caption package, whether the latter was loaded before or after sphinx. +\AtBeginDocument{% + \let\spx@originalcaption\caption + \@ifpackageloaded{caption} + {\let\spx@ifcaptionpackage\@firstoftwo + \caption@AtBeginDocument*{\let\spx@originalcaption\caption}% +% in presence of caption package, drop our own \sphinxcaption whose aim was to +% ensure same width of caption to all kinds of tables (tabular(y), longtable), +% because caption package has its own width (or margin) option + \def\sphinxcaption{\caption}% + }% + {\let\spx@ifcaptionpackage\@secondoftwo}% +} +% tabulary expands twice contents, we need to prevent double counter stepping +\newcommand*\sphinxfigcaption + {\ifx\equation$%$% this is trick to identify tabulary first pass + \firstchoice@false\else\firstchoice@true\fi + \spx@originalcaption } +\newcommand*\sphinxsetvskipsforfigintablecaption + {\abovecaptionskip\smallskipamount + \belowcaptionskip\smallskipamount} + + +%% CITATIONS +% +\protected\def\sphinxcite{\cite} + +%% FOOTNOTES +% +% Support large numbered footnotes in minipage +% But now obsolete due to systematic use of \savenotes/\spewnotes +% when minipages are in use in the various macro definitions next. +\def\thempfootnote{\arabic{mpfootnote}} + + +%% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS +\ltx@ifundefined{c@chapter} + {\newcounter{literalblock}}% + {\newcounter{literalblock}[chapter]% + \def\theliteralblock{\ifnum\c@chapter>\z@\arabic{chapter}.\fi + \arabic{literalblock}}% + }% +\ifspx@opt@nonumfigreset + \ltx@ifundefined{c@chapter}{}{% + \@removefromreset{figure}{chapter}% + \@removefromreset{table}{chapter}% + \@removefromreset{literalblock}{chapter}% + \ifspx@opt@mathnumfig + \@removefromreset{equation}{chapter}% + \fi + }% + \def\thefigure{\arabic{figure}}% + \def\thetable {\arabic{table}}% + \def\theliteralblock{\arabic{literalblock}}% + \ifspx@opt@mathnumfig + \def\theequation{\arabic{equation}}% + \fi +\else +\let\spx@preAthefigure\@empty +\let\spx@preBthefigure\@empty +% \ifspx@opt@usespart % <-- LaTeX writer could pass such a 'usespart' boolean +% % as sphinx.sty package option +% If document uses \part, (triggered in Sphinx by latex_toplevel_sectioning) +% LaTeX core per default does not reset chapter or section +% counters at each part. +% But if we modify this, we need to redefine \thechapter, \thesection to +% include the part number and this will cause problems in table of contents +% because of too wide numbering. Simplest is to do nothing. +% \fi +\ifnum\spx@opt@numfigreset>0 + \ltx@ifundefined{c@chapter} + {} + {\g@addto@macro\spx@preAthefigure{\ifnum\c@chapter>\z@\arabic{chapter}.}% + \g@addto@macro\spx@preBthefigure{\fi}}% +\fi +\ifnum\spx@opt@numfigreset>1 + \@addtoreset{figure}{section}% + \@addtoreset{table}{section}% + \@addtoreset{literalblock}{section}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{section}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@section>\z@\arabic{section}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>2 + \@addtoreset{figure}{subsection}% + \@addtoreset{table}{subsection}% + \@addtoreset{literalblock}{subsection}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subsection}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsection>\z@\arabic{subsection}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>3 + \@addtoreset{figure}{subsubsection}% + \@addtoreset{table}{subsubsection}% + \@addtoreset{literalblock}{subsubsection}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subsubsection}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubsection>\z@\arabic{subsubsection}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>4 + \@addtoreset{figure}{paragraph}% + \@addtoreset{table}{paragraph}% + \@addtoreset{literalblock}{paragraph}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{paragraph}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@subparagraph>\z@\arabic{subparagraph}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>5 + \@addtoreset{figure}{subparagraph}% + \@addtoreset{table}{subparagraph}% + \@addtoreset{literalblock}{subparagraph}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subparagraph}% + \fi + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubparagraph>\z@\arabic{subsubparagraph}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\expandafter\g@addto@macro +\expandafter\spx@preAthefigure\expandafter{\spx@preBthefigure}% +\let\thefigure\spx@preAthefigure +\let\thetable\spx@preAthefigure +\let\theliteralblock\spx@preAthefigure +\g@addto@macro\thefigure{\arabic{figure}}% +\g@addto@macro\thetable{\arabic{table}}% +\g@addto@macro\theliteralblock{\arabic{literalblock}}% + \ifspx@opt@mathnumfig + \let\theequation\spx@preAthefigure + \g@addto@macro\theequation{\arabic{equation}}% + \fi +\fi + + +%% LITERAL BLOCKS +% +% Based on use of "fancyvrb.sty"'s Verbatim. +% - with framing allowing page breaks ("framed.sty") +% - with breaking of long lines (exploits Pygments mark-up), +% - with possibly of a top caption, non-separable by pagebreak. +% - and usable inside tables or footnotes ("footnotehyper-sphinx"). + +% For extensions which use \OriginalVerbatim and compatibility with Sphinx < +% 1.5, we define and use these when (unmodified) Verbatim will be needed. But +% Sphinx >= 1.5 does not modify the \Verbatim macro anymore. +\let\OriginalVerbatim \Verbatim +\let\endOriginalVerbatim\endVerbatim + +% for captions of literal blocks +% at start of caption title +\newcommand*{\fnum@literalblock}{\literalblockname\nobreakspace\theliteralblock} +% this will be overwritten in document preamble by Babel translation +\newcommand*{\literalblockname}{Listing } +% file extension needed for \caption's good functioning, the file is created +% only if a \listof{literalblock}{foo} command is encountered, which is +% analogous to \listoffigures, but for the code listings (foo = chosen title.) +\newcommand*{\ext@literalblock}{lol} + +\newif\ifspx@inframed % flag set if we are already in a framed environment +% if forced use of minipage encapsulation is needed (e.g. table cells) +\newif\ifsphinxverbatimwithminipage \sphinxverbatimwithminipagefalse + +% Framing macro for use with framed.sty's \FrameCommand +% - it obeys current indentation, +% - frame is \fboxsep separated from the contents, +% - the contents use the full available text width, +% - #1 = color of frame, #2 = color of background, +% - #3 = above frame, #4 = below frame, #5 = within frame, +% - #3 and #4 must be already typeset boxes; they must issue \normalcolor +% or similar, else, they are under scope of color #1 +\long\def\spx@fcolorbox #1#2#3#4#5{% + \hskip\@totalleftmargin + \hskip-\fboxsep\hskip-\fboxrule + % use of \color@b@x here is compatible with both xcolor.sty and color.sty + \color@b@x {\color{#1}\spx@CustomFBox{#3}{#4}}{\color{#2}}{#5}% + \hskip-\fboxsep\hskip-\fboxrule + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth +}% +% #1 = for material above frame, such as a caption or a "continued" hint +% #2 = for material below frame, such as a caption or "continues on next page" +% #3 = actual contents, which will be typeset with a background color +\long\def\spx@CustomFBox#1#2#3{% + \begingroup + \setbox\@tempboxa\hbox{{#3}}% inner braces to avoid color leaks + \vbox{#1% above frame + % draw frame border _latest_ to avoid pdf viewer issue + \kern\fboxrule + \hbox{\kern\fboxrule + \copy\@tempboxa + \kern-\wd\@tempboxa\kern-\fboxrule + \vrule\@width\fboxrule + \kern\wd\@tempboxa + \vrule\@width\fboxrule}% + \kern-\dimexpr\ht\@tempboxa+\dp\@tempboxa+\fboxrule\relax + \hrule\@height\fboxrule + \kern\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax + \hrule\@height\fboxrule + #2% below frame + }% + \endgroup +}% +\def\spx@fcolorbox@put@c#1{% hide width from framed.sty measuring + \moveright\dimexpr\fboxrule+.5\wd\@tempboxa\hb@xt@\z@{\hss#1\hss}% +}% +\def\spx@fcolorbox@put@r#1{% right align with contents, width hidden + \moveright\dimexpr\fboxrule+\wd\@tempboxa-\fboxsep\hb@xt@\z@{\hss#1}% +}% +\def\spx@fcolorbox@put@l#1{% left align with contents, width hidden + \moveright\dimexpr\fboxrule+\fboxsep\hb@xt@\z@{#1\hss}% +}% +% +\def\sphinxVerbatim@Continued + {\csname spx@fcolorbox@put@\spx@opt@verbatimcontinuedalign\endcsname + {\normalcolor\sphinxstylecodecontinued\literalblockcontinuedname}}% +\def\sphinxVerbatim@Continues + {\csname spx@fcolorbox@put@\spx@opt@verbatimcontinuesalign\endcsname + {\normalcolor\sphinxstylecodecontinues\literalblockcontinuesname}}% +\def\sphinxVerbatim@Title + {\spx@fcolorbox@put@c{\unhcopy\sphinxVerbatim@TitleBox}}% +\let\sphinxVerbatim@Before\@empty +\let\sphinxVerbatim@After\@empty +% Defaults are redefined in document preamble according to language +\newcommand*\literalblockcontinuedname{continued from previous page}% +\newcommand*\literalblockcontinuesname{continues on next page}% +% +\def\spx@verbatimfcolorbox{\spx@fcolorbox{VerbatimBorderColor}{VerbatimColor}}% +\def\sphinxVerbatim@FrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Before\sphinxVerbatim@After}% +\def\sphinxVerbatim@FirstFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Before\sphinxVerbatim@Continues}% +\def\sphinxVerbatim@MidFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Continued\sphinxVerbatim@Continues}% +\def\sphinxVerbatim@LastFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Continued\sphinxVerbatim@After}% + +% For linebreaks inside Verbatim environment from package fancyvrb. +\newbox\sphinxcontinuationbox +\newbox\sphinxvisiblespacebox +\newcommand*\sphinxafterbreak {\copy\sphinxcontinuationbox} + +% Take advantage of the already applied Pygments mark-up to insert +% potential linebreaks for TeX processing. +% {, <, #, %, $, ' and ": go to next line. +% _, }, ^, &, >, - and ~: stay at end of broken line. +% Use of \textquotesingle for straight quote. +% FIXME: convert this to package options ? +\newcommand*\sphinxbreaksbeforelist {% + \do\PYGZob\{\do\PYGZlt\<\do\PYGZsh\#\do\PYGZpc\%% {, <, #, %, + \do\PYGZdl\$\do\PYGZdq\"% $, " + \def\PYGZsq + {\discretionary{}{\sphinxafterbreak\textquotesingle}{\textquotesingle}}% ' +} +\newcommand*\sphinxbreaksafterlist {% + \do\PYGZus\_\do\PYGZcb\}\do\PYGZca\^\do\PYGZam\&% _, }, ^, &, + \do\PYGZgt\>\do\PYGZhy\-\do\PYGZti\~% >, -, ~ +} +\newcommand*\sphinxbreaksatspecials {% + \def\do##1##2% + {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}% + \sphinxbreaksbeforelist + \def\do##1##2% + {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% + \sphinxbreaksafterlist +} + +\def\sphinx@verbatim@nolig@list {\do \`}% +% Some characters . , ; ? ! / are not pygmentized. +% This macro makes them "active" and they will insert potential linebreaks. +% Not compatible with math mode (cf \sphinxunactivateextras). +\newcommand*\sphinxbreaksbeforeactivelist {}% none +\newcommand*\sphinxbreaksafteractivelist {\do\.\do\,\do\;\do\?\do\!\do\/} +\newcommand*\sphinxbreaksviaactive {% + \def\do##1{\lccode`\~`##1% + \lowercase{\def~}{\discretionary{}{\sphinxafterbreak\char`##1}{\char`##1}}% + \catcode`##1\active}% + \sphinxbreaksbeforeactivelist + \def\do##1{\lccode`\~`##1% + \lowercase{\def~}{\discretionary{\char`##1}{\sphinxafterbreak}{\char`##1}}% + \catcode`##1\active}% + \sphinxbreaksafteractivelist + \lccode`\~`\~ +} + +% If the linebreak is at a space, the latter will be displayed as visible +% space at end of first line, and a continuation symbol starts next line. +\def\spx@verbatim@space {% + \nobreak\hskip\z@skip + \discretionary{\copy\sphinxvisiblespacebox}{\sphinxafterbreak} + {\kern\fontdimen2\font}% +}% + +% if the available space on page is less than \literalblockneedspace, insert pagebreak +\newcommand{\sphinxliteralblockneedspace}{5\baselineskip} +\newcommand{\sphinxliteralblockwithoutcaptionneedspace}{1.5\baselineskip} +% The title (caption) is specified from outside as macro \sphinxVerbatimTitle. +% \sphinxVerbatimTitle is reset to empty after each use of Verbatim. +\newcommand*\sphinxVerbatimTitle {} +% This box to typeset the caption before framed.sty multiple passes for framing. +\newbox\sphinxVerbatim@TitleBox +% This is a workaround to a "feature" of French lists, when literal block +% follows immediately; usable generally (does only \par then), a priori... +\newcommand*\sphinxvspacefixafterfrenchlists{% + \ifvmode\ifdim\lastskip<\z@ \vskip\parskip\fi\else\par\fi +} +% Holder macro for labels of literal blocks. Set-up by LaTeX writer. +\newcommand*\sphinxLiteralBlockLabel {} +\newcommand*\sphinxSetupCaptionForVerbatim [1] +{% + \sphinxvspacefixafterfrenchlists + \needspace{\sphinxliteralblockneedspace}% +% insert a \label via \sphinxLiteralBlockLabel +% reset to normal the color for the literal block caption + \def\sphinxVerbatimTitle + {\py@NormalColor\sphinxcaption{\sphinxLiteralBlockLabel #1}}% +} +\newcommand*\sphinxSetupCodeBlockInFootnote {% + \fvset{fontsize=\footnotesize}\let\caption\sphinxfigcaption + \sphinxverbatimwithminipagetrue % reduces vertical spaces + % we counteract (this is in a group) the \@normalsize from \caption + \let\normalsize\footnotesize\let\@parboxrestore\relax + \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}% +} +% needed to create wrapper environments of fancyvrb's Verbatim +\newcommand*{\sphinxVerbatimEnvironment}{\gdef\FV@EnvironName{sphinxVerbatim}} +\newcommand*{\sphinxverbatimsmallskipamount}{\smallskipamount} +% serves to implement line highlighting and line wrapping +\newcommand\sphinxFancyVerbFormatLine[1]{% + \expandafter\sphinx@verbatim@checkifhl\expandafter{\the\FV@CodeLineNo}% + \ifin@ + \sphinxVerbatimHighlightLine{#1}% + \else + \sphinxVerbatimFormatLine{#1}% + \fi +}% +\newcommand\sphinxVerbatimHighlightLine[1]{% + \edef\sphinxrestorefboxsep{\fboxsep\the\fboxsep\relax}% + \fboxsep0pt\relax % cf LaTeX bug graphics/4524 + \colorbox{sphinxVerbatimHighlightColor}% + {\sphinxrestorefboxsep\sphinxVerbatimFormatLine{#1}}% + % no need to restore \fboxsep here, as this ends up in a \hbox from fancyvrb +}% +% \sphinxVerbatimFormatLine will be set locally to one of those two: +\newcommand\sphinxVerbatimFormatLineWrap[1]{% + \hsize\linewidth + \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ + \doublehyphendemerits\z@\finalhyphendemerits\z@ + \strut #1\strut}% +}% +\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}% +\g@addto@macro\FV@SetupFont{% + \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% +}% +\newenvironment{sphinxVerbatim}{% + % first, let's check if there is a caption + \ifx\sphinxVerbatimTitle\empty + \sphinxvspacefixafterfrenchlists + \parskip\z@skip + \vskip\sphinxverbatimsmallskipamount + % there was no caption. Check if nevertheless a label was set. + \ifx\sphinxLiteralBlockLabel\empty\else + % we require some space to be sure hyperlink target from \phantomsection + % will not be separated from upcoming verbatim by a page break + \needspace{\sphinxliteralblockwithoutcaptionneedspace}% + \phantomsection\sphinxLiteralBlockLabel + \fi + \else + \parskip\z@skip + \if t\spx@opt@literalblockcappos + \vskip\spx@abovecaptionskip + \def\sphinxVerbatim@Before + {\sphinxVerbatim@Title\nointerlineskip + \kern\dimexpr-\dp\strutbox+\sphinxbelowcaptionspace + % if no frame (code-blocks inside table cells), remove + % the "verbatimsep" whitespace from the top (better visually) + \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi + % caption package adds \abovecaptionskip vspace, remove it + \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax}% + \else + \vskip\sphinxverbatimsmallskipamount + \def\sphinxVerbatim@After + {\nointerlineskip\kern\dimexpr\dp\strutbox + \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi + \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax + \sphinxVerbatim@Title}% + \fi + \def\@captype{literalblock}% + \capstart + % \sphinxVerbatimTitle must reset color + \setbox\sphinxVerbatim@TitleBox + \hbox{\begin{minipage}{\linewidth}% + % caption package may detect wrongly if top or bottom, so we help it + \spx@ifcaptionpackage + {\caption@setposition{\spx@opt@literalblockcappos}}{}% + \sphinxVerbatimTitle + \end{minipage}}% + \fi + \global\let\sphinxLiteralBlockLabel\empty + \global\let\sphinxVerbatimTitle\empty + \fboxsep\sphinxverbatimsep \fboxrule\sphinxverbatimborder + \ifspx@opt@verbatimwithframe\else\fboxrule\z@\fi + \let\FrameCommand \sphinxVerbatim@FrameCommand + \let\FirstFrameCommand\sphinxVerbatim@FirstFrameCommand + \let\MidFrameCommand \sphinxVerbatim@MidFrameCommand + \let\LastFrameCommand \sphinxVerbatim@LastFrameCommand + \ifspx@opt@verbatimhintsturnover\else + \let\sphinxVerbatim@Continued\@empty + \let\sphinxVerbatim@Continues\@empty + \fi + \ifspx@opt@verbatimwrapslines + % fancyvrb's Verbatim puts each input line in (unbreakable) horizontal boxes. + % This customization wraps each line from the input in a \vtop, thus + % allowing it to wrap and display on two or more lines in the latex output. + % - The codeline counter will be increased only once. + % - The wrapped material will not break across pages, it is impossible + % to achieve this without extensive rewrite of fancyvrb. + % - The (not used in sphinx) obeytabs option to Verbatim is + % broken by this change (showtabs and tabspace work). + \let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineWrap + \let\FV@Space\spx@verbatim@space + % Allow breaks at special characters using \PYG... macros. + \sphinxbreaksatspecials + % Breaks at punctuation characters . , ; ? ! and / (needs catcode activation) + \fvset{codes*=\sphinxbreaksviaactive}% + \else % end of conditional code for wrapping long code lines + \let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineNoWrap + \fi + \let\FancyVerbFormatLine\sphinxFancyVerbFormatLine + % workaround to fancyvrb's check of \@currenvir + \let\VerbatimEnvironment\sphinxVerbatimEnvironment + % workaround to fancyvrb's check of current list depth + \def\@toodeep {\advance\@listdepth\@ne}% + % The list environment is needed to control perfectly the vertical space. + % Note: \OuterFrameSep used by framed.sty is later set to \topsep hence 0pt. + % - if caption: distance from last text baseline to caption baseline is + % A+(B-F)+\ht\strutbox, A = \abovecaptionskip (default 10pt), B = + % \baselineskip, F is the framed.sty \FrameHeightAdjust macro, default 6pt. + % Formula valid for F < 10pt. + % - distance of baseline of caption to top of frame is like for tables: + % \sphinxbelowcaptionspace (=0.5\baselineskip) + % - if no caption: distance of last text baseline to code frame is S+(B-F), + % with S = \sphinxverbatimtopskip (=\smallskip) + % - and distance from bottom of frame to next text baseline is + % \baselineskip+\parskip. + % The \trivlist is used to avoid possible "too deeply nested" error. + \itemsep \z@skip + \topsep \z@skip + \partopsep \z@skip + % trivlist will set \parsep to \parskip = zero + % \leftmargin will be set to zero by trivlist + \rightmargin\z@ + \parindent \z@% becomes \itemindent. Default zero, but perhaps overwritten. + \trivlist\item\relax + \ifsphinxverbatimwithminipage\spx@inframedtrue\fi + % use a minipage if we are already inside a framed environment + \ifspx@inframed\noindent\begin{minipage}{\linewidth}\fi + \MakeFramed {% adapted over from framed.sty's snugshade environment + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + % For grid placement from \strut's in \FancyVerbFormatLine + \lineskip\z@skip + % active comma should not be overwritten by \@noligs + \ifspx@opt@verbatimwrapslines + \let\verbatim@nolig@list \sphinx@verbatim@nolig@list + \fi + % will fetch its optional arguments if any + \OriginalVerbatim +} +{% + \endOriginalVerbatim + \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade + \ifspx@inframed\end{minipage}\fi + \endtrivlist +} +\newenvironment {sphinxVerbatimNoFrame} + {\spx@opt@verbatimwithframefalse + % needed for fancyvrb as literal code will end in \end{sphinxVerbatimNoFrame} + \def\sphinxVerbatimEnvironment{\gdef\FV@EnvironName{sphinxVerbatimNoFrame}}% + \begin{sphinxVerbatim}} + {\end{sphinxVerbatim}} +\newenvironment {sphinxVerbatimintable} + {% don't use a frame if in a table cell + \spx@opt@verbatimwithframefalse + \sphinxverbatimwithminipagetrue + % the literal block caption uses \sphinxcaption which is wrapper of \caption, + % but \caption must be modified because longtable redefines it to work only + % for the own table caption, and tabulary has multiple passes + \let\caption\sphinxfigcaption + % reduce above caption skip + \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}% + \def\sphinxVerbatimEnvironment{\gdef\FV@EnvironName{sphinxVerbatimintable}}% + \begin{sphinxVerbatim}} + {\end{sphinxVerbatim}} + + +%% PARSED LITERALS +% allow long lines to wrap like they do in code-blocks + +% this should be kept in sync with definitions in sphinx.util.texescape +\newcommand*\sphinxbreaksattexescapedchars{% + \def\do##1##2% put potential break point before character + {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}% + \do\{\{\do\textless\<\do\#\#\do\%\%\do\$\$% {, <, #, %, $ + \def\do##1##2% put potential break point after character + {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% + \do\_\_\do\}\}\do\textasciicircum\^\do\&\&% _, }, ^, &, + \do\textgreater\>\do\textasciitilde\~% >, ~ +} +\newcommand*\sphinxbreaksviaactiveinparsedliteral{% + \sphinxbreaksviaactive % by default handles . , ; ? ! / + \do\-% we need also the hyphen character (ends up "as is" in parsed-literal) + \lccode`\~`\~ % + % update \dospecials as it is used by \url + % but deactivation will already have been done hence this is unneeded: + % \expandafter\def\expandafter\dospecials\expandafter{\dospecials + % \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist\do\-}% +} +\newcommand*\sphinxbreaksatspaceinparsedliteral{% + \lccode`~32 \lowercase{\let~}\spx@verbatim@space\lccode`\~`\~ +} +\newcommand*{\sphinxunactivateextras}{\let\do\@makeother + \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist\do\-}% +% the \catcode13=5\relax (deactivate end of input lines) is left to callers +\newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax + \sphinxunactivateextras}% +% now for the modified alltt environment +\newenvironment{sphinxalltt} +{% at start of next line to workaround Emacs/AUCTeX issue with this file +\begin{alltt}% + \ifspx@opt@parsedliteralwraps + \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% + \sphinxbreaksattexescapedchars + \sphinxbreaksviaactiveinparsedliteral + \sphinxbreaksatspaceinparsedliteral +% alltt takes care of the ' as derivative ("prime") in math mode + \everymath\expandafter{\the\everymath\sphinxunactivateextrasandspace + \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }% +% not sure if displayed math (align,...) can end up in parsed-literal, anyway + \everydisplay\expandafter{\the\everydisplay + \catcode13=5 \sphinxunactivateextrasandspace + \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }% + \fi } +{\end{alltt}} + +% Protect \href's first argument in contexts such as sphinxalltt (or +% \sphinxcode). Sphinx uses \#, \%, \& ... always inside \sphinxhref. +\protected\def\sphinxhref#1#2{{% + \sphinxunactivateextrasandspace % never do \scantokens with active space! + \endlinechar\m@ne\everyeof{{#2}}% keep catcode regime for #2 + \scantokens{\href{#1}}% normalise it for #1 during \href expansion +}} +% Same for \url. And also \nolinkurl for coherence. +\protected\def\sphinxurl#1{{% + \sphinxunactivateextrasandspace\everyeof{}% (<- precaution for \scantokens) + \endlinechar\m@ne\scantokens{\url{#1}}% +}} +\protected\def\sphinxnolinkurl#1{{% + \sphinxunactivateextrasandspace\everyeof{}% + \endlinechar\m@ne\scantokens{\nolinkurl{#1}}% +}} + + +%% TOPIC AND CONTENTS BOXES +% +% Again based on use of "framed.sty", this allows breakable framed boxes. +\long\def\spx@ShadowFBox#1{% + \leavevmode\begingroup + % first we frame the box #1 + \setbox\@tempboxa + \hbox{\vrule\@width\sphinxshadowrule + \vbox{\hrule\@height\sphinxshadowrule + \kern\sphinxshadowsep + \hbox{\kern\sphinxshadowsep #1\kern\sphinxshadowsep}% + \kern\sphinxshadowsep + \hrule\@height\sphinxshadowrule}% + \vrule\@width\sphinxshadowrule}% + % Now we add the shadow, like \shadowbox from fancybox.sty would do + \dimen@\dimexpr.5\sphinxshadowrule+\sphinxshadowsize\relax + \hbox{\vbox{\offinterlineskip + \hbox{\copy\@tempboxa\kern-.5\sphinxshadowrule + % add shadow on right side + \lower\sphinxshadowsize + \hbox{\vrule\@height\ht\@tempboxa \@width\dimen@}% + }% + \kern-\dimen@ % shift back vertically to bottom of frame + % and add shadow at bottom + \moveright\sphinxshadowsize + \vbox{\hrule\@width\wd\@tempboxa \@height\dimen@}% + }% + % move left by the size of right shadow so shadow adds no width + \kern-\sphinxshadowsize + }% + \endgroup +} + +% use framed.sty to allow page breaks in frame+shadow +% works well inside Lists and Quote-like environments +% produced by ``topic'' directive (or local contents) +% could nest if LaTeX writer authorized it +\newenvironment{sphinxShadowBox} + {\def\FrameCommand {\spx@ShadowFBox }% + \advance\spx@image@maxheight + -\dimexpr2\sphinxshadowrule + +2\sphinxshadowsep + +\sphinxshadowsize + +\baselineskip\relax + \let\sphinxincludegraphics\sphinxsafeincludegraphics + % configure framed.sty not to add extra vertical spacing + \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% + % the \trivlist will add the vertical spacing on top and bottom which is + % typical of center environment as used in Sphinx <= 1.4.1 + % the \noindent has the effet of an extra blank line on top, to + % imitate closely the layout from Sphinx <= 1.4.1; the \FrameHeightAdjust + % will put top part of frame on this baseline. + \def\FrameHeightAdjust {\baselineskip}% + % use package footnote to handle footnotes + \savenotes + \trivlist\item\noindent + % use a minipage if we are already inside a framed environment + \ifspx@inframed\begin{minipage}{\linewidth}\fi + \MakeFramed {\spx@inframedtrue + % framed.sty puts into "\width" the added width (=2shadowsep+2shadowrule) + % adjust \hsize to what the contents must use + \advance\hsize-\width + % adjust LaTeX parameters to behave properly in indented/quoted contexts + \FrameRestore + % typeset the contents as in a minipage (Sphinx <= 1.4.1 used a minipage and + % itemize/enumerate are therein typeset more tightly, we want to keep + % that). We copy-paste from LaTeX source code but don't do a real minipage. + \@pboxswfalse + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage + }% + }% + {% insert the "endminipage" code + \par\unskip + \@minipagefalse + \endMakeFramed + \ifspx@inframed\end{minipage}\fi + \endtrivlist + % output the stored footnotes + \spewnotes + } + + +%% NOTICES AND ADMONITIONS +% +% Some are quite plain +% the spx@notice@bordercolor etc are set in the sphinxadmonition environment +\newenvironment{sphinxlightbox}{% + \par\allowbreak + \noindent{\color{spx@notice@bordercolor}% + \rule{\linewidth}{\spx@notice@border}}\par\nobreak + {\parskip\z@skip\noindent}% + } + {% + % counteract previous possible negative skip (French lists!): + % (we can't cancel that any earlier \vskip introduced a potential pagebreak) + \sphinxvspacefixafterfrenchlists + \nobreak\vbox{\noindent\kern\@totalleftmargin + {\color{spx@notice@bordercolor}% + \rule[\dimexpr.4\baselineskip-\spx@notice@border\relax] + {\linewidth}{\spx@notice@border}}\hss}\allowbreak + }% end of sphinxlightbox environment definition +% may be renewenvironment'd by user for complete customization +\newenvironment{sphinxnote}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinxhint}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinximportant}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinxtip}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +% or just use the package options +% these are needed for common handling by notice environment of lightbox +% and heavybox but they are currently not used by lightbox environment +% and there is consequently no corresponding package option +\definecolor{sphinxnoteBgColor}{rgb}{1,1,1} +\definecolor{sphinxhintBgColor}{rgb}{1,1,1} +\definecolor{sphinximportantBgColor}{rgb}{1,1,1} +\definecolor{sphinxtipBgColor}{rgb}{1,1,1} + +% Others get more distinction +% Code adapted from framed.sty's "snugshade" environment. +% Nesting works (inner frames do not allow page breaks). +\newenvironment{sphinxheavybox}{\par + \setlength{\FrameRule}{\spx@notice@border}% + \setlength{\FrameSep}{\dimexpr.6\baselineskip-\FrameRule\relax} + \advance\spx@image@maxheight + -\dimexpr2\FrameRule + +2\FrameSep + +\baselineskip\relax % will happen again if nested, needed indeed! + \let\sphinxincludegraphics\sphinxsafeincludegraphics + % configure framed.sty's parameters to obtain same vertical spacing + % as for "light" boxes. We need for this to manually insert parskip glue and + % revert a skip done by framed before the frame. + \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% + \vspace{\FrameHeightAdjust} + % copied/adapted from framed.sty's snugshade + \def\FrameCommand##1{\hskip\@totalleftmargin + \fboxsep\FrameSep \fboxrule\FrameRule + \fcolorbox{spx@notice@bordercolor}{spx@notice@bgcolor}{##1}% + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% + \savenotes + % use a minipage if we are already inside a framed environment + \ifspx@inframed + \noindent\begin{minipage}{\linewidth} + \else + % handle case where notice is first thing in a list item (or is quoted) + \if@inlabel + \noindent\par\vspace{-\baselineskip} + \else + \vspace{\parskip} + \fi + \fi + \MakeFramed {\spx@inframedtrue + \advance\hsize-\width \@totalleftmargin\z@ \linewidth\hsize + % minipage initialization copied from LaTeX source code. + \@pboxswfalse + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage }% + } + {% + \par\unskip + \@minipagefalse + \endMakeFramed + \ifspx@inframed\end{minipage}\fi + % set footnotes at bottom of page + \spewnotes + % arrange for similar spacing below frame as for "light" boxes. + \vskip .4\baselineskip + }% end of sphinxheavybox environment definition +% may be renewenvironment'd by user for complete customization +\newenvironment{sphinxwarning}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxcaution}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxattention}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxdanger}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxerror}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +% or just use package options + +% the \colorlet of xcolor (if at all loaded) is overkill for our use case +\newcommand{\sphinxcolorlet}[2] + {\expandafter\let\csname\@backslashchar color@#1\expandafter\endcsname + \csname\@backslashchar color@#2\endcsname } + +% the main dispatch for all types of notices +\newenvironment{sphinxadmonition}[2]{% #1=type, #2=heading + % can't use #1 directly in definition of end part + \def\spx@noticetype {#1}% + % set parameters of heavybox/lightbox + \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1BorderColor}% + \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1BgColor}% + \spx@notice@border \dimexpr\csname spx@opt@#1border\endcsname\relax + % start specific environment, passing the heading as argument + \begin{sphinx#1}{#2}} + % workaround some LaTeX "feature" of \end command + {\edef\spx@temp{\noexpand\end{sphinx\spx@noticetype}}\spx@temp} + + +%% PYTHON DOCS MACROS AND ENVIRONMENTS +% (some macros here used by \maketitle in sphinxmanual.cls and sphinxhowto.cls) + +% \moduleauthor{name}{email} +\newcommand{\moduleauthor}[2]{} + +% \sectionauthor{name}{email} +\newcommand{\sectionauthor}[2]{} + +% Allow the release number to be specified independently of the +% \date{}. This allows the date to reflect the document's date and +% release to specify the release that is documented. +% +\newcommand{\py@release}{\releasename\space\version} +\newcommand{\version}{}% part of \py@release, used by title page and headers +% \releaseinfo is used on titlepage (sphinxmanual.cls, sphinxhowto.cls) +\newcommand{\releaseinfo}{} +\newcommand{\setreleaseinfo}[1]{\renewcommand{\releaseinfo}{#1}} +% this is inserted via template and #1=release config variable +\newcommand{\release}[1]{\renewcommand{\version}{#1}} +% this is defined by template to 'releasename' latex_elements key +\newcommand{\releasename}{} +% Fix issue in case release and releasename deliberately left blank +\newcommand{\sphinxheadercomma}{, }% used in fancyhdr header definition +\newcommand{\sphinxifemptyorblank}[1]{% +% test after one expansion of macro #1 if contents is empty or spaces + \if&\expandafter\@firstofone\detokenize\expandafter{#1}&% + \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}% +\AtBeginDocument {% + \sphinxifemptyorblank{\releasename} + {\sphinxifemptyorblank{\version}{\let\sphinxheadercomma\empty}{}} + {}% +}% + +% Allow specification of the author's address separately from the +% author's name. This can be used to format them differently, which +% is a good thing. +% +\newcommand{\py@authoraddress}{} +\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}} + +% {fulllineitems} is the main environment for object descriptions. +% +\newcommand{\py@itemnewline}[1]{% + \kern\labelsep + \@tempdima\linewidth + \advance\@tempdima \labelwidth\makebox[\@tempdima][l]{#1}% + \kern-\labelsep +} + +\newenvironment{fulllineitems}{% + \begin{list}{}{\labelwidth \leftmargin + \rightmargin \z@ \topsep -\parskip \partopsep \parskip + \itemsep -\parsep + \let\makelabel=\py@itemnewline}% +}{\end{list}} + +% Signatures, possibly multi-line +% +\newlength{\py@argswidth} +\newcommand{\py@sigparams}[2]{% + \parbox[t]{\py@argswidth}{#1\sphinxcode{)}#2}} +\newcommand{\pysigline}[1]{\item[{#1}]} +\newcommand{\pysiglinewithargsret}[3]{% + \settowidth{\py@argswidth}{#1\sphinxcode{(}}% + \addtolength{\py@argswidth}{-2\py@argswidth}% + \addtolength{\py@argswidth}{\linewidth}% + \item[{#1\sphinxcode{(}\py@sigparams{#2}{#3}}]} +\newcommand{\pysigstartmultiline}{% + \def\pysigstartmultiline{\vskip\smallskipamount\parskip\z@skip\itemsep\z@skip}% + \edef\pysigstopmultiline + {\noexpand\leavevmode\parskip\the\parskip\relax\itemsep\the\itemsep\relax}% + \parskip\z@skip\itemsep\z@skip +} + +% Production lists +% +\newenvironment{productionlist}{% +% \def\sphinxoptional##1{{\Large[}##1{\Large]}} + \def\production##1##2{\\\sphinxcode{\sphinxupquote{##1}}&::=&\sphinxcode{\sphinxupquote{##2}}}% + \def\productioncont##1{\\& &\sphinxcode{\sphinxupquote{##1}}}% + \parindent=2em + \indent + \setlength{\LTpre}{0pt}% + \setlength{\LTpost}{0pt}% + \begin{longtable}[l]{lcl} +}{% + \end{longtable} +} + +% Definition lists; requested by AMK for HOWTO documents. Probably useful +% elsewhere as well, so keep in in the general style support. +% +\newenvironment{definitions}{% + \begin{description}% + \def\term##1{\item[{##1}]\mbox{}\\*[0mm]}% +}{% + \end{description}% +} + +%% FROM DOCTUTILS LATEX WRITER +% +% The following is stuff copied from docutils' latex writer. +% +\newcommand{\optionlistlabel}[1]{\normalfont\bfseries #1 \hfill}% \bf deprecated +\newenvironment{optionlist}[1] +{\begin{list}{} + {\setlength{\labelwidth}{#1} + \setlength{\rightmargin}{1cm} + \setlength{\leftmargin}{\rightmargin} + \addtolength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \renewcommand{\makelabel}{\optionlistlabel}} +}{\end{list}} + +\newlength{\lineblockindentation} +\setlength{\lineblockindentation}{2.5em} +\newenvironment{lineblock}[1] +{\begin{list}{} + {\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \topsep0pt\itemsep0.15\baselineskip\parsep0pt + \leftmargin#1\relax} + \raggedright} +{\end{list}} + +% From docutils.writers.latex2e +% inline markup (custom roles) +% \DUrole{#1}{#2} tries \DUrole#1{#2} +\providecommand*{\DUrole}[2]{% + \ifcsname DUrole\detokenize{#1}\endcsname + \csname DUrole\detokenize{#1}\endcsname{#2}% + \else% backwards compatibility: try \docutilsrole#1{#2} + \ifcsname docutilsrole\detokenize{#1}\endcsname + \csname docutilsrole\detokenize{#1}\endcsname{#2}% + \else + #2% + \fi + \fi +} + +\providecommand*{\DUprovidelength}[2]{% + \ifdefined#1\else\newlength{#1}\setlength{#1}{#2}\fi +} + +\DUprovidelength{\DUlineblockindent}{2.5em} +\ifdefined\DUlineblock\else + \newenvironment{DUlineblock}[1]{% + \list{}{\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \setlength{\topsep}{0pt} + \setlength{\itemsep}{0.15\baselineskip} + \setlength{\parsep}{0pt} + \setlength{\leftmargin}{#1}} + \raggedright + } + {\endlist} +\fi + +%% TEXT STYLING +% +% to obtain straight quotes we execute \@noligs as patched by upquote, and +% \scantokens is needed in cases where it would be too late for the macro to +% first set catcodes and then fetch its argument. We also make the contents +% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive. +% the macro must be protected if it ends up used in moving arguments, +% in 'alltt' \@noligs is done already, and the \scantokens must be avoided. +\protected\def\sphinxupquote#1{{\def\@tempa{alltt}% + \ifx\@tempa\@currenvir\else + \ifspx@opt@inlineliteralwraps + \sphinxbreaksviaactive\let\sphinxafterbreak\empty + % do not overwrite the comma set-up + \let\verbatim@nolig@list\sphinx@literal@nolig@list + \fi + % fix a space-gobbling issue due to LaTeX's original \do@noligs + \let\do@noligs\sphinx@do@noligs + \@noligs\endlinechar\m@ne\everyeof{}% (<- in case inside \sphinxhref) + \expandafter\scantokens + \fi {{#1}}}}% extra brace pair to fix end-space gobbling issue... +\def\sphinx@do@noligs #1{\catcode`#1\active\begingroup\lccode`\~`#1\relax + \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1 }}} +\def\sphinx@literal@nolig@list {\do\`\do\<\do\>\do\'\do\-}% + +% Some custom font markup commands. +\protected\def\sphinxstrong#1{\textbf{#1}} +\protected\def\sphinxcode#1{\texttt{#1}} +\protected\def\sphinxbfcode#1{\textbf{\sphinxcode{#1}}} +\protected\def\sphinxemail#1{\textsf{#1}} +\protected\def\sphinxtablecontinued#1{\textsf{#1}} +\protected\def\sphinxtitleref#1{\emph{#1}} +\protected\def\sphinxmenuselection#1{\emph{#1}} +\protected\def\sphinxguilabel#1{\emph{#1}} +\protected\def\sphinxaccelerator#1{\underline{#1}} +\protected\def\sphinxcrossref#1{\emph{#1}} +\protected\def\sphinxtermref#1{\emph{#1}} +% \optional is used for ``[, arg]``, i.e. desc_optional nodes. +\long\protected\def\sphinxoptional#1{% + {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} + +% additional customizable styling +\def\sphinxstyleindexentry #1{\texttt{#1}} +\def\sphinxstyleindexextra #1{ (\emph{#1})} +\def\sphinxstyleindexpageref #1{, \pageref{#1}} +\def\sphinxstyleindexpagemain#1{\textbf{#1}} +\protected\def\spxentry#1{#1}% will get \let to \sphinxstyleindexentry in index +\protected\def\spxextra#1{#1}% will get \let to \sphinxstyleindexextra in index +\def\sphinxstyleindexlettergroup #1% + {{\Large\sffamily#1}\nopagebreak\vspace{1mm}} +\def\sphinxstyleindexlettergroupDefault #1% + {{\Large\sffamily\sphinxnonalphabeticalgroupname}\nopagebreak\vspace{1mm}} +\protected\def\sphinxstyletopictitle #1{\textbf{#1}\par\medskip} +\let\sphinxstylesidebartitle\sphinxstyletopictitle +\protected\def\sphinxstyleothertitle #1{\textbf{#1}} +\protected\def\sphinxstylesidebarsubtitle #1{~\\\textbf{#1} \smallskip} +% \text.. commands do not allow multiple paragraphs +\protected\def\sphinxstyletheadfamily {\sffamily} +\protected\def\sphinxstyleemphasis #1{\emph{#1}} +\protected\def\sphinxstyleliteralemphasis#1{\emph{\sphinxcode{#1}}} +\protected\def\sphinxstylestrong #1{\textbf{#1}} +\protected\def\sphinxstyleliteralstrong#1{\sphinxbfcode{#1}} +\protected\def\sphinxstyleabbreviation #1{\textsc{#1}} +\protected\def\sphinxstyleliteralintitle#1{\sphinxcode{#1}} +\newcommand*\sphinxstylecodecontinued[1]{\footnotesize(#1)}% +\newcommand*\sphinxstylecodecontinues[1]{\footnotesize(#1)}% +% figure legend comes after caption and may contain arbitrary body elements +\newenvironment{sphinxlegend}{\par\small}{\par} +% reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds +\AtBeginDocument{\pdfstringdefDisableCommands{% +% all "protected" macros possibly ending up in section titles should be here + \let\sphinxstyleemphasis \@firstofone + \let\sphinxstyleliteralemphasis \@firstofone + \let\sphinxstylestrong \@firstofone + \let\sphinxstyleliteralstrong \@firstofone + \let\sphinxstyleabbreviation \@firstofone + \let\sphinxstyleliteralintitle \@firstofone + \let\sphinxupquote \@firstofone + \let\sphinxstrong \@firstofone + \let\sphinxcode \@firstofone + \let\sphinxbfcode \@firstofone + \let\sphinxemail \@firstofone + \let\sphinxcrossref \@firstofone + \let\sphinxtermref \@firstofone +}} + +% For curly braces inside \index macro +\def\sphinxleftcurlybrace{\{} +\def\sphinxrightcurlybrace{\}} + +% Declare Unicode characters used by linux tree command to pdflatex utf8/utf8x +\def\spx@bd#1#2{% + \leavevmode + \begingroup + \ifx\spx@bd@height \@undefined\def\spx@bd@height{\baselineskip}\fi + \ifx\spx@bd@width \@undefined\setbox0\hbox{0}\def\spx@bd@width{\wd0 }\fi + \ifx\spx@bd@thickness\@undefined\def\spx@bd@thickness{.6\p@}\fi + \ifx\spx@bd@lower \@undefined\def\spx@bd@lower{\dp\strutbox}\fi + \lower\spx@bd@lower#1{#2}% + \endgroup +}% +\@namedef{sphinx@u2500}% BOX DRAWINGS LIGHT HORIZONTAL + {\spx@bd{\vbox to\spx@bd@height} + {\vss\hrule\@height\spx@bd@thickness + \@width\spx@bd@width\vss}}% +\@namedef{sphinx@u2502}% BOX DRAWINGS LIGHT VERTICAL + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss\vrule\@height\spx@bd@height + \@width \spx@bd@thickness\hss}}% +\@namedef{sphinx@u2514}% BOX DRAWINGS LIGHT UP AND RIGHT + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss\raise.5\spx@bd@height + \hb@xt@\z@{\hss\vrule\@height.5\spx@bd@height + \@width \spx@bd@thickness\hss}% + \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness + \@width.5\spx@bd@width\vss}}}% +\@namedef{sphinx@u251C}% BOX DRAWINGS LIGHT VERTICAL AND RIGHT + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss + \hb@xt@\z@{\hss\vrule\@height\spx@bd@height + \@width \spx@bd@thickness\hss}% + \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness + \@width.5\spx@bd@width\vss}}}% +\protected\def\sphinxunichar#1{\@nameuse{sphinx@u#1}}% + +% Tell TeX about pathological hyphenation cases: +\hyphenation{Base-HTTP-Re-quest-Hand-ler} +\endinput diff --git a/docs/_build/latex/sphinx.xdy b/docs/_build/latex/sphinx.xdy new file mode 100644 index 0000000..0d02ef3 --- /dev/null +++ b/docs/_build/latex/sphinx.xdy @@ -0,0 +1,207 @@ +;;; -*- mode: lisp; coding: utf-8; -*- + +;; Unfortunately xindy is out-of-the-box hyperref-incompatible. This +;; configuration is a workaround, which requires to pass option +;; hyperindex=false to hyperref. +;; textit and emph not currently used, spxpagem replaces former textbf +(define-attributes (("textbf" "textit" "emph" "spxpagem" "default"))) +(markup-locref :open "\textbf{\hyperpage{" :close "}}" :attr "textbf") +(markup-locref :open "\textit{\hyperpage{" :close "}}" :attr "textit") +(markup-locref :open "\emph{\hyperpage{" :close "}}" :attr "emph") +(markup-locref :open "\spxpagem{\hyperpage{" :close "}}" :attr "spxpagem") +(markup-locref :open "\hyperpage{" :close "}" :attr "default") + +(require "numeric-sort.xdy") + +;; xindy base module latex.xdy loads tex.xdy and the latter instructs +;; xindy to ignore **all** TeX macros in .idx entries, except those +;; explicitely described in merge rule. But when after applying all +;; merge rules an empty string results, xindy raises an error: + +;; ERROR: CHAR: index 0 should be less than the length of the string + +;; For example when using pdflatex with utf-8 characters the index +;; file will contain \IeC macros and they will get ignored except if +;; suitable merge rules are loaded early. The texindy script coming +;; with xindy provides this, but only for Latin scripts. The texindy +;; man page says to use rather xelatex or lualatex in case of Cyrillic +;; scripts. + +;; Sphinx contributes LICRcyr2utf8.xdy to provide support for Cyrillic +;; scripts for the pdflatex engine. + +;; Another issue caused by xindy ignoring all TeX macros except those +;; explicitely declared reveals itself when attempting to index ">>>", +;; as the ">" is converted to "\textgreater{}" by Sphinx's LaTeX +;; escaping. + +;; To fix this, Sphinx does **not** use texindy, and does not even +;; load the xindy latex.xdy base module. + +;(require "latex.xdy") + +;; Rather it incorporates some suitable extracts from latex.xdy and +;; tex.xdy with additional Sphinx contributed rules. + +;; But, this means for pdflatex and Latin scripts that the xindy file +;; tex/inputenc/uf8.xdy is not usable because it refers to the macro +;; \IeC only sporadically, and as tex.xdy is not loaded, a rule such as +;; (merge-rule "\'e" "é" :string) +;; does not work, it must be +;; (merge-rule "\IeC {\'e}" "é" :string) +;; So Sphinx contributes LICRlatin2utf8.xdy to mitigate that problem. + +;;;;;;;; extracts from tex.xdy (discarding most original comments): + +;;; +;;; TeX conventions +;;; + +;; Discard leading and trailing white space. Collapse multiple white +;; space characters to blank. + +(merge-rule "^ +" "" :eregexp) +(merge-rule " +$" "" :eregexp) +(merge-rule " +" " " :eregexp) + +;; Handle TeX markup + +(merge-rule "\\([{}$%&#])" "\1" :eregexp) + +;;;;;;;; end of extracts from xindy's tex.xdy + +;;;;;;;; extracts from latex.xdy: + +;; Standard location classes: arabic and roman numbers, and alphabets. + +(define-location-class "arabic-page-numbers" ("arabic-numbers")) +(define-location-class "roman-page-numbers" ("roman-numbers-lowercase")) +(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase")) +(define-location-class "alpha-page-numbers" ("alpha")) +(define-location-class "Alpha-page-numbers" ("ALPHA")) + +;; Output Markup + +(markup-letter-group-list :sep "~n~n \indexspace~n") + +(markup-indexentry :open "~n \item " :depth 0) +(markup-indexentry :open "~n \subitem " :depth 1) +(markup-indexentry :open "~n \subsubitem " :depth 2) + +(markup-locclass-list :open ", " :sep ", ") +(markup-locref-list :sep ", ") + +;;;;;;;; end of extracts from latex.xdy + +;; The LaTeX \index command turns \ into normal character so the TeX macros +;; written to .idx files are not followed by a blank. This is different +;; from non-ascii letters which end up (with pdflatex) as \IeC macros in .idx +;; file, with a blank space after \IeC + +;; Details of the syntax are explained at +;; http://xindy.sourceforge.net/doc/manual-3.html +;; In absence of :string, "xindy uses an auto-detection mechanism to decide, +;; if the pattern is a regular expression or not". But it is not obvious to +;; guess, for example "\\_" is not detected as RE but "\\P\{\}" is, so for +;; being sure we apply the :string switch everywhere and do not use \\ etc... + +;; Go back from sphinx.util.texescape TeX macros to UTF-8 + +(merge-rule "\sphinxleftcurlybrace{}" "{" :string) +(merge-rule "\sphinxrightcurlybrace{}" "}" :string) +(merge-rule "\_" "_" :string) +(merge-rule "{[}" "[" :string) +(merge-rule "{]}" "]" :string) +(merge-rule "{}`" "`" :string) +(merge-rule "\textbackslash{}" "\" :string) ; " for Emacs syntax highlighting +(merge-rule "\textasciitilde{}" "~~" :string); the ~~ escape is needed here +(merge-rule "\textless{}" "<" :string) +(merge-rule "\textgreater{}" ">" :string) +(merge-rule "\textasciicircum{}" "^" :string) +(merge-rule "\P{}" "¶" :string) +(merge-rule "\S{}" "§" :string) +(merge-rule "\texteuro{}" "€" :string) +(merge-rule "\(\infty\)" "∞" :string) +(merge-rule "\(\pm\)" "±" :string) +(merge-rule "\(\rightarrow\)" "→" :string) +(merge-rule "\(\checkmark\)" "✓" :string) +(merge-rule "\textendash{}" "–" :string) +(merge-rule "\textbar{}" "|" :string) +(merge-rule "\(\sp{\text{0}}\)" "⁰" :string) +(merge-rule "\(\sp{\text{1}}\)" "¹" :string) +(merge-rule "\(\sp{\text{2}}\)" "²" :string) +(merge-rule "\(\sp{\text{3}}\)" "³" :string) +(merge-rule "\(\sp{\text{4}}\)" "⁴" :string) +(merge-rule "\(\sp{\text{5}}\)" "⁵" :string) +(merge-rule "\(\sp{\text{6}}\)" "⁶" :string) +(merge-rule "\(\sp{\text{7}}\)" "⁷" :string) +(merge-rule "\(\sp{\text{8}}\)" "⁸" :string) +(merge-rule "\(\sp{\text{9}}\)" "⁹" :string) +(merge-rule "\(\sb{\text{0}}\)" "₀" :string) +(merge-rule "\(\sb{\text{1}}\)" "₁" :string) +(merge-rule "\(\sb{\text{2}}\)" "₂" :string) +(merge-rule "\(\sb{\text{3}}\)" "₃" :string) +(merge-rule "\(\sb{\text{4}}\)" "₄" :string) +(merge-rule "\(\sb{\text{5}}\)" "₅" :string) +(merge-rule "\(\sb{\text{6}}\)" "₆" :string) +(merge-rule "\(\sb{\text{7}}\)" "₇" :string) +(merge-rule "\(\sb{\text{8}}\)" "₈" :string) +(merge-rule "\(\sb{\text{9}}\)" "₉" :string) +(merge-rule "\(\alpha\)" "α" :string) +(merge-rule "\(\beta\)" "β" :string) +(merge-rule "\(\gamma\)" "γ" :string) +(merge-rule "\(\delta\)" "δ" :string) +(merge-rule "\(\epsilon\)" "ε" :string) +(merge-rule "\(\zeta\)" "ζ" :string) +(merge-rule "\(\eta\)" "η" :string) +(merge-rule "\(\theta\)" "θ" :string) +(merge-rule "\(\iota\)" "ι" :string) +(merge-rule "\(\kappa\)" "κ" :string) +(merge-rule "\(\lambda\)" "λ" :string) +(merge-rule "\(\mu\)" "μ" :string) +(merge-rule "\(\nu\)" "ν" :string) +(merge-rule "\(\xi\)" "ξ" :string) +(merge-rule "\(\pi\)" "π" :string) +(merge-rule "\(\rho\)" "ρ" :string) +(merge-rule "\(\sigma\)" "σ" :string) +(merge-rule "\(\tau\)" "τ" :string) +(merge-rule "\(\upsilon\)" "υ" :string) +(merge-rule "\(\phi\)" "φ" :string) +(merge-rule "\(\chi\)" "χ" :string) +(merge-rule "\(\psi\)" "ψ" :string) +(merge-rule "\(\omega\)" "ω" :string) +(merge-rule "\(\Gamma\)" "Γ" :string) +(merge-rule "\(\Delta\)" "Δ" :string) +(merge-rule "\(\Theta\)" "Θ" :string) +(merge-rule "\(\Lambda\)" "Λ" :string) +(merge-rule "\(\Xi\)" "Ξ" :string) +(merge-rule "\(\Pi\)" "Π" :string) +(merge-rule "\(\Sigma\)" "Σ" :string) +(merge-rule "\(\Upsilon\)" "Υ" :string) +(merge-rule "\(\Phi\)" "Φ" :string) +(merge-rule "\(\Psi\)" "Ψ" :string) +(merge-rule "\(\Omega\)" "Ω" :string) + +;; This xindy module provides some basic support for "see" +(require "makeindex.xdy") + +;; This creates one-letter headings and works fine with utf-8 letters. +;; For Cyrillic with pdflatex works thanks to LICRcyr2utf8.xdy +(require "latin-lettergroups.xdy") + +;; currently we don't (know how to easily) separate "Numbers" from +;; "Symbols" with xindy as is the case with makeindex. +(markup-index :open "\begin{sphinxtheindex} +\let\lettergroup\sphinxstyleindexlettergroup +\let\lettergroupDefault\sphinxstyleindexlettergroupDefault +\let\spxpagem\sphinxstyleindexpagemain +\let\spxentry\sphinxstyleindexentry +\let\spxextra\sphinxstyleindexextra + +" + :close " + +\end{sphinxtheindex} +" + :tree) + diff --git a/docs/_build/latex/sphinxhighlight.sty b/docs/_build/latex/sphinxhighlight.sty new file mode 100644 index 0000000..1557ce6 --- /dev/null +++ b/docs/_build/latex/sphinxhighlight.sty @@ -0,0 +1,105 @@ +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{sphinxhighlight}[2016/05/29 stylesheet for highlighting with pygments] + + +\makeatletter +\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax% + \let\PYG@ul=\relax \let\PYG@tc=\relax% + \let\PYG@bc=\relax \let\PYG@ff=\relax} +\def\PYG@tok#1{\csname PYG@tok@#1\endcsname} +\def\PYG@toks#1+{\ifx\relax#1\empty\else% + \PYG@tok{#1}\expandafter\PYG@toks\fi} +\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{% + \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}} +\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}} + +\expandafter\def\csname PYG@tok@w\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} +\expandafter\def\csname PYG@tok@c\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\expandafter\def\csname PYG@tok@cp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@cs\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}} +\expandafter\def\csname PYG@tok@k\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@kp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@kt\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}} +\expandafter\def\csname PYG@tok@o\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PYG@tok@ow\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@nb\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@nf\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}} +\expandafter\def\csname PYG@tok@nc\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}} +\expandafter\def\csname PYG@tok@nn\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}} +\expandafter\def\csname PYG@tok@ne\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@nv\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\expandafter\def\csname PYG@tok@no\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}} +\expandafter\def\csname PYG@tok@nl\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}} +\expandafter\def\csname PYG@tok@ni\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}} +\expandafter\def\csname PYG@tok@na\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@nt\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}} +\expandafter\def\csname PYG@tok@nd\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}} +\expandafter\def\csname PYG@tok@s\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@sd\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@si\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}} +\expandafter\def\csname PYG@tok@se\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@sr\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}} +\expandafter\def\csname PYG@tok@ss\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}} +\expandafter\def\csname PYG@tok@sx\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} +\expandafter\def\csname PYG@tok@m\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\expandafter\def\csname PYG@tok@gh\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PYG@tok@gu\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} +\expandafter\def\csname PYG@tok@gd\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} +\expandafter\def\csname PYG@tok@gi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} +\expandafter\def\csname PYG@tok@gr\endcsname{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} +\expandafter\def\csname PYG@tok@ge\endcsname{\let\PYG@it=\textit} +\expandafter\def\csname PYG@tok@gs\endcsname{\let\PYG@bf=\textbf} +\expandafter\def\csname PYG@tok@gp\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} +\expandafter\def\csname PYG@tok@go\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}} +\expandafter\def\csname PYG@tok@gt\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} +\expandafter\def\csname PYG@tok@err\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} +\expandafter\def\csname PYG@tok@kc\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@kd\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@kn\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@kr\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@bp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\expandafter\def\csname PYG@tok@fm\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}} +\expandafter\def\csname PYG@tok@vc\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\expandafter\def\csname PYG@tok@vg\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\expandafter\def\csname PYG@tok@vi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\expandafter\def\csname PYG@tok@vm\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\expandafter\def\csname PYG@tok@sa\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@sb\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@sc\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@dl\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@s2\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@sh\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@s1\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\expandafter\def\csname PYG@tok@mb\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\expandafter\def\csname PYG@tok@mf\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\expandafter\def\csname PYG@tok@mh\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\expandafter\def\csname PYG@tok@mi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\expandafter\def\csname PYG@tok@il\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\expandafter\def\csname PYG@tok@mo\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\expandafter\def\csname PYG@tok@ch\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\expandafter\def\csname PYG@tok@cm\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\expandafter\def\csname PYG@tok@cpf\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\expandafter\def\csname PYG@tok@c1\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} + +\def\PYGZbs{\char`\\} +\def\PYGZus{\char`\_} +\def\PYGZob{\char`\{} +\def\PYGZcb{\char`\}} +\def\PYGZca{\char`\^} +\def\PYGZam{\char`\&} +\def\PYGZlt{\char`\<} +\def\PYGZgt{\char`\>} +\def\PYGZsh{\char`\#} +\def\PYGZpc{\char`\%} +\def\PYGZdl{\char`\$} +\def\PYGZhy{\char`\-} +\def\PYGZsq{\char`\'} +\def\PYGZdq{\char`\"} +\def\PYGZti{\char`\~} +% for compatibility with earlier versions +\def\PYGZat{@} +\def\PYGZlb{[} +\def\PYGZrb{]} +\makeatother + +\renewcommand\PYGZsq{\textquotesingle} diff --git a/docs/_build/latex/sphinxhowto.cls b/docs/_build/latex/sphinxhowto.cls new file mode 100644 index 0000000..6e48585 --- /dev/null +++ b/docs/_build/latex/sphinxhowto.cls @@ -0,0 +1,90 @@ +% +% sphinxhowto.cls for Sphinx (http://sphinx-doc.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxhowto}[2018/12/22 v1.8.3 Document class (Sphinx howto)] + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Default to two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{2}% i.e. section and subsection + +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\newcommand{\sphinxmaketitle}{% + \noindent\rule{\textwidth}{1pt}\par + \begingroup % for PDF information dictionary + \def\endgraf{ }\def\and{\& }% + \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup + \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% + \endgroup + \begin{flushright} + \sphinxlogo + \py@HeaderFamily + {\Huge \@title }\par + {\itshape\large \py@release \releaseinfo}\par + \vspace{25pt} + {\Large + \begin{tabular}[t]{c} + \@author + \end{tabular}}\par + \vspace{25pt} + \@date \par + \py@authoraddress \par + \end{flushright} + \@thanks + \setcounter{footnote}{0} + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} +} + +\newcommand{\sphinxtableofcontents}{ + \begingroup + \parskip = 0mm + \tableofcontents + \endgroup + \rule{\textwidth}{1pt} + \vspace{12pt} +} + +\pagenumbering{arabic} + +% Fix the bibliography environment to add an entry to the Table of +% Contents. +% For an article document class this environment is a section, +% so no page break before it. +% +\newenvironment{sphinxthebibliography}[1]{% + % \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}% + \addcontentsline{toc}{section}{\ifdefined\refname\refname\else\ifdefined\bibname\bibname\fi\fi}}{\end{thebibliography}} + + +% Same for the indices. +% The memoir class already does this, so we don't duplicate it in that case. +% +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% + \phantomsection % needed because no chapter, section, ... is created by theindex + \begin{theindex}% + \addcontentsline{toc}{section}{\indexname}}{\end{theindex}}} diff --git a/docs/_build/latex/sphinxmanual.cls b/docs/_build/latex/sphinxmanual.cls new file mode 100644 index 0000000..1ab80d2 --- /dev/null +++ b/docs/_build/latex/sphinxmanual.cls @@ -0,0 +1,114 @@ +% +% sphinxmanual.cls for Sphinx (http://sphinx-doc.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxmanual}[2018/12/22 v1.8.3 Document class (Sphinx manual)] + +% chapters starting at odd pages (overridden by 'openany' document option) +\PassOptionsToClass{openright}{\sphinxdocclass} + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Defaults two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{1} + +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\newcommand{\sphinxmaketitle}{% + \let\spx@tempa\relax + \ifHy@pageanchor\def\spx@tempa{\Hy@pageanchortrue}\fi + \hypersetup{pageanchor=false}% avoid duplicate destination warnings + \begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \noindent\rule{\textwidth}{1pt}\par + \begingroup % for PDF information dictionary + \def\endgraf{ }\def\and{\& }% + \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup + \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% + \endgroup + \begin{flushright}% + \sphinxlogo + \py@HeaderFamily + {\Huge \@title \par} + {\itshape\LARGE \py@release\releaseinfo \par} + \vfill + {\LARGE + \begin{tabular}[t]{c} + \@author + \end{tabular} + \par} + \vfill\vfill + {\large + \@date \par + \vfill + \py@authoraddress \par + }% + \end{flushright}%\par + \@thanks + \end{titlepage}% + \setcounter{footnote}{0}% + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} + \clearpage + \ifdefined\sphinxbackoftitlepage\sphinxbackoftitlepage\fi + \if@openright\cleardoublepage\else\clearpage\fi + \spx@tempa +} + +\newcommand{\sphinxtableofcontents}{% + \pagenumbering{roman}% + \begingroup + \parskip \z@skip + \tableofcontents + \endgroup + % before resetting page counter, let's do the right thing. + \if@openright\cleardoublepage\else\clearpage\fi + \pagenumbering{arabic}% +} + +% This is needed to get the width of the section # area wide enough in the +% library reference. Doing it here keeps it the same for all the manuals. +% +\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}} +\renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}} + +% Fix the bibliography environment to add an entry to the Table of +% Contents. +% For a report document class this environment is a chapter. +% +\newenvironment{sphinxthebibliography}[1]{% + \if@openright\cleardoublepage\else\clearpage\fi + % \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}% + \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} + +% Same for the indices. +% The memoir class already does this, so we don't duplicate it in that case. +% +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% + \if@openright\cleardoublepage\else\clearpage\fi + \phantomsection % needed as no chapter, section, ... created + \begin{theindex}% + \addcontentsline{toc}{chapter}{\indexname}}{\end{theindex}}} diff --git a/docs/_build/latex/sphinxmulticell.sty b/docs/_build/latex/sphinxmulticell.sty new file mode 100644 index 0000000..f0d11b1 --- /dev/null +++ b/docs/_build/latex/sphinxmulticell.sty @@ -0,0 +1,317 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{sphinxmulticell}% + [2017/02/23 v1.6 better span rows and columns of a table (Sphinx team)]% +\DeclareOption*{\PackageWarning{sphinxmulticell}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +% +% --- MULTICOLUMN --- +% standard LaTeX's \multicolumn +% 1. does not allow verbatim contents, +% 2. interacts very poorly with tabulary. +% +% It is needed to write own macros for Sphinx: to allow code-blocks in merged +% cells rendered by tabular/longtable, and to allow multi-column cells with +% paragraphs to be taken into account sanely by tabulary algorithm for column +% widths. +% +% This requires quite a bit of hacking. First, in Sphinx, the multi-column +% contents will *always* be wrapped in a varwidth environment. The issue +% becomes to pass it the correct target width. We must trick tabulary into +% believing the multicolumn is simply separate columns, else tabulary does not +% incorporate the contents in its algorithm. But then we must clear the +% vertical rules... +% +% configuration of tabulary +\setlength{\tymin}{3\fontcharwd\font`0 }% minimal width of "squeezed" columns +\setlength{\tymax}{10000pt}% allow enough room for paragraphs to "compete" +% we need access to tabulary's final computed width. \@tempdima is too volatile +% to hope it has kept tabulary's value when \sphinxcolwidth needs it. +\newdimen\sphinx@TY@tablewidth +\def\tabulary{% + \def\TY@final{\sphinx@TY@tablewidth\@tempdima\tabular}% + \let\endTY@final\endtabular + \TY@tabular}% +% next hack is needed only if user has set latex_use_latex_multicolumn to True: +% it fixes tabulary's bug with \multicolumn defined "short" in first pass. (if +% upstream tabulary adds a \long, our extra one causes no harm) +\def\sphinx@tempa #1\def\multicolumn#2#3#4#5#6#7#8#9\sphinx@tempa + {\def\TY@tab{#1\long\def\multicolumn####1####2####3{\multispan####1\relax}#9}}% +\expandafter\sphinx@tempa\TY@tab\sphinx@tempa +% +% TN. 1: as \omit is never executed, Sphinx multicolumn does not need to worry +% like standard multicolumn about |l| vs l|. On the other hand it assumes +% columns are separated by a | ... (if not it will add extraneous +% \arrayrulewidth space for each column separation in its estimate of available +% width). +% +% TN. 1b: as Sphinx multicolumn uses neither \omit nor \span, it can not +% (easily) get rid of extra macros from >{...} or <{...} between columns. At +% least, it has been made compatible with colortbl's \columncolor. +% +% TN. 2: tabulary's second pass is handled like tabular/longtable's single +% pass, with the difference that we hacked \TY@final to set in +% \sphinx@TY@tablewidth the final target width as computed by tabulary. This is +% needed only to handle columns with a "horizontal" specifier: "p" type columns +% (inclusive of tabulary's LJRC) holds the target column width in the +% \linewidth dimension. +% +% TN. 3: use of \begin{sphinxmulticolumn}...\end{sphinxmulticolumn} mark-up +% would need some hacking around the fact that groups can not span across table +% cells (the code does inserts & tokens, see TN1b). It was decided to keep it +% simple with \sphinxstartmulticolumn...\sphinxstopmulticolumn. +% +% MEMO about nesting: if sphinxmulticolumn is encountered in a nested tabular +% inside a tabulary it will think to be at top level in the tabulary. But +% Sphinx generates no nested tables, and if some LaTeX macro uses internally a +% tabular this will not have a \sphinxstartmulticolumn within it! +% +\def\sphinxstartmulticolumn{% + \ifx\equation$% $ tabulary's first pass + \expandafter\sphinx@TYI@start@multicolumn + \else % either not tabulary or tabulary's second pass + \expandafter\sphinx@start@multicolumn + \fi +}% +\def\sphinxstopmulticolumn{% + \ifx\equation$% $ tabulary's first pass + \expandafter\sphinx@TYI@stop@multicolumn + \else % either not tabulary or tabulary's second pass + \ignorespaces + \fi +}% +\def\sphinx@TYI@start@multicolumn#1{% + % use \gdef always to avoid stack space build up + \gdef\sphinx@tempa{#1}\begingroup\setbox\z@\hbox\bgroup +}% +\def\sphinx@TYI@stop@multicolumn{\egroup % varwidth was used with \tymax + \xdef\sphinx@tempb{\the\dimexpr\wd\z@/\sphinx@tempa}% per column width + \endgroup + \expandafter\sphinx@TYI@multispan\expandafter{\sphinx@tempa}% +}% +\def\sphinx@TYI@multispan #1{% + \kern\sphinx@tempb\ignorespaces % the per column occupied width + \ifnum#1>\@ne % repeat, taking into account subtleties of TeX's & ... + \expandafter\sphinx@TYI@multispan@next\expandafter{\the\numexpr#1-\@ne\expandafter}% + \fi +}% +\def\sphinx@TYI@multispan@next{&\relax\sphinx@TYI@multispan}% +% +% Now the branch handling either the second pass of tabulary or the single pass +% of tabular/longtable. This is the delicate part where we gather the +% dimensions from the p columns either set-up by tabulary or by user p column +% or Sphinx \X, \Y columns. The difficulty is that to get the said width, the +% template must be inserted (other hacks would be horribly complicated except +% if we rewrote crucial parts of LaTeX's \@array !) and we can not do +% \omit\span like standard \multicolumn's easy approach. Thus we must cancel +% the \vrule separators. Also, perhaps the column specifier is of the l, c, r +% type, then we attempt an ad hoc rescue to give varwidth a reasonable target +% width. +\def\sphinx@start@multicolumn#1{% + \gdef\sphinx@multiwidth{0pt}\gdef\sphinx@tempa{#1}\sphinx@multispan{#1}% +}% +\def\sphinx@multispan #1{% + \ifnum#1=\@ne\expandafter\sphinx@multispan@end + \else\expandafter\sphinx@multispan@next + \fi {#1}% +}% +\def\sphinx@multispan@next #1{% + % trick to recognize L, C, R, J or p, m, b type columns + \ifdim\baselineskip>\z@ + \gdef\sphinx@tempb{\linewidth}% + \else + % if in an l, r, c type column, try and hope for the best + \xdef\sphinx@tempb{\the\dimexpr(\ifx\TY@final\@undefined\linewidth\else + \sphinx@TY@tablewidth\fi-\arrayrulewidth)/\sphinx@tempa + -\tw@\tabcolsep-\arrayrulewidth\relax}% + \fi + \noindent\kern\sphinx@tempb\relax + \xdef\sphinx@multiwidth + {\the\dimexpr\sphinx@multiwidth+\sphinx@tempb+\tw@\tabcolsep+\arrayrulewidth}% + % hack the \vline and the colortbl macros + \sphinx@hack@vline\sphinx@hack@CT&\relax + % repeat + \expandafter\sphinx@multispan\expandafter{\the\numexpr#1-\@ne}% +}% +% packages like colortbl add group levels, we need to "climb back up" to be +% able to hack the \vline and also the colortbl inserted tokens. This creates +% empty space whether or not the columns were | separated: +\def\sphinx@hack@vline{\ifnum\currentgrouptype=6\relax + \kern\arrayrulewidth\arrayrulewidth\z@\else\aftergroup\sphinx@hack@vline\fi}% +\def\sphinx@hack@CT{\ifnum\currentgrouptype=6\relax + \let\CT@setup\sphinx@CT@setup\else\aftergroup\sphinx@hack@CT\fi}% +% It turns out \CT@row@color is not expanded contrarily to \CT@column@color +% during LaTeX+colortbl preamble preparation, hence it would be possible for +% \sphinx@CT@setup to discard only the column color and choose to obey or not +% row color and cell color. It would even be possible to propagate cell color +% to row color for the duration of the Sphinx multicolumn... the (provisional?) +% choice has been made to cancel the colortbl colours for the multicolumn +% duration. +\def\sphinx@CT@setup #1\endgroup{\endgroup}% hack to remove colour commands +\def\sphinx@multispan@end#1{% + % first, trace back our steps horizontally + \noindent\kern-\dimexpr\sphinx@multiwidth\relax + % and now we set the final computed width for the varwidth environment + \ifdim\baselineskip>\z@ + \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+\linewidth}% + \else + \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+ + (\ifx\TY@final\@undefined\linewidth\else + \sphinx@TY@tablewidth\fi-\arrayrulewidth)/\sphinx@tempa + -\tw@\tabcolsep-\arrayrulewidth\relax}% + \fi + % we need to remove colour set-up also for last cell of the multi-column + \aftergroup\sphinx@hack@CT +}% +\newcommand*\sphinxcolwidth[2]{% + % this dimension will always be used for varwidth, and serves as maximum + % width when cells are merged either via multirow or multicolumn or both, + % as always their contents is wrapped in varwidth environment. + \ifnum#1>\@ne % multi-column (and possibly also multi-row) + % we wrote our own multicolumn code especially to handle that (and allow + % verbatim contents) + \ifx\equation$%$ + \tymax % first pass of tabulary (cf MEMO above regarding nesting) + \else % the \@gobble thing is for compatibility with standard \multicolumn + \sphinx@multiwidth\@gobble{#1/#2}% + \fi + \else % single column multirow + \ifx\TY@final\@undefined % not a tabulary. + \ifdim\baselineskip>\z@ + % in a p{..} type column, \linewidth is the target box width + \linewidth + \else + % l, c, r columns. Do our best. + \dimexpr(\linewidth-\arrayrulewidth)/#2- + \tw@\tabcolsep-\arrayrulewidth\relax + \fi + \else % in tabulary + \ifx\equation$%$% first pass + \tymax % it is set to a big value so that paragraphs can express themselves + \else + % second pass. + \ifdim\baselineskip>\z@ + \linewidth % in a L, R, C, J column or a p, \X, \Y ... + \else + % we have hacked \TY@final to put in \sphinx@TY@tablewidth the table width + \dimexpr(\sphinx@TY@tablewidth-\arrayrulewidth)/#2- + \tw@\tabcolsep-\arrayrulewidth\relax + \fi + \fi + \fi + \fi +}% +% fallback default in case user has set latex_use_latex_multicolumn to True: +% \sphinxcolwidth will use this only inside LaTeX's standard \multicolumn +\def\sphinx@multiwidth #1#2{\dimexpr % #1 to gobble the \@gobble (!) + (\ifx\TY@final\@undefined\linewidth\else\sphinx@TY@tablewidth\fi + -\arrayrulewidth)*#2-\tw@\tabcolsep-\arrayrulewidth\relax}% +% +% --- MULTIROW --- +% standard \multirow +% 1. does not allow verbatim contents, +% 2. does not allow blank lines in its argument, +% 3. its * specifier means to typeset "horizontally" which is very +% bad for paragraph content. 2016 version has = specifier but it +% must be used with p type columns only, else results are bad, +% 4. it requires manual intervention if the contents is too long to fit +% in the asked-for number of rows. +% 5. colour panels (either from \rowcolor or \columncolor) will hide +% the bottom part of multirow text, hence manual tuning is needed +% to put the multirow insertion at the _bottom_. +% +% The Sphinx solution consists in always having contents wrapped +% in a varwidth environment so that it makes sense to estimate how many +% lines it will occupy, and then ensure by insertion of suitable struts +% that the table rows have the needed height. The needed mark-up is done +% by LaTeX writer, which has its own id for the merged cells. +% +% The colour issue is solved by clearing colour panels in all cells, +% whether or not the multirow is single-column or multi-column. +% +% In passing we obtain baseline alignements across rows (only if +% \arraylinestretch is 1, as LaTeX's does not obey \arraylinestretch in "p" +% multi-line contents, only first and last line...) +% +% TODO: examine the situation with \arraylinestretch > 1. The \extrarowheight +% is hopeless for multirow anyhow, it makes baseline alignment strictly +% impossible. +\newcommand\sphinxmultirow[2]{\begingroup + % #1 = nb of spanned rows, #2 = Sphinx id of "cell", #3 = contents + % but let's fetch #3 in a way allowing verbatim contents ! + \def\sphinx@nbofrows{#1}\def\sphinx@cellid{#2}% + \afterassignment\sphinx@multirow\let\next= +}% +\def\sphinx@multirow {% + \setbox\z@\hbox\bgroup\aftergroup\sphinx@@multirow\strut +}% +\def\sphinx@@multirow {% + % The contents, which is a varwidth environment, has been captured in + % \box0 (a \hbox). + % We have with \sphinx@cellid an assigned unique id. The goal is to give + % about the same height to all the involved rows. + % For this Sphinx will insert a \sphinxtablestrut{cell_id} mark-up + % in LaTeX file and the expansion of the latter will do the suitable thing. + \dimen@\dp\z@ + \dimen\tw@\ht\@arstrutbox + \advance\dimen@\dimen\tw@ + \advance\dimen\tw@\dp\@arstrutbox + \count@=\dimen@ % type conversion dim -> int + \count\tw@=\dimen\tw@ + \divide\count@\count\tw@ % TeX division truncates + \advance\dimen@-\count@\dimen\tw@ + % 1300sp is about 0.02pt. For comparison a rule default width is 0.4pt. + % (note that if \count@ holds 0, surely \dimen@>1300sp) + \ifdim\dimen@>1300sp \advance\count@\@ne \fi + % now \count@ holds the count L of needed "lines" + % and \sphinx@nbofrows holds the number N of rows + % we have L >= 1 and N >= 1 + % if L is a multiple of N, ... clear what to do ! + % else write L = qN + r, 1 <= r < N and we will + % arrange for each row to have enough space for: + % q+1 "lines" in each of the first r rows + % q "lines" in each of the (N-r) bottom rows + % for a total of (q+1) * r + q * (N-r) = q * N + r = L + % It is possible that q == 0. + \count\tw@\count@ + % the TeX division truncates + \divide\count\tw@\sphinx@nbofrows\relax + \count4\count\tw@ % q + \multiply\count\tw@\sphinx@nbofrows\relax + \advance\count@-\count\tw@ % r + \expandafter\xdef\csname sphinx@tablestrut_\sphinx@cellid\endcsname + {\noexpand\sphinx@tablestrut{\the\count4}{\the\count@}{\sphinx@cellid}}% + \dp\z@\z@ + % this will use the real height if it is >\ht\@arstrutbox + \sphinxtablestrut{\sphinx@cellid}\box\z@ + \endgroup % group was opened in \sphinxmultirow +}% +\newcommand*\sphinxtablestrut[1]{% + % #1 is a "cell_id", i.e. the id of a merged group of table cells + \csname sphinx@tablestrut_#1\endcsname +}% +% LaTeX typesets the table row by row, hence each execution can do +% an update for the next row. +\newcommand*\sphinx@tablestrut[3]{\begingroup + % #1 = q, #2 = (initially) r, #3 = cell_id, q+1 lines in first r rows + % if #2 = 0, create space for max(q,1) table lines + % if #2 > 0, create space for q+1 lines and decrement #2 + \leavevmode + \count@#1\relax + \ifnum#2=\z@ + \ifnum\count@=\z@\count@\@ne\fi + \else + % next row will be with a #2 decremented by one + \expandafter\xdef\csname sphinx@tablestrut_#3\endcsname + {\noexpand\sphinx@tablestrut{#1}{\the\numexpr#2-\@ne}{#3}}% + \advance\count@\@ne + \fi + \vrule\@height\ht\@arstrutbox + \@depth\dimexpr\count@\ht\@arstrutbox+\count@\dp\@arstrutbox-\ht\@arstrutbox\relax + \@width\z@ + \endgroup + % we need this to avoid colour panels hiding bottom parts of multirow text + \sphinx@hack@CT +}% +\endinput +%% +%% End of file `sphinxmulticell.sty'. diff --git a/docs/_build/linkcheck/output.txt b/docs/_build/linkcheck/output.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..e742fdc --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,192 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +import os +import sys +import django +sys.path.insert(0, os.path.abspath('..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'coopeV3.settings' +django.setup() + +# -- Project information ----------------------------------------------------- + +project = 'CoopeV3' +copyright = '2019, Yoann Pietri' +author = 'Yoann Pietri' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = '3.4.0' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.doctest', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = 'en' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} +html_sidebars = { '**': ['globaltoc.html', 'relations.html', 'sourcelink.html', 'searchbox.html'] } + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'CoopeV3doc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'CoopeV3.tex', 'CoopeV3 Documentation', + 'Yoann Pietri', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'coopev3', 'CoopeV3 Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'CoopeV3', 'CoopeV3 Documentation', + author, 'CoopeV3', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..200f589 --- /dev/null +++ b/docs/index.rst @@ -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` diff --git a/docs/modules/admin.rst b/docs/modules/admin.rst new file mode 100644 index 0000000..d81a271 --- /dev/null +++ b/docs/modules/admin.rst @@ -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: diff --git a/docs/modules/django_tex.rst b/docs/modules/django_tex.rst new file mode 100644 index 0000000..c18bf26 --- /dev/null +++ b/docs/modules/django_tex.rst @@ -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: diff --git a/docs/modules/forms.rst b/docs/modules/forms.rst new file mode 100644 index 0000000..d6e79bd --- /dev/null +++ b/docs/modules/forms.rst @@ -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: diff --git a/docs/modules/models.rst b/docs/modules/models.rst new file mode 100644 index 0000000..6830c9c --- /dev/null +++ b/docs/modules/models.rst @@ -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: diff --git a/docs/modules/utils.rst b/docs/modules/utils.rst new file mode 100644 index 0000000..eb2f398 --- /dev/null +++ b/docs/modules/utils.rst @@ -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: diff --git a/docs/modules/views.rst b/docs/modules/views.rst new file mode 100644 index 0000000..6d068b4 --- /dev/null +++ b/docs/modules/views.rst @@ -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: diff --git a/gestion/admin.py b/gestion/admin.py index 253981b..f2deb46 100644 --- a/gestion/admin.py +++ b/gestion/admin.py @@ -3,12 +3,90 @@ from simple_history.admin import SimpleHistoryAdmin from .models import Reload, Refund, Product, Keg, ConsumptionHistory, KegHistory, Consumption, Menu, MenuHistory -admin.site.register(Reload, SimpleHistoryAdmin) -admin.site.register(Refund, SimpleHistoryAdmin) -admin.site.register(Product, SimpleHistoryAdmin) -admin.site.register(Keg, SimpleHistoryAdmin) -admin.site.register(ConsumptionHistory, SimpleHistoryAdmin) -admin.site.register(KegHistory, SimpleHistoryAdmin) -admin.site.register(Consumption, SimpleHistoryAdmin) -admin.site.register(Menu, SimpleHistoryAdmin) -admin.site.register(MenuHistory, SimpleHistoryAdmin) \ No newline at end of file +class ConsumptionAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Consumptions `. + """ + list_display = ('customer', 'product', 'quantity') + ordering = ('-quantity', ) + search_fields = ('customer', 'product') + +class ConsumptionHistoryAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Consumption Histories `. + """ + list_display = ('customer', 'product', 'quantity', 'paymentMethod', 'date', 'amount') + ordering = ('-date', ) + search_fields = ('customer', 'product') + list_filter = ('paymentMethod',) + +class KegAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Kegs `. + """ + list_display = ('name', 'stockHold', 'capacity', 'is_active') + ordering = ('name', ) + search_fields = ('name',) + list_filter = ('capacity', 'is_active') + +class KegHistoryAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Keg Histories `. + """ + list_display = ('keg', 'openingDate', 'closingDate', 'isCurrentKegHistory', 'quantitySold') + ordering = ('-openingDate', 'quantitySold') + search_fields = ('keg',) + list_filter = ('isCurrentKegHistory', 'keg') + +class MenuHistoryAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Menu Histories `. + """ + list_display = ('customer', 'menu', 'paymentMethod', 'date', 'quantity', 'amount') + ordering = ('-date',) + search_fields = ('customer', 'menu') + +class MenuAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Menu `. + """ + list_display = ('name', 'amount', 'is_active') + ordering = ('name', 'amount') + search_fields = ('name',) + list_filter = ('is_active', ) + +class ProductAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Products `. + """ + list_display = ('name', 'amount', 'is_active', 'category', 'adherentRequired', 'stockHold', 'stockBar', 'volume', 'deg') + ordering = ('name', 'amount', 'stockHold', 'stockBar', 'deg') + search_fields = ('name',) + list_filter = ('is_active', 'adherentRequired', 'category') + +class ReloadAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Reloads `. + """ + list_display = ('customer', 'amount', 'date', 'PaymentMethod') + ordering = ('-date', 'amount', 'customer') + search_fields = ('customer',) + list_filter = ('PaymentMethod', ) + +class RefundAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Refunds `. + """ + list_display = ('customer', 'amount', 'date') + ordering = ('-date', 'amount', 'customer') + search_fields = ('customer',) + +admin.site.register(Reload, ReloadAdmin) +admin.site.register(Refund, RefundAdmin) +admin.site.register(Product, ProductAdmin) +admin.site.register(Keg, KegAdmin) +admin.site.register(ConsumptionHistory, ConsumptionHistoryAdmin) +admin.site.register(KegHistory, KegHistoryAdmin) +admin.site.register(Consumption, ConsumptionAdmin) +admin.site.register(Menu, MenuAdmin) +admin.site.register(MenuHistory, MenuHistoryAdmin) \ No newline at end of file diff --git a/gestion/environment.py b/gestion/environment.py index 02dc72e..7142e20 100644 --- a/gestion/environment.py +++ b/gestion/environment.py @@ -1,6 +1,9 @@ from django_tex.environment import environment def latex_safe(value): + """ + Filter that replace latex forbidden character by safe character + """ return str(value).replace('_', '\_').replace('$', '\$').replace('&', '\&').replace('#', '\#').replace('{', '\{').replace('}','\}') diff --git a/gestion/forms.py b/gestion/forms.py index eb11709..db7d602 100644 --- a/gestion/forms.py +++ b/gestion/forms.py @@ -6,9 +6,11 @@ from dal import autocomplete from .models import Reload, Refund, Product, Keg, Menu from preferences.models import PaymentMethod -from coopeV3.widgets import SearchField class ReloadForm(forms.ModelForm): + """ + A form to create a :class:`~gestion.models.Reload`. + """ def __init__(self, *args, **kwargs): super(ReloadForm, self).__init__(*args, **kwargs) self.fields['PaymentMethod'].queryset = PaymentMethod.objects.filter(is_usable_in_reload=True).filter(is_active=True) @@ -20,6 +22,9 @@ class ReloadForm(forms.ModelForm): class RefundForm(forms.ModelForm): + """ + A form to create a :class:`~gestion.models.Refund`. + """ class Meta: model = Refund fields = ("customer", "amount") @@ -27,12 +32,18 @@ class RefundForm(forms.ModelForm): class ProductForm(forms.ModelForm): + """ + A form to create and edit a :class:`~gestion.models.Product`. + """ class Meta: model = Product fields = "__all__" widgets = {'amount': forms.TextInput} class KegForm(forms.ModelForm): + """ + A form to create and edit a :class:`~gestion.models.Keg`. + """ def __init__(self, *args, **kwargs): super(KegForm, self).__init__(*args, **kwargs) self.fields['pinte'].queryset = Product.objects.filter(category=Product.P_PRESSION) @@ -45,32 +56,56 @@ class KegForm(forms.ModelForm): widgets = {'amount': forms.TextInput} class MenuForm(forms.ModelForm): + """ + A form to create and edit a :class:`~gestion.models.Menu`. + """ class Meta: model = Menu fields = "__all__" widgets = {'amount': forms.TextInput} class SearchProductForm(forms.Form): + """ + A form to search a :class:`~gestion.models.Product`. + """ product = forms.ModelChoiceField(queryset=Product.objects.all(), required=True, label="Produit", widget=autocomplete.ModelSelect2(url='gestion:products-autocomplete', attrs={'data-minimum-input-length':2})) class SearchMenuForm(forms.Form): + """ + A form to search a :class:`~gestion.models.Menu`. + """ menu = forms.ModelChoiceField(queryset=Menu.objects.all(), required=True, label="Menu", widget=autocomplete.ModelSelect2(url='gestion:menus-autocomplete', attrs={'data-minimum-input-length':2})) class GestionForm(forms.Form): + """ + A form for the :func:`~gestion.views.manage` view. + """ client = forms.ModelChoiceField(queryset=User.objects.filter(is_active=True), required=True, label="Client", widget=autocomplete.ModelSelect2(url='users:active-users-autocomplete', attrs={'data-minimum-input-length':2})) product = forms.ModelChoiceField(queryset=Product.objects.filter(is_active=True), required=True, label="Produit", widget=autocomplete.ModelSelect2(url='gestion:active-products-autocomplete', attrs={'data-minimum-input-length':2})) class SelectPositiveKegForm(forms.Form): + """ + A form to search a :class:`~gestion.models.Keg` with a positive stockhold. + """ keg = forms.ModelChoiceField(queryset=Keg.objects.filter(stockHold__gt = 0), required=True, label="Fût", widget=autocomplete.ModelSelect2(url='gestion:kegs-positive-autocomplete')) class SelectActiveKegForm(forms.Form): + """ + A form to search an active :class:`~gestion.models.Keg`. + """ keg = forms.ModelChoiceField(queryset=Keg.objects.filter(is_active = True), required=True, label="Fût", widget=autocomplete.ModelSelect2(url='gestion:kegs-active-autocomplete')) class PinteForm(forms.Form): + """ + A form to free :class:`Pints `. + """ ids = forms.CharField(widget=forms.Textarea, label="Numéros", help_text="Numéros séparés par un espace. Laissez vide pour utiliser le range.", required=False) begin = forms.IntegerField(label="Début", help_text="Début du range", required=False) end = forms.IntegerField(label="Fin", help_text="Fin du range", required=False) class GenerateReleveForm(forms.Form): + """ + A form to generate a releve. + """ begin = forms.DateTimeField(label="Date de début") end = forms.DateTimeField(label="Date de fin") \ No newline at end of file diff --git a/gestion/migrations/0006_auto_20190227_0859.py b/gestion/migrations/0006_auto_20190227_0859.py new file mode 100644 index 0000000..05c16ac --- /dev/null +++ b/gestion/migrations/0006_auto_20190227_0859.py @@ -0,0 +1,165 @@ +# Generated by Django 2.1 on 2019-02-27 07:59 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('gestion', '0005_auto_20190106_0018'), + ] + + operations = [ + migrations.AlterField( + model_name='consumption', + name='customer', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='consumption_global_taken', to=settings.AUTH_USER_MODEL, verbose_name='Client'), + ), + migrations.AlterField( + model_name='consumption', + name='product', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='gestion.Product', verbose_name='Produit'), + ), + migrations.AlterField( + model_name='consumption', + name='quantity', + field=models.PositiveIntegerField(default=0, verbose_name='Quantité'), + ), + migrations.AlterField( + model_name='consumptionhistory', + name='amount', + field=models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Montant'), + ), + migrations.AlterField( + model_name='consumptionhistory', + name='customer', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='consumption_taken', to=settings.AUTH_USER_MODEL, verbose_name='Client'), + ), + migrations.AlterField( + model_name='consumptionhistory', + name='paymentMethod', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='preferences.PaymentMethod', verbose_name='Moyen de paiement'), + ), + migrations.AlterField( + model_name='consumptionhistory', + name='product', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='gestion.Product', verbose_name='Produit'), + ), + migrations.AlterField( + model_name='consumptionhistory', + name='quantity', + field=models.PositiveIntegerField(default=0, verbose_name='Quantité'), + ), + migrations.AlterField( + model_name='historicalconsumption', + name='quantity', + field=models.PositiveIntegerField(default=0, verbose_name='Quantité'), + ), + migrations.AlterField( + model_name='historicalconsumptionhistory', + name='amount', + field=models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Montant'), + ), + migrations.AlterField( + model_name='historicalconsumptionhistory', + name='quantity', + field=models.PositiveIntegerField(default=0, verbose_name='Quantité'), + ), + migrations.AlterField( + model_name='historicalkeghistory', + name='amountSold', + field=models.DecimalField(decimal_places=2, default=0, max_digits=5, verbose_name='Somme vendue'), + ), + migrations.AlterField( + model_name='historicalkeghistory', + name='closingDate', + field=models.DateTimeField(blank=True, null=True, verbose_name='Date fermeture'), + ), + migrations.AlterField( + model_name='historicalkeghistory', + name='isCurrentKegHistory', + field=models.BooleanField(default=True, verbose_name='Actuel'), + ), + migrations.AlterField( + model_name='historicalkeghistory', + name='openingDate', + field=models.DateTimeField(blank=True, editable=False, verbose_name='Date ouverture'), + ), + migrations.AlterField( + model_name='historicalkeghistory', + name='quantitySold', + field=models.DecimalField(decimal_places=2, default=0, max_digits=5, verbose_name='Quantité vendue'), + ), + migrations.AlterField( + model_name='historicalmenuhistory', + name='amount', + field=models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Montant'), + ), + migrations.AlterField( + model_name='historicalmenuhistory', + name='quantity', + field=models.PositiveIntegerField(default=0, verbose_name='Quantité'), + ), + migrations.AlterField( + model_name='historicalproduct', + name='category', + field=models.CharField(choices=[('PP', 'Pinte Pression'), ('DP', 'Demi Pression'), ('GP', 'Galopin pression'), ('BT', 'Bouteille'), ('SO', 'Soft'), ('FO', 'En-cas'), ('PA', 'Ingredients panini')], default='FO', max_length=2, verbose_name='Catégorie'), + ), + migrations.AlterField( + model_name='keghistory', + name='amountSold', + field=models.DecimalField(decimal_places=2, default=0, max_digits=5, verbose_name='Somme vendue'), + ), + migrations.AlterField( + model_name='keghistory', + name='closingDate', + field=models.DateTimeField(blank=True, null=True, verbose_name='Date fermeture'), + ), + migrations.AlterField( + model_name='keghistory', + name='isCurrentKegHistory', + field=models.BooleanField(default=True, verbose_name='Actuel'), + ), + migrations.AlterField( + model_name='keghistory', + name='keg', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='gestion.Keg', verbose_name='Fût'), + ), + migrations.AlterField( + model_name='keghistory', + name='openingDate', + field=models.DateTimeField(auto_now_add=True, verbose_name='Date ouverture'), + ), + migrations.AlterField( + model_name='keghistory', + name='quantitySold', + field=models.DecimalField(decimal_places=2, default=0, max_digits=5, verbose_name='Quantité vendue'), + ), + migrations.AlterField( + model_name='menuhistory', + name='amount', + field=models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Montant'), + ), + migrations.AlterField( + model_name='menuhistory', + name='customer', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='menu_taken', to=settings.AUTH_USER_MODEL, verbose_name='Client'), + ), + migrations.AlterField( + model_name='menuhistory', + name='paymentMethod', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='preferences.PaymentMethod', verbose_name='Moyen de paiement'), + ), + migrations.AlterField( + model_name='menuhistory', + name='quantity', + field=models.PositiveIntegerField(default=0, verbose_name='Quantité'), + ), + migrations.AlterField( + model_name='product', + name='category', + field=models.CharField(choices=[('PP', 'Pinte Pression'), ('DP', 'Demi Pression'), ('GP', 'Galopin pression'), ('BT', 'Bouteille'), ('SO', 'Soft'), ('FO', 'En-cas'), ('PA', 'Ingredients panini')], default='FO', max_length=2, verbose_name='Catégorie'), + ), + ] diff --git a/gestion/models.py b/gestion/models.py index 9921418..116a85e 100644 --- a/gestion/models.py +++ b/gestion/models.py @@ -8,7 +8,7 @@ from django.core.exceptions import ValidationError class Product(models.Model): """ - Stores a product + Stores a product. """ P_PRESSION = 'PP' D_PRESSION = 'DP' @@ -23,39 +23,80 @@ class Product(models.Model): (G_PRESSION, "Galopin pression"), (BOTTLE, "Bouteille"), (SOFT, "Soft"), - (FOOD, "Bouffe autre que panini"), - (PANINI, "Bouffe pour panini"), + (FOOD, "En-cas"), + (PANINI, "Ingredients panini"), ) class Meta: verbose_name = "Produit" name = models.CharField(max_length=40, verbose_name="Nom", unique=True) + """ + The name of the product. + """ amount = models.DecimalField(max_digits=5, decimal_places=2, verbose_name="Prix de vente", validators=[MinValueValidator(0)]) + """ + The price of the product. + """ stockHold = models.IntegerField(default=0, verbose_name="Stock en soute") + """ + Number of product in the hold. + """ stockBar = models.IntegerField(default=0, verbose_name="Stock en bar") + """ + Number of product at the bar. + """ barcode = models.CharField(max_length=20, unique=True, verbose_name="Code barre") + """ + The barcode of the product. + """ category = models.CharField(max_length=2, choices=TYPEINPUT_CHOICES_CATEGORIE, default=FOOD, verbose_name="Catégorie") + """ + The category of the product + """ needQuantityButton = models.BooleanField(default=False, verbose_name="Bouton quantité") + """ + If True, a javascript quantity button will be displayed + """ is_active = models.BooleanField(default=True, verbose_name="Actif") + """ + If True, will be displayed on the :func:`gestion.views.manage` view. + """ volume = models.PositiveIntegerField(default=0) + """ + The volume, if relevant, of the product + """ deg = models.DecimalField(default=0,max_digits=5, decimal_places=2, verbose_name="Degré", validators=[MinValueValidator(0)]) + """ + Degree of alcohol, if relevant + """ adherentRequired = models.BooleanField(default=True, verbose_name="Adhérent requis") + """ + If True, only adherents will be able to buy this product + """ showingMultiplier = models.PositiveIntegerField(default=1) + """ + On the graphs on :func:`users.views.profile` view, the number of total consumptions is divised by the showingMultiplier + """ history = HistoricalRecords() def __str__(self): return self.name def user_ranking(self, pk): + """ + Return the user ranking for the product + """ user = User.objects.get(pk=pk) - consumptions = ConsumptionHistory.objects.filter(customer=user).filter(product=self) - # add menu - nb = 0 - for consumption in consumptions: - nb += consumption.quantity - return (user, nb) + consumptions = Consumption.objects.filter(customer=user).filter(product=self) + if consumptions: + return (user, consumptions[0].quantity) + else: + return (user, 0) @property def ranking(self): + """ + Get the first 25 users with :func:`~gestion.models.user_ranking` + """ users = User.objects.all() ranking = [self.user_ranking(user.pk) for user in users] ranking.sort(key=lambda x:x[1], reverse=True) @@ -89,7 +130,7 @@ def isGalopin(id): class Keg(models.Model): """ - Stores a keg + Stores a keg. """ class Meta: verbose_name = "Fût" @@ -99,14 +140,41 @@ class Keg(models.Model): ) name = models.CharField(max_length=20, unique=True, verbose_name="Nom") + """ + The name of the keg. + """ stockHold = models.IntegerField(default=0, verbose_name="Stock en soute") + """ + The number of this keg in the hold. + """ barcode = models.CharField(max_length=20, unique=True, verbose_name="Code barre") + """ + The barcode of the keg. + """ amount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name="Prix du fût", validators=[MinValueValidator(0)]) + """ + The price of the keg. + """ capacity = models.IntegerField(default=30, verbose_name="Capacité (L)") + """ + The capacity, in liters, of the keg. + """ pinte = models.ForeignKey(Product, on_delete=models.PROTECT, related_name="futp", validators=[isPinte]) + """ + The related :class:`~gestion.models.Product` for pint. + """ demi = models.ForeignKey(Product, on_delete=models.PROTECT, related_name="futd", validators=[isDemi]) + """ + The related :class:`~gestion.models.Product` for demi. + """ galopin = models.ForeignKey(Product, on_delete=models.PROTECT, related_name="futg", validators=[isGalopin],null=True, blank=True) + """ + The related :class:`~gestion.models.Product` for galopin. + """ is_active = models.BooleanField(default=False, verbose_name="Actif") + """ + If True, will be displayed on :func:`~gestion.views.manage` view + """ history = HistoricalRecords() def __str__(self): @@ -114,17 +182,35 @@ class Keg(models.Model): class KegHistory(models.Model): """ - Stores a keg history, related to :model:`gestion.Keg` + Stores a keg history, related to :class:`~gestion.models.Keg`. """ class Meta: verbose_name = "Historique de fût" - keg = models.ForeignKey(Keg, on_delete=models.PROTECT) - openingDate = models.DateTimeField(auto_now_add=True) - quantitySold = models.DecimalField(decimal_places=2, max_digits=5, default=0) - amountSold = models.DecimalField(decimal_places=2, max_digits=5, default=0) - closingDate = models.DateTimeField(null=True, blank=True) - isCurrentKegHistory = models.BooleanField(default=True) + keg = models.ForeignKey(Keg, on_delete=models.PROTECT, verbose_name="Fût") + """ + The :class:`~gestion.models.Keg` instance. + """ + openingDate = models.DateTimeField(auto_now_add=True, verbose_name="Date ouverture") + """ + The date when the keg was opened. + """ + quantitySold = models.DecimalField(decimal_places=2, max_digits=5, default=0, verbose_name="Quantité vendue") + """ + The quantity, in liters, sold. + """ + amountSold = models.DecimalField(decimal_places=2, max_digits=5, default=0, verbose_name="Somme vendue") + """ + The quantity, in euros, sold. + """ + closingDate = models.DateTimeField(null=True, blank=True, verbose_name="Date fermeture") + """ + The date when the keg was closed + """ + isCurrentKegHistory = models.BooleanField(default=True, verbose_name="Actuel") + """ + If True, it corresponds to the current Keg history of :class:`~gestion.models.Keg` instance. + """ history = HistoricalRecords() def __str__(self): @@ -137,16 +223,31 @@ class KegHistory(models.Model): class Reload(models.Model): """ - Stores reloads + Stores reloads. """ class Meta: verbose_name = "Rechargement" customer = models.ForeignKey(User, on_delete=models.PROTECT, related_name="reload_taken", verbose_name="Client") + """ + Client (:class:`django.contrib.auth.models.User`). + """ amount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name="Montant", validators=[MinValueValidator(0)]) + """ + Amount of the reload. + """ PaymentMethod = models.ForeignKey(PaymentMethod, on_delete=models.PROTECT, verbose_name="Moyen de paiement") + """ + :class:`Payment Method ` of the reload. + """ coopeman = models.ForeignKey(User, on_delete=models.PROTECT, related_name="reload_realized") + """ + Coopeman (:class:`django.contrib.auth.models.User`) who collected the reload. + """ date = models.DateTimeField(auto_now_add=True) + """ + Date of the reload. + """ history = HistoricalRecords() def __str__(self): @@ -154,15 +255,27 @@ class Reload(models.Model): class Refund(models.Model): """ - Stores refunds + Stores refunds. """ class Meta: verbose_name = "Remboursement" date = models.DateTimeField(auto_now_add=True) + """ + Date of the refund + """ customer = models.ForeignKey(User, on_delete=models.PROTECT, related_name="refund_taken", verbose_name="Client") + """ + Client (:class:`django.contrib.auth.models.User`). + """ amount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name="Montant", validators=[MinValueValidator(0)]) + """ + Amount of the refund. + """ coopeman = models.ForeignKey(User, on_delete=models.PROTECT, related_name="refund_realized") + """ + Coopeman (:class:`django.contrib.auth.models.User`) who realized the refund. + """ history = HistoricalRecords() def __str__(self): @@ -171,13 +284,28 @@ class Refund(models.Model): class Menu(models.Model): """ - Stores menus + Stores menus. """ name = models.CharField(max_length=255, verbose_name="Nom") + """ + Name of the menu. + """ amount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name="Montant", validators=[MinValueValidator(0)]) + """ + Price of the menu. + """ barcode = models.CharField(max_length=20, unique=True, verbose_name="Code barre") + """ + Barcode of the menu. + """ articles = models.ManyToManyField(Product, verbose_name="Produits") + """ + Stores :class:`Products ` contained in the menu + """ is_active = models.BooleanField(default=False, verbose_name="Actif") + """ + If True, the menu will be displayed on the :func:`gestion.views.manage` view + """ history = HistoricalRecords() def __str__(self): @@ -185,6 +313,9 @@ class Menu(models.Model): @property def adherent_required(self): + """ + Test if the menu contains a restricted :class:`~gestion.models.Product` + """ res = False for article in self.articles.all(): res = res or article.adherentRequired @@ -192,18 +323,37 @@ class Menu(models.Model): class MenuHistory(models.Model): """ - Stores MenuHistory related to :model:`gestion.Menu` + Stores MenuHistory related to :class:`~gestion.models.Menu`. """ class Meta: verbose_name = "Historique de menu" - customer = models.ForeignKey(User, on_delete=models.PROTECT, related_name="menu_taken") - quantity = models.PositiveIntegerField(default=0) - paymentMethod = models.ForeignKey(PaymentMethod, on_delete=models.PROTECT) + customer = models.ForeignKey(User, on_delete=models.PROTECT, related_name="menu_taken", verbose_name="Client") + + quantity = models.PositiveIntegerField(default=0, verbose_name="Quantité") + """ + Client (:class:`django.contrib.auth.models.User`). + """ + paymentMethod = models.ForeignKey(PaymentMethod, on_delete=models.PROTECT, verbose_name="Moyen de paiement") + """ + :class:`Payment Method ` of the Menu purchased. + """ date = models.DateTimeField(auto_now_add=True) + """ + Date of the purhcase. + """ menu = models.ForeignKey(Menu, on_delete=models.PROTECT) - amount = models.DecimalField(max_digits=7, decimal_places=2, default=0) + """ + :class:`gestion.models.Menu` purchased. + """ + amount = models.DecimalField(max_digits=7, decimal_places=2, default=0, verbose_name="Montant") + """ + Price of the purchase. + """ coopeman = models.ForeignKey(User, on_delete=models.PROTECT, related_name="menu_selled") + """ + Coopeman (:class:django.contrib.auth.models.User`) who collected the money. + """ history = HistoricalRecords() def __str__(self): @@ -211,18 +361,39 @@ class MenuHistory(models.Model): class ConsumptionHistory(models.Model): """ - Stores consumption history related to :model:`gestion.Product` + Stores consumption history related to Product """ class Meta: verbose_name = "Consommation" - customer = models.ForeignKey(User, on_delete=models.PROTECT, related_name="consumption_taken") - quantity = models.PositiveIntegerField(default=0) - paymentMethod = models.ForeignKey(PaymentMethod, on_delete=models.PROTECT) + customer = models.ForeignKey(User, on_delete=models.PROTECT, related_name="consumption_taken", verbose_name="Client") + """ + Client (:class:`django.contrib.auth.models.User`). + """ + quantity = models.PositiveIntegerField(default=0, verbose_name="Quantité") + """ + Quantity of :attr:`gestion.models.ConsumptionHistory.product` taken. + """ + paymentMethod = models.ForeignKey(PaymentMethod, on_delete=models.PROTECT, verbose_name="Moyen de paiement") + """ + :class:`Payment Method ` of the product purchased. + """ date = models.DateTimeField(auto_now_add=True) - product = models.ForeignKey(Product, on_delete=models.PROTECT) - amount = models.DecimalField(max_digits=7, decimal_places=2, default=0) + """ + Date of the purhcase. + """ + product = models.ForeignKey(Product, on_delete=models.PROTECT, verbose_name="Produit") + """ + :class:`gestion.models.product` purchased. + """ + amount = models.DecimalField(max_digits=7, decimal_places=2, default=0, verbose_name="Montant") + """ + Price of the purchase. + """ coopeman = models.ForeignKey(User, on_delete=models.PROTECT, related_name="consumption_selled") + """ + Coopeman (:class:django.contrib.auth.models.User`) who collected the money. + """ history = HistoricalRecords() def __str__(self): @@ -230,14 +401,23 @@ class ConsumptionHistory(models.Model): class Consumption(models.Model): """ - Stores total consumptions + Stores total consumptions. """ class Meta: verbose_name = "Consommation totale" - customer = models.ForeignKey(User, on_delete=models.PROTECT, related_name="consumption_global_taken") - product = models.ForeignKey(Product, on_delete=models.PROTECT) - quantity = models.PositiveIntegerField(default=0) + customer = models.ForeignKey(User, on_delete=models.PROTECT, related_name="consumption_global_taken", verbose_name="Client") + """ + Client (:class:`django.contrib.auth.models.User`). + """ + product = models.ForeignKey(Product, on_delete=models.PROTECT, verbose_name="Produit") + """ + A :class:`gestion.models.Product` instance. + """ + quantity = models.PositiveIntegerField(default=0, verbose_name="Quantité") + """ + The total number of :attr:`gestion.models.Consumption.product` consumed by the :attr:`gestion.models.Consumption.consumer`. + """ history = HistoricalRecords() def __str__(self): @@ -248,6 +428,15 @@ class Pinte(models.Model): Stores a physical pinte """ current_owner = models.ForeignKey(User, on_delete=models.PROTECT, null=True, default=None, related_name="pintes_owned_currently") + """ + The current owner (:class:`django.contrib.auth.models.User`). + """ previous_owner = models.ForeignKey(User, on_delete=models.PROTECT, null=True, default=None, related_name="pintes_owned_previously") + """ + The previous owner (:class:`django.contrib.auth.models.User`). + """ last_update_date = models.DateTimeField(auto_now=True) + """ + The last update date + """ history = HistoricalRecords() diff --git a/gestion/views.py b/gestion/views.py index d0ed794..3008704 100644 --- a/gestion/views.py +++ b/gestion/views.py @@ -28,43 +28,7 @@ from users.models import CotisationHistory @acl_or('gestion.add_consumptionhistory', 'gestion.add_reload', 'gestion.add_refund') def manage(request): """ - Display the manage page - - **Context** - - ``gestion_form`` - The manage form - - ``reload_form`` - The :model:`gestion.Reload` form - - ``refund_form`` - The :model:`gestion.Refund` form - - ``bieresPression`` - A list of active :model:`gestion.Product` corresponding to draft beers - - ``bieresBouteille`` - A list of active :model:`gestion.Product` corresponding to bottle beers - - ``panini`` - A list of active :model:`gestion.Product` corresponding to panini items - - ``food`` - A list of active :model:`gestion.Product` corresponding to non-panini items - - ``soft`` - A list of active :model:`gestion.Product` correspond to non alcoholic beverage - - ``menus`` - The list of active :model:`gestion.Menu` - - ``pay_buttons`` - List of :model:`paymentMethod` - - **Template** - - :template:`gestion/manage.html` + Displays the manage view. """ pay_buttons = PaymentMethod.objects.filter(is_active=True) gestion_form = GestionForm(request.POST or None) @@ -108,7 +72,7 @@ def manage(request): @permission_required('gestion.add_consumptionhistory') def order(request): """ - Process the given order. Called by a js/JQuery script. + Processes the given order. The order is passed through POST. """ error_message = "Impossible d'effectuer la transaction. Toute opération abandonnée. Veuillez contacter le président ou le trésorier" try: @@ -241,7 +205,7 @@ def order(request): @permission_required('gestion.add_reload') def reload(request): """ - Process a reload request + Displays a :class:`Reload form `. """ reload_form = ReloadForm(request.POST or None) if reload_form.is_valid(): @@ -262,7 +226,10 @@ def reload(request): @permission_required('gestion.delete_reload') def cancel_reload(request, pk): """ - Cancel a reload + Delete a :class:`gestion.models.Reload`. + + pk + The primary key of the reload to delete. """ reload_entry = get_object_or_404(Reload, pk=pk) if reload_entry.customer.profile.balance >= reload_entry.amount: @@ -280,7 +247,7 @@ def cancel_reload(request, pk): @permission_required('gestion.add_refund') def refund(request): """ - Process a refund request + Displays a :class:`Refund form `. """ refund_form = RefundForm(request.POST or None) if refund_form.is_valid(): @@ -304,10 +271,10 @@ def refund(request): @permission_required('gestion.delete_consumptionhistory') def cancel_consumption(request, pk): """ - Cancel a :model:`gestion.ConsumptionHistory` + Delete a :class:`consumption history `. - ``pk`` - The primary key of the :model:`gestion.ConsumptionHistory` that have to be cancelled + pk + The primary key of the consumption history to delete. """ consumption = get_object_or_404(ConsumptionHistory, pk=pk) user = consumption.customer @@ -326,10 +293,10 @@ def cancel_consumption(request, pk): @permission_required('gestion.delete_menuhistory') def cancel_menu(request, pk): """ - Cancel a :model:`gestion.MenuHistory` + Delete a :class:`menu history `. - ``pk`` - The primary key of the :model:`gestion.MenuHistory` that have to be cancelled + pk + The primary key of the menu history to delete. """ menu_history = get_object_or_404(MenuHistory, pk=pk) user = menu_history.customer @@ -350,11 +317,7 @@ def cancel_menu(request, pk): @acl_or('gestion.add_product', 'gestion.view_product', 'gestion.add_keg', 'gestion.view_keg', 'gestion.change_keg', 'gestion.view_menu', 'gestion.add_menu') def productsIndex(request): """ - Display the products manage static page - - **Template** - - :template:`gestion/products_index.html` + Displays the products manage static page. """ return render(request, "gestion/products_index.html") @@ -363,22 +326,7 @@ def productsIndex(request): @permission_required('gestion.add_product') def addProduct(request): """ - Form to add a :model:`gestion.Product` - - **Context** - - ``form`` - The ProductForm instance - - ``form_title`` - The title for the form template - - ``form_button`` - The text of the button for the form template - - **Template** - - :template:`form.html` + Displays a :class:`gestion.forms.ProductForm` to add a product. """ form = ProductForm(request.POST or None) if(form.is_valid()): @@ -392,25 +340,10 @@ def addProduct(request): @permission_required('gestion.change_product') def editProduct(request, pk): """ - Form to edit a :model:`gestion.Product` + Displays a :class:`gestion.forms.ProductForm` to edit a product. - ``pk`` - The primary key of the requested :model:`gestion.Product` - - **Context** - - ``form`` - The ProductForm instance - - ``form_title`` - The title for the form template - - ``form_button`` - The text of the button for the form template - - **Template** - - :template:`form.html` + pk + The primary key of the the :class:`gestion.models.Product` to edit. """ product = get_object_or_404(Product, pk=pk) form = ProductForm(request.POST or None, instance=product) @@ -425,16 +358,7 @@ def editProduct(request, pk): @permission_required('gestion.view_product') def productsList(request): """ - Display the list of :model:`gestion.Product` - - **Context** - - ``products`` - The list of :model:`gestion.Product` - - **Template** - - :template:`gestion/products_list.html` + Display the list of :class:`products `. """ products = Product.objects.all() return render(request, "gestion/products_list.html", {"products": products}) @@ -444,22 +368,7 @@ def productsList(request): @permission_required('gestion.view_product') def searchProduct(request): """ - Form to search a :model:`gestion.Product` - - **Context** - - ``form`` - The SearchProductForm instance - - ``form_title`` - The title for the form template - - ``form_button`` - The text of the button for the form template - - **Template** - - :template:`form.html` + Displays a :class:`gestion.forms.SearchProduct` to search a :class:`gestion.models.Product`. """ form = SearchProductForm(request.POST or None) if(form.is_valid()): @@ -471,19 +380,10 @@ def searchProduct(request): @permission_required('gestion.view_product') def productProfile(request, pk): """ - Display the profile of a :model:`gestion.Product` + Displays the profile of a :class:`gestion.models.Product`. - ``pk`` - The primary key of the requested :model:`gestion.Product` - - **Context** - - ``product`` - The :model:`gestion.Product` instance - - **Template** - - :model:`gestion/product_profile.html` + pk + The primary key of the :class:`gestion.models.Product` to display profile. """ product = get_object_or_404(Product, pk=pk) return render(request, "gestion/product_profile.html", {"product": product}) @@ -492,10 +392,10 @@ def productProfile(request, pk): @login_required def getProduct(request, pk): """ - Get :model:`gestion.Product` by barcode. Called by a js/JQuery script + Get a :class:`gestion.models.Product` by barcode and return it in JSON format. - ``pk`` - The requested pk + pk + The primary key of the :class:`gestion.models.Product` to get infos. """ product = Product.objects.get(pk=pk) if product.category == Product.P_PRESSION: @@ -510,10 +410,10 @@ def getProduct(request, pk): @permission_required('gestion.change_product') def switch_activate(request, pk): """ - Switch the active status of the requested :model:`gestion.Product` + Switch the active status of the requested :class:`gestion.models.Product`. - ``pk`` - The primary key of the :model:`gestion.Product` + pk + The primary key of the :class:`gestion.models.Product` to display profile. """ product = get_object_or_404(Product, pk=pk) product.is_active = 1 - product.is_active @@ -523,7 +423,7 @@ def switch_activate(request, pk): class ProductsAutocomplete(autocomplete.Select2QuerySetView): """ - Autocomplete view for all :model:`gestion.Product` + Autocomplete view for all :class:`products `. """ def get_queryset(self): qs = Product.objects.all() @@ -533,7 +433,7 @@ class ProductsAutocomplete(autocomplete.Select2QuerySetView): class ActiveProductsAutocomplete(autocomplete.Select2QuerySetView): """ - Autocomplete view for active :model:`gestion.Product` + Autocomplete view for active :class:`products `. """ def get_queryset(self): qs = Product.objects.filter(is_active=True) @@ -548,22 +448,7 @@ class ActiveProductsAutocomplete(autocomplete.Select2QuerySetView): @permission_required('gestion.add_keg') def addKeg(request): """ - Display a form to add a :model:`gestion.Keg` - - **Context** - - ``form`` - The KegForm instance - - ``form_title`` - The title for the :template:`form.html` template - - ``form_button`` - The text for the button in :template:`form.html` template - - **Template** - - :template:`form.html` + Displays a :class:`gestion.forms.KegForm` to add a :class:`gestion.models.Keg`. """ form = KegForm(request.POST or None) if(form.is_valid()): @@ -577,25 +462,10 @@ def addKeg(request): @permission_required('gestion.change_keg') def editKeg(request, pk): """ - Display a form to edit a :model:`gestion.Keg` + Displays a :class:`gestion.forms.KegForm` to edit a :class:`gestion.models.Keg`. - ``pk`` - The primary key of the requested :model:`gestion.Keg` - - **Context** - - ``form`` - The KegForm instance - - ``form_title`` - The title for the :template:`form.html` template - - ``form_button`` - The text for the button in :template:`form.html` template - - **Template** - - :template:`form.html` + pk + The primary key of the :class:`gestion.models.Keg` to edit. """ keg = get_object_or_404(Keg, pk=pk) form = KegForm(request.POST or None, instance=keg) @@ -610,22 +480,7 @@ def editKeg(request, pk): @permission_required('gestion.open_keg') def openKeg(request): """ - Display a form to open a :model:`gestion.Keg` - - **Context** - - ``form`` - The SelectPositiveKegForm instance - - ``form_title`` - The title for the :template:`form.html` template - - ``form_button`` - The text for the button in :template:`form.html` template - - **Template** - - :template:`form.html` + Displays a :class:`gestion.forms.SelectPositiveKegForm` to open a :class:`gestion.models.Keg`. """ form = SelectPositiveKegForm(request.POST or None) if(form.is_valid()): @@ -649,10 +504,10 @@ def openKeg(request): @permission_required('gestion.open_keg') def openDirectKeg(request, pk): """ - Open the requested :model:`gestion.Keg` + Opens a class:`gestion.models.Keg`. - ``pk`` - The primary key of the :model:`gestion.Keg` + pk + The primary key of the class:`gestion.models.Keg` to open. """ keg = get_object_or_404(Keg, pk=pk) if(keg.stockHold > 0): @@ -676,22 +531,7 @@ def openDirectKeg(request, pk): @permission_required('gestion.close_keg') def closeKeg(request): """ - Display a form to close a :model:`gestion.Keg` - - **Context** - - ``form`` - The SelectActiveKegForm instance - - ``form_title`` - The title for the :template:`form.html` template - - ``form_button`` - The text for the button in :template:`form.html` template - - **Template** - - :template:`form.html` + Displays a :class:`gestion.forms.SelectPositiveKegForm` to open a :class:`gestion.models.Keg`. """ form = SelectActiveKegForm(request.POST or None) if(form.is_valid()): @@ -711,10 +551,10 @@ def closeKeg(request): @permission_required('gestion.close_keg') def closeDirectKeg(request, pk): """ - Close the requested :model:`gestion.Keg` + Closes a class:`gestion.models.Keg`. - ``pk`` - The pk of the active :model:`gestion.Keg` + pk + The primary key of the class:`gestion.models.Keg` to open. """ keg = get_object_or_404(Keg, pk=pk) if keg.is_active: @@ -734,19 +574,7 @@ def closeDirectKeg(request, pk): @permission_required('gestion.view_keg') def kegsList(request): """ - Display the list of :model:`gestion.Keg` - - **Context** - - ``kegs_active`` - List of active :model:`gestion.Keg` - - ``kegs_inactive`` - List of inactive :model:`gestion.Keg` - - **Template** - - :template:`gestion/kegs_list.html` + Display the list of :class:`kegs `. """ kegs_active = KegHistory.objects.filter(isCurrentKegHistory=True) ids_actives = kegs_active.values('keg__id') @@ -758,22 +586,7 @@ def kegsList(request): @permission_required('gestion.view_keghistory') def kegH(request, pk): """ - Display the history of requested :model:`gestion.Keg` - - ``pk`` - The primary key of the requested :model:`gestion.Keg` - - **Context** - - ``keg`` - The :model:`gestion.Keg` instance - - ``kegHistory`` - List of :model:`gestion.KegHistory` attached to keg - - **Template** - - :template:`gestion/kegh.html` + Display the :class:`history ` of requested :class:`gestion.models.Keg`. """ keg = get_object_or_404(Keg, pk=pk) kegHistory = KegHistory.objects.filter(keg=keg).order_by('-openingDate') @@ -781,7 +594,7 @@ def kegH(request, pk): class KegActiveAutocomplete(autocomplete.Select2QuerySetView): """ - Autocomplete view for active :model:`gestion.Keg` + Autocomplete view for active :class:`kegs `. """ def get_queryset(self): qs = Keg.objects.filter(is_active = True) @@ -791,7 +604,7 @@ class KegActiveAutocomplete(autocomplete.Select2QuerySetView): class KegPositiveAutocomplete(autocomplete.Select2QuerySetView): """ - Autocomplete view for :model:`gestion.Keg` with positive stockHold + Autocomplete view for :class:`kegs ` with positive stockHold. """ def get_queryset(self): qs = Keg.objects.filter(stockHold__gt = 0) @@ -806,22 +619,7 @@ class KegPositiveAutocomplete(autocomplete.Select2QuerySetView): @permission_required('gestion.add_menu') def addMenu(request): """ - Display a form to add a :model:`gestion.Menu` - - **Context** - - ``form`` - The MenuForm instance - - ``form_title`` - The title for the :template:`form.html` template - - ``form_button`` - The text for the button in :template:`form.html` template - - **Template** - - :template:`form.html` + Display a :class:`gestion.forms.MenuForm` to add a :class:`gestion.models.Menu`. """ form = MenuForm(request.POST or None) extra_css = "#id_articles{height:200px;}" @@ -836,25 +634,10 @@ def addMenu(request): @permission_required('gestion.change_menu') def edit_menu(request, pk): """ - Display a form to edit a :model:`gestion.Menu` + Displays a :class:`gestion.forms.MenuForm` to edit a :class:`gestion.models.Menu`. - ``pk`` - The primary key of requested :model:`gestion.Menu` - - **Context** - - ``form`` - The MenuForm instance - - ``form_title`` - The title for the :template:`form.html` template - - ``form_button`` - The text for the button in :template:`form.html` template - - **Template** - - :template:`form.html` + pk + The primary key of the :class:`gestion.models.Menu` to edit. """ menu = get_object_or_404(Menu, pk=pk) form = MenuForm(request.POST or None, instance=menu) @@ -870,22 +653,7 @@ def edit_menu(request, pk): @permission_required('gestion.view_menu') def searchMenu(request): """ - Search a :model:`gestion.Menu` via SearchMenuForm instance - - **Context** - - ``form_entete`` - The form title. - - ``form`` - The SearchMenuForm instance. - - ``form_button`` - The content of the form button. - - **Template** - - :template:`form.html` + Displays a :class:`gestion.forms.SearchMenuForm` to search a :class:`gestion.models.Menu`. """ form = SearchMenuForm(request.POST or None) if(form.is_valid()): @@ -898,16 +666,7 @@ def searchMenu(request): @permission_required('gestion.view_menu') def menus_list(request): """ - Display the :model:`gestion.Menu` list - - **Context** - - ``menus`` - The list of :model:`gestion.Menu` instances - - **Template** - - :template:`gestion/menus_list.html` + Display the list of :class:`menus `. """ menus = Menu.objects.all() return render(request, "gestion/menus_list.html", {"menus": menus}) @@ -917,10 +676,7 @@ def menus_list(request): @permission_required('gestion.change_menu') def switch_activate_menu(request, pk): """ - Switch active status of a :model:`gestion.Menu` - - ``pk`` - The pk of the :model:`gestion.Menu` + Switch active status of a :class:`gestion.models.Menu`. """ menu = get_object_or_404(Menu, pk=pk) menu.is_active = 1 - menu.is_active @@ -933,10 +689,10 @@ def switch_activate_menu(request, pk): @permission_required('gestion.view_menu') def get_menu(request, pk): """ - Search :model:`gestion.Menu` by barcode + Get a :class:`gestion.models.Menu` by pk and return it in JSON format. - ``pk`` - The requested pk + pk + The primary key of the :class:`gestion.models.Menu`. """ menu = get_object_or_404(Menu, pk=pk) nb_pintes = 0 @@ -948,7 +704,7 @@ def get_menu(request, pk): class MenusAutocomplete(autocomplete.Select2QuerySetView): """ - Used as autcomplete for all :model:`gestion.Menu` + Autocomplete view for active :class:`menus `. """ def get_queryset(self): qs = Menu.objects.all() @@ -962,19 +718,7 @@ class MenusAutocomplete(autocomplete.Select2QuerySetView): @login_required def ranking(request): """ - Display the ranking page - - **Context** - - ``bestBuyers`` - List of the 25 best buyers - - ``bestDrinkers`` - List of the 25 best drinkers - - **Template** - - :template: `gestion/ranking.html` + Displays the ranking page. """ bestBuyers = User.objects.order_by('-profile__debit')[:25] customers = User.objects.all() @@ -994,7 +738,7 @@ def ranking(request): def allocate(pinte_pk, user): """ - Allocate a pinte to a user or release the pinte if user is None + Allocate a :class:`gestion.models.Pinte` to a user (:class:`django.contrib.auth.models.User`) or release the pinte if user is None """ try: pinte = Pinte.objects.get(pk=pinte_pk) @@ -1011,7 +755,10 @@ def allocate(pinte_pk, user): @permission_required('gestion.change_pinte') def release(request, pinte_pk): """ - View to release a pinte + View to release a :class:`gestion.models.Pinte`. + + pinte_pk + The primary key of the :class:`gestion.models.Pinte` to release. """ if allocate(pinte_pk, None): messages.success(request, "La pinte a bien été libérée") @@ -1023,6 +770,9 @@ def release(request, pinte_pk): @login_required @permission_required('gestion.add_pinte') def add_pintes(request): + """ + Displays a :class:`gestion.forms.PinteForm` to add one or more :class:`gestion.models.Pinte`. + """ form = PinteForm(request.POST or None) if form.is_valid(): ids = form.cleaned_data['ids'] @@ -1044,6 +794,9 @@ def add_pintes(request): @login_required @permission_required('gestion.change_pinte') def release_pintes(request): + """ + Displays a :class:`gestion.forms.PinteForm` to release one or more :class:`gestion.models.Pinte`. + """ form = PinteForm(request.POST or None) if form.is_valid(): ids = form.cleaned_data['ids'] @@ -1063,6 +816,9 @@ def release_pintes(request): @login_required @permission_required('gestion.view_pinte') def pintes_list(request): + """ + Displays the list of :class:`gestion.models.Pinte` + """ free_pintes = Pinte.objects.filter(current_owner=None) taken_pintes = Pinte.objects.exclude(current_owner=None) return render(request, "gestion/pintes_list.html", {"free_pintes": free_pintes, "taken_pintes": taken_pintes}) @@ -1071,6 +827,9 @@ def pintes_list(request): @login_required @permission_required('auth.view_user') def pintes_user_list(request): + """ + Displays the list of user, who have unreturned :class:`Pinte(s) `. + """ pks = [x.pk for x in User.objects.all() if x.profile.nb_pintes > 0] users = User.objects.filter(pk__in=pks) return render(request, "gestion/pintes_user_list.html", {"users": users}) @@ -1079,6 +838,9 @@ def pintes_user_list(request): @login_required @admin_required def gen_releve(request): + """ + Displays a :class:`forms.gestion.GenerateReleveForm` to generate a releve. + """ form = GenerateReleveForm(request.POST or None) if form.is_valid(): begin, end = form.cleaned_data['begin'], form.cleaned_data['end'] diff --git a/preferences/admin.py b/preferences/admin.py index f90378e..53a1ba0 100644 --- a/preferences/admin.py +++ b/preferences/admin.py @@ -2,6 +2,28 @@ from django.contrib import admin from simple_history.admin import SimpleHistoryAdmin from .models import PaymentMethod, GeneralPreferences, Cotisation -admin.site.register(PaymentMethod, SimpleHistoryAdmin) -admin.site.register(GeneralPreferences, SimpleHistoryAdmin) -admin.site.register(Cotisation, SimpleHistoryAdmin) \ No newline at end of file +class CotisationAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Consumptions `. + """ + list_display = ('__str__', 'amount', 'duration') + ordering = ('-duration', '-amount') + +class GeneralPreferencesAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Consumptions `. + """ + list_display = ('is_active', 'president', 'vice_president', 'treasurer', 'secretary', 'brewer', 'grocer', 'use_pinte_monitoring', 'lost_pintes_allowed', 'floating_buttons', 'automatic_logout_time') + +class PaymentMethodAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Consumptions `. + """ + list_display = ('name', 'is_active', 'is_usable_in_cotisation', 'is_usable_in_reload', 'affect_balance') + ordering = ('name',) + search_fields = ('name',) + list_filter = ('is_active', 'is_usable_in_cotisation', 'is_usable_in_reload', 'affect_balance') + +admin.site.register(PaymentMethod, PaymentMethodAdmin) +admin.site.register(GeneralPreferences, GeneralPreferencesAdmin) +admin.site.register(Cotisation, CotisationAdmin) \ No newline at end of file diff --git a/preferences/forms.py b/preferences/forms.py index 6e92522..2b9604b 100644 --- a/preferences/forms.py +++ b/preferences/forms.py @@ -5,7 +5,7 @@ from .models import Cotisation, PaymentMethod, GeneralPreferences class CotisationForm(forms.ModelForm): """ - Form to add and edit cotisations + Form to add and edit :class:`~preferences.models.Cotisation`. """ class Meta: model = Cotisation @@ -13,7 +13,7 @@ class CotisationForm(forms.ModelForm): class PaymentMethodForm(forms.ModelForm): """ - Form to add and edit payment methods + Form to add and edit :class:`~preferences.models.PaymentMethod`. """ class Meta: model = PaymentMethod @@ -22,7 +22,7 @@ class PaymentMethodForm(forms.ModelForm): class GeneralPreferencesForm(forms.ModelForm): """ - Form to edit the general preferences + Form to edit the :class:`~preferences.models.GeneralPreferences`. """ class Meta: model = GeneralPreferences diff --git a/preferences/migrations/0008_auto_20190218_1802.py b/preferences/migrations/0008_auto_20190218_1802.py new file mode 100644 index 0000000..2dad7cc --- /dev/null +++ b/preferences/migrations/0008_auto_20190218_1802.py @@ -0,0 +1,43 @@ +# Generated by Django 2.1 on 2019-02-18 17:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('preferences', '0007_auto_20190120_1208'), + ] + + operations = [ + migrations.AddField( + model_name='generalpreferences', + name='menu', + field=models.FileField(blank=True, null=True, upload_to=''), + ), + migrations.AddField( + model_name='generalpreferences', + name='rules', + field=models.FileField(blank=True, null=True, upload_to=''), + ), + migrations.AddField( + model_name='generalpreferences', + name='statutes', + field=models.FileField(blank=True, null=True, upload_to=''), + ), + migrations.AddField( + model_name='historicalgeneralpreferences', + name='menu', + field=models.TextField(blank=True, max_length=100, null=True), + ), + migrations.AddField( + model_name='historicalgeneralpreferences', + name='rules', + field=models.TextField(blank=True, max_length=100, null=True), + ), + migrations.AddField( + model_name='historicalgeneralpreferences', + name='statutes', + field=models.TextField(blank=True, max_length=100, null=True), + ), + ] diff --git a/preferences/migrations/0009_auto_20190227_0859.py b/preferences/migrations/0009_auto_20190227_0859.py new file mode 100644 index 0000000..6c1b49f --- /dev/null +++ b/preferences/migrations/0009_auto_20190227_0859.py @@ -0,0 +1,199 @@ +# Generated by Django 2.1 on 2019-02-27 07:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('preferences', '0008_auto_20190218_1802'), + ] + + operations = [ + migrations.AlterModelOptions( + name='generalpreferences', + options={'verbose_name': 'Préférences générales', 'verbose_name_plural': 'Préférences générales'}, + ), + migrations.AlterModelOptions( + name='historicalgeneralpreferences', + options={'get_latest_by': 'history_date', 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Préférences générales'}, + ), + migrations.AlterModelOptions( + name='historicalpaymentmethod', + options={'get_latest_by': 'history_date', 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Moyen de paiement'}, + ), + migrations.AlterModelOptions( + name='paymentmethod', + options={'verbose_name': 'Moyen de paiement', 'verbose_name_plural': 'Moyens de paiement'}, + ), + migrations.AlterField( + model_name='generalpreferences', + name='active_message', + field=models.TextField(blank=True, verbose_name='Message non actif'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='automatic_logout_time', + field=models.PositiveIntegerField(null=True, verbose_name='Temps de déconnexion automatique'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='brewer', + field=models.CharField(blank=True, max_length=255, verbose_name='Maître Brasseur'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='floating_buttons', + field=models.BooleanField(default=False, verbose_name='Boutons flottants'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='global_message', + field=models.TextField(blank=True, verbose_name='Message global'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='grocer', + field=models.CharField(blank=True, max_length=255, verbose_name='Épic Épicier'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='home_text', + field=models.TextField(blank=True, verbose_name="Message d'accueil"), + ), + migrations.AlterField( + model_name='generalpreferences', + name='is_active', + field=models.BooleanField(default=True, verbose_name='Site actif'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='lost_pintes_allowed', + field=models.PositiveIntegerField(default=0, verbose_name='Nombre de pintes perdus admises'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='menu', + field=models.FileField(blank=True, null=True, upload_to='', verbose_name='Menu'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='president', + field=models.CharField(blank=True, max_length=255, verbose_name='Président'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='rules', + field=models.FileField(blank=True, null=True, upload_to='', verbose_name='Règlement intérieur'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='secretary', + field=models.CharField(blank=True, max_length=255, verbose_name='Secrétaire'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='statutes', + field=models.FileField(blank=True, null=True, upload_to='', verbose_name='Statuts'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='treasurer', + field=models.CharField(blank=True, max_length=255, verbose_name='Trésorier'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='use_pinte_monitoring', + field=models.BooleanField(default=False, verbose_name='Suivi de pintes'), + ), + migrations.AlterField( + model_name='generalpreferences', + name='vice_president', + field=models.CharField(blank=True, max_length=255, verbose_name='Vice Président'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='active_message', + field=models.TextField(blank=True, verbose_name='Message non actif'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='automatic_logout_time', + field=models.PositiveIntegerField(null=True, verbose_name='Temps de déconnexion automatique'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='brewer', + field=models.CharField(blank=True, max_length=255, verbose_name='Maître Brasseur'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='floating_buttons', + field=models.BooleanField(default=False, verbose_name='Boutons flottants'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='global_message', + field=models.TextField(blank=True, verbose_name='Message global'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='grocer', + field=models.CharField(blank=True, max_length=255, verbose_name='Épic Épicier'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='home_text', + field=models.TextField(blank=True, verbose_name="Message d'accueil"), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='is_active', + field=models.BooleanField(default=True, verbose_name='Site actif'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='lost_pintes_allowed', + field=models.PositiveIntegerField(default=0, verbose_name='Nombre de pintes perdus admises'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='menu', + field=models.TextField(blank=True, max_length=100, null=True, verbose_name='Menu'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='president', + field=models.CharField(blank=True, max_length=255, verbose_name='Président'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='rules', + field=models.TextField(blank=True, max_length=100, null=True, verbose_name='Règlement intérieur'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='secretary', + field=models.CharField(blank=True, max_length=255, verbose_name='Secrétaire'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='statutes', + field=models.TextField(blank=True, max_length=100, null=True, verbose_name='Statuts'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='treasurer', + field=models.CharField(blank=True, max_length=255, verbose_name='Trésorier'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='use_pinte_monitoring', + field=models.BooleanField(default=False, verbose_name='Suivi de pintes'), + ), + migrations.AlterField( + model_name='historicalgeneralpreferences', + name='vice_president', + field=models.CharField(blank=True, max_length=255, verbose_name='Vice Président'), + ), + ] diff --git a/preferences/models.py b/preferences/models.py index f4d1ce6..a84b8d3 100644 --- a/preferences/models.py +++ b/preferences/models.py @@ -5,14 +5,36 @@ from django.core.validators import MinValueValidator class PaymentMethod(models.Model): """ - Stores payment methods + Stores payment methods. """ + class Meta: + verbose_name="Moyen de paiement" + verbose_name_plural = "Moyens de paiement" + name = models.CharField(max_length=255, verbose_name="Nom") + """ + The name of the PaymentMethod. + """ is_active = models.BooleanField(default=True, verbose_name="Actif") + """ + If False, the PaymentMethod can't be use anywhere. + """ is_usable_in_cotisation = models.BooleanField(default=True, verbose_name="Cotisations ?") + """ + If true, the PaymentMethod can be used to pay cotisation. + """ is_usable_in_reload = models.BooleanField(default=True, verbose_name="Rechargements ?") + """ + If true, the PaymentMethod can be used to reload an user account. + """ affect_balance = models.BooleanField(default=False, verbose_name="Affecte le solde") + """ + If true, the PaymentMethod will decrease the user's balance when used. + """ icon = models.CharField(max_length=255, verbose_name="Icône", blank=True) + """ + A font awesome icon (without the fa) + """ history = HistoricalRecords() def __str__(self): @@ -22,28 +44,92 @@ class GeneralPreferences(models.Model): """ Stores a unique line of general preferences """ - is_active = models.BooleanField(default=True) - active_message = models.TextField(blank=True) - global_message = models.TextField(blank=True) - president = models.CharField(max_length=255, blank=True) - vice_president = models.CharField(max_length=255, blank=True) - treasurer = models.CharField(max_length=255, blank=True) - secretary = models.CharField(max_length=255, blank=True) - brewer = models.CharField(max_length=255, blank=True) - grocer = models.CharField(max_length=255, blank=True) - use_pinte_monitoring = models.BooleanField(default=False) - lost_pintes_allowed = models.PositiveIntegerField(default=0) - floating_buttons = models.BooleanField(default=False) - home_text = models.TextField(blank=True) - automatic_logout_time = models.PositiveIntegerField(null=True) + class Meta: + verbose_name="Préférences générales" + verbose_name_plural = "Préférences générales" + + is_active = models.BooleanField(default=True, verbose_name="Site actif") + """ + If True, the site will be accessible. If False, all the requests are redirect to :func:`~preferences.views.inactive`. + """ + active_message = models.TextField(blank=True, verbose_name="Message non actif") + """ + Message displayed on the :func:`~preferences.views.inactive` + """ + global_message = models.TextField(blank=True, verbose_name="Message global") + """ + List of messages, separated by a carriage return. One will be chosen randomly at each request on displayed in the header + """ + president = models.CharField(max_length=255, blank=True, verbose_name="Président") + """ + The name of the president + """ + vice_president = models.CharField(max_length=255, blank=True, verbose_name="Vice Président") + """ + The name of the vice-president + """ + treasurer = models.CharField(max_length=255, blank=True, verbose_name="Trésorier") + """ + The name of the treasurer + """ + secretary = models.CharField(max_length=255, blank=True, verbose_name="Secrétaire") + """ + The name of the secretary + """ + brewer = models.CharField(max_length=255, blank=True, verbose_name="Maître Brasseur") + """ + The name of the brewer + """ + grocer = models.CharField(max_length=255, blank=True, verbose_name="Épic Épicier") + """ + The name of the grocer + """ + use_pinte_monitoring = models.BooleanField(default=False, verbose_name="Suivi de pintes") + """ + If True, alert will be displayed to allocate pints during order + """ + lost_pintes_allowed = models.PositiveIntegerField(default=0, verbose_name="Nombre de pintes perdus admises") + """ + If > 0, a user will be blocked if he has losted more pints than the value + """ + floating_buttons = models.BooleanField(default=False, verbose_name="Boutons flottants") + """ + If True, displays floating paymentButtons on the :func:`~gestion.views.manage` view. + """ + home_text = models.TextField(blank=True, verbose_name="Message d'accueil") + """ + Text display on the home page + """ + automatic_logout_time = models.PositiveIntegerField(null=True, verbose_name="Temps de déconnexion automatique") + """ + Duration after which the user is automatically disconnected if inactive + """ + statutes = models.FileField(blank=True, null=True, verbose_name="Statuts") + """ + The file of the statutes + """ + rules = models.FileField(blank=True, null=True, verbose_name="Règlement intérieur") + """ + The file of the internal rules + """ + menu = models.FileField(blank=True, null=True, verbose_name="Menu") + """ + The file of the menu + """ history = HistoricalRecords() class Cotisation(models.Model): """ - Stores cotisations + Stores cotisations. """ amount = models.DecimalField(max_digits=5, decimal_places=2, null=True, verbose_name="Montant", validators=[MinValueValidator(0)]) + """ + Price of the cotisation. + """ duration = models.PositiveIntegerField(verbose_name="Durée de la cotisation (jours)") + """ + Duration (in days) of the cotisation + """ history = HistoricalRecords() def __str__(self): diff --git a/preferences/templates/preferences/general_preferences.html b/preferences/templates/preferences/general_preferences.html index 5c1e047..18b22b6 100644 --- a/preferences/templates/preferences/general_preferences.html +++ b/preferences/templates/preferences/general_preferences.html @@ -6,12 +6,13 @@
  • Site actif
  • Bureau
  • Suivi de pintes
  • -
  • Autre
  • +
  • Documents
  • +
  • Autre
  • {% endblock %} {% block content %} -
    + {% csrf_token %}
    @@ -122,6 +123,38 @@
    +
    +
    +
    +

    Documents

    +
    +
    +
    + {{form.statutes}} + +
    +
    +
    +
    + {{form.rules}} + +
    +
    +
    +
    + {{form.menu}} + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    diff --git a/preferences/views.py b/preferences/views.py index e8bae46..ff989e2 100644 --- a/preferences/views.py +++ b/preferences/views.py @@ -6,6 +6,7 @@ from django.urls import reverse from django.contrib.auth.decorators import login_required, permission_required from django.http import HttpResponse from django.forms.models import model_to_dict +from django.http import Http404 from coopeV3.acl import active_required @@ -18,19 +19,10 @@ from .forms import CotisationForm, PaymentMethodForm, GeneralPreferencesForm @permission_required('preferences.change_generalpreferences') def generalPreferences(request): """ - Display form to edit the general preferences - - **Context** - - ``form`` - The GeneralPreferences form instance - - **Template** - - :template:`preferences/general_preferences.html` + View which displays a :class:`~preferences.forms.GeneralPreferencesForm` to edit the :class:`~preferences.models.GeneralPreferences`. """ gp,_ = GeneralPreferences.objects.get_or_create(pk=1) - form = GeneralPreferencesForm(request.POST or None, instance=gp) + form = GeneralPreferencesForm(request.POST or None, request.FILES or None, instance=gp) if(form.is_valid()): form.save() messages.success(request, "Les préférences générales ont bien été mises à jour") @@ -43,16 +35,7 @@ def generalPreferences(request): @permission_required('preferences.view_cotisation') def cotisationsIndex(request): """ - Lists the cotisations - - **Context** - - ``cotisations`` - List of cotisations - - **Template** - - :template:`preferences/cotisations_index.html` + View which lists all the :class:`~preferences.models.Cotisation`. """ cotisations = Cotisation.objects.all() return render(request, "preferences/cotisations_index.html", {"cotisations": cotisations}) @@ -62,22 +45,7 @@ def cotisationsIndex(request): @permission_required('preferences.add_cotisation') def addCotisation(request): """ - Form to add a cotisation - - **Context** - - ``form`` - The CotisationForm form instance - - ``form_title`` - The title of the form - - ``form_button`` - The text of the form button - - **Template** - - :template:`form.html` + View which displays a :class:`~preferences.forms.CotisationForm` to create a :class:`~preferences.models.Cotisation`. """ form = CotisationForm(request.POST or None) if(form.is_valid()): @@ -91,25 +59,10 @@ def addCotisation(request): @permission_required('preferences.change_cotisation') def editCotisation(request, pk): """ - Form to edit a cotisation + View which displays a :class:`~preferences.forms.CotisationForm` to edit a :class:`~preferences.models.Cotisation`. - ``pk`` - The primary key of the cotisation - - **Context** - - ``form`` - The CotisationForm form instance - - ``form_title`` - The title of the form - - ``form_button`` - The text of the form button - - **Template** - - :template:`form.html` + pk + The primary key of the :class:`~preferences.models.Cotisation` to edit. """ cotisation = get_object_or_404(Cotisation, pk=pk) form = CotisationForm(request.POST or None, instance=cotisation) @@ -122,12 +75,12 @@ def editCotisation(request, pk): @active_required @login_required @permission_required('preferences.delete_cotisation') -def deleteCotisation(request,pk): +def deleteCotisation(request, pk): """ - Delete a cotisation + Delete a :class:`~preferences.models.Cotisation`. - ``pk`` - The primary key of the cotisation to delete + pk + The primary key of the :class:`~preferences.models.Cotisation` to delete. """ cotisation = get_object_or_404(Cotisation, pk=pk) message = "La cotisation (" + str(cotisation.duration) + " jours, " + str(cotisation.amount) + "€) a bien été supprimée" @@ -140,10 +93,10 @@ def deleteCotisation(request,pk): @permission_required('preferences.view_cotisation') def get_cotisation(request, pk): """ - Get a cotisation by pk + Return the requested :class:`~preferences.models.Cotisation` in json format. - ``pk`` - The primary key of the cotisation + pk + The primary key of the requested :class:`~preferences.models.Cotisation`. """ cotisation = get_object_or_404(Cotisation, pk=pk) data = json.dumps({"pk": cotisation.pk, "duration": cotisation.duration, "amount" : cotisation.amount, "needQuantityButton": False}) @@ -156,16 +109,7 @@ def get_cotisation(request, pk): @permission_required('preferences.view_paymentmethod') def paymentMethodsIndex(request): """ - Lists the paymentMethods - - **Context** - - ``paymentMethods`` - List of paymentMethods - - **Template** - - :template:`preferences/payment_methods_index.html` + View which lists all the :class:`~preferences.models.PaymentMethod`. """ paymentMethods = PaymentMethod.objects.all() return render(request, "preferences/payment_methods_index.html", {"paymentMethods": paymentMethods}) @@ -175,22 +119,7 @@ def paymentMethodsIndex(request): @permission_required('preferences.add_paymentmethod') def addPaymentMethod(request): """ - Form to add a paymentMethod - - **Context** - - ``form`` - The CotisationForm form paymentMethod - - ``form_title`` - The title of the form - - ``form_button`` - The text of the form button - - **Template** - - :template:`form.html` + View which displays a :class:`~preferences.forms.PaymentMethodForm` to create a :class:`~preferences.models.PaymentMethod`. """ form = PaymentMethodForm(request.POST or None) if(form.is_valid()): @@ -204,25 +133,10 @@ def addPaymentMethod(request): @permission_required('preferences.change_paymentmethod') def editPaymentMethod(request, pk): """ - Form to edit a paymentMethod + View which displays a :class:`~preferences.forms.PaymentMethodForm` to edit a :class:`~preferences.models.PaymentMethod`. - ``pk`` - The primary key of the paymentMethod - - **Context** - - ``form`` - The PaymentMethodForm form instance - - ``form_title`` - The title of the form - - ``form_button`` - The text of the form button - - **Template** - - :template:`form.html` + pk + The primary key of the :class:`~preferences.models.PaymentMethod` to edit. """ paymentMethod = get_object_or_404(PaymentMethod, pk=pk) form = PaymentMethodForm(request.POST or None, instance=paymentMethod) @@ -237,10 +151,10 @@ def editPaymentMethod(request, pk): @permission_required('preferences.delete_paymentmethod') def deletePaymentMethod(request,pk): """ - Delete a paymentMethod + Delete a :class:`~preferences.models.PaymentMethod`. - ``pk`` - The primary key of the paymentMethod to delete + pk + The primary key of the :class:`~preferences.models.PaymentMethod` to delete. """ paymentMethod = get_object_or_404(PaymentMethod, pk=pk) message = "Le moyen de paiement " + paymentMethod.name + " a bien été supprimé" @@ -252,7 +166,7 @@ def deletePaymentMethod(request,pk): def inactive(request): """ - Displays inactive view + View which displays the inactive message (if the site is inactive). """ gp, _ = GeneralPreferences.objects.get_or_create(pk=1) return render(request, 'preferences/inactive.html', {"message": gp.active_message}) @@ -261,9 +175,13 @@ def inactive(request): def get_config(request): """ - Load the config and return it in a json format + Load the :class:`~preferences.models.GeneralPreferences` and return it in json format (except for :attr:`~preferences.models.GeneralPreferences.statutes`, :attr:`~preferences.models.GeneralPreferences.rules` and :attr:`~preferences.models.GeneralPreferences.menu`) """ - gp,_ = GeneralPreferences.objects.get_or_create(pk=1) - data = json.dumps(model_to_dict(gp)) + gp, _ = GeneralPreferences.objects.defer("statutes", "rules", "menu").get_or_create(pk=1) + gp_dict = model_to_dict(gp) + del gp_dict["statutes"] + del gp_dict["rules"] + del gp_dict["menu"] + data = json.dumps(gp_dict) return HttpResponse(data, content_type='application/json') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 31485ac..935875a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,5 @@ pytz==2018.5 simplejson==3.16.0 docutils==0.14 django-simple-history==2.5.1 -jinja2==2.10 \ No newline at end of file +jinja2==2.10 +Sphinx==1.8.4 diff --git a/templates/footer.html b/templates/footer.html index 76024bd..5d00040 100644 --- a/templates/footer.html +++ b/templates/footer.html @@ -2,6 +2,15 @@

    À propos

    L'association Coopé Technopôle Metz (CTM) est une association de droit local dont le siège social est établi à la résidence Edouard Branly. Son but est d'entretenir un lieu convivial sous la forme d'un bar associatif. Les membres actifs sont les coopemen (ou coopewomen).

    +

    Documents utiles

    +
    +
    Statuts
    +
    {% autoescape off %}{% statutes %}{% endautoescape %}
    +
    Règlement intérieur
    +
    {% autoescape off %}{% rules %}{% endautoescape %}
    +
    Carte
    +
    {% autoescape off %}{% menu %}{% endautoescape %}
    +

    Contacts

    @@ -39,6 +48,6 @@
  • Facebook
  • - + diff --git a/templates/form.html b/templates/form.html index be760ba..949eecd 100644 --- a/templates/form.html +++ b/templates/form.html @@ -16,6 +16,7 @@ {% csrf_token %} {{ form }}
    + {{ extra_html | safe }}

    diff --git a/users/admin.py b/users/admin.py index c3737f8..c222b6e 100644 --- a/users/admin.py +++ b/users/admin.py @@ -1,13 +1,61 @@ from django.contrib import admin from django.contrib.auth.models import Permission from simple_history.admin import SimpleHistoryAdmin +from django.db.models import F + +from .models import School, Profile, CotisationHistory, WhiteListHistory + +class CotisationHistoryAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Consumptions `. + """ + list_display = ('user', 'amount', 'duration', 'paymentDate', 'endDate', 'paymentMethod') + ordering = ('user', 'amount', 'duration', 'paymentDate', 'endDate') + search_fields = ('user',) + list_filter = ('paymentMethod', ) + +class BalanceFilter(admin.SimpleListFilter): + """ + A filter which filters according to the sign of the balance + """ + title = 'Solde' + parameter_name = 'solde' + + def lookups(self, request, model_admin): + return ( + ('po', '>0'), + ('nu', '=0'), + ('ne', '<0'), + ) + + def queryset(self, request, queryset): + if self.value() == 'po': + return queryset.filter(credit__gt=F('debit')) + elif self.value() == 'nu': + return queryset.filter(credit=F('debit')) + elif self.value() == 'ne': + return queryset.filter(credit__lt=F('debit')) -from .models import School, Profile, CotisationHistory class ProfileAdmin(SimpleHistoryAdmin): - search_fields = ('user__username', 'user__first_name', 'user__last_name') + """ + The admin class for :class:`Consumptions `. + """ + list_display = ('user', 'credit', 'debit', 'balance', 'school', 'cotisationEnd', 'is_adherent') + ordering = ('user', '-credit', '-debit') + search_fields = ('user',) + list_filter = ('school', BalanceFilter) + +class WhiteListHistoryAdmin(SimpleHistoryAdmin): + """ + The admin class for :class:`Consumptions `. + """ + list_display = ('user', 'paymentDate', 'endDate', 'duration') + ordering = ('user', 'duration', 'paymentDate', 'endDate') + search_fields = ('user',) admin.site.register(Permission, SimpleHistoryAdmin) admin.site.register(School, SimpleHistoryAdmin) +admin.site.register(WhiteListHistory, WhiteListHistoryAdmin) admin.site.register(Profile, ProfileAdmin) -admin.site.register(CotisationHistory, SimpleHistoryAdmin) \ No newline at end of file +admin.site.register(CotisationHistory, CotisationHistoryAdmin) \ No newline at end of file diff --git a/users/forms.py b/users/forms.py index e564ecd..f1b7e4c 100644 --- a/users/forms.py +++ b/users/forms.py @@ -6,14 +6,14 @@ from preferences.models import PaymentMethod class LoginForm(forms.Form): """ - Form to log in + Form to log in. """ username = forms.CharField(max_length=255, label="Nom d'utitisateur") password = forms.CharField(max_length=255, widget=forms.PasswordInput, label="Mot de passe") class CreateUserForm(forms.ModelForm): """ - Form to create a new user + Form to create a new user (:class:`django.contrib.auth.models.User`). """ class Meta: model = User @@ -23,7 +23,7 @@ class CreateUserForm(forms.ModelForm): class CreateGroupForm(forms.ModelForm): """ - Form to create a new group + Form to create a new group (:class:`django.contrib.auth.models.Group`). """ class Meta: model = Group @@ -31,7 +31,7 @@ class CreateGroupForm(forms.ModelForm): class EditGroupForm(forms.ModelForm): """ - Form to edit a group + Form to edit a group (:class:`django.contrib.auth.models.Group`). """ class Meta: model = Group @@ -39,25 +39,25 @@ class EditGroupForm(forms.ModelForm): class SelectUserForm(forms.Form): """ - Form to select a user from all users + Form to select a user from all users (:class:`django.contrib.auth.models.User`). """ user = forms.ModelChoiceField(queryset=User.objects.all(), required=True, label="Utilisateur", widget=autocomplete.ModelSelect2(url='users:all-users-autocomplete', attrs={'data-minimum-input-length':2})) class SelectNonSuperUserForm(forms.Form): """ - Form to select a user from all non-superuser users + Form to select a user from all non-superuser users (:class:`django.contrib.auth.models.User`). """ user = forms.ModelChoiceField(queryset=User.objects.filter(is_active=True), required=True, label="Utilisateur", widget=autocomplete.ModelSelect2(url='users:non-super-users-autocomplete', attrs={'data-minimum-input-length':2})) class SelectNonAdminUserForm(forms.Form): """ - Form to select a user from all non-staff users + Form to select a user from all non-staff users (:class:`django.contrib.auth.models.User`). """ user = forms.ModelChoiceField(queryset=User.objects.filter(is_active=True), required=True, label="Utilisateur", widget=autocomplete.ModelSelect2(url='users:non-admin-users-autocomplete', attrs={'data-minimum-input-length':2})) class GroupsEditForm(forms.ModelForm): """ - Form to edit a user's list of groups + Form to edit a user's list of groups (:class:`django.contrib.auth.models.User` and :class:`django.contrib.auth.models.Group`). """ class Meta: model = User @@ -65,7 +65,7 @@ class GroupsEditForm(forms.ModelForm): class EditPasswordForm(forms.Form): """ - Form to change the password of a user + Form to change the password of a user (:class:`django.contrib.auth.models.User`). """ password = forms.CharField(max_length=255, widget=forms.PasswordInput, label="Mot de passe actuel") password1 = forms.CharField(max_length=255, widget=forms.PasswordInput, label="Nouveau mot de passe") @@ -83,7 +83,7 @@ class EditPasswordForm(forms.Form): class addCotisationHistoryForm(forms.ModelForm): """ - Form to add a cotisation to user + Form to add a :class:`users.models.CotisationHistory` to user (:class:`django.contrib.auth.models.User`). """ def __init__(self, *args, **kwargs): super(addCotisationHistoryForm, self).__init__(*args, **kwargs) @@ -95,7 +95,7 @@ class addCotisationHistoryForm(forms.ModelForm): class addWhiteListHistoryForm(forms.ModelForm): """ - Form to add a whitelist to user + Form to add a :class:`users.models.WhiteListHistory` to user (:class:`django.contrib.auth.models.User`). """ class Meta: model = WhiteListHistory @@ -103,13 +103,16 @@ class addWhiteListHistoryForm(forms.ModelForm): class SchoolForm(forms.ModelForm): """ - Form to add and edit a school + Form to add and edit a :class:`users.models.School`. """ class Meta: model = School fields = "__all__" class ExportForm(forms.Form): + """ + Form to export list of users (:class:`django.contrib.auth.models.User`) to csv file + """ QUERY_TYPE_CHOICES = ( ('all', 'Tous les comptes'), ('all_active', 'Tous les comptes actifs'), diff --git a/users/migrations/0002_auto_20190218_2231.py b/users/migrations/0002_auto_20190218_2231.py new file mode 100644 index 0000000..338ab47 --- /dev/null +++ b/users/migrations/0002_auto_20190218_2231.py @@ -0,0 +1,23 @@ +# Generated by Django 2.1 on 2019-02-18 21:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='historicalprofile', + name='date_verified', + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name='profile', + name='date_verified', + field=models.DateTimeField(blank=True, null=True), + ), + ] diff --git a/users/migrations/0003_auto_20190219_1921.py b/users/migrations/0003_auto_20190219_1921.py new file mode 100644 index 0000000..972914a --- /dev/null +++ b/users/migrations/0003_auto_20190219_1921.py @@ -0,0 +1,21 @@ +# Generated by Django 2.1 on 2019-02-19 18:21 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0002_auto_20190218_2231'), + ] + + operations = [ + migrations.RemoveField( + model_name='historicalprofile', + name='date_verified', + ), + migrations.RemoveField( + model_name='profile', + name='date_verified', + ), + ] diff --git a/users/migrations/0004_auto_20190226_2313.py b/users/migrations/0004_auto_20190226_2313.py new file mode 100644 index 0000000..bb26d11 --- /dev/null +++ b/users/migrations/0004_auto_20190226_2313.py @@ -0,0 +1,25 @@ +# Generated by Django 2.1 on 2019-02-26 22:13 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0003_auto_20190219_1921'), + ] + + operations = [ + migrations.AlterModelOptions( + name='cotisationhistory', + options={'verbose_name': 'Historique cotisation'}, + ), + migrations.RemoveField( + model_name='cotisationhistory', + name='valid', + ), + migrations.RemoveField( + model_name='historicalcotisationhistory', + name='valid', + ), + ] diff --git a/users/migrations/0005_auto_20190227_0859.py b/users/migrations/0005_auto_20190227_0859.py new file mode 100644 index 0000000..6227788 --- /dev/null +++ b/users/migrations/0005_auto_20190227_0859.py @@ -0,0 +1,84 @@ +# Generated by Django 2.1 on 2019-02-27 07:59 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0004_auto_20190226_2313'), + ] + + operations = [ + migrations.AlterModelOptions( + name='whitelisthistory', + options={'verbose_name': 'Historique accès gracieux', 'verbose_name_plural': 'Historique accès gracieux'}, + ), + migrations.AlterField( + model_name='historicalprofile', + name='cotisationEnd', + field=models.DateTimeField(blank=True, null=True, verbose_name='Fin de cotisation'), + ), + migrations.AlterField( + model_name='historicalprofile', + name='credit', + field=models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Crédit'), + ), + migrations.AlterField( + model_name='historicalprofile', + name='debit', + field=models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Débit'), + ), + migrations.AlterField( + model_name='historicalwhitelisthistory', + name='endDate', + field=models.DateTimeField(verbose_name='Date de fin'), + ), + migrations.AlterField( + model_name='historicalwhitelisthistory', + name='paymentDate', + field=models.DateTimeField(blank=True, editable=False, verbose_name='Date de début'), + ), + migrations.AlterField( + model_name='profile', + name='cotisationEnd', + field=models.DateTimeField(blank=True, null=True, verbose_name='Fin de cotisation'), + ), + migrations.AlterField( + model_name='profile', + name='credit', + field=models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Crédit'), + ), + migrations.AlterField( + model_name='profile', + name='debit', + field=models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Débit'), + ), + migrations.AlterField( + model_name='profile', + name='school', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='users.School', verbose_name='École'), + ), + migrations.AlterField( + model_name='profile', + name='user', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Utilisateur'), + ), + migrations.AlterField( + model_name='whitelisthistory', + name='endDate', + field=models.DateTimeField(verbose_name='Date de fin'), + ), + migrations.AlterField( + model_name='whitelisthistory', + name='paymentDate', + field=models.DateTimeField(auto_now_add=True, verbose_name='Date de début'), + ), + migrations.AlterField( + model_name='whitelisthistory', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Client'), + ), + ] diff --git a/users/models.py b/users/models.py index b586df7..beae6fc 100644 --- a/users/models.py +++ b/users/models.py @@ -9,12 +9,15 @@ from gestion.models import ConsumptionHistory class School(models.Model): """ - Stores school + Stores school. """ class Meta: verbose_name = "École" name = models.CharField(max_length=255, verbose_name="Nom") + """ + The name of the school + """ history = HistoricalRecords() def __str__(self): @@ -22,65 +25,107 @@ class School(models.Model): class CotisationHistory(models.Model): """ - Stores cotisations history, related to :model:`preferences.Cotisation` + Stores cotisation histories, related to :class:`preferences.models.Cotisation`. """ class Meta: verbose_name = "Historique cotisation" - permissions = ( - ("validate_cotisationhistory", "Peut (in)valider les cotisations"), - ) - - WAITING = 0 - VALID = 1 - INVALID = 2 - VALIDATION_CHOICES = ( - (WAITING, 'En attente de validation'), - (VALID, 'Validée'), - (INVALID, 'Invalidée'), - ) user = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name="Client") + """ + Client (:class:`django.contrib.auth.models.User`). + """ amount = models.DecimalField(max_digits=5, decimal_places=2, verbose_name="Montant") + """ + Price, in euros, of the cotisation. + """ duration = models.PositiveIntegerField(verbose_name="Durée") + """ + Duration, in days, of the cotisation. + """ paymentDate = models.DateTimeField(auto_now_add=True, verbose_name="Date du paiement") + """ + Date of the payment. + """ endDate = models.DateTimeField(verbose_name="Fin de la cotisation") + """ + End date of the cotisation. + """ paymentMethod = models.ForeignKey(PaymentMethod, on_delete=models.PROTECT, verbose_name="Moyen de paiement") + """ + :class:`Payment method ` used. + """ cotisation = models.ForeignKey(Cotisation, on_delete=models.PROTECT, verbose_name="Type de cotisation") + """ + :class:`~preferences.models.Cotisation` related. + """ coopeman = models.ForeignKey(User, on_delete=models.PROTECT, related_name="cotisation_made") - valid = models.IntegerField(choices=VALIDATION_CHOICES, default=WAITING) + """ + User (:class:`django.contrib.auth.models.User`) who registered the cotisation. + """ history = HistoricalRecords() class WhiteListHistory(models.Model): """ - Stores whitelist history + Stores whitelist history. """ class Meta: verbose_name = "Historique accès gracieux" + verbose_name_plural = "Historique accès gracieux" - user = models.ForeignKey(User, on_delete=models.PROTECT) - paymentDate = models.DateTimeField(auto_now_add=True) - endDate = models.DateTimeField() + user = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name="Client") + """ + Client (:class:`django.contrib.auth.models.User`). + """ + paymentDate = models.DateTimeField(auto_now_add=True, verbose_name="Date de début") + """ + Date of the beginning of the whitelist. + """ + endDate = models.DateTimeField(verbose_name="Date de fin") + """ + End date of the whitelist. + """ duration = models.PositiveIntegerField(verbose_name="Durée", help_text="Durée de l'accès gracieux en jour") + """ + Duration, in days, of the whitelist + """ coopeman = models.ForeignKey(User, on_delete=models.PROTECT, related_name="whitelist_made") + """ + User (:class:`django.contrib.auth.models.User`) who registered the cotisation. + """ history = HistoricalRecords() class Profile(models.Model): """ - Stores user profile + Stores user profile. """ class Meta: verbose_name = "Profil" - user = models.OneToOneField(User, on_delete=models.CASCADE) - credit = models.DecimalField(max_digits=7, decimal_places=2, default=0) - debit = models.DecimalField(max_digits=7, decimal_places=2, default=0) - school = models.ForeignKey(School, on_delete=models.PROTECT, blank=True, null=True) - cotisationEnd = models.DateTimeField(blank=True, null=True) + user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name="Utilisateur") + """ + Client (:class:`django.contrib.auth.models.User`). + """ + credit = models.DecimalField(max_digits=7, decimal_places=2, default=0, verbose_name="Crédit") + """ + Amount of money, in euros, put on the account + """ + debit = models.DecimalField(max_digits=7, decimal_places=2, default=0, verbose_name="Débit") + """ + Amount of money, in euros, spent form the account + """ + school = models.ForeignKey(School, on_delete=models.PROTECT, blank=True, null=True, verbose_name="École") + """ + :class:`~users.models.School` of the client + """ + cotisationEnd = models.DateTimeField(blank=True, null=True, verbose_name="Fin de cotisation") + """ + Date of end of cotisation for the client + """ history = HistoricalRecords() @property def is_adherent(self): """ - Test if a user is adherent + Test if a client is adherent. """ if(self.cotisationEnd and self.cotisationEnd > timezone.now()): return True @@ -90,27 +135,27 @@ class Profile(models.Model): @property def balance(self): """ - Computes user balance + Computes client balance (:attr:`gestion.models.Profile.credit` - :attr:`gestion.models.Profile.debit`). """ return self.credit - self.debit def positiveBalance(self): """ - Test if the user balance is positive or null + Test if the client balance is positive or null. """ return self.balance >= 0 @property def rank(self): """ - Computes the rank (by debit) of the user + Computes the rank (by :attr:`gestion.models.Profile.debit`) of the client. """ return Profile.objects.filter(debit__gte=self.debit).count() @property def alcohol(self): """ - Computes ingerated alcohol + Computes ingerated alcohol. """ consumptions = ConsumptionHistory.objects.filter(customer=self.user).select_related('product') alcohol = 0 @@ -122,7 +167,7 @@ class Profile(models.Model): @property def nb_pintes(self): """ - Return the number of pintes currently owned + Return the number of :class:`Pinte(s) ` currently owned. """ return self.user.pintes_owned_currently.count() @@ -131,8 +176,7 @@ class Profile(models.Model): def __getattr__(self, name): """ - Tente de retourner l'attribut de l'instance et si l'attribut n'existe pas, - tente de retourner l'attribut de l'user associé à l'instance + Try to return the attribute and it doesn't exist, try to return the attribute of the associated user (:class:`django.contrib.auth.models.User`). """ try: r = self.__getattribute__(name) @@ -147,7 +191,7 @@ class Profile(models.Model): @receiver(post_save, sender=User) def create_user_profile(sender, instance, created, **kwargs): """ - Create profile when user is created + Create profile when user (:class:`django.contrib.auth.models.User`) is created. """ if created: Profile.objects.create(user=instance) @@ -155,13 +199,13 @@ def create_user_profile(sender, instance, created, **kwargs): @receiver(post_save, sender=User) def save_user_profile(sender, instance, **kwargs): """ - Save profile when user is saved + Save profile when user (:class:`django.contrib.auth.models.User`) is saved. """ instance.profile.save() def str_user(self): """ - Rewrite str method for user + Rewrite str method for user (:class:`django.contrib.auth.models.User`). """ if self.profile.is_adherent: fin = "Adhérent" diff --git a/users/templates/users/bulletin.tex b/users/templates/users/bulletin.tex new file mode 100644 index 0000000..6c70bf5 --- /dev/null +++ b/users/templates/users/bulletin.tex @@ -0,0 +1,70 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage[utf8]{inputenc} +\usepackage[french]{babel} +\usepackage{eurosym} +\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry} +\usepackage{tabularx} +\usepackage{longtable} +\usepackage{tabu} +\usepackage{fancyhdr} +\usepackage{natbib} +\usepackage{graphicx} + +\setlength{\parindent}{0pt} + +\pagestyle{fancy} +\renewcommand{\headrulewidth}{0pt} +\fancyhead[C]{\includegraphics[scale=0.3]{ {{- path -}} }} + +\begin{document} +\vspace*{0.3\baselineskip} +\begin{center} +\huge{Bulletin d'adhésion à l'association Coopé Technopôle Metz} +\end{center} +\vspace*{\baselineskip} +Je soussigné(e), {{user.first_name}} {{user.last_name}}, +\begin{itemize} +\item atteste sur l'honneur que les informations fournies à l'association Coopé Technopôle Metz sont correctes et que je n'ai jamais été enregistré dans l'association sous un autre nom / pseudonyme +\item joins l'association de mon plein gré +\item m'engage à respecter les statuts et le réglement intérieur de l'association +\item reconnais le but de l'assocation Coopé Technopôle Metz et atteste avoir pris conaissances des droits et des devoirs des membres de l'association +\item consent à ce que les données fournies à l'association, ainsi que mes autres données de compte (débit, crédit, solde et historique des transactions) soient stockées dans le logiciel de gestion et accessibles par tous les membres actifs de l'association, en particulier par le comité de direction +\end{itemize} + +\begin{flushright} +Fait à Metz, le {{user.date_joined.strftime('%d/%m/%Y')}} +\end{flushright} +Ce bulletin a été validé électroniquement par {{user.first_name}} {{user.last_name}} le {{user.date_joined.strftime('%d/%m/%Y %H:%M:%S')}}, heure de Paris. + +\newpage + +\begin{center} +\huge{Historique des cotisations à l'association} +\end{center} +\vspace*{\baselineskip} +\begin{longtabu}{|c|X|X|X|X|X|} +\hline +\# & Date & Montant & Durée & Moyen de paiement & Date de fin\\ +\hline +{% for cotisation in cotisations %} +{{cotisation.pk}} & {{cotisation.paymentDate.strftime('%d/%M/%Y %H:%M')}} & {{cotisation.amount}} \euro{} & {{cotisation.duration}} jour(s)& {{cotisation.paymentMethod}} & {{cotisation.endDate.strftime('%d/%M/%Y %H:%M')}} \\ +\hline +{% endfor %} +\end{longtabu} + +\newpage +\begin{center} +\huge{Attestation d'adhésion} +\end{center} +\vspace*{\baselineskip} +Le comité de direction de la Coopé Technopôle Metz atteste avoir reçu les cotisations de la part de {{user.first_name}} {{user.last_name}}. {% if user.profile.is_adherent %}Le comité atteste aussi que {{user.first_name}} {{user.last_name}} est membre adhérent de l'association au {{now.strftime('%d/%m/%Y')}}.{% endif %} + +{% if user.is_staff %} +\vspace*{\baselineskip} +Le membre est jugé comme membre actif par le comité de direction. +{% endif %} + +\vspace*{\baselineskip} + +Cette attestation est délivrée pour jouir des droits qui lui sont dus. +\end{document} diff --git a/users/templates/users/coope.png b/users/templates/users/coope.png new file mode 100644 index 0000000..f73fc59 Binary files /dev/null and b/users/templates/users/coope.png differ diff --git a/users/templates/users/profile.html b/users/templates/users/profile.html index fcdb7bf..e369a31 100644 --- a/users/templates/users/profile.html +++ b/users/templates/users/profile.html @@ -51,7 +51,7 @@
    @@ -227,7 +230,6 @@ Date de paiement Moyen de paiement Date de fin - État Modération @@ -239,8 +241,7 @@ {{cotisation.paymentDate}} {{cotisation.paymentMethod}} {{cotisation.endDate}} - {{cotisation.valid}} - {% if perms.users.validate_cotisationHistory %} Valider Invalider{% endif %} + {% if perms.users.delete_cotisationhistory %} Supprimer{% endif %} {% endfor %} diff --git a/users/urls.py b/users/urls.py index 2201cae..51532e8 100644 --- a/users/urls.py +++ b/users/urls.py @@ -33,8 +33,7 @@ urlpatterns = [ path('non-admin-users-autocomplete', views.NonAdminUserAutocomplete.as_view(), name="non-admin-users-autocomplete"), path('getUser/', views.getUser, name="getUser"), path('addCotisationHistory/', views.addCotisationHistory, name="addCotisationHistory"), - path('validateCotisationHistory/', views.validateCotisationHistory, name="validateCotisationHistory"), - path('invalidateCotisationHistory/', views.invalidateCotisationHistory, name="invalidateCotisationHistory"), + path('deleteCotisationHistory/', views.deleteCotisationHistory, name="deleteCotisationHistory"), path('addWhiteListHistory/', views.addWhiteListHistory, name="addWhiteListHistory"), path('schoolsIndex', views.schoolsIndex, name="schoolsIndex"), path('createSchool', views.createSchool, name="createSchool"), @@ -45,4 +44,5 @@ urlpatterns = [ path('allMenus//', views.all_menus, name="allMenus"), path('exportCSV', views.export_csv, name="exportCSV"), path('switchActivateUser/', views.switch_activate_user, name="switchActivateUser"), + path('genUserInfos/', views.gen_user_infos, name="genUserInfos"), ] diff --git a/users/views.py b/users/views.py index c2ce219..cda384a 100644 --- a/users/views.py +++ b/users/views.py @@ -9,12 +9,16 @@ from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator from django.contrib.auth.decorators import login_required, permission_required from django.forms.models import model_to_dict from django.utils import timezone +from django.conf import settings import simplejson as json from datetime import datetime, timedelta from dal import autocomplete import csv +import os + +from django_tex.views import render_to_pdf from coopeV3.acl import admin_required, superuser_required, self_or_has_perm, active_required from .models import CotisationHistory, WhiteListHistory, School from .forms import CreateUserForm, LoginForm, CreateGroupForm, EditGroupForm, SelectUserForm, GroupsEditForm, EditPasswordForm, addCotisationHistoryForm, addCotisationHistoryForm, addWhiteListHistoryForm, SelectNonAdminUserForm, SelectNonSuperUserForm, SchoolForm, ExportForm @@ -23,22 +27,7 @@ from gestion.models import Reload, Consumption, ConsumptionHistory, MenuHistory @active_required def loginView(request): """ - Display the login form for :model:`User`. - - **Context** - - ``form_entete`` - Title of the form. - - ``form`` - The login form. - - ``form_button`` - Content of the form button. - - **Template** - - :template:`form.html` + Displays the :class:`users.forms.LoginForm`. """ form = LoginForm(request.POST or None) if(form.is_valid()): @@ -58,7 +47,7 @@ def loginView(request): @login_required def logoutView(request): """ - Logout the logged user + Logout the logged user (:class:`django.contrib.auth.models.User`). """ logout(request) messages.success(request, "Vous êtes à présent déconnecté") @@ -69,16 +58,15 @@ def logoutView(request): @permission_required('auth.view_user') def index(request): """ - Display the index for user related actions - - **Template** - - :template:`users/index.html` + Display the index for user related actions. """ export_form = ExportForm(request.POST or None) return render(request, "users/index.html", {"export_form": export_form}) def export_csv(request): + """ + Displays a :class:`users.forms.ExportForm` to export csv files of users. + """ export_form = ExportForm(request.POST or None) if export_form.is_valid(): users = User.objects @@ -128,35 +116,14 @@ def export_csv(request): @self_or_has_perm('pk', 'auth.view_user') def profile(request, pk): """ - Display the profile for the requested user + Displays the profile for the requested user (:class:`django.contrib.auth.models.User`). - ``pk`` - The primary key for user - - **Context** - - ``user`` - The instance of User - - ``self`` - Boolean value wich indicates if the current logged user and the request user are the same - - ``cotisations`` - List of the user's cotisations - - ``whitelists`` - List of the user's whitelists - - ``reloads`` - List of the last 5 reloads of the user - - **Template** - - :template:`users/profile.html` + pk + The primary key of the user (:class:`django.contrib.auth.models.User`) to display profile """ user = get_object_or_404(User, pk=pk) self = request.user == user - cotisations = CotisationHistory.objects.filter(user=user) + cotisations = CotisationHistory.objects.filter(user=user).order_by('-paymentDate') whitelists = WhiteListHistory.objects.filter(user=user) reloads = Reload.objects.filter(customer=user).order_by('-date')[:5] consumptionsChart = Consumption.objects.filter(customer=user) @@ -177,8 +144,6 @@ def profile(request, pk): if quantities_pre[k]/totQ >= 0.01: products.append(products_pre[k]) quantities.append(quantities_pre[k]) - print(products) - print(quantities) lastConsumptions = ConsumptionHistory.objects.filter(customer=user).order_by('-date')[:10] lastMenus = MenuHistory.objects.filter(customer=user).order_by('-date')[:10] return render(request, "users/profile.html", @@ -199,55 +164,24 @@ def profile(request, pk): @permission_required('auth.add_user') def createUser(request): """ - Display a CreateUserForm instance. - - **Context** - - ``form_entete`` - The form title. - - ``form`` - The CreateUserForm instance. - - ``form_button`` - The content of the form button. - - **Template** - - :template:`form.html` + Displays a :class:`~users.forms.CreateUserForm` to create a user (:class:`django.contrib.auth.models.User`). """ form = CreateUserForm(request.POST or None) if(form.is_valid()): user = form.save(commit=False) - user.set_password(user.username) user.save() user.profile.school = form.cleaned_data['school'] user.save() messages.success(request, "L'utilisateur a bien été créé") return redirect(reverse('users:profile', kwargs={'pk':user.pk})) - return render(request, "form.html", {"form_entete": "Gestion des utilisateurs", "form":form, "form_title":"Création d'un nouvel utilisateur", "form_button":"Créer l'utilisateur", "form_button_icon": "user-plus"}) + return render(request, "form.html", {"form_entete": "Gestion des utilisateurs", "form":form, "form_title":"Création d'un nouvel utilisateur", "form_button":"Créer mon compte", "form_button_icon": "user-plus", 'extra_html': 'En cliquant sur le bouton "Créer mon compte", vous :
    • attestez sur l\'honneur que les informations fournies à l\'association Coopé Technopôle Metz sont correctes et que vous n\'avez jamais été enregistré dans l\'association sous un autre nom / pseudonyme
    • joignez l\'association de votre plein gré
    • vous engagez à respecter les statuts et le réglement intérieur de l\'association (envoyés par mail)
    • reconnaissez le but de l\'assocation Coopé Technopôle Metz et vous attestez avoir pris conaissances des droits et des devoirs des membres de l\'association
    • consentez à ce que les données fournies à l\'association, ainsi que vos autres données de compte (débit, crédit, solde et historique des transactions) soient stockées dans le logiciel de gestion et accessibles par tous les membres actifs de l\'association, en particulier par le comité de direction
    '}) @active_required @login_required @permission_required('auth.view_user') def searchUser(request): """ - Display a simple searchForm for User. - - **Context** - - ``form_entete`` - The form title. - - ``form`` - The searchForm instance. - - ``form_button`` - The content of the form button. - - **Template** - - :template:`form.html` + Displays a :class:`~users.forms.SelectUserForm` to search a user (:class:`django.contrib.auth.models.User`). """ form = SelectUserForm(request.POST or None) if(form.is_valid()): @@ -259,16 +193,7 @@ def searchUser(request): @permission_required('auth.view_user') def usersIndex(request): """ - Display the list of all users. - - **Context** - - ``users`` - The list of all users - - **Template** - - :template:`users/users_index.html` + Display the list of all users (:class:`django.contrib.auth.models.User`). """ users = User.objects.all() return render(request, "users/users_index.html", {"users":users}) @@ -278,25 +203,7 @@ def usersIndex(request): @permission_required('auth.change_user') def editGroups(request, pk): """ - Edit the groups of a user. - - ``pk`` - The pk of the user. - - **Context** - - ``form_entete`` - The form title. - - ``form`` - The GroupsEditForm instance. - - ``form_button`` - The content of the form button. - - **Template** - - :template:`form.html` + Displays a :class:`users.form.GroupsEditForm` to edit the groups of a user (:class:`django.contrib.auth.models.User`). """ user = get_object_or_404(User, pk=pk) form = GroupsEditForm(request.POST or None, instance=user) @@ -312,24 +219,7 @@ def editGroups(request, pk): @permission_required('auth.change_user') def editPassword(request, pk): """ - Change the password of a user. - - ``pk`` - The pk of the user. - - **Context** - ``form_entete`` - The form title. - - ``form`` - The EditPasswordForm instance. - - ``form_button`` - The content of the form button. - - **Template** - - :template:`form.html` + Displays a :class:`users.form.EditPasswordForm` to edit the password of a user (:class:`django.contrib.auth.models.User`). """ user = get_object_or_404(User, pk=pk) if user != request.user: @@ -352,25 +242,7 @@ def editPassword(request, pk): @permission_required('auth.change_user') def editUser(request, pk): """ - Edit a user and user profile - - ``pk`` - The pk of the user. - - **Context** - - ``form_entete`` - The form title. - - ``form`` - The CreateUserForm instance. - - ``form_button`` - The content of the form button. - - **Template** - - :template:`form.html` + Displays a :class:`~users.forms.CreateUserForm` to edit a user (:class:`django.contrib.auth.models.User`). """ user = get_object_or_404(User, pk=pk) form = CreateUserForm(request.POST or None, instance=user, initial = {'school': user.profile.school}) @@ -386,11 +258,7 @@ def editUser(request, pk): @permission_required('auth.change_user') def resetPassword(request, pk): """ - Reset the password of a user. - - ``pk`` - The pk of the user - + Reset the password of a user (:class:`django.contrib.auth.models.User`). """ user = get_object_or_404(User, pk=pk) if user.is_superuser: @@ -407,10 +275,10 @@ def resetPassword(request, pk): @permission_required('auth.view_user') def getUser(request, pk): """ - Return username and balance of the requested user (pk) + Get requested user (:class:`django.contrib.auth.models.User`) and return username, balance and is_adherent in JSON format. - ``pk`` - The pk of the user + pk + The primary key of the user to get infos. """ user = get_object_or_404(User, pk=pk) data = json.dumps({"username": user.username, "balance": user.profile.balance, "is_adherent": user.profile.is_adherent}) @@ -421,23 +289,7 @@ def getUser(request, pk): @self_or_has_perm('pk', 'auth.view_user') def allReloads(request, pk, page): """ - Display all the reloads of the requested user. - - ``pk`` - The pk of the user. - ``page`` - The page number. - - **Context** - - ``reloads`` - The reloads of the page. - ``user`` - The requested user - - **Template** - - :template:`users/allReloads.html` + Display all the :class:`reloads ` of the requested user (:class:`django.contrib.auth.models.User`). """ user = get_object_or_404(User, pk=pk) allReloads = Reload.objects.filter(customer=user).order_by('-date') @@ -450,23 +302,7 @@ def allReloads(request, pk, page): @self_or_has_perm('pk', 'auth.view_user') def all_consumptions(request, pk, page): """ - Display all the consumptions of the requested user. - - ``pk`` - The pk of the user. - ``page`` - The page number. - - **Context** - - ``reloads`` - The reloads of the page. - ``user`` - The requested user - - **Template** - - :template:`users/all_consumptions.html` + Display all the `consumptions ` of the requested user (:class:`django.contrib.auth.models.User`). """ user = get_object_or_404(User, pk=pk) all_consumptions = ConsumptionHistory.objects.filter(customer=user).order_by('-date') @@ -479,23 +315,7 @@ def all_consumptions(request, pk, page): @self_or_has_perm('pk', 'auth.view_user') def all_menus(request, pk, page): """ - Display all the menus of the requested user. - - ``pk`` - The pk of the user. - ``page`` - The page number. - - **Context** - - ``reloads`` - The reloads of the page. - ``user`` - The requested user - - **Template** - - :template:`users/all_menus.html` + Display all the `menus ` of the requested user (:class:`django.contrib.auth.models.User`). """ user = get_object_or_404(User, pk=pk) all_menus = MenuHistory.objects.filter(customer=user).order_by('-date') @@ -507,12 +327,31 @@ def all_menus(request, pk, page): @login_required @permission_required('auth.change_user') def switch_activate_user(request, pk): + """ + Switch the active status of the requested user (:class:`django.contrib.auth.models.User`). + + pk + The primary key of the user to switch status + """ user = get_object_or_404(User, pk=pk) user.is_active = 1 - user.is_active user.save() messages.success(request, "Le statut de l'utilisateur a bien été changé") return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/')) - + +@active_required +@login_required +@permission_required('auth.view_user') +def gen_user_infos(request, pk): + """ + Generates a latex document include adhesion certificate and list of `cotisations `. + """ + user= get_object_or_404(User, pk=pk) + cotisations = CotisationHistory.objects.filter(user=user).order_by('-paymentDate') + now = datetime.now() + path = os.path.join(settings.BASE_DIR, "users/templates/users/coope.png") + return render_to_pdf(request, 'users/bulletin.tex', {"user": user, "now": now, "cotisations": cotisations, "path":path}, filename="bulletin_" + user.first_name + "_" + user.last_name + ".pdf") + ########## Groups ########## @active_required @@ -520,16 +359,7 @@ def switch_activate_user(request, pk): @permission_required('auth.view_group') def groupsIndex(request): """ - Display all the groups. - - **Context** - - ``groups`` - List of all groups. - - **Template** - - :template:`users/groups_index.html` + Displays all the groups (:class:`django.contrib.auth.models.Group`). """ groups = Group.objects.all() return render(request, "users/groups_index.html", {"groups": groups}) @@ -539,19 +369,7 @@ def groupsIndex(request): @permission_required('auth.view_group') def groupProfile(request, pk): """ - Display the profile of a group. - - ``pk`` - The pk of the group. - - **Context** - - ``group`` - The requested group. - - **Template** - - :template:`users/group_profile.html` + Displays the profile of a group (:class:`django.contrib.auth.models.Group`). """ group = get_object_or_404(Group, pk=pk) return render(request, "users/group_profile.html", {"group": group}) @@ -561,22 +379,7 @@ def groupProfile(request, pk): @permission_required('auth.add_group') def createGroup(request): """ - Create a group with a CreateGroupForm instance. - - **Context** - - ``form_entete`` - The form title. - - ``form`` - The CreateGroupForm instance. - - ``form_button`` - The content of the form button. - - **Template** - - :template:`form.html` + Displays a :class:`~users.forms.CreateGroupForm` to create a group (:class:`django.contrib.auth.models.Group`). """ form = CreateGroupForm(request.POST or None) if(form.is_valid()): @@ -590,25 +393,10 @@ def createGroup(request): @permission_required('auth.change_group') def editGroup(request, pk): """ - Edit a group with a EditGroupForm instance. + Displays a :class:`~users.forms.EditGroupForm` to edit a group (:class:`django.contrib.auth.models.Group`). - ``pk`` - The pk of the group. - - **Context** - - ``form_entete`` - The form title. - - ``form`` - The EditGroupForm instance. - - ``form_button`` - The content of the form button. - - **Template** - - :template:`form.html` + pk + The primary key of the group to edit. """ group = get_object_or_404(Group, pk=pk) form = EditGroupForm(request.POST or None, instance=group) @@ -624,11 +412,10 @@ def editGroup(request, pk): @permission_required('auth.delete_group') def deleteGroup(request, pk): """ - Delete the requested group. + Deletes the requested group (:class:`django.contrib.auth.models.Group`). - ``pk`` - The pk of the group - + pk + The primary key of the group to delete """ group = get_object_or_404(Group, pk=pk) if group.user_set.count() == 0: @@ -645,14 +432,7 @@ def deleteGroup(request, pk): @permission_required('auth.change_group') def removeRight(request, groupPk, permissionPk): """ - Remove a right from a given group. - - ``groupPk`` - The pk of the group. - - ``permissionPk`` - The pk of the right. - + Removes a right from a given group (:class:`django.contrib.auth.models.Group`). """ group = get_object_or_404(Group, pk=groupPk) perm = get_object_or_404(Permission, pk=permissionPk) @@ -668,14 +448,7 @@ def removeRight(request, groupPk, permissionPk): @permission_required('auth.change_user') def removeUser(request, groupPk, userPk): """ - Remove a user from a given group. - - ``groupPk`` - The pk of the group. - - ``userPk`` - The pk of the user. - + Removes a user (:class:`django.contrib.auth.models.User`) from a given group (:class:`django.contrib.auth.models.Group`). """ group = get_object_or_404(Group, pk=groupPk) user = get_object_or_404(User, pk=userPk) @@ -693,16 +466,7 @@ def removeUser(request, groupPk, userPk): @admin_required def adminsIndex(request): """ - Lists the staff - - **Context** - - ``admins`` - List of staff - - **Template** - - :template:`users/admins_index.html` + Lists the staff (:class:`django.contrib.auth.models.User` with is_staff True) """ admins = User.objects.filter(is_staff=True) return render(request, "users/admins_index.html", {"admins": admins}) @@ -712,22 +476,7 @@ def adminsIndex(request): @admin_required def addAdmin(request): """ - Form to add a member to staff - - **Context** - - ``form`` - The SelectNonAdminUserForm form instance - - ``form_title`` - The title of the form - - ``form_button`` - The text of the button - - **Template** - - :template:`form.html` + Displays a :class:`users.forms.SelectNonAdminUserForm` to select a non admin user (:class:`django.contrib.auth.models.User`) and add it to the admins. """ form = SelectNonAdminUserForm(request.POST or None) if(form.is_valid()): @@ -743,10 +492,10 @@ def addAdmin(request): @admin_required def removeAdmin(request, pk): """ - Remove an user form staff + Removes an user (:class:`django.contrib.auth.models.User`) from staff. - ``pk`` - The primary key of the user + pk + The primary key of the user (:class:`django.contrib.auth.models.User`) to remove from staff """ user = get_object_or_404(User, pk=pk) if user.is_staff: @@ -770,16 +519,7 @@ def removeAdmin(request, pk): @superuser_required def superusersIndex(request): """ - Lists the superusers - - **Context** - - ``superusers`` - List of superusers - - **Template** - - :template:`users/superusers_index.html` + Lists the superusers (:class:`django.contrib.auth.models.User` with is_superuser True). """ superusers = User.objects.filter(is_superuser=True) return render(request, "users/superusers_index.html", {"superusers": superusers}) @@ -789,22 +529,7 @@ def superusersIndex(request): @superuser_required def addSuperuser(request): """ - Displays a form to add a superuser - - **Context** - - ``form`` - The SelectNonSuperUserForm form instance - - ``form_title`` - The title of the form - - ``form_button`` - The text of the button - - **Template** - - :template:`form.html` + Displays a :class:`users.forms.SelectNonAdminUserForm` to select a non superuser user (:class:`django.contrib.auth.models.User`) and add it to the superusers. """ form = SelectNonSuperUserForm(request.POST or None) if form.is_valid(): @@ -821,10 +546,7 @@ def addSuperuser(request): @superuser_required def removeSuperuser(request, pk): """ - Removes a user from superusers - - ``pk`` - The primary key of the user + Removes a user (:class:`django.contrib.auth.models.User`) from superusers. """ user = get_object_or_404(User, pk=pk) if user.is_superuser: @@ -845,25 +567,10 @@ def removeSuperuser(request, pk): @permission_required('users.add_cotisationhistory') def addCotisationHistory(request, pk): """ - Add a cotisation to the requested user + Displays a :class:`users.forms.addCotisationHistoryForm` to add a :class:`Cotisation History `. """ schools = School.objects.all() return render(request, "users/schools_index.html", {"schools": schools}) @@ -997,22 +660,7 @@ def schoolsIndex(request): @permission_required('users.add_school') def createSchool(request): """ - Displays form to create :model:`users.School` - - **Context** - - ``form`` - The SchoolForm form instance - - ``form_title`` - The title of the form - - ``form_button`` - The text of the button - - **Template** - - :template:`form.html` + Displays :class:`~users.forms.SchoolForm` to add a :class:`~users.models.School`. """ form = SchoolForm(request.POST or None) if form.is_valid(): @@ -1026,25 +674,10 @@ def createSchool(request): @permission_required('users.change_school') def editSchool(request, pk): """ - Displays form to create :model:`users.School` + Displays :class:`~users.forms.SchoolForm` to edit a :class:`~users.models.School`. - ``pk`` - The primary key of :model:`users.School` - - **Context** - - ``form`` - The SchoolForm form instance - - ``form_title`` - The title of the form - - ``form_button`` - The text of the button - - **Template** - - :template:`form.html` + pk + The primary key of the school to edit. """ school = get_object_or_404(School, pk=pk) form = SchoolForm(request.POST or None, instance=school) @@ -1059,10 +692,10 @@ def editSchool(request, pk): @permission_required('users.delete_school') def deleteSchool(request, pk): """ - Delete a :model:`users.School` + Deletes a :class:`users.models.School`. - ``pk`` - The primary key of the school to delete + pk + The primary key of the School to delete. """ school = get_object_or_404(School, pk=pk) message = "L'école " + str(school) + " a bien été supprimée" @@ -1074,7 +707,7 @@ def deleteSchool(request, pk): class AllUsersAutocomplete(autocomplete.Select2QuerySetView): """ - Autcomplete for all users + Autcomplete for all users (:class:`django.contrib.auth.models.User`). """ def get_queryset(self): qs = User.objects.all() @@ -1084,7 +717,7 @@ class AllUsersAutocomplete(autocomplete.Select2QuerySetView): class ActiveUsersAutocomplete(autocomplete.Select2QuerySetView): """ - Autocomplete for active users + Autocomplete for active users (:class:`django.contrib.auth.models.User`). """ def get_queryset(self): qs = User.objects.filter(is_active=True) @@ -1094,7 +727,7 @@ class ActiveUsersAutocomplete(autocomplete.Select2QuerySetView): class AdherentAutocomplete(autocomplete.Select2QuerySetView): """ - Autocomplete for adherents + Autocomplete for adherents (:class:`django.contrib.auth.models.User`). """ def get_queryset(self): qs = User.objects.all() @@ -1107,7 +740,7 @@ class AdherentAutocomplete(autocomplete.Select2QuerySetView): class NonSuperUserAutocomplete(autocomplete.Select2QuerySetView): """ - Autocomplete for non-superuser users + Autocomplete for non-superuser users (:class:`django.contrib.auth.models.User`). """ def get_queryset(self): qs = User.objects.filter(is_superuser=False) @@ -1117,7 +750,7 @@ class NonSuperUserAutocomplete(autocomplete.Select2QuerySetView): class NonAdminUserAutocomplete(autocomplete.Select2QuerySetView): """ - Autocomplete for non-admin users + Autocomplete for non-admin users (:class:`django.contrib.auth.models.User`). """ def get_queryset(self): qs = User.objects.filter(is_staff=False)