pax_global_header00006660000000000000000000000064132030666530014516gustar00rootroot0000000000000052 comment=c8345d2e1c04e784dc8d38681a0037b1e0849066 django-debug-toolbar-1.9.1/000077500000000000000000000000001320306665300155145ustar00rootroot00000000000000django-debug-toolbar-1.9.1/.coveragerc000066400000000000000000000001161320306665300176330ustar00rootroot00000000000000[run] source = debug_toolbar branch = 1 [report] omit = *tests*,*migrations* django-debug-toolbar-1.9.1/.gitignore000066400000000000000000000002001320306665300174740ustar00rootroot00000000000000*.pyc *.DS_Store *~ build .coverage dist django_debug_toolbar.egg-info docs/_build example/db.sqlite3 htmlcov .tox node_modules django-debug-toolbar-1.9.1/.travis.yml000066400000000000000000000016211320306665300176250ustar00rootroot00000000000000language: python sudo: false cache: pip matrix: include: - python: 2.7 env: TOXENV=py27-dj18 - python: 3.3 env: TOXENV=py33-dj18 - python: 3.4 env: TOXENV=py34-dj18 - python: 2.7 env: TOXENV=py27-dj19 - python: 3.4 env: TOXENV=py34-dj19 - python: 3.5 env: TOXENV=py35-dj19 - python: 2.7 env: TOXENV=py27-dj110 - python: 3.4 env: TOXENV=py34-dj110 - python: 3.5 env: TOXENV=py35-dj110 - python: 2.7 env: TOXENV=py27-dj111 - python: 3.4 env: TOXENV=py34-dj111 - python: 3.5 env: TOXENV=py35-dj111 - python: 3.5 env: TOXENV=py35-dj20 - python: 3.6 env: TOXENV=py36-dj111 - python: 3.6 env: TOXENV=py36-dj20 - env: TOXENV=flake8 - env: TOXENV=isort - env: TOXENV=readme install: - pip install tox codecov script: - tox -v after_success: - codecov django-debug-toolbar-1.9.1/.tx/000077500000000000000000000000001320306665300162255ustar00rootroot00000000000000django-debug-toolbar-1.9.1/.tx/config000066400000000000000000000003611320306665300174150ustar00rootroot00000000000000[main] host = https://www.transifex.com lang_map = sr@latin:sr_Latn [django-debug-toolbar.master] file_filter = debug_toolbar/locale//LC_MESSAGES/django.po source_file = debug_toolbar/locale/en/LC_MESSAGES/django.po source_lang = en django-debug-toolbar-1.9.1/CONTRIBUTING.md000066400000000000000000000006761320306665300177560ustar00rootroot00000000000000[![Jazzband](https://jazzband.co/static/img/jazzband.svg)](https://jazzband.co/) This is a [Jazzband](https://jazzband.co/) project. By contributing you agree to abide by the [Contributor Code of Conduct](https://jazzband.co/about/conduct) and follow the [guidelines](https://jazzband.co/about/guidelines). Please see the [full contributing documentation](https://django-debug-toolbar.readthedocs.io/en/stable/contributing.html) for more help. django-debug-toolbar-1.9.1/LICENSE000066400000000000000000000030061320306665300165200ustar00rootroot00000000000000Copyright (c) Rob Hudson and individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Django nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. django-debug-toolbar-1.9.1/MANIFEST.in000066400000000000000000000002711320306665300172520ustar00rootroot00000000000000include LICENSE include README.rst include CONTRIBUTING.md recursive-include debug_toolbar/locale * recursive-include debug_toolbar/static * recursive-include debug_toolbar/templates * django-debug-toolbar-1.9.1/Makefile000066400000000000000000000022211320306665300171510ustar00rootroot00000000000000.PHONY: flake8 example test coverage translatable_strings update_translations flake8: flake8 debug_toolbar example tests isort: isort -rc debug_toolbar example tests isort_check_only: isort -rc -c debug_toolbar example tests example: DJANGO_SETTINGS_MODULE=example.settings \ django-admin runserver jshint: node_modules/jshint/bin/jshint ./node_modules/jshint/bin/jshint debug_toolbar/static/debug_toolbar/js/*.js node_modules/jshint/bin/jshint: npm install jshint --prefix . test: DJANGO_SETTINGS_MODULE=tests.settings \ django-admin test $${TEST_ARGS:-tests} test_selenium: DJANGO_SELENIUM_TESTS=true DJANGO_SETTINGS_MODULE=tests.settings \ django-admin test $${TEST_ARGS:-tests} coverage: python --version coverage erase DJANGO_SETTINGS_MODULE=tests.settings \ coverage run `which django-admin` test -v2 $${TEST_ARGS:-tests} coverage report coverage html translatable_strings: cd debug_toolbar && django-admin makemessages -l en --no-obsolete @echo "Please commit changes and run 'tx push -s' (or wait for Transifex to pick them)" update_translations: tx pull -a --minimum-perc=10 cd debug_toolbar && django-admin compilemessages django-debug-toolbar-1.9.1/README.rst000066400000000000000000000034161320306665300172070ustar00rootroot00000000000000==================== Django Debug Toolbar ==================== .. image:: https://jazzband.co/static/img/badge.svg :target: https://jazzband.co/ :alt: Jazzband .. image:: https://travis-ci.org/jazzband/django-debug-toolbar.svg?branch=master :target: https://travis-ci.org/jazzband/django-debug-toolbar :alt: Build Status .. image:: https://codecov.io/gh/jazzband/django-debug-toolbar/branch/master/graph/badge.svg :target: https://codecov.io/gh/jazzband/django-debug-toolbar :alt: Test coverage status .. image:: https://requires.io/github/jazzband/django-debug-toolbar/requirements.svg?branch=master :target: https://requires.io/github/jazzband/django-debug-toolbar/requirements/?branch=master :alt: Requirements Status The Django Debug Toolbar is a configurable set of panels that display various debug information about the current request/response and when clicked, display more details about the panel's content. Here's a screenshot of the toolbar in action: .. image:: https://raw.github.com/jazzband/django-debug-toolbar/master/example/django-debug-toolbar.png :width: 908 :height: 557 In addition to the built-in panels, a number of third-party panels are contributed by the community. The current version of the Debug Toolbar is 1.9. It works on Django ≥ 1.8. Documentation, including installation and configuration instructions, is available at https://django-debug-toolbar.readthedocs.io/. The Django Debug Toolbar is released under the BSD license, like Django itself. If you like it, please consider contributing! The Django Debug Toolbar was originally created by Rob Hudson in August 2008 and was further developed by many contributors_. .. _contributors: https://github.com/jazzband/django-debug-toolbar/graphs/contributors django-debug-toolbar-1.9.1/debug_toolbar/000077500000000000000000000000001320306665300203245ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/__init__.py000066400000000000000000000010051320306665300224310ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import django __all__ = ['VERSION'] try: import pkg_resources VERSION = pkg_resources.get_distribution('django-debug-toolbar').version except Exception: VERSION = 'unknown' # Code that discovers files or modules in INSTALLED_APPS imports this module. if django.VERSION < (1, 9): urls = 'debug_toolbar.toolbar', 'djdt', 'djdt' else: urls = 'debug_toolbar.toolbar', 'djdt' default_app_config = 'debug_toolbar.apps.DebugToolbarConfig' django-debug-toolbar-1.9.1/debug_toolbar/apps.py000066400000000000000000000045271320306665300216510ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import inspect from django.apps import AppConfig from django.conf import settings from django.core.checks import Error, register from django.middleware.gzip import GZipMiddleware from django.utils.module_loading import import_string from django.utils.translation import ugettext_lazy as _ class DebugToolbarConfig(AppConfig): name = 'debug_toolbar' verbose_name = _("Debug Toolbar") @register def check_middleware(app_configs, **kwargs): from debug_toolbar.middleware import DebugToolbarMiddleware errors = [] gzip_index = None debug_toolbar_index = None setting = getattr(settings, 'MIDDLEWARE', None) setting_name = 'MIDDLEWARE' if setting is None: setting = settings.MIDDLEWARE_CLASSES setting_name = 'MIDDLEWARE_CLASSES' # Determine the indexes which gzip and/or the toolbar are installed at for i, middleware in enumerate(setting): if is_middleware_class(GZipMiddleware, middleware): gzip_index = i elif is_middleware_class(DebugToolbarMiddleware, middleware): debug_toolbar_index = i if debug_toolbar_index is None: # If the toolbar does not appear, report an error. errors.append( Error( "debug_toolbar.middleware.DebugToolbarMiddleware is missing " "from %s." % setting_name, hint="Add debug_toolbar.middleware.DebugToolbarMiddleware to " "%s." % setting_name, ) ) elif gzip_index is not None and debug_toolbar_index < gzip_index: # If the toolbar appears before the gzip index, report an error. errors.append( Error( "debug_toolbar.middleware.DebugToolbarMiddleware occurs before " "django.middleware.gzip.GZipMiddleware in %s." % setting_name, hint="Move debug_toolbar.middleware.DebugToolbarMiddleware to " "after django.middleware.gzip.GZipMiddleware in %s." % setting_name, ) ) return errors def is_middleware_class(middleware_class, middleware_path): try: middleware_cls = import_string(middleware_path) except ImportError: return return ( inspect.isclass(middleware_cls) and issubclass(middleware_cls, middleware_class) ) django-debug-toolbar-1.9.1/debug_toolbar/compat.py000066400000000000000000000005071320306665300221630ustar00rootroot00000000000000""" This file exists to contain all Django and Python compatibility issues. In order to avoid circular references, nothing should be imported from debug_toolbar. """ try: from django.template.base import linebreak_iter # NOQA except ImportError: # Django < 1.9 from django.views.debug import linebreak_iter # NOQA django-debug-toolbar-1.9.1/debug_toolbar/decorators.py000066400000000000000000000006011320306665300230400ustar00rootroot00000000000000import functools from django.http import Http404 def require_show_toolbar(view): @functools.wraps(view) def inner(request, *args, **kwargs): from debug_toolbar.middleware import get_show_toolbar show_toolbar = get_show_toolbar() if not show_toolbar(request): raise Http404 return view(request, *args, **kwargs) return inner django-debug-toolbar-1.9.1/debug_toolbar/locale/000077500000000000000000000000001320306665300215635ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/ca/000077500000000000000000000000001320306665300221465ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/ca/LC_MESSAGES/000077500000000000000000000000001320306665300237335ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/ca/LC_MESSAGES/django.mo000066400000000000000000000055441320306665300255420ustar00rootroot00000000000000=S8 9CJQV^diow}      $ ) 5BGK Q[cl p}     &/@    ! 0 6 = D J Q Z e o }            # 3 D H L U b j o s |         ! ' 2 8 A I R  &2!)/+(1 = 5 <-30$*94"#, '.7:6;%8(unknown)ActionActiveBackBackendCacheCallCallsChannelCloseCommandsConnection:CountDatabaseElapsed timeErrorExecuted SQLHeadersHideHide toolbarIn transactionKeyLevelLocationLocation:Log messagesLoggingMessageNameNo GET dataNo POST dataNonePerQueryReceiversRequestResourceSQLSerializableSettingSettingsShow toolbarSignalSignalsSummaryTemplatesTimeTime (ms)TimelineTotTimeTotal callsTotal timeTotal: %0.2fmsTypeUnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Catalan (http://www.transifex.com/projects/p/django-debug-toolbar/language/ca/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ca Plural-Forms: nplurals=2; plural=(n != 1); (desconegut)AccióActiuTornarAdministracióCaxèCridarCridesCanalTancarComandesConnexió:RecomptarBase de dadesTemps empratErrorSQL ExecutatEncapçalamentsAmagarAmagar barra d'einaEn transaccióClauNivellUbicacióUbicació:Registre de missatgesEntrantMissatgeNomSense dades GETSense dades POSTCapPerPeticióDestinatarisDemanarFontSQLSeriableConfiguracióConfiguracióMostrar barra d'einesSenyalSenyalsResumPlantillesHoraTemps (ms)Línia temporalTempsTotalTotal cridesTotal tempsTotal: %0.2fmsTipusDesconegutValorVariableVersióVersionsVeure informaciódjango-debug-toolbar-1.9.1/debug_toolbar/locale/ca/LC_MESSAGES/django.po000066400000000000000000000344361320306665300255470ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Libre El Chaval , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/django-debug-toolbar/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "Caxè" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "Encapçalaments" #: panels/logging.py:64 msgid "Logging" msgstr "Entrant" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" #: panels/logging.py:73 msgid "Log messages" msgstr "Registre de missatges" #: panels/profiling.py:127 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "Demanar" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Configuració" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:53 msgid "Signals" msgstr "Senyals" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Hora" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Temps emprat" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versions" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Seriable" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "Actiu" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "En transacció" #: panels/sql/panel.py:40 msgid "In error" msgstr "" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Desconegut" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Plantilles" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Amagar barra d'eina" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Amagar" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Mostrar barra d'eines" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Tancar" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Ubicació:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resum" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Total crides" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Total temps" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandes" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Crides" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Temps (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipus" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Administració" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clau" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nivell" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Missatge" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Ubicació" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Cridar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TempsTotal" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Recomptar" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Veure informació" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Sense dades GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Sense dades POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuració" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Senyal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Destinataris" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Petició" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Línia temporal" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Acció" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Connexió:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(desconegut)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Tornar" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executat" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de dades" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Error" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Cap" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Plantilles" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Font" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nom" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versió" django-debug-toolbar-1.9.1/debug_toolbar/locale/cs/000077500000000000000000000000001320306665300221705ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/cs/LC_MESSAGES/000077500000000000000000000000001320306665300237555ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/cs/LC_MESSAGES/django.mo000066400000000000000000000225371320306665300255650ustar00rootroot00000000000000d J $  l7 N . ." Q c u  )     !&."=`Ff   $)17N?(  ' # (5:CRfw{  -  1 AL_o t~      . ; H Ubjs h /"P s5 &@ ' 6 BM\pu~   4@,uxHXMhz- ). 7 ALRZ"t #;PYbi r |7 Q D!Np!   &BT[r{*:I'a    ( 3 H T f w {   #   !!i!4!_!Y"v"C""""7#;#K#,T##;$ @$ J$W$_$q$z$$ $$$$ $ $$$ % %%%"+%N%}S@Y])!,'9uj?(F1m+r=JyR5< i{\#GWPC-KQZp%VXN_cHdhk8[;2B^g :|*E T3 "$o>/wO0zt4&Mnfsq UI A.LaDxb76~el`v%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Czech (http://www.transifex.com/projects/p/django-debug-toolbar/language/cs/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: cs Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; %(cache_calls)d volání během %(time).2fms%(cache_calls)d volání během %(time).2fms%(cache_calls)d volání během %(time).2fms%(count)s zpráva%(count)s zprávy%(count)s zpráv%(num)s dotaz%(num)s dotazy%(num)s dotazů%(num_receivers)d příjemce %(num_signals)d signálů%(num_receivers)d příjemci %(num_signals)d signálů%(num_receivers)d příjemců %(num_signals)d signálů%(num_receivers)d příjemce 1 signálu%(num_receivers)d příjemci 1 signálu%(num_receivers)d příjemců 1 signálu%(num_used)s soubor použit%(num_used)s soubory použity%(num_used)s souborů použito%(payload_count)s soubor%(payload_count)s soubory%(payload_count)s souborů%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d dobrovolně, %(ivcsw)d nedobrovolně(prefix %(prefix)s)(neznámé)<žádný pohled>AkceAktivníArgumentyAutocommitZpětBackendČasování prohlížečeCPU: %(cum)0.2fms (%(total)0.2fms)MezipaměťVolání mezipaměti z %(count)d backenduVolání mezipaměti z %(count)d backendůVolání mezipaměti z %(count)d backendůNalezení v mezipamětiNebylo v mezipamětiVoláníVoláníKanálZavřítPříkazySpojení:Procesor kontextuProcesory kontextuProcesory kontextuPřepnutí kontextuSoubory cookiePočetKumulČasData pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to znova.DatabázeVypnout pro následné požadavkyUplynulý časPrázdná sadaZapnout pro následné požadavkyChybaSpuštěné SQLData typu GETZáhlavíSkrýtSkrýt lištuV klidu (idle)V chybovém stavuUvnitř transakceZachycení přesměrováníÚroveň izolace:KlíčKlíčované argumentyÚroveňAdresaAdresa:Zprávy protokoluProtokolZprávaMilisekund od začátku navigace (+délka)NázevŽádná data typu GETŽádná data typu POSTPro tento požadavek nebyl zaznamenán žádný dotaz SQL.Žádné soubory cookieNebyly protokolovány žádné zprávy.Žádná data sezeníŽádnéData typu POSTCestaCelk. za voláníProfilováníPoskytujeDotazRead committedRead uncommittedPříjemciRepeatable readPožadavekZáhlaví požadavkuProstředekVyužití zdrojůZáhlaví odezvySQLVysvětlené SQLProfilované SQLVybrané SQLSerializableData sezeníNastaveníSettingsNastavení z modulu %sZobrazit lištuSignálSignályNíže je zobrazena pouze podstatná část proměnných prostředí, protože WSGI je dědí od serveru.Statický souborStatické souboryStatické souboryAplikace se statickými souboryAplikace se statickými souboryAplikace se statickými souboryCesta ke statickým souborůmCesty ke statickým souborůmCesty ke statickým souborůmStatické souboryStatické soubory (nalezeno: %(num_found)s, použito: %(num_used)s)SouhrnSystémový čas CPUŠablonaŠablonyŠablonyCesta k šabloněCesty k šablonámCesty k šablonámZdroj šablony:ŠablonyŠablony (renderovaných: %(num_templates)s)Aplikace Django Debug Toolbar zachytila přesměrování na výše uvedenou adresu URL za účelem ladicího zobrazení. Chcete-li přesměrování dokončit, klepněte na odkaz výše.ČasČas (ms)Časová osaAtributZap./vyp. kontextCelkČasCelkový čas CPUCelkem voláníCelkový časCelkem: %0.2fmsStav transakce:TypNázev URLNeznáméUživatelský čas CPUHodnotaProměnnáVerzeVerzePohledová funkceInformace o pohledových funkcíchProstředí WSGIdjango-debug-toolbar-1.9.1/debug_toolbar/locale/cs/LC_MESSAGES/django.po000066400000000000000000000422671320306665300255720ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Vlada Macek , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Czech (http://www.transifex.com/projects/p/django-debug-toolbar/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Data pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to znova." #: panels/cache.py:191 msgid "Cache" msgstr "Mezipaměť" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volání během %(time).2fms" msgstr[1] "%(cache_calls)d volání během %(time).2fms" msgstr[2] "%(cache_calls)d volání během %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Volání mezipaměti z %(count)d backendu" msgstr[1] "Volání mezipaměti z %(count)d backendů" msgstr[2] "Volání mezipaměti z %(count)d backendů" #: panels/headers.py:35 msgid "Headers" msgstr "Záhlaví" #: panels/logging.py:64 msgid "Logging" msgstr "Protokol" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s zpráva" msgstr[1] "%(count)s zprávy" msgstr[2] "%(count)s zpráv" #: panels/logging.py:73 msgid "Log messages" msgstr "Zprávy protokolu" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profilování" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Zachycení přesměrování" #: panels/request.py:18 msgid "Request" msgstr "Požadavek" #: panels/request.py:35 msgid "" msgstr "<žádný pohled>" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Settings" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Nastavení z modulu %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d příjemce 1 signálu" msgstr[1] "%(num_receivers)d příjemci 1 signálu" msgstr[2] "%(num_receivers)d příjemců 1 signálu" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d příjemce %(num_signals)d signálů" msgstr[1] "%(num_receivers)d příjemci %(num_signals)d signálů" msgstr[2] "%(num_receivers)d příjemců %(num_signals)d signálů" #: panels/signals.py:53 msgid "Signals" msgstr "Signály" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statické soubory (nalezeno: %(num_found)s, použito: %(num_used)s)" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Statické soubory" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s soubor použit" msgstr[1] "%(num_used)s soubory použity" msgstr[2] "%(num_used)s souborů použito" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Celkem: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Čas" #: panels/timer.py:42 msgid "User CPU time" msgstr "Uživatelský čas CPU" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" #: panels/timer.py:43 msgid "System CPU time" msgstr "Systémový čas CPU" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Celkový čas CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Uplynulý čas" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" #: panels/timer.py:46 msgid "Context switches" msgstr "Přepnutí kontextu" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d dobrovolně, %(ivcsw)d nedobrovolně" #: panels/versions.py:25 msgid "Versions" msgstr "Verze" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:37 msgid "Idle" msgstr "V klidu (idle)" #: panels/sql/panel.py:38 msgid "Active" msgstr "Aktivní" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "Uvnitř transakce" #: panels/sql/panel.py:40 msgid "In error" msgstr "V chybovém stavu" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Neznámé" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Šablony" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Šablony (renderovaných: %(num_templates)s)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Skrýt lištu" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Skrýt" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Vypnout pro následné požadavky" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Zapnout pro následné požadavky" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Zobrazit lištu" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Zavřít" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Adresa:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Aplikace Django Debug Toolbar zachytila přesměrování na výše uvedenou adresu URL za účelem ladicího zobrazení. Chcete-li přesměrování dokončit, klepněte na odkaz výše." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Souhrn" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Celkem volání" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Celkový čas" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Nalezení v mezipaměti" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Nebylo v mezipaměti" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Příkazy" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Volání" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Čas (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumenty" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Klíčované argumenty" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Záhlaví požadavku" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Klíč" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Hodnota" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Záhlaví odezvy" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Prostředí WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Níže je zobrazena pouze podstatná část proměnných prostředí, protože WSGI je dědí od serveru." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Úroveň" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanál" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Zpráva" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Adresa" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nebyly protokolovány žádné zprávy." #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Volání" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "KumulČas" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Celk. za volání" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "CelkČas" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Počet" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Informace o pohledových funkcích" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Pohledová funkce" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Název URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Soubory cookie" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Proměnná" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Žádné soubory cookie" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Data sezení" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Žádná data sezení" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Data typu GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Žádná data typu GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Data typu POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Žádná data typu POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Nastavení" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signál" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Poskytuje" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Příjemci" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s dotaz" msgstr[1] "%(num)s dotazy" msgstr[2] "%(num)s dotazů" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Dotaz" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Časová osa" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Akce" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Spojení:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Úroveň izolace:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Stav transakce:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(neznámé)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Pro tento požadavek nebyl zaznamenán žádný dotaz SQL." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Zpět" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "Vysvětlené SQL" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Spuštěné SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databáze" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "Profilované SQL" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Chyba" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "Vybrané SQL" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Prázdná sada" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Cesta ke statickým souborům" msgstr[1] "Cesty ke statickým souborům" msgstr[2] "Cesty ke statickým souborům" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefix %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Žádné" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplikace se statickými soubory" msgstr[1] "Aplikace se statickými soubory" msgstr[2] "Aplikace se statickými soubory" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Statický soubor" msgstr[1] "Statické soubory" msgstr[2] "Statické soubory" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s soubor" msgstr[1] "%(payload_count)s soubory" msgstr[2] "%(payload_count)s souborů" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Cesta" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Zdroj šablony:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Cesta k šabloně" msgstr[1] "Cesty k šablonám" msgstr[2] "Cesty k šablonám" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Šablona" msgstr[1] "Šablony" msgstr[2] "Šablony" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Zap./vyp. kontext" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Procesor kontextu" msgstr[1] "Procesory kontextu" msgstr[2] "Procesory kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Využití zdrojů" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Prostředek" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Časování prohlížeče" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Atribut" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Milisekund od začátku navigace (+délka)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Název" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Verze" django-debug-toolbar-1.9.1/debug_toolbar/locale/de/000077500000000000000000000000001320306665300221535ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/de/LC_MESSAGES/000077500000000000000000000000001320306665300237405ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/de/LC_MESSAGES/django.mo000066400000000000000000000213031320306665300255360ustar00rootroot00000000000000\p Jq $  l Nl . .  + = T )f      " F a ly~ $NB(K t '  +/AG P Zgo-w  1 # (27 ; EOUd u     ' ERYha " '54jr &   $)2 :HNW_ hv PS% s[_71%5EZ+j     ""H(q  % V h;r 9  ( /:MT[p ,#B4 w     )<D S]r    !!p)!68, @>      ' !! !!!!!! " "'"7"K"O" X"b"t"y"" " "" "/6Q#WiZx=T!a8eNy<\dG20np3|@"5Jz]If KPMt^wl ck~B4?hO:Hg>'`A7)(o*b9+{vL%FD , mV;1u.E_RsrqS- XU [C}j&Y$%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: German (http://www.transifex.com/projects/p/django-debug-toolbar/language/de/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: de Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d Abfrage in %(time).2fms%(cache_calls)d Abfragen in %(time).2fms%(count)s Eintrag%(count)s Einträge%(num)s Abfrage%(num)s Abfragen%(num_receivers)d Empfänger von %(num_signals)d Signalen%(num_receivers)d Empfänger von %(num_signals)d Signalen%(num_receivers)d Empfänger von einem Signal%(num_receivers)d Empfänger von einem Signal%(num_used)s Datei benutzt%(num_used)s Dateien benutzt%(payload_count)s Datei%(payload_count)s Dateien%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig(unbekannt)AktionAktivArgumenteAutocommitZurückBackendBrowserzeitCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache-Aufrufe von %(count)d BackendCache-Aufrufe von %(count)d BackendsCache erfolgreichCache verfehltAufrufAufrufeKanalSchließenBefehleVerbindung:Context-ProzessorContext-ProzessorenKontextwechselCookiesAnzahlGesamtDie Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die Seite neu.DatenbankFür nächste und die darauffolgenden Anfragen deaktivierenVerstrichene ZeitLeeres SetFür nächste und die darauffolgenden Anfragen aktivierenFehlerAusgeführtes SQLGET-DatenHeaderAusblendenToolbar ausblendenWartetFehlerIn einer TransaktionUmleitungen abfangenIsolationsebene:NameSchlüsselwort-ArgumenteLevelOrtZiel:LogeinträgeLoggingEintragMillisekunden seit Seitenaufruf (plus Dauer)NameKeine GET-DatenKeine POST-DatenEs wurde keine SQL-Abfrage während dieses Vorgangs aufgezeichnet.Keine CookiesKeine Logbucheinträge vorhandenKeine Sitzungsdaten-POST-DatenPfadPerProfilingStellt bereitAbfrageLesend, ausgeführtLesend, nicht ausgeführtEmpfängerWiederholtes LesenAnfrageAnfrage-HeaderRessourceRessourcenverwendungAntwort-HeaderSQLSQL erklärtSQL durchleuchtetSQL ausgewähltVariableSitzungsdatenEinstellungEinstellungenEinstellungen von %sToolbar einblendenSignalSignaleDa sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt.Statische DateiStatische DateienApp mit statischen DateienApps mit statischen DateienPfad mit statischen DateienPfade mit statischen DateienStatische DateienStatische Dateien (%(num_found)s gefunden, %(num_used)s benutzt)ZusammenfassungCPU-Zeit SystemTemplateTemplatesTemplate-PfadTemplate-PfadeTemplate-Quelle:TemplatesTemplates (%(num_templates)s gerendert)Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt weitergeleitet zu werden.ZeitZeit (ms)VerlaufTiming-AttributContext zeigenTotalCPU-Zeit gesamtAufrufe gesamtZeit gesamtGesamt: %0.2fmsTransaktionsstatus:TypURL-NameUnbekanntCPU-Zeit BenutzerWertVariableVersionVersionenView-FunktionView-InformationenWSGI-Umgebungdjango-debug-toolbar-1.9.1/debug_toolbar/locale/de/LC_MESSAGES/django.po000066400000000000000000000407111320306665300255450ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Jannis Leidel , 2012-2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: German (http://www.transifex.com/projects/p/django-debug-toolbar/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Die Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die Seite neu." #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d Abfrage in %(time).2fms" msgstr[1] "%(cache_calls)d Abfragen in %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Cache-Aufrufe von %(count)d Backend" msgstr[1] "Cache-Aufrufe von %(count)d Backends" #: panels/headers.py:35 msgid "Headers" msgstr "Header" #: panels/logging.py:64 msgid "Logging" msgstr "Logging" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s Eintrag" msgstr[1] "%(count)s Einträge" #: panels/logging.py:73 msgid "Log messages" msgstr "Logeinträge" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profiling" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Umleitungen abfangen" #: panels/request.py:18 msgid "Request" msgstr "Anfrage" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Einstellungen" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Einstellungen von %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d Empfänger von einem Signal" msgstr[1] "%(num_receivers)d Empfänger von einem Signal" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" msgstr[1] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" #: panels/signals.py:53 msgid "Signals" msgstr "Signale" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statische Dateien (%(num_found)s gefunden, %(num_used)s benutzt)" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Statische Dateien" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s Datei benutzt" msgstr[1] "%(num_used)s Dateien benutzt" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Gesamt: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Zeit" #: panels/timer.py:42 msgid "User CPU time" msgstr "CPU-Zeit Benutzer" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" #: panels/timer.py:43 msgid "System CPU time" msgstr "CPU-Zeit System" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" #: panels/timer.py:44 msgid "Total CPU time" msgstr "CPU-Zeit gesamt" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Verstrichene Zeit" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" #: panels/timer.py:46 msgid "Context switches" msgstr "Kontextwechsel" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig" #: panels/versions.py:25 msgid "Versions" msgstr "Versionen" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "Lesend, nicht ausgeführt" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "Lesend, ausgeführt" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "Wiederholtes Lesen" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Variable" #: panels/sql/panel.py:37 msgid "Idle" msgstr "Wartet" #: panels/sql/panel.py:38 msgid "Active" msgstr "Aktiv" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "In einer Transaktion" #: panels/sql/panel.py:40 msgid "In error" msgstr "Fehler" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Unbekannt" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s gerendert)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Toolbar ausblenden" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Ausblenden" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Für nächste und die darauffolgenden Anfragen deaktivieren" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Für nächste und die darauffolgenden Anfragen aktivieren" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Toolbar einblenden" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Schließen" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Ziel:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt weitergeleitet zu werden." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Zusammenfassung" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Aufrufe gesamt" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Zeit gesamt" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Cache erfolgreich" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Cache verfehlt" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Befehle" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Aufrufe" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Zeit (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumente" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Schlüsselwort-Argumente" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Anfrage-Header" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Name" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Wert" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Antwort-Header" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI-Umgebung" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Da sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Level" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Eintrag" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Ort" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Keine Logbucheinträge vorhanden" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Aufruf" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "Gesamt" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "Total" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Anzahl" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View-Informationen" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View-Funktion" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL-Name" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Keine Cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Sitzungsdaten" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Keine Sitzungsdaten" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET-Daten" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Keine GET-Daten" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST-Daten" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Keine POST-Daten" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Einstellung" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Stellt bereit" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Empfänger" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s Abfrage" msgstr[1] "%(num)s Abfragen" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Abfrage" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Verlauf" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Aktion" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Verbindung:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Isolationsebene:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Transaktionsstatus:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(unbekannt)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Es wurde keine SQL-Abfrage während dieses Vorgangs aufgezeichnet." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Zurück" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL erklärt" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Ausgeführtes SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Datenbank" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL durchleuchtet" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Fehler" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL ausgewählt" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Leeres Set" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Pfad mit statischen Dateien" msgstr[1] "Pfade mit statischen Dateien" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "-" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "App mit statischen Dateien" msgstr[1] "Apps mit statischen Dateien" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Statische Datei" msgstr[1] "Statische Dateien" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s Datei" msgstr[1] "%(payload_count)s Dateien" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Pfad" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Template-Quelle:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Template-Pfad" msgstr[1] "Template-Pfade" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Context zeigen" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context-Prozessor" msgstr[1] "Context-Prozessoren" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Ressourcenverwendung" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Ressource" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Browserzeit" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Timing-Attribut" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Millisekunden seit Seitenaufruf (plus Dauer)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Name" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Version" django-debug-toolbar-1.9.1/debug_toolbar/locale/en/000077500000000000000000000000001320306665300221655ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/en/LC_MESSAGES/000077500000000000000000000000001320306665300237525ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/en/LC_MESSAGES/django.mo000066400000000000000000000005761320306665300255610ustar00rootroot00000000000000$,8D9Project-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2012-03-31 20:10+0000 Last-Translator: Language-Team: Language: en MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1) django-debug-toolbar-1.9.1/debug_toolbar/locale/en/LC_MESSAGES/django.po000066400000000000000000000330371320306665300255620ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-06 16:50-0400\n" "PO-Revision-Date: 2012-03-31 20:10+0000\n" "Last-Translator: \n" "Language-Team: \n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: panels/cache.py:209 msgid "Cache" msgstr "" #: panels/cache.py:214 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:222 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:33 msgid "Headers" msgstr "" #: panels/logging.py:63 msgid "Logging" msgstr "" #: panels/logging.py:69 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" #: panels/logging.py:72 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:42 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:50 msgid "Signals" msgstr "" #: panels/sql/panel.py:23 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:24 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:25 msgid "Read committed" msgstr "" #: panels/sql/panel.py:26 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:27 msgid "Serializable" msgstr "" #: panels/sql/panel.py:38 msgid "Idle" msgstr "" #: panels/sql/panel.py:39 msgid "Active" msgstr "" #: panels/sql/panel.py:40 msgid "In transaction" msgstr "" #: panels/sql/panel.py:41 msgid "In error" msgstr "" #: panels/sql/panel.py:42 msgid "Unknown" msgstr "" #: panels/sql/panel.py:106 msgid "SQL" msgstr "" #: panels/staticfiles.py:86 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:104 msgid "Static files" msgstr "" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/templates/panel.py:171 msgid "Templates" msgstr "" #: panels/templates/panel.py:176 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: panels/templates/panel.py:207 msgid "No origin" msgstr "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:21 msgid "Versions" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:23 msgid "Time (ms)" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:9 #, python-format msgid "including %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:22 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:24 msgid "Action" msgstr "" #: templates/debug_toolbar/panels/sql.html:39 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:71 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:73 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:76 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:90 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:99 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" django-debug-toolbar-1.9.1/debug_toolbar/locale/es/000077500000000000000000000000001320306665300221725ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/es/LC_MESSAGES/000077500000000000000000000000001320306665300237575ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/es/LC_MESSAGES/django.mo000066400000000000000000000221161320306665300255600ustar00rootroot00000000000000\p Jq $  l Nl . .  + = T )f       "(F. u  $NV(_  '   .?CU[ d n{-  1 '7 <FK O Ycix      *2; Yfmhu " ;5H~ &   ',5 =KQZb ky PW$"oO`74/AX+j    % "1TXZ / 9MU \og 4.1@r x  "? E P\ r|7 8 %AV^mrv  .G K Yg x"p %w E 5 !D-!r!{!!%!! !+!"# #'#8# Q#[#o# ##### ###$ $ $$+$ A$07R$Xj[>U"b9fOy=]eH31oq4|A# 6Kz^Jg LQN_wm dl~C5@iP;Ih?(aB8*)p+c:,{xM&GE u- nW<2v/F`StsrT. YV!\D}k'Z%%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Spanish (http://www.transifex.com/projects/p/django-debug-toolbar/language/es/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: es Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d llamada en %(time).2fms%(cache_calls)d llamadas en %(time).2fms%(count)s mensaje%(count)s mensajes%(num)s consulta%(num)s consultas%(num_receivers)d receptor de %(num_signals)d señales%(num_receivers)d receptores de %(num_signals)d señales%(num_receivers)d receptor de 1 señal%(num_receivers)d receptores de 1 señal%(num_used)s archivo usado%(num_used)s archivos usados%(payload_count)s archivo%(payload_count)s archivos%(stime)0.3f mseg%(total)0.3f mseg%(total_time)0.3f mseg%(utime)0.3f mseg%(vcsw)d voluntario, %(ivcsw)d involuntario(prefijo %(prefix)s)(desconocido)AcciónActivoArgumentosAutocommitRegresarBackendDistribución de tiempos de navegadorCPU: %(cum)0.2fms (%(total)0.2fms)Cache%(count)d llamadas al Cache desde el backend%(count)d llamadas al Caché desde backendsAciertos de cachéErrores de cachéLlamarLlamadasCanalCerrarComandosConexión:Procesador de contextoProcesadores de contextoCambios de contextoCookiesContarTiempoAcumLa información de este panel ya no se encuentra disponible. Por favor recargue la página y pruebe nuevamente.Base de datosDeshabilitar para el próximo y sucesivos peticionesTiempo transcurridoEstablecer VacíoHabilitar para el próximo y sucesivos peticionesErrorSQL EjecutadoDatos del GETEncabezadosOcultarOcutar barra de herramientasInactivoEn errorEn transacciónInterceptar re-direcionamientoNivel de aislamiento:ClaveArgumentos por palabra claveNivelUbicaciónUbicación:Mensajes del registroRegistrosMensajeMilisegundos desde inicio de la navegación (+longitud)NombreSin datos GETSin datos POSTNo se registraron consultas SQL durante ésta petición.Sin cookiesNo hay mensajes registradosSin datos de sesiónNingunoDatos del POSTRutaPorAnálisis de rendimientoProporcionandoQueryLeer cambios permanentesLeer cambios tentativosReceptoresLectura repetiblePeticiónEncabezados de peticionesRecursoUso de recursosEncabezados de respuestaSQLSQL explicadoSQL analizadoSQL seleccionadoSerializableDatos de sesiónConfiguraciónConfiguracionesConfiguraciones en %sMostrar barra de herramientasSeñalSeñalesYa que el entorno WSGI hereda el entorno del servidor, solo un subconjunto significativo es mostrado más abajo.Archivo estáticoArchivos estáticosAplicación a archivos estáticosAplicaciones de archivos estáticosRuta a archivos estáticoRutas a archivos estáticosArchivos estáticosArchivos estáticos (%(num_found)s encontrados, %(num_used)s en uso)ResúmenTiempo en CPU del sistemaPlantillaPlantillasRuta de plantillaRutas de plantillasFuente de plantilla:PlantillasPlantillas (%(num_templates)s renderizadas)El Django Debug Toolbar ha interceptado un re-direccionamiento a la dirección de Internet mostrada arriba, con el propósito de inspeccionarla. Usted puede hacer clic en el vínculo de arriba para continuar con el re-direccionamiento normalmente.TiempoTiempo (ms)Línea de tiempoMostrar/Ocultar contextoTiempoTotTiempo total de CPULlamadas totalesTiempo totalTotal: %0.2fmsEstado de la transacción:TipoNombre de dirección URLDesconocidoTiempo en CPU de usuarioValorVariableVersiónVersionesFunción vistaInformación de VistaEntorno WSGIdjango-debug-toolbar-1.9.1/debug_toolbar/locale/es/LC_MESSAGES/django.po000066400000000000000000000416651320306665300255750ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # jcatalan , 2014 # Leonardo J. Caballero G. , 2013-2014 # marcelor , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/django-debug-toolbar/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "La información de este panel ya no se encuentra disponible. Por favor recargue la página y pruebe nuevamente." #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d llamada en %(time).2fms" msgstr[1] "%(cache_calls)d llamadas en %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "%(count)d llamadas al Cache desde el backend" msgstr[1] "%(count)d llamadas al Caché desde backends" #: panels/headers.py:35 msgid "Headers" msgstr "Encabezados" #: panels/logging.py:64 msgid "Logging" msgstr "Registros" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s mensaje" msgstr[1] "%(count)s mensajes" #: panels/logging.py:73 msgid "Log messages" msgstr "Mensajes del registro" #: panels/profiling.py:127 msgid "Profiling" msgstr "Análisis de rendimiento" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interceptar re-direcionamiento" #: panels/request.py:18 msgid "Request" msgstr "Petición" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Configuraciones" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Configuraciones en %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receptor de 1 señal" msgstr[1] "%(num_receivers)d receptores de 1 señal" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receptor de %(num_signals)d señales" msgstr[1] "%(num_receivers)d receptores de %(num_signals)d señales" #: panels/signals.py:53 msgid "Signals" msgstr "Señales" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Archivos estáticos (%(num_found)s encontrados, %(num_used)s en uso)" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Archivos estáticos" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s archivo usado" msgstr[1] "%(num_used)s archivos usados" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tiempo" #: panels/timer.py:42 msgid "User CPU time" msgstr "Tiempo en CPU de usuario" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f mseg" #: panels/timer.py:43 msgid "System CPU time" msgstr "Tiempo en CPU del sistema" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f mseg" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Tiempo total de CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f mseg" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Tiempo transcurrido" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f mseg" #: panels/timer.py:46 msgid "Context switches" msgstr "Cambios de contexto" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntario, %(ivcsw)d involuntario" #: panels/versions.py:25 msgid "Versions" msgstr "Versiones" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "Leer cambios tentativos" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "Leer cambios permanentes" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "Lectura repetible" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:37 msgid "Idle" msgstr "Inactivo" #: panels/sql/panel.py:38 msgid "Active" msgstr "Activo" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "En transacción" #: panels/sql/panel.py:40 msgid "In error" msgstr "En error" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Desconocido" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Plantillas" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Plantillas (%(num_templates)s renderizadas)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Ocutar barra de herramientas" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Ocultar" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Deshabilitar para el próximo y sucesivos peticiones" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Habilitar para el próximo y sucesivos peticiones" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Mostrar barra de herramientas" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Cerrar" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Ubicación:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "El Django Debug Toolbar ha interceptado un re-direccionamiento a la dirección de Internet mostrada arriba, con el propósito de inspeccionarla. Usted puede hacer clic en el vínculo de arriba para continuar con el re-direccionamiento normalmente." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resúmen" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Llamadas totales" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Tiempo total" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Aciertos de caché" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Errores de caché" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Llamadas" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Tiempo (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumentos" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Argumentos por palabra clave" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Encabezados de peticiones" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Encabezados de respuesta" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Entorno WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Ya que el entorno WSGI hereda el entorno del servidor, solo un subconjunto significativo es mostrado más abajo." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nivel" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Mensaje" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Ubicación" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "No hay mensajes registrados" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Llamar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "TiempoAcum" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Por" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TiempoTot" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Contar" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Información de Vista" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Función vista" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nombre de dirección URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Sin cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Datos de sesión" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Sin datos de sesión" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Datos del GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Sin datos GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Datos del POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Sin datos POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuración" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Señal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Proporcionando" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Receptores" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s consulta" msgstr[1] "%(num)s consultas" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Línea de tiempo" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Acción" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Conexión:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Nivel de aislamiento:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Estado de la transacción:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(desconocido)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "No se registraron consultas SQL durante ésta petición." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Regresar" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL explicado" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Ejecutado" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de datos" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL analizado" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Error" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL seleccionado" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Establecer Vacío" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Ruta a archivos estático" msgstr[1] "Rutas a archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefijo %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Ninguno" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplicación a archivos estáticos" msgstr[1] "Aplicaciones de archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Archivo estático" msgstr[1] "Archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s archivo" msgstr[1] "%(payload_count)s archivos" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Ruta" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Fuente de plantilla:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Ruta de plantilla" msgstr[1] "Rutas de plantillas" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Plantilla" msgstr[1] "Plantillas" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Mostrar/Ocultar contexto" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Procesador de contexto" msgstr[1] "Procesadores de contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Uso de recursos" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Distribución de tiempos de navegador" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Milisegundos desde inicio de la navegación (+longitud)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nombre" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versión" django-debug-toolbar-1.9.1/debug_toolbar/locale/fi/000077500000000000000000000000001320306665300221615ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/fi/LC_MESSAGES/000077500000000000000000000000001320306665300237465ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/fi/LC_MESSAGES/django.mo000066400000000000000000000111341320306665300255450ustar00rootroot00000000000000NkJ$l7N. @JQ Xc"h $    ' , 5 D U Y _ h p x } 1          % . L S [ h x  &       ! ) 7 = F N W h F( #o  u Y)    " (4:AG'Ow       % 27@x  %  1I!]/  .3<CK+ F%;/J&=<( G37,>96E481*BLM C:I)0.#$ A5N"-? HK 'D2@!%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec(unknown)ActionActiveAutocommitBackCPU: %(cum)0.2fms (%(total)0.2fms)CacheCallChannelCloseConnection:Context processorContext processorsContext switchesCountCumTimeDatabaseElapsed timeEmpty setErrorExecuted SQLHideIn errorIn transactionIsolation level:KeyLevelLocationLoggingMessageNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No messages loggedNonePathPerProfilingQueryReceiversResourceSQLSerializableSettingSettingsSettings from %sSignalSignalsStatic filesSystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TimelineTotTimeTotal CPU timeTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Finnish (http://www.transifex.com/projects/p/django-debug-toolbar/language/fi/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fi Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d kutsu %(time).2fms%(cache_calls)d kutsua %(time).2fms%(count)s viesti%(count)s viestiä%(num)s kysely%(num)s kyselyä%(num_receivers)d vastaanotin %(num_signals)d signaalille%(num_receivers)d vastaanotinta %(num_signals)d signaalille%(num_receivers)d vastaanotin 1 signaalille%(num_receivers)d vastaanotinta 1 signaalille%(stime)0.3f msek%(total)0.3f msek%(total_time)0.3f msek%(utime)0.3f msek(tuntematon)TapahtumaTapahtumaAutocommitTakaisinCPU: %(cum)0.2fms (%(total)0.2fms)VälimuistiKutsuKanavaSuljeYhteys:KontekstiprosessoriKontekstiprosessoriKontekstin vivutMääräCumTimeTietokantaKulunut aikaTyhjä joukkoVirheSuoritettu SQLPiilotaVirheTapahtuman tila:Eristystaso:AvainTasoSijaintiLokiViestiNimiEi GET-dataaEi POST-dataaTämän pyynnön aikana ei tehty yhtään SQL-kyselyä.Ei viestejä lokissaNonePolku/ProfilointiKyselyVastaanottimetResurssiSQLMuuttujaAsetusAsetuksetAsetukset tiedostosta %sSignaaliSignaalitStaattiset tiedostotJärjestelmän CPU-aikaSivupohjaSivupohjaSivupohjan polkuSivupohjan polkuAsettelupohjatAsetttelupohjat (%(num_templates)s renderöity)AikaAika (ms)AikajanaTotTimeCPU-aika yhteensäTapahtuman status:Tyyppi(tuntematon)Käyttäjän CPU-aikaArvoMuuttujaVersioVersiotNäkymän tiedotdjango-debug-toolbar-1.9.1/debug_toolbar/locale/fi/LC_MESSAGES/django.po000066400000000000000000000357321320306665300255620ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # nanook , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/django-debug-toolbar/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "Välimuisti" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d kutsu %(time).2fms" msgstr[1] "%(cache_calls)d kutsua %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Loki" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s viesti" msgstr[1] "%(count)s viestiä" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profilointi" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Asetukset" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Asetukset tiedostosta %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d vastaanotin 1 signaalille" msgstr[1] "%(num_receivers)d vastaanotinta 1 signaalille" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d vastaanotin %(num_signals)d signaalille" msgstr[1] "%(num_receivers)d vastaanotinta %(num_signals)d signaalille" #: panels/signals.py:53 msgid "Signals" msgstr "Signaalit" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Staattiset tiedostot" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Aika" #: panels/timer.py:42 msgid "User CPU time" msgstr "Käyttäjän CPU-aika" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msek" #: panels/timer.py:43 msgid "System CPU time" msgstr "Järjestelmän CPU-aika" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msek" #: panels/timer.py:44 msgid "Total CPU time" msgstr "CPU-aika yhteensä" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msek" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Kulunut aika" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msek" #: panels/timer.py:46 msgid "Context switches" msgstr "Kontekstin vivut" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versiot" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Muuttuja" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "Tapahtuma" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "Tapahtuman tila:" #: panels/sql/panel.py:40 msgid "In error" msgstr "Virhe" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "(tuntematon)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Asettelupohjat" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Asetttelupohjat (%(num_templates)s renderöity)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Piilota" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Sulje" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Aika (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tyyppi" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Avain" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Arvo" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Taso" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanava" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Viesti" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Sijainti" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Ei viestejä lokissa" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Kutsu" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "/" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Määrä" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Näkymän tiedot" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Muuttuja" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Ei GET-dataa" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Ei POST-dataa" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Asetus" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signaali" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Vastaanottimet" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s kysely" msgstr[1] "%(num)s kyselyä" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Kysely" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Aikajana" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Tapahtuma" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Yhteys:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Eristystaso:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Tapahtuman status:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(tuntematon)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Tämän pyynnön aikana ei tehty yhtään SQL-kyselyä." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Takaisin" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Suoritettu SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Tietokanta" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Virhe" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Tyhjä joukko" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "None" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Staattiset tiedostot" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Polku" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Sivupohjan polku" msgstr[1] "Sivupohjan polku" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Sivupohja" msgstr[1] "Sivupohja" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Kontekstiprosessori" msgstr[1] "Kontekstiprosessori" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Resurssi" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nimi" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versio" django-debug-toolbar-1.9.1/debug_toolbar/locale/fr/000077500000000000000000000000001320306665300221725ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/fr/LC_MESSAGES/000077500000000000000000000000001320306665300237575ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/fr/LC_MESSAGES/django.mo000066400000000000000000000213671320306665300255670ustar00rootroot00000000000000Dl8 J9 $  l N4 . .     ). X b l z     "  F ) 4AFLTZ c$oN ( < I'S{     "/7-?m r ~1    , =GW_ox      !h) " 5!1 B&Ls )2CRZ i u   L$"ClfN="4`+ #29 ?K[bi"P &-3 : D.Q ](%N ]$k    6;O Vbq;A?Nl      (2Mc g u   pD8 G ` i   & ! ! !!! !"" ,"8"I"d" i" s"""""""""n &xkuo7cLptMs1 E<q!Zz2%Q0=F}?j/Jm>Y "SV_r#]{ W8^TfN-Rvh$ *B:[\43UP. G|)w,X+gOl`'~dyCD;b(H@i56eKA9aI%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: French (http://www.transifex.com/projects/p/django-debug-toolbar/language/fr/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fr Plural-Forms: nplurals=2; plural=(n > 1); %(cache_calls)d appel en %(time).2fms%(cache_calls)d appels en %(time).2fms%(count)s message%(count)s messages%(num)s requête%(num)s requêtes%(num_receivers)d receveur de %(num_signals)d signaux%(num_receivers)d receveurs de %(num_signals)d signaux%(num_receivers)d receveur d'un signal%(num_receivers)d receveurs d'un signal%(num_used)s fichier utilisé%(num_used)s fichiers utilisés%(payload_count)s fichier%(payload_count)s fichiers%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d volontaire, %(ivcsw)d involontaire(indéterminé)ActionActifParamètresAuto validationRetourMoteurChronologie du navigateurCPU: %(cum)0.2fms (%(total)0.2fms)CacheAppels au cache depuis %(count)d moteurAppels au cache depuis %(count)d moteursSuccès de cacheDéfauts de cacheAppelAppelsCanalFermerCommandesConnexion :Processeur de contexteProcesseurs de contexteBasculements de contexteCookiesCompteTemps cumuléLes données de ce panneau ne sont plus disponibles. Rechargez la page et essayez à nouveau.Base de donnéesDésactiver pour les requêtes suivantesTemps écouléEnsemble videActiver pour les requêtes suivantesErreurSQL ExécutéDonnées GETEn-têtesMasquerMasquer la barre d'outilsInactifErreurTransaction en coursInterception des redirectionsNiveau d'isolation :CléParamètres nommésNiveauEmplacementEmplacement :Messages du journalJournauxMessageMillisecondes depuis le début de la navigation (+longueur)NomAucune donnée GETAucune donnée POSTAucune requête SQL n'a été enregistrée durant cette requête.Pas de cookiesAucun message dans le journalPas de données de sessionAucunDonnées POSTCheminParProfilageFournissantRequêteLecture validéeLecture non validéeReceveursLecture répétableRequêteEn-têtes de requêteRessourceUtilisation des ressourcesEn-têtes de réponseSQLSQL expliquéSQL profiléSQL sélectionnéSérialisableDonnées de sessionParamètreParamètresParamètres de %sAfficher la barre d'outilsSignalSignauxComme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble pertinent est affiché ci-dessous.Application de fichiers statiquesApplications de fichiers statiquesChemin de fichier statiqueChemins de fichiers statiquesFichiers statiquesFichiers statiques (%(num_found)s trouvé(s), %(num_used)s utilisé(s))RésuméTemps CPU du systèmeSource du gabarit :GabaritsGabarits (%(num_templates)s affichés)La barre de débogage Django a intercepté une redirection vers l'URL ci-dessus afin de permettre la consultation des messages de débogage. Vous pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la redirection.TempsTemps (ms)ChronologieAttribut mesuréAfficher/masquer le contexteTemps totalTemps total du CPUNombre total d'appelsTemps totalTotal : %0.2fmsÉtat de la transaction :TypeNom d'URLIndéterminéTemps CPU de l'utilisateurValeurVariableVersionVersionsFonction de vueAfficher l'informationEnvironnement WSGIdjango-debug-toolbar-1.9.1/debug_toolbar/locale/fr/LC_MESSAGES/django.po000066400000000000000000000414141320306665300255650ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Pingax , 2013 # claudep , 2013 # David Paccoud, 2009 # drivard , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: French (http://www.transifex.com/projects/p/django-debug-toolbar/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Les données de ce panneau ne sont plus disponibles. Rechargez la page et essayez à nouveau." #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d appel en %(time).2fms" msgstr[1] "%(cache_calls)d appels en %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Appels au cache depuis %(count)d moteur" msgstr[1] "Appels au cache depuis %(count)d moteurs" #: panels/headers.py:35 msgid "Headers" msgstr "En-têtes" #: panels/logging.py:64 msgid "Logging" msgstr "Journaux" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s message" msgstr[1] "%(count)s messages" #: panels/logging.py:73 msgid "Log messages" msgstr "Messages du journal" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profilage" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interception des redirections" #: panels/request.py:18 msgid "Request" msgstr "Requête" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Paramètres" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Paramètres de %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receveur d'un signal" msgstr[1] "%(num_receivers)d receveurs d'un signal" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receveur de %(num_signals)d signaux" msgstr[1] "%(num_receivers)d receveurs de %(num_signals)d signaux" #: panels/signals.py:53 msgid "Signals" msgstr "Signaux" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Fichiers statiques (%(num_found)s trouvé(s), %(num_used)s utilisé(s))" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Fichiers statiques" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s fichier utilisé" msgstr[1] "%(num_used)s fichiers utilisés" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Total : %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Temps" #: panels/timer.py:42 msgid "User CPU time" msgstr "Temps CPU de l'utilisateur" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" #: panels/timer.py:43 msgid "System CPU time" msgstr "Temps CPU du système" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Temps total du CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Temps écoulé" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" #: panels/timer.py:46 msgid "Context switches" msgstr "Basculements de contexte" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d volontaire, %(ivcsw)d involontaire" #: panels/versions.py:25 msgid "Versions" msgstr "Versions" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Auto validation" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "Lecture non validée" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "Lecture validée" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "Lecture répétable" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Sérialisable" #: panels/sql/panel.py:37 msgid "Idle" msgstr "Inactif" #: panels/sql/panel.py:38 msgid "Active" msgstr "Actif" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "Transaction en cours" #: panels/sql/panel.py:40 msgid "In error" msgstr "Erreur" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Indéterminé" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Gabarits" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Gabarits (%(num_templates)s affichés)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Masquer la barre d'outils" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Masquer" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Désactiver pour les requêtes suivantes" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Activer pour les requêtes suivantes" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Afficher la barre d'outils" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Fermer" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Emplacement :" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "La barre de débogage Django a intercepté une redirection vers l'URL ci-dessus afin de permettre la consultation des messages de débogage. Vous pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la redirection." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Résumé" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Nombre total d'appels" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Temps total" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Succès de cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Défauts de cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Commandes" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Appels" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Temps (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Type" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Paramètres" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Paramètres nommés" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Moteur" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "En-têtes de requête" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clé" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valeur" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "En-têtes de réponse" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Environnement WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Comme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble pertinent est affiché ci-dessous." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Niveau" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Message" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Emplacement" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Aucun message dans le journal" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Appel" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "Temps cumulé" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Par" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "Temps total" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Compte" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Afficher l'information" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Fonction de vue" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nom d'URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Pas de cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Données de session" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Pas de données de session" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Données GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Aucune donnée GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Données POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Aucune donnée POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Paramètre" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Fournissant" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Receveurs" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s requête" msgstr[1] "%(num)s requêtes" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Requête" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Chronologie" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Action" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Connexion :" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Niveau d'isolation :" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "État de la transaction :" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(indéterminé)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Aucune requête SQL n'a été enregistrée durant cette requête." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Retour" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL expliqué" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Exécuté" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de données" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilé" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erreur" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL sélectionné" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Ensemble vide" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Chemin de fichier statique" msgstr[1] "Chemins de fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Aucun" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Application de fichiers statiques" msgstr[1] "Applications de fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s fichier" msgstr[1] "%(payload_count)s fichiers" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Chemin" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Source du gabarit :" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "Chemin du gabarit" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Gabarit" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Afficher/masquer le contexte" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Processeur de contexte" msgstr[1] "Processeurs de contexte" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Utilisation des ressources" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Ressource" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Chronologie du navigateur" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Attribut mesuré" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Millisecondes depuis le début de la navigation (+longueur)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nom" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Version" django-debug-toolbar-1.9.1/debug_toolbar/locale/he/000077500000000000000000000000001320306665300221575ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/he/LC_MESSAGES/000077500000000000000000000000001320306665300237445ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/he/LC_MESSAGES/django.mo000066400000000000000000000031031320306665300255400ustar00rootroot00000000000000%`ahot z     $*3<  ' ;FU ^iry    " )4   ActionActiveBackCloseEmpty setErrorExecuted SQLHideIn errorKeyLevelLocationLoggingMessageNo GET dataNo POST dataNo messages loggedSerializableSignalSignalsTemplatesTimeTypeValueVariableVersionsProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Hebrew (http://www.transifex.com/projects/p/django-debug-toolbar/language/he/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: he Plural-Forms: nplurals=2; plural=(n != 1); פעילותפעילותחזרהסגורקבוצה ריקהשגיאהSQL שבוצעהסתרשגיאהמפתחרמהמקוםרישום יומןהודעהאין נתוני GETאין נתוני POSTאין הודעותמשתנהסיגנלסיגנליםתבניותזמןסוגערךמשתנהגירסאותdjango-debug-toolbar-1.9.1/debug_toolbar/locale/he/LC_MESSAGES/django.po000066400000000000000000000340301320306665300255460ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # shaib , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/django-debug-toolbar/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "רישום יומן" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:53 msgid "Signals" msgstr "סיגנלים" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "זמן" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "גירסאות" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "משתנה" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "פעילות" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "" #: panels/sql/panel.py:40 msgid "In error" msgstr "שגיאה" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "" #: panels/sql/panel.py:105 msgid "SQL" msgstr "" #: panels/templates/panel.py:141 msgid "Templates" msgstr "תבניות" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "הסתר" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "סגור" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "סוג" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "מפתח" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "ערך" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "רמה" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "הודעה" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "מקום" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "אין הודעות" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "משתנה" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "אין נתוני GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "אין נתוני POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "סיגנל" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "פעילות" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "חזרה" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL שבוצע" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "שגיאה" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "קבוצה ריקה" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "תבנית" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "" django-debug-toolbar-1.9.1/debug_toolbar/locale/id/000077500000000000000000000000001320306665300221575ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/id/LC_MESSAGES/000077500000000000000000000000001320306665300237445ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/id/LC_MESSAGES/django.mo000066400000000000000000000056551320306665300255560ustar00rootroot000000000000008O$ ">CK Q]ck t        $19B`go     !'08AR  0 5 : "B e m s {              / C ` j n w          / 7 F X ^ p      / (6#75 & !- 0)+.2 *",%3148'$ %(count)s message%(count)s messages(unknown)ActionActiveBackCPU: %(cum)0.2fms (%(total)0.2fms)CallChannelCloseConnection:CountCumTimeDatabaseElapsed timeEmpty setExecuted SQLHideIn transactionIsolation level:KeyLevelLocationMessageNo GET dataNo POST dataNo messages loggedNonePerReceiversResourceSQLSerializableSettingSettingsSettings from %sSignalSignalsStatic fileStatic filesStatic filesSystem CPU timeTemplate pathTemplate pathsTemplatesTimeTime (ms)TotTimeTotal CPU timeTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Indonesian (http://www.transifex.com/projects/p/django-debug-toolbar/language/id/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: id Plural-Forms: nplurals=1; plural=0; %(count)s pesan(tidak diketahui)AksiAksiKembaliCPU: %(cum)0.2fms (%(total)0.2fms)PanggilKanalMenutupKoneksi:HitungCumTimeBasis dataWaktu terlampauiHimpunan kosongSQL TereksekusiMenyembunyikanStatus transaksi:Tingkat isolasi:KunciTingkatLokasiPesanTidak ada data GETTidak ada data POSTTidak ada pesan yang dicatatTidak adaPerPenerimaSumber dayaSQLVariabelPengaturanPengaturanPengaturan dari %sSinyalSinyalBerkas statikBerkas statikCPU time sistemTemplate pathTemplateWaktuWaktu (milidetik)TotTimeCPU time totalStatus transaksi:Jenis(tidak diketahui)CPU time penggunaNilaiVariabelVersiVersiLihat informasidjango-debug-toolbar-1.9.1/debug_toolbar/locale/id/LC_MESSAGES/django.po000066400000000000000000000342321320306665300255520ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Muhammad Panji , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/django-debug-toolbar/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s pesan" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Pengaturan" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Pengaturan dari %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" #: panels/signals.py:53 msgid "Signals" msgstr "Sinyal" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Berkas statik" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Waktu" #: panels/timer.py:42 msgid "User CPU time" msgstr "CPU time pengguna" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "CPU time sistem" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "CPU time total" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Waktu terlampaui" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versi" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Variabel" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "Aksi" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "Status transaksi:" #: panels/sql/panel.py:40 msgid "In error" msgstr "" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "(tidak diketahui)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Template" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Menyembunyikan" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Menutup" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Waktu (milidetik)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Jenis" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Kunci" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Nilai" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Tingkat" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Pesan" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Lokasi" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Tidak ada pesan yang dicatat" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Panggil" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Hitung" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Lihat informasi" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variabel" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Tidak ada data GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Tidak ada data POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Pengaturan" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinyal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Penerima" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Aksi" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Koneksi:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Tingkat isolasi:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Status transaksi:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(tidak diketahui)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Kembali" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Tereksekusi" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Basis data" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Himpunan kosong" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Tidak ada" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Berkas statik" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Template path" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Sumber daya" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versi" django-debug-toolbar-1.9.1/debug_toolbar/locale/it/000077500000000000000000000000001320306665300221775ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/it/LC_MESSAGES/000077500000000000000000000000001320306665300237645ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/it/LC_MESSAGES/django.mo000066400000000000000000000211041320306665300255610ustar00rootroot00000000000000T` Ja $  l N\ . .   - D )V       " F e p} $NF(O x '   /3EK T ^ks-{  1 ' ,6; ? ISYh y     "+ IV]he " 5U]m &s x     &/7 @N _lQ,&~oS1/-+0\ r   "Q ^o $QY2b 0  (-4G^o t  7>$ cq    "7 ?Ka e q   a!h+ 8 + D Z &c 8! >!J! S!]!m!u!! !!!!! !!! !" " "$" 6"07R$Xi[w>U"b9fOx=]eH3~1mo4{A# 6Ky^J LQN_vl dk}C5@hP;Ig?(aB8*)n+c:,zuM&GE s- W<2t/F`SrqpT. YV!\D|j'Z%%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Italian (http://www.transifex.com/projects/p/django-debug-toolbar/language/it/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: it Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d chiamata in %(time).2fms%(cache_calls)d chiamate in %(time).2fms%(count)s messaggio%(count)s messaggi%(num)s query%(num)s query%(num_receivers)d ricevitore di %(num_signals)d segnali%(num_receivers)d ricevitori di %(num_signals)d segnali%(num_receivers)d ricevitore di 1 segnale%(num_receivers)d ricevitori di 1 segnale%(num_used)s file usato%(num_used)s file usati%(payload_count)s file%(payload_count)s file%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d volontario, %(ivcsw)d involontario(prefisso %(prefix)s)(sconosciuto)AzioneAzioneArgomentiAutocommitIndietroBackendTempo browserCPU: %(cum)0.2fms (%(total)0.2fms)CacheChiamate alla cache da %(count)d backendChiamate alla cache da %(count)d backendTrovati in cacheNon trovati in cacheChiamataChiamateCanaleChiudiComandiConnessione:Context processorContext processorsCambi di contestoCookiesNumeroCumTimeNon sono più disponibili dati per questo pannello. Ricarica la pagina e riprova.DatabaseDisattiva per la prossima requests e le successiveTempo TrascorsoInsieme vuotoAbilita per la prossima requests e le successiveErroreSQL eseguitaDati GETIntestazioniNascondiNascondi ToolbarIdleErroreStato transazione:Intercetta ridirezioniIsolation level:NomeParole chiaveLivelloLocationLocation:Messaggi di logLoggingMessaggioMillisecondi dall'inizio della navigazione (+lunghezza)NomeNessun dato in GETNessuno dato in POSTNessuna Query SQL è stata registrata durante questa richiestaNessun cookieNessun messaggio registratoNessun dato in sessioneNessunoDati POSTPercorsoPerProfilazioneFornitiQueryRead committedRead uncommittedRicevitoriRepeatable readRequestHeader della requestRisorsaUso risorsaHeader della responseSQLSQL spigatoSQL profilatoSQL selezionatoSerializableDati di sessioneImpostazioneImpostazioniImpostazioni da %sMostra ToolbarSegnaleSegnaliVisto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la parte significativa.App file staticiApp file staticiPercorso file staticiPercorsi file staticiFiles staticiFile statici (%(num_found)s trovati, %(num_used)s usati)SommarioTempo CPU sistemaPercorso dei templatePercorsi dei templateSorgente del templateTemplateTemplates (%(num_templates)s rendered)Django Debug Toolbar ha intercettato un redirect verso la URL indicata per visualizzare il debug, Puoi cliccare sul link sopra per continuare normalmente con la redirezione.TempoDurata (ms)TimelineAttributoCambia contestoTotTimeTempo Totale CPUChiamate totaliTempo TotaleTotale: %0.2fmsStato transazione:TipoNome URL(sconosciuto)Tempo CPU utenteValoreVariabileVersioneVersioniFunzione ViewVedi InformazioniAmbiente WSGIdjango-debug-toolbar-1.9.1/debug_toolbar/locale/it/LC_MESSAGES/django.po000066400000000000000000000407561320306665300256020ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Dario Agliottone , 2012 # Flavio Curella , 2013 # yakky , 2013-2014 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Italian (http://www.transifex.com/projects/p/django-debug-toolbar/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Non sono più disponibili dati per questo pannello. Ricarica la pagina e riprova." #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d chiamata in %(time).2fms" msgstr[1] "%(cache_calls)d chiamate in %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Chiamate alla cache da %(count)d backend" msgstr[1] "Chiamate alla cache da %(count)d backend" #: panels/headers.py:35 msgid "Headers" msgstr "Intestazioni" #: panels/logging.py:64 msgid "Logging" msgstr "Logging" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s messaggio" msgstr[1] "%(count)s messaggi" #: panels/logging.py:73 msgid "Log messages" msgstr "Messaggi di log" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profilazione" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Intercetta ridirezioni" #: panels/request.py:18 msgid "Request" msgstr "Request" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Impostazioni" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Impostazioni da %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d ricevitore di 1 segnale" msgstr[1] "%(num_receivers)d ricevitori di 1 segnale" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d ricevitore di %(num_signals)d segnali" msgstr[1] "%(num_receivers)d ricevitori di %(num_signals)d segnali" #: panels/signals.py:53 msgid "Signals" msgstr "Segnali" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "File statici (%(num_found)s trovati, %(num_used)s usati)" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Files statici" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s file usato" msgstr[1] "%(num_used)s file usati" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Totale: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:42 msgid "User CPU time" msgstr "Tempo CPU utente" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" #: panels/timer.py:43 msgid "System CPU time" msgstr "Tempo CPU sistema" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Tempo Totale CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Tempo Trascorso" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" #: panels/timer.py:46 msgid "Context switches" msgstr "Cambi di contesto" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d volontario, %(ivcsw)d involontario" #: panels/versions.py:25 msgid "Versions" msgstr "Versioni" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:37 msgid "Idle" msgstr "Idle" #: panels/sql/panel.py:38 msgid "Active" msgstr "Azione" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "Stato transazione:" #: panels/sql/panel.py:40 msgid "In error" msgstr "Errore" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "(sconosciuto)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Template" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s rendered)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Nascondi Toolbar" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Nascondi" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Disattiva per la prossima requests e le successive" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Abilita per la prossima requests e le successive" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Mostra Toolbar" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Chiudi" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Location:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar ha intercettato un redirect verso la URL indicata per visualizzare il debug, Puoi cliccare sul link sopra per continuare normalmente con la redirezione." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Sommario" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Chiamate totali" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Tempo Totale" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Trovati in cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Non trovati in cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandi" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Chiamate" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Durata (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argomenti" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Parole chiave" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Header della request" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Nome" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valore" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Header della response" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Ambiente WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Visto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la parte significativa." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Livello" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canale" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Messaggio" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Location" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nessun messaggio registrato" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Chiamata" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Numero" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Vedi Informazioni" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Funzione View" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nome URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variabile" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Nessun cookie" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Dati di sessione" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Nessun dato in sessione" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Dati GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Nessun dato in GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Dati POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Nessuno dato in POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Impostazione" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Segnale" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Forniti" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Ricevitori" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s query" msgstr[1] "%(num)s query" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Timeline" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Azione" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Connessione:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Isolation level:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Stato transazione:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(sconosciuto)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Nessuna Query SQL è stata registrata durante questa richiesta" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Indietro" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL spigato" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL eseguita" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Database" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilato" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Errore" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL selezionato" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Insieme vuoto" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Percorso file statici" msgstr[1] "Percorsi file statici" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefisso %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Nessuno" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "App file statici" msgstr[1] "App file statici" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Files statici" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s file" msgstr[1] "%(payload_count)s file" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Percorso" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Sorgente del template" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Percorso dei template" msgstr[1] "Percorsi dei template" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Template" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Cambia contesto" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context processor" msgstr[1] "Context processors" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Uso risorsa" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Risorsa" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Tempo browser" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Attributo" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Millisecondi dall'inizio della navigazione (+lunghezza)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nome" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versione" django-debug-toolbar-1.9.1/debug_toolbar/locale/nl/000077500000000000000000000000001320306665300221745ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/nl/LC_MESSAGES/000077500000000000000000000000001320306665300237615ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/nl/LC_MESSAGES/django.mo000066400000000000000000000103331320306665300255600ustar00rootroot00000000000000Kte`$alNBTf})   "$ *6< E R\ box }        # 0 8 A _ l s {    &     # 2 F K S a g p x   %P rv T > P b y .      "  &/6 >JQ Zhqv    # )49 =K [ f s  ' 1 6 @JRbr  (>-H2<,&6@ * 7!BI#EJK90F '4$%D1;A?+ 8) / GC:35".=%(count)s message%(count)s messages%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveBackCPU: %(cum)0.2fms (%(total)0.2fms)CacheCallChannelCloseConnection:CountDatabaseElapsed timeEmpty setErrorExecuted SQLGET dataHideHide toolbarIn errorKeyLevelLocationMessageNameNo GET dataNo POST dataNo messages loggedNonePOST dataProfilingQueryReceiversResourceSQLSQL explainedSerializableSettingSettingsSettings from %sShow toolbarSignalSignalsSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TimelineTotTimeTotal CPU timeTotal: %0.2fmsTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Dutch (http://www.transifex.com/projects/p/django-debug-toolbar/language/nl/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: nl Plural-Forms: nplurals=2; plural=(n != 1); %(count)s bericht%(count)s berichten%(num_receivers)d ontvanger van %(num_signals)d signalen%(num_receivers)d ontvangers van %(num_signals)d signalen%(num_receivers)d ontvanger van 1 signaal%(num_receivers)d ontvangers van 1 signaal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig(niet gekend)ActieActiefTerugCPU: %(cum)0.2fms (%(total)0.2fms)CacheOproepenKanaalSluitenVerbinding:AantalDatabaseVerlopen tijdLege setFoutUitgevoerde SQLGET dataVerbergenVerberg toolbarFoutiefSleutelNiveauLocatieBerichtNaamGeen GET dataGeen POST dataGeen berichten gelogdNonePOST dataProfileringQueryOntvangersBronSQLSQL uitgelegdSerializeerbaarInstellingInstellingenInstellingen van %sBekijk toolbarSignaalSignalenSamenvattingSysteem CPU tijdTemplateTemplatesTemplatepadTemplatepadenTemplatesTemplates (%(num_templates)s gerenderd)TijdTijd (ms)TijdslijnTotTijdTotaal CPU tijdTotaal: %0.2fmsTransactiestatus:TypeNiet gekendGebruikers CPU tijdWaardeParameterVersieVersiesBekijk informatiedjango-debug-toolbar-1.9.1/debug_toolbar/locale/nl/LC_MESSAGES/django.po000066400000000000000000000354511320306665300255730ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Ingo Berben , 2012-2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/django-debug-toolbar/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s bericht" msgstr[1] "%(count)s berichten" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profilering" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Instellingen" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Instellingen van %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d ontvanger van 1 signaal" msgstr[1] "%(num_receivers)d ontvangers van 1 signaal" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d ontvanger van %(num_signals)d signalen" msgstr[1] "%(num_receivers)d ontvangers van %(num_signals)d signalen" #: panels/signals.py:53 msgid "Signals" msgstr "Signalen" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Totaal: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tijd" #: panels/timer.py:42 msgid "User CPU time" msgstr "Gebruikers CPU tijd" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" #: panels/timer.py:43 msgid "System CPU time" msgstr "Systeem CPU tijd" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Totaal CPU tijd" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Verlopen tijd" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig" #: panels/versions.py:25 msgid "Versions" msgstr "Versies" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Serializeerbaar" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "Actief" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "" #: panels/sql/panel.py:40 msgid "In error" msgstr "Foutief" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Niet gekend" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s gerenderd)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Verberg toolbar" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Verbergen" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Bekijk toolbar" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Sluiten" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Samenvatting" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Tijd (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Type" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Sleutel" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Waarde" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Niveau" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanaal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Bericht" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Locatie" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Geen berichten gelogd" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Oproepen" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTijd" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Aantal" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Bekijk informatie" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Parameter" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET data" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Geen GET data" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST data" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Geen POST data" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Instelling" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signaal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Ontvangers" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Tijdslijn" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Actie" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Verbinding:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Transactiestatus:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(niet gekend)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Terug" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL uitgelegd" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Uitgevoerde SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Database" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Fout" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Lege set" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "None" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Templatepad" msgstr[1] "Templatepaden" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Bron" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Naam" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versie" django-debug-toolbar-1.9.1/debug_toolbar/locale/pl/000077500000000000000000000000001320306665300221765ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/pl/LC_MESSAGES/000077500000000000000000000000001320306665300237635ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/pl/LC_MESSAGES/django.mo000066400000000000000000000113631320306665300255660ustar00rootroot00000000000000Ida0J1$|lN,{    "3F9       # + 0 < 1I {             0 &: a f p y         | AA 4 u[   )7FL T_f"nx  &- 5 ?M U anu    D #Rv {    ; Q+[   B:F, - ?485+D)10@<#=I 3EG7 92H*$ ;/>%('&C"6.A!%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec(unknown)ActionActiveAutocommitBackBackendCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCallCallsChannelCloseCommandsConnection:CountDatabaseEmpty setErrorExecuted SQLHideIn errorIn transactionIsolation level:KeyLevelLocationLoggingMessageNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No messages loggedNoneProfilingQueryReceiversResourceSQLSettingSettingsSettings from %sSignalSignalsSummaryTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TimelineTransaction status:TypeUnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Polish (http://www.transifex.com/projects/p/django-debug-toolbar/language/pl/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pl Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); %(cache_calls)d wywołanie w %(time).2fms%(cache_calls)d wywołania w %(time).2fms%(cache_calls)d wywołań w %(time).2fms%(count)s wiadomość%(count)s wiadomości%(count)s wiadomości%(num)s zapytanie%(num)s zapytania%(num)s zapytań%(num_receivers)d odbiora %(num_signals)d sygnału%(num_receivers)d odbiorców %(num_signals)d sygnałów%(num_receivers)d odbiorców %(num_signals)d sygnałów%(num_receivers)d orbiorca 1 sygnału%(num_receivers)d odbiorców 1 sygnału%(num_receivers)d odbiorców 1 sygnału%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec(nieznany)AkcjaAktywneAutocommitWsteczBackendCPU: %(cum)0.2fms (%(total)0.2fms)CacheWywołań z cache z %(count)d backenduWywołań z cache z %(count)d backendówWywołań z cache z %(count)d backendówWywołanieWywołaniaKanałZamknijPoleceniaPołączenie:IlośćBaza danychPusty zbiórBłądWykonane zapytanie SQLUkryjW błędzieW transakcjiPoziom izolacji:KluczPoziomLokalizacjaLogiWiadomośćNazwaBrak danych GETBrak danych POSTŻadne zapytania SQL nie zostały odnotowane podczas tego zapytania.Nie zalogowano żadnych wiadomościBrakProfilowanieZapytanieOdbiorcyZasóbSQLUstawienieUstawieniaUstawienia z %sSygnałSygnałyPodsumowanieTemplatkiTemplatkiTemplatkiŚcieżka templatkiŚcieżki templatekŚcieżki templatekTemplatkiTemplatki (%(num_templates)s wyrenderowano)CzasCzas (ms)Oś czasuStatus transakcji:TypNieznaneWartośćZmiennaWersjaWersjePokaż informacjedjango-debug-toolbar-1.9.1/debug_toolbar/locale/pl/LC_MESSAGES/django.po000066400000000000000000000366631320306665300256030ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Konrad Mosoń , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Polish (http://www.transifex.com/projects/p/django-debug-toolbar/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d wywołanie w %(time).2fms" msgstr[1] "%(cache_calls)d wywołania w %(time).2fms" msgstr[2] "%(cache_calls)d wywołań w %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Wywołań z cache z %(count)d backendu" msgstr[1] "Wywołań z cache z %(count)d backendów" msgstr[2] "Wywołań z cache z %(count)d backendów" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Logi" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s wiadomość" msgstr[1] "%(count)s wiadomości" msgstr[2] "%(count)s wiadomości" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profilowanie" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Ustawienia" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Ustawienia z %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d orbiorca 1 sygnału" msgstr[1] "%(num_receivers)d odbiorców 1 sygnału" msgstr[2] "%(num_receivers)d odbiorców 1 sygnału" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d odbiora %(num_signals)d sygnału" msgstr[1] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" msgstr[2] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" #: panels/signals.py:53 msgid "Signals" msgstr "Sygnały" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Czas" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msec" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msec" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msec" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msec" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Wersje" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "Aktywne" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "W transakcji" #: panels/sql/panel.py:40 msgid "In error" msgstr "W błędzie" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Nieznane" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templatki" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templatki (%(num_templates)s wyrenderowano)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Ukryj" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Zamknij" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Podsumowanie" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Polecenia" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Wywołania" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Czas (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Klucz" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Wartość" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Poziom" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanał" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Wiadomość" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Lokalizacja" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nie zalogowano żadnych wiadomości" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Wywołanie" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Ilość" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Pokaż informacje" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Zmienna" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Brak danych GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Brak danych POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Ustawienie" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sygnał" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Odbiorcy" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s zapytanie" msgstr[1] "%(num)s zapytania" msgstr[2] "%(num)s zapytań" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Zapytanie" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Oś czasu" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Akcja" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Połączenie:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Poziom izolacji:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Status transakcji:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(nieznany)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Żadne zapytania SQL nie zostały odnotowane podczas tego zapytania." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Wstecz" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Wykonane zapytanie SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Baza danych" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Błąd" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Pusty zbiór" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Brak" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Ścieżka templatki" msgstr[1] "Ścieżki templatek" msgstr[2] "Ścieżki templatek" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Templatki" msgstr[1] "Templatki" msgstr[2] "Templatki" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Zasób" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nazwa" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Wersja" django-debug-toolbar-1.9.1/debug_toolbar/locale/pt/000077500000000000000000000000001320306665300222065ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/pt/LC_MESSAGES/000077500000000000000000000000001320306665300237735ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/pt/LC_MESSAGES/django.mo000066400000000000000000000057771320306665300256120ustar00rootroot000000000000006I|  ( '"J P] box   1  ! +5= FS[ dqx  & #+4  + 3 ; B I /R ,         - 5 > C Q 4e         '& N c j *t        6 *( 2/#&.$'10 +!5 )4" %, -3(prefix %(prefix)s)(unknown)ActionActiveBackCloseCommandsDisable for next and successive requestsEmpty setEnable for next and successive requestsErrorExecuted SQLHideHide toolbarIn errorIntercept redirectsKeyLevelLocationLocation:LoggingMessageNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No messages loggedNonePOST dataReceiversRequestResourceSerializableSettingSettingsShow toolbarSignalSignalsStatic fileStatic filesStatic filesSummaryTemplatesTemplates (%(num_templates)s rendered)TimeTotal: %0.2fmsTransaction status:TypeUnknownValueVariableVersionVersionsProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Portuguese (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt Plural-Forms: nplurals=2; plural=(n != 1); (prefixo %(prefix)s)(desconhecido)AcçãoAcçãoVoltarFecharComandosDesactivar para o seguinte e sucessivos pedidosSet vazioActivar para o próximo e sucessivos pedidosErroSQL ExecutadoOcultarOcultar barraErroIntercetar redirecionamentosChaveNívelLocalizaçãoLocalizaçãoRegistoMensagemNomeSem dados GETSem variáveis POSTNenhuma query SQL foi registada durante este pedido.Nenhuma mensagem registadaNenhumdados POSTReceptoresPedidoRecursoVariávelConfiguraçõesConfiguraçõesMostrar barraSinalSinaisFicheiro estáticoFicheiros estáticosFicheiros estáticosResumoTemplatesTemplates (%(num_templates)s renderizados)TempoTotal: %0.2fmsEstado da transacção:TipoDesconhecidoValorVariávelVersãoVersõesdjango-debug-toolbar-1.9.1/debug_toolbar/locale/pt/LC_MESSAGES/django.po000066400000000000000000000347471320306665300256140ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # joseduraes , 2014 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Registo" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Intercetar redirecionamentos" #: panels/request.py:18 msgid "Request" msgstr "Pedido" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Configurações" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:53 msgid "Signals" msgstr "Sinais" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Ficheiros estáticos" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versões" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Variável" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "Acção" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "" #: panels/sql/panel.py:40 msgid "In error" msgstr "Erro" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Desconhecido" #: panels/sql/panel.py:105 msgid "SQL" msgstr "" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s renderizados)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Ocultar barra" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Ocultar" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Desactivar para o seguinte e sucessivos pedidos" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Activar para o próximo e sucessivos pedidos" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Mostrar barra" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Fechar" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Localização" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resumo" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Chave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nível" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Mensagem" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Localização" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nenhuma mensagem registada" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variável" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Sem dados GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "dados POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Sem variáveis POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configurações" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Receptores" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Acção" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Estado da transacção:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(desconhecido)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Nenhuma query SQL foi registada durante este pedido." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Voltar" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executado" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erro" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Set vazio" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefixo %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Nenhum" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Ficheiro estático" msgstr[1] "Ficheiros estáticos" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "Caminho da Template" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "Processador de Contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nome" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versão" django-debug-toolbar-1.9.1/debug_toolbar/locale/pt_BR/000077500000000000000000000000001320306665300225715ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/pt_BR/LC_MESSAGES/000077500000000000000000000000001320306665300243565ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo000066400000000000000000000215431320306665300261620ustar00rootroot00000000000000\p Jq $  l Nl . .  + = T )f       "(F. u  N1(: c p'z   06 ? IV^-f  1  !& * 4>DS dn~       4AHhP " 5#Yaq &   ! )7=FN We vPT&"kM[?4.>S-c   "ANG i&&   (1NUZi  4&+A>X      ,8 IVrz   # 0MTq[%4<( e Ny    ( #! 7!*A!l!3" 9"D"S"m"""" """" " ""# #%#-# 6#D# U#/6QWiZx=T"a8eNy<\dG20np3|@# 5Jz]If KPM^wl ck~B4?hO:Hg>'`A7)(o*b9+{vL%FD t, mV;1u.E_RsrqS- XU![C}j&Y$%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt_BR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt_BR Plural-Forms: nplurals=2; plural=(n > 1); %(cache_calls)d chamada em %(time).2fms%(cache_calls)d chamadas em %(time).2fms%(count)s mensagem%(count)s mensagens%(num)s consulta%(num)s consultas%(num_receivers)d receptor de %(num_signals)d sinais%(num_receivers)d receptores de %(num_signals)d sinais%(num_receivers)d receptor de 1 sinal%(num_receivers)d receptores de 1 sinal%(num_used)s arquivo utilizado%(num_used)s arquivos utilizados%(payload_count)s arquivo%(payload_count)s arquivos%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntário, %(ivcsw)d involuntário(prefixo %(prefix)s)(unknown)AçãoAçãoArgumentosAutocommitVoltarBackendCronometragem do NavegadorCPU: %(cum)0.2fms (%(total)0.2fms)CacheChamadas ao cache de %(count)d backendChamadas ao cache de %(count)d backendsAcessos ao cacheFalhas de cacheChamarChamadasCanalFecharComandosConexão:Mudanças de contextoCookiesContagemCumTimeOs dados para este painel não está mais disponível. Por favor, recarregue a página e tente novamente.Banco de dadosDesativar para próximas requisiçõesTempo decorridoConjunto vazioHabilitar para próximas requisiçõesErroSQL ExecutadaDados de GETCabeçalhosEsconderOcultar barra de ferramentasOciosoErroNa transaçãoInterceptar redirecionamentosNível de isolamento:ChaveArgumentosNívelLocalizaçãoLocalização:Mensagens de logLogsMensagemMilissegundos desde início de navegação (+length)NomeNão há dados de GETNão há dados de POSTNenhuma consulta SQL foi registrada durante esta requisição.Sem CookiesNenhuma mensagem logadaSem dados de SessãoNenhumDados de POSTCaminhoPerProfilingFornecendoQueryRead committedRead uncommittedRecebedoresLeitura repetidaRequisiçãoCabeçalhos de RequisiçãoRecursoUso de recursosCabeçalhos de RespostaSQLSQL explicadaSQL perfiladoSQL selecionadaVariávelDados de SessãoConfiguraçãoConfiguraçõesConfigurações em: %sMostrar barra de ferramentasSinaisSinaisUma vez que o ambiente WSGI herda o ambiente do servidor, apenas um subconjunto significativo é mostrado abaixo.Arquivo estáticoArquivos estáticosArquivo estático de appArquivos estáticos de appsCaminho do arquivo estáticoCaminho dos arquivos estáticosArquivos estáticosArquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)ResumoTempo de CPU do sistemaTemplateTemplatesCaminho do TemplateCaminho do TemplatesOrigem do Template:TemplatesTemplates (%(num_templates)s renderizados)O Django Debug Toolbar interceptou um redirecionamento para a URL acima para fins de visualização de depuração. Você pode clicar no link acima para continuar com o redirecionamento normalmente.TempoTempo (ms)Linha do tempoAtributo de CronometragemAlternar contextoTotTimeTempo total de CPUTotal de chamadasTempo totalTotal: %0.2fmsStatus da transação:TipoNome da URLDesconhecidoTempo de CPU do usuárioValorVariávelVersãoVersõesFunção ViewVer informaçãoAmbiente WSGIdjango-debug-toolbar-1.9.1/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po000066400000000000000000000412451320306665300261660ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Fábio , 2013-2014 # Percy Pérez-Pinedo, 2009 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Os dados para este painel não está mais disponível. Por favor, recarregue a página e tente novamente." #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d chamada em %(time).2fms" msgstr[1] "%(cache_calls)d chamadas em %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Chamadas ao cache de %(count)d backend" msgstr[1] "Chamadas ao cache de %(count)d backends" #: panels/headers.py:35 msgid "Headers" msgstr "Cabeçalhos" #: panels/logging.py:64 msgid "Logging" msgstr "Logs" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s mensagem" msgstr[1] "%(count)s mensagens" #: panels/logging.py:73 msgid "Log messages" msgstr "Mensagens de log" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profiling" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interceptar redirecionamentos" #: panels/request.py:18 msgid "Request" msgstr "Requisição" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Configurações" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Configurações em: %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receptor de 1 sinal" msgstr[1] "%(num_receivers)d receptores de 1 sinal" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receptor de %(num_signals)d sinais" msgstr[1] "%(num_receivers)d receptores de %(num_signals)d sinais" #: panels/signals.py:53 msgid "Signals" msgstr "Sinais" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Arquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Arquivos estáticos" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s arquivo utilizado" msgstr[1] "%(num_used)s arquivos utilizados" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:42 msgid "User CPU time" msgstr "Tempo de CPU do usuário" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" #: panels/timer.py:43 msgid "System CPU time" msgstr "Tempo de CPU do sistema" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Tempo total de CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Tempo decorrido" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" #: panels/timer.py:46 msgid "Context switches" msgstr "Mudanças de contexto" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntário, %(ivcsw)d involuntário" #: panels/versions.py:25 msgid "Versions" msgstr "Versões" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "Leitura repetida" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Variável" #: panels/sql/panel.py:37 msgid "Idle" msgstr "Ocioso" #: panels/sql/panel.py:38 msgid "Active" msgstr "Ação" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "Na transação" #: panels/sql/panel.py:40 msgid "In error" msgstr "Erro" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "Desconhecido" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s renderizados)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Ocultar barra de ferramentas" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Esconder" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Desativar para próximas requisições" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Habilitar para próximas requisições" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Mostrar barra de ferramentas" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Fechar" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Localização:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "O Django Debug Toolbar interceptou um redirecionamento para a URL acima para fins de visualização de depuração. Você pode clicar no link acima para continuar com o redirecionamento normalmente." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resumo" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Total de chamadas" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Tempo total" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Acessos ao cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Falhas de cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Chamadas" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Tempo (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumentos" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Argumentos" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Cabeçalhos de Requisição" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Chave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Cabeçalhos de Resposta" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Ambiente WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Uma vez que o ambiente WSGI herda o ambiente do servidor, apenas um subconjunto significativo é mostrado abaixo." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nível" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Canal" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Mensagem" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Localização" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Nenhuma mensagem logada" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Chamar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Contagem" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Ver informação" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Função View" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nome da URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variável" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Sem Cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Dados de Sessão" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Sem dados de Sessão" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "Dados de GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Não há dados de GET" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "Dados de POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Não há dados de POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuração" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinais" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Fornecendo" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Recebedores" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s consulta" msgstr[1] "%(num)s consultas" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Linha do tempo" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Ação" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Conexão:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Nível de isolamento:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Status da transação:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(unknown)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "Nenhuma consulta SQL foi registrada durante esta requisição." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Voltar" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL explicada" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executada" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Banco de dados" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL perfilado" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erro" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL selecionada" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Conjunto vazio" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Caminho do arquivo estático" msgstr[1] "Caminho dos arquivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefixo %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Nenhum" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Arquivo estático de app" msgstr[1] "Arquivos estáticos de apps" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "Arquivo estático" msgstr[1] "Arquivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s arquivo" msgstr[1] "%(payload_count)s arquivos" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Caminho" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Origem do Template:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Caminho do Template" msgstr[1] "Caminho do Templates" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Alternar contexto" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "Processador do Contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Uso de recursos" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Cronometragem do Navegador" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Atributo de Cronometragem" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Milissegundos desde início de navegação (+length)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Nome" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Versão" django-debug-toolbar-1.9.1/debug_toolbar/locale/ru/000077500000000000000000000000001320306665300222115ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/ru/LC_MESSAGES/000077500000000000000000000000001320306665300237765ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/ru/LC_MESSAGES/django.mo000066400000000000000000000266231320306665300256060ustar00rootroot00000000000000| J $$ I lg N .# .R     )    .5 < FQY"hF   $=NV\Nd (  '&N Tajr w   -@ E Q1^      ",<DT]l}      hw " 5/B_ p&zH MW`q     # 4A(`V1D]VGYk?#+BSd w (   o+t w ! A  ! !!,!?N! ! !!! !!! !"9" V"w")"" " """#P#f#w###/$A$[$#u$$$ $$$$$ $%%#%%I% Y%!f% %'%%% % %%&4& O&\&m&'&& &&&K' (P((]( J)&W)*~)V) *!*70*h* \+g+%y++++++ ,!,"8,[, b,m,4,,, , ,),2!-T-&l-U@[_I',%9wl?&F1o*t=K{T5<k}^!GYRC-)S\r#XZPaeHfjm8];h2B`i :L~(E V3 "q>+/yQ0|v4$OpMus WJ A.NcDzd76gnbx%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo originNo session dataNonePOST dataPackagePathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environincluding %(dupes)s duplicatesProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2016-07-21 16:45+0600 PO-Revision-Date: 2016-07-21 17:22+0600 Last-Translator: Igor 'idle sign' Starikov Language-Team: Russian (http://www.transifex.com/projects/p/django-debug-toolbar/language/ru/) Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Poedit 1.8.7.1 %(cache_calls)d обращение за %(time).2f мс%(cache_calls)d обращения за %(time).2f мс%(cache_calls)d обращений за %(time).2f мс%(count)s сообщение%(count)s сообщений%(count)s сообщений%(num)s запрос%(num)s запроса%(num)s запросов%(num_receivers)d получатель %(num_signals)d сигнала(ов)%(num_receivers)d получателя %(num_signals)d сигнала(ов)%(num_receivers)d получателей %(num_signals)d сигнала(ов)%(num_receivers)d получатель 1 сигнала%(num_receivers)d получателя 1 сигнала%(num_receivers)d получателей 1 сигнала%(num_used)s файл используется%(num_used)s файла используются%(num_used)s файлов используются%(payload_count)s файл%(payload_count)s файла%(payload_count)s файлов%(stime)0.3f мс%(total)0.3f мс%(total_time)0.3f мс%(utime)0.3f мс%(vcsw)d намеренных, %(ivcsw)d вынужденных(префикс %(prefix)s)(неизвестно)<нет представления><недоступно>ДействиеДействиеАргументыAutocommitБэкендБраузерное времяCPU: %(cum)0.2f мс (%(total)0.2f мс)КешОбращения к кешу от %(count)d бэкендаОбращения к кешу от %(count)d бэкендовОбращения к кешу от %(count)d бэкендовПопаданияПромахиВызовВызовыКаналКомандыСоединение:Контекст процессорКонтекст процессорыКонтекст процессорыПереключения контекстаКукиКол-воКумулВремДанные этой панели больше недоступны. Пожалуйста, перезагрузите страницу и попробуйте ещё раз.База данныхОтладочная панельОтключить для последующих запросовДублей: %(dupes)s.Затраченное времяНичего, ноль строкВключить для последующих запросовОшибкаЗапросGETЗаголовкиСкрытьСкрыть панельОжиданиеОшибкаВ транзакцииПерехватывать перенаправленияУровень изоляции:ЗаголовокИменованные аргументыУровеньМестоМесто:Сообщения в логеЛогиСообщениеС начала навигации в мс (+продолжительность)НазваниеНет GET данныхНет POST данныхВо время обработки этого HTTP-запроса не было записано ни одного SQL-запроса.Нет куковСообщений нетНет источникаНет данных в сессииНетPOSTПакетПутьЗаВызовПрофилированиеАргументыЗапросRead committedRead uncommittedПолучатели сигналаRepeatable readЗапросЗаголовки запросаРесурсПотребление ресурсовЗаголовки ответаSQLSQL ExplainПрофилирование SQLВыбранные SQL-запросыСериализуемыйСессияПараметрНастройкиНастройки из %sПоказать панельСигналСигналыТак как WSGI-окружение наследует окружение сервера, ниже отображены лишь те из переменных, которые важны для нужд отладки.Файл статикиФайлы статикиФайлы статикиПриложение со статикойПриложения со статикойПриложения со статикойПуть к статикеПути к статикеПути к статикеСтатикаФайлов статики (вего: %(num_found)s, использовано: %(num_used)s)СводкаСистемное время ядраШаблонШаблоныШаблоныПуть к шаблонамПути к шаблонамПути к шаблонамИсточник шаблона:ШаблоныШаблоны (обработано %(num_templates)s)Django Debug Toolbar перехватил перенаправление на адрес, указанный выше. Вы можете нажать на ссылку, чтобы выполнить переход самостоятельно.ВремяВремя (мс)Временная диаграммаСобытиеКонтекстИтогВремяОбщее время ядраВсего вызововОбщее времяИтого: %0.2f мсСтатус транзакции:ТипИмя URLНеизвестноПользовательское время ядраЗначениеПеременнаяВерсияВерсииФункция представленияИнформация о представленииWSGI-окружениевключая дублей: %(dupes)sdjango-debug-toolbar-1.9.1/debug_toolbar/locale/ru/LC_MESSAGES/django.po000066400000000000000000000465551320306665300256170ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Ilya Baryshev , 2013 # Mikhail Korobov, 2009 # Алексей Борискин , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-07-21 16:45+0600\n" "PO-Revision-Date: 2016-07-21 17:22+0600\n" "Last-Translator: Igor 'idle sign' Starikov \n" "Language-Team: Russian (http://www.transifex.com/projects/p/django-debug-" "toolbar/language/ru/)\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 1.8.7.1\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "Отладочная панель" #: panels/cache.py:204 msgid "Cache" msgstr "Кеш" #: panels/cache.py:209 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d обращение за %(time).2f мс" msgstr[1] "%(cache_calls)d обращения за %(time).2f мс" msgstr[2] "%(cache_calls)d обращений за %(time).2f мс" #: panels/cache.py:217 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Обращения к кешу от %(count)d бэкенда" msgstr[1] "Обращения к кешу от %(count)d бэкендов" msgstr[2] "Обращения к кешу от %(count)d бэкендов" #: panels/headers.py:34 msgid "Headers" msgstr "Заголовки" #: panels/logging.py:66 msgid "Logging" msgstr "Логи" #: panels/logging.py:72 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s сообщение" msgstr[1] "%(count)s сообщений" msgstr[2] "%(count)s сообщений" #: panels/logging.py:75 msgid "Log messages" msgstr "Сообщения в логе" #: panels/profiling.py:144 msgid "Profiling" msgstr "Профилирование" #: panels/redirects.py:16 msgid "Intercept redirects" msgstr "Перехватывать перенаправления" #: panels/request.py:18 msgid "Request" msgstr "Запрос" #: panels/request.py:35 msgid "" msgstr "<нет представления>" #: panels/request.py:47 msgid "" msgstr "<недоступно>" #: panels/settings.py:18 msgid "Settings" msgstr "Настройки" #: panels/settings.py:21 #, python-format msgid "Settings from %s" msgstr "Настройки из %s" #: panels/signals.py:44 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d получатель 1 сигнала" msgstr[1] "%(num_receivers)d получателя 1 сигнала" msgstr[2] "%(num_receivers)d получателей 1 сигнала" #: panels/signals.py:47 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d получатель %(num_signals)d сигнала(ов)" msgstr[1] "%(num_receivers)d получателя %(num_signals)d сигнала(ов)" msgstr[2] "%(num_receivers)d получателей %(num_signals)d сигнала(ов)" #: panels/signals.py:52 msgid "Signals" msgstr "Сигналы" #: panels/sql/panel.py:25 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:26 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:27 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:28 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:29 msgid "Serializable" msgstr "Сериализуемый" #: panels/sql/panel.py:40 msgid "Idle" msgstr "Ожидание" #: panels/sql/panel.py:41 msgid "Active" msgstr "Действие" #: panels/sql/panel.py:42 msgid "In transaction" msgstr "В транзакции" #: panels/sql/panel.py:43 msgid "In error" msgstr "Ошибка" #: panels/sql/panel.py:44 msgid "Unknown" msgstr "Неизвестно" #: panels/sql/panel.py:108 msgid "SQL" msgstr "SQL" #: panels/staticfiles.py:87 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Файлов статики (вего: %(num_found)s, использовано: %(num_used)s)" #: panels/staticfiles.py:105 msgid "Static files" msgstr "Статика" #: panels/staticfiles.py:110 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s файл используется" msgstr[1] "%(num_used)s файла используются" msgstr[2] "%(num_used)s файлов используются" #: panels/templates/panel.py:128 msgid "Templates" msgstr "Шаблоны" #: panels/templates/panel.py:133 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблоны (обработано %(num_templates)s)" #: panels/templates/panel.py:164 msgid "No origin" msgstr "Нет источника" #: panels/timer.py:26 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2f мс (%(total)0.2f мс)" #: panels/timer.py:31 #, python-format msgid "Total: %0.2fms" msgstr "Итого: %0.2f мс" #: panels/timer.py:37 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Время" #: panels/timer.py:45 msgid "User CPU time" msgstr "Пользовательское время ядра" #: panels/timer.py:45 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f мс" #: panels/timer.py:46 msgid "System CPU time" msgstr "Системное время ядра" #: panels/timer.py:46 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f мс" #: panels/timer.py:47 msgid "Total CPU time" msgstr "Общее время ядра" #: panels/timer.py:47 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f мс" #: panels/timer.py:48 msgid "Elapsed time" msgstr "Затраченное время" #: panels/timer.py:48 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f мс" #: panels/timer.py:49 msgid "Context switches" msgstr "Переключения контекста" #: panels/timer.py:49 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d намеренных, %(ivcsw)d вынужденных" #: panels/versions.py:20 msgid "Versions" msgstr "Версии" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Скрыть панель" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Скрыть" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Отключить для последующих запросов" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Включить для последующих запросов" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Показать панель" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Сводка" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Всего вызовов" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Общее время" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Попадания" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Промахи" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Команды" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Вызовы" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:23 msgid "Time (ms)" msgstr "Время (мс)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Тип" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Аргументы" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Именованные аргументы" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Бэкенд" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Заголовки запроса" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Заголовок" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Значение" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Заголовки ответа" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI-окружение" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" "Так как WSGI-окружение наследует окружение сервера, ниже отображены лишь те " "из переменных, которые важны для нужд отладки." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Уровень" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Канал" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Сообщение" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Место" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Сообщений нет" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Вызов" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "КумулВрем" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "ЗаВызов" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "ИтогВремя" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Кол-во" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Информация о представлении" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Функция представления" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Имя URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Куки" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Переменная" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Нет куков" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Сессия" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Нет данных в сессии" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Нет GET данных" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Нет POST данных" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Параметр" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Сигнал" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Аргументы" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Получатели сигнала" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s запрос" msgstr[1] "%(num)s запроса" msgstr[2] "%(num)s запросов" #: templates/debug_toolbar/panels/sql.html:9 #, python-format msgid "including %(dupes)s duplicates" msgstr "включая дублей: %(dupes)s" #: templates/debug_toolbar/panels/sql.html:21 msgid "Query" msgstr "Запрос" #: templates/debug_toolbar/panels/sql.html:22 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Временная диаграмма" #: templates/debug_toolbar/panels/sql.html:24 msgid "Action" msgstr "Действие" #: templates/debug_toolbar/panels/sql.html:41 #, python-format msgid "Duplicated %(dupes)s times." msgstr "Дублей: %(dupes)s." #: templates/debug_toolbar/panels/sql.html:73 msgid "Connection:" msgstr "Соединение:" #: templates/debug_toolbar/panels/sql.html:75 msgid "Isolation level:" msgstr "Уровень изоляции:" #: templates/debug_toolbar/panels/sql.html:78 msgid "Transaction status:" msgstr "Статус транзакции:" #: templates/debug_toolbar/panels/sql.html:92 msgid "(unknown)" msgstr "(неизвестно)" #: templates/debug_toolbar/panels/sql.html:101 msgid "No SQL queries were recorded during this request." msgstr "" "Во время обработки этого HTTP-запроса не было записано ни одного SQL-запроса." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL Explain" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Запрос" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "База данных" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "Профилирование SQL" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Ошибка" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "Выбранные SQL-запросы" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Ничего, ноль строк" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Путь к статике" msgstr[1] "Пути к статике" msgstr[2] "Пути к статике" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(префикс %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Нет" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Приложение со статикой" msgstr[1] "Приложения со статикой" msgstr[2] "Приложения со статикой" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Файл статики" msgstr[1] "Файлы статики" msgstr[2] "Файлы статики" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s файл" msgstr[1] "%(payload_count)s файла" msgstr[2] "%(payload_count)s файлов" #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Путь" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Источник шаблона:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Путь к шаблонам" msgstr[1] "Пути к шаблонам" msgstr[2] "Пути к шаблонам" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Шаблон" msgstr[1] "Шаблоны" msgstr[2] "Шаблоны" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Контекст" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Контекст процессор" msgstr[1] "Контекст процессоры" msgstr[2] "Контекст процессоры" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Потребление ресурсов" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Ресурс" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Браузерное время" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Событие" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "С начала навигации в мс (+продолжительность)" #: templates/debug_toolbar/panels/versions.html:7 msgid "Package" msgstr "Пакет" #: templates/debug_toolbar/panels/versions.html:8 msgid "Name" msgstr "Название" #: templates/debug_toolbar/panels/versions.html:9 msgid "Version" msgstr "Версия" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Место:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" "Django Debug Toolbar перехватил перенаправление на адрес, указанный выше. Вы " "можете нажать на ссылку, чтобы выполнить переход самостоятельно." #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" "Данные этой панели больше недоступны. Пожалуйста, перезагрузите страницу и " "попробуйте ещё раз." #~ msgid "Close" #~ msgstr "Закрыть" #~ msgid "Back" #~ msgstr "Назад" django-debug-toolbar-1.9.1/debug_toolbar/locale/sk/000077500000000000000000000000001320306665300222005ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/sk/LC_MESSAGES/000077500000000000000000000000001320306665300237655ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/sk/LC_MESSAGES/django.mo000066400000000000000000000222421320306665300255660ustar00rootroot00000000000000\p Jq $  l Nl . .  + = T )f       "(F. u  $NV(_  '   .?CU[ d n{-  1 '7 <FK O Ycix      *2; Yfmhu " "5/em} &    $- 5CIRZ cq wi3-Cva^N!3J3\    "5j;   A=PX_dg 1 0$U [ i s} /6.>mrD#' /:@C LV\k |    . 8 G R ] z   f b !Sp!!G!"'"<"5Z"" "+""# # ###### ## $$"$ +$6$O$ W$a$h$ o$|$$07R$Xi[x>U"b9fOy=]eH31np4|A# 6Kz^J LQN_wl dk~C5@hP;Ig?(aB8*)o+c:,{vM&GE t- mW<2u/F`SsrqT. YV!\D}j'Z%%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Slovak (http://www.transifex.com/projects/p/django-debug-toolbar/language/sk/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sk Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; %(cache_calls)d volanie za %(time).2fms%(cache_calls)d volaní za %(time).2fms%(cache_calls)d volaní za %(time).2fms%(count)s správa%(count)s správ%(count)s správ%(num)s dopyt%(num)s dopytov%(num)s dopytov%(num_receivers)d príjemca %(num_signals)d signálov%(num_receivers)d príjemcov %(num_signals)d signálov%(num_receivers)d príjemcov %(num_signals)d signálov%(num_receivers)d príjemca 1 signálu%(num_receivers)d príjemcov 1 signálu%(num_receivers)d príjemcov 1 signálu%(num_used)s použitý súbor%(num_used)s použitých súborov%(num_used)s použitých súborov%(payload_count)s súbor%(payload_count)s súborov%(payload_count)s súborov%(stime)0.3f msek%(total)0.3f msek%(total_time)0.3f msek%(utime)0.3f msek%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných(prefix %(prefix)s)(neznámy)AkciaAkciaArgumentyAutocommitSpäťBackendČas prehliadačaCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache volania z %(count)d backenduCache volania z %(count)d backendovCache volania z %(count)d backendovVolaní cacheVynechania cacheVolanieVolaniaKanálZatvoriťPríkazyPripojenie:Spracovateľ kontextuSpracovateľ kontextuSpracovateľ kontextuPrepnutí kontextuCookiesPočetCumTimeDáta pre tento panel už nie sú k dispozícii. Načítajte si prosím stránku a skúste to znova.DatabázaZakázať pre ďalšie a nasledujúce požiadavkyUplynutý časPrázdny radPovoliť pre ďalšie a nasledujúce požiadavkyChybaVykonané SQLGET dátaHlavičkySkryťSkryť panel nástrojovNečinnýChybaStav transakcie:Zachytiť presmerovaniaÚroveň izolácie:KľúčKľúčové argumentyÚroveňPolohaPoloha:Správy zápisuZápisSprávaMilisekúnd od spustenia navigácie (+dĺžka)MenoŽiadne GET dátaŽiadne POST dátaV priebehu tejto požiadavky neboli zaznamenané žiadne SQL dopyty.Žiadne cookiesŽiadne správy neboli zaznamenanéŽiadne dáta relácieŽiadnyPOST dátaCestaZaAnalýzaPoskytujeDopytRead committedRead uncommittedPríjemcoviaOpakovateľné čítaniePožiadavkaHlavičky požiadavkyProstriedokVyužitie prostriedkovHlavičky odpovedeSQLSQL vysvetlenéSQL profilovanéSQL označenéPremennáDáta relácieNastavenieNastaveniaNastavenia z %sZobraziť panel nástrojovSignálSignályKeďže WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina.Aplikácia pre statické súboryAplikácie pre statické súboryAplikácie pre statické súboryCesta k statickému súboruCesty k statickým súboromCesty k statickým súboromStatické súboryStatické súbory (%(num_found)s nájdených, %(num_used)s použitých)ZhrnutieSystémový čas CPUŠablónaŠablónaŠablónaCesta k šablóneCesta k šablóneCesta k šablóneZdrojový kód šablóny:ŠablónyŠablóny (%(num_templates)s spracovaných)Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre účely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz.ČasČas (ms)Časová osČasový atribútPrepnúť kontextTotTimeCelkový čas CPUCelkovo volaníCelkový časCelkovo: %0.2fmsStav transakcie:TypURL meno(neznámy)Užívateľský čas CPUHodnotaPremennáVerziaVerzieView funkciaZobraziť informácieWSGI prostrediedjango-debug-toolbar-1.9.1/debug_toolbar/locale/sk/LC_MESSAGES/django.po000066400000000000000000000422751320306665300256010ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Juraj Bubniak , 2012 # Juraj Bubniak , 2013 # Rastislav Kober , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/django-debug-toolbar/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Dáta pre tento panel už nie sú k dispozícii. Načítajte si prosím stránku a skúste to znova." #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volanie za %(time).2fms" msgstr[1] "%(cache_calls)d volaní za %(time).2fms" msgstr[2] "%(cache_calls)d volaní za %(time).2fms" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Cache volania z %(count)d backendu" msgstr[1] "Cache volania z %(count)d backendov" msgstr[2] "Cache volania z %(count)d backendov" #: panels/headers.py:35 msgid "Headers" msgstr "Hlavičky" #: panels/logging.py:64 msgid "Logging" msgstr "Zápis" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s správa" msgstr[1] "%(count)s správ" msgstr[2] "%(count)s správ" #: panels/logging.py:73 msgid "Log messages" msgstr "Správy zápisu" #: panels/profiling.py:127 msgid "Profiling" msgstr "Analýza" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Zachytiť presmerovania" #: panels/request.py:18 msgid "Request" msgstr "Požiadavka" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Nastavenia" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "Nastavenia z %s" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d príjemca 1 signálu" msgstr[1] "%(num_receivers)d príjemcov 1 signálu" msgstr[2] "%(num_receivers)d príjemcov 1 signálu" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d príjemca %(num_signals)d signálov" msgstr[1] "%(num_receivers)d príjemcov %(num_signals)d signálov" msgstr[2] "%(num_receivers)d príjemcov %(num_signals)d signálov" #: panels/signals.py:53 msgid "Signals" msgstr "Signály" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statické súbory (%(num_found)s nájdených, %(num_used)s použitých)" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Statické súbory" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s použitý súbor" msgstr[1] "%(num_used)s použitých súborov" msgstr[2] "%(num_used)s použitých súborov" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "Celkovo: %0.2fms" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Čas" #: panels/timer.py:42 msgid "User CPU time" msgstr "Užívateľský čas CPU" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f msek" #: panels/timer.py:43 msgid "System CPU time" msgstr "Systémový čas CPU" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f msek" #: panels/timer.py:44 msgid "Total CPU time" msgstr "Celkový čas CPU" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f msek" #: panels/timer.py:45 msgid "Elapsed time" msgstr "Uplynutý čas" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f msek" #: panels/timer.py:46 msgid "Context switches" msgstr "Prepnutí kontextu" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných" #: panels/versions.py:25 msgid "Versions" msgstr "Verzie" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "Opakovateľné čítanie" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Premenná" #: panels/sql/panel.py:37 msgid "Idle" msgstr "Nečinný" #: panels/sql/panel.py:38 msgid "Active" msgstr "Akcia" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "Stav transakcie:" #: panels/sql/panel.py:40 msgid "In error" msgstr "Chyba" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "(neznámy)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Šablóny" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Šablóny (%(num_templates)s spracovaných)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "Skryť panel nástrojov" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Skryť" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "Zakázať pre ďalšie a nasledujúce požiadavky" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "Povoliť pre ďalšie a nasledujúce požiadavky" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "Zobraziť panel nástrojov" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Zatvoriť" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "Poloha:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre účely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz." #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Zhrnutie" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Celkovo volaní" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Celkový čas" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Volaní cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Vynechania cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Príkazy" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Volania" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Čas (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumenty" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Kľúčové argumenty" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Hlavičky požiadavky" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Kľúč" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Hodnota" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Hlavičky odpovede" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI prostredie" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Keďže WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina." #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Úroveň" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "Kanál" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Správa" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Poloha" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Žiadne správy neboli zaznamenané" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Volanie" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Za" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Počet" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Zobraziť informácie" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View funkcia" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL meno" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Premenná" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "Žiadne cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Dáta relácie" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "Žiadne dáta relácie" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET dáta" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Žiadne GET dáta" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST dáta" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Žiadne POST dáta" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Nastavenie" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signál" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "Poskytuje" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Príjemcovia" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s dopyt" msgstr[1] "%(num)s dopytov" msgstr[2] "%(num)s dopytov" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Dopyt" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Časová os" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Akcia" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Pripojenie:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "Úroveň izolácie:" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "Stav transakcie:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(neznámy)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "V priebehu tejto požiadavky neboli zaznamenané žiadne SQL dopyty." #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Späť" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL vysvetlené" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Vykonané SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databáza" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilované" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Chyba" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL označené" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Prázdny rad" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Cesta k statickému súboru" msgstr[1] "Cesty k statickým súborom" msgstr[2] "Cesty k statickým súborom" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefix %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Žiadny" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplikácia pre statické súbory" msgstr[1] "Aplikácie pre statické súbory" msgstr[2] "Aplikácie pre statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "Statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s súbor" msgstr[1] "%(payload_count)s súborov" msgstr[2] "%(payload_count)s súborov" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Cesta" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Zdrojový kód šablóny:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Cesta k šablóne" msgstr[1] "Cesta k šablóne" msgstr[2] "Cesta k šablóne" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Šablóna" msgstr[1] "Šablóna" msgstr[2] "Šablóna" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Prepnúť kontext" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Spracovateľ kontextu" msgstr[1] "Spracovateľ kontextu" msgstr[2] "Spracovateľ kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Využitie prostriedkov" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Prostriedok" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Čas prehliadača" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Časový atribút" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Milisekúnd od spustenia navigácie (+dĺžka)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Meno" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Verzia" django-debug-toolbar-1.9.1/debug_toolbar/locale/sv_SE/000077500000000000000000000000001320306665300226025ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/sv_SE/LC_MESSAGES/000077500000000000000000000000001320306665300243675ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo000066400000000000000000000045431320306665300261740ustar00rootroot00000000000000/C $ >HOV[a gsy        $,5< DQY lv {*   % +9@F LW\k{        % . 5 > F P '/-&# , * + !%$". )( %(count)s message%(count)s messages(unknown)ActionActiveBackCacheCloseConnection:CountDatabaseEmpty setErrorExecuted SQLHideIn errorKeyLevelLocationMessageNameNo GET dataNo POST dataNonePathProfilingQueryReceiversResourceSQLSerializableSettingSettingsSignalSignalsStatic filesSummaryTemplateTemplatesTemplatesTimeTime (ms)UnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/django-debug-toolbar/language/sv_SE/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sv_SE Plural-Forms: nplurals=2; plural=(n != 1); %(count)s meddelande%(count)s meddelanden(okänd)ÅtgärdÅtgärdBakåtCacheStängAnslutning:RäknaDatabasTomt setFelmeddelandeUtförd SQLDöljFelmeddelandeNyckelNivåPlatsMeddelandeNamnIngen GET dataIngen POST dataIngetSökvägProfileringFrågaMottagareResursSQLVariabelInställningInställningarSignalSignalerStatiska filerSammanfattningMallMallarMallarTidTid (ms)(okänd)VärdeVariabelVersionVersionerVisa informationendjango-debug-toolbar-1.9.1/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po000066400000000000000000000343511320306665300261770ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Alex Nordlund , 2012-2013 # Alex Nordlund , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/django-debug-toolbar/language/sv_SE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv_SE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "Cache" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s meddelande" msgstr[1] "%(count)s meddelanden" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "Profilering" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Inställningar" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:53 msgid "Signals" msgstr "Signaler" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "Statiska filer" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tid" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Versioner" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "Variabel" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "Åtgärd" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "" #: panels/sql/panel.py:40 msgid "In error" msgstr "Felmeddelande" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "(okänd)" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Mallar" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Dölj" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Stäng" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Sammanfattning" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Tid (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Nyckel" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Värde" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Nivå" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Meddelande" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Plats" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Räkna" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Visa informationen" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Variabel" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Ingen GET data" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Ingen POST data" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Inställning" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Mottagare" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Fråga" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Åtgärd" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "Anslutning:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(okänd)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Bakåt" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Utförd SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databas" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Felmeddelande" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Tomt set" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Inget" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Statiska filer" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "Sökväg" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Mall" msgstr[1] "Mallar" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Resurs" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "Namn" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Version" django-debug-toolbar-1.9.1/debug_toolbar/locale/uk/000077500000000000000000000000001320306665300222025ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/uk/LC_MESSAGES/000077500000000000000000000000001320306665300237675ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/uk/LC_MESSAGES/django.mo000066400000000000000000000037721320306665300255770ustar00rootroot00000000000000)   , 2<ELT g&q    '6 ? LW`y! # %,4a5p         ActionBackCacheCloseDatabaseErrorHideKeyLevelLocationLoggingMessageNo GET dataNo POST dataNo messages loggedQueryReceiversSettingsSignalSignalsTemplateTemplatesTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)TypeValueVariableVersionVersionsProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Ukrainian (http://www.transifex.com/projects/p/django-debug-toolbar/language/uk/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: uk Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); ПодіяНазадКешЗакритиБаза данихПомилкаСховатиКлючРівеньМісцеЛогиПовідомленняНемає GET данихНемає POST данихПовідомлень немаєЗапитОтримувачі сигналаНалаштуванняСигналСигналиШаблонШаблониШаблонівШаблониШаблони (оброблено %(num_templates)s)ЧасЧас (мс)ТипЗначенняЗміннаВерсіяВерсіїdjango-debug-toolbar-1.9.1/debug_toolbar/locale/uk/LC_MESSAGES/django.po000066400000000000000000000347611320306665300256040ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Sergey Lysach , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/django-debug-toolbar/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" #: panels/cache.py:191 msgid "Cache" msgstr "Кеш" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/headers.py:35 msgid "Headers" msgstr "" #: panels/logging.py:64 msgid "Logging" msgstr "Логи" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/logging.py:73 msgid "Log messages" msgstr "" #: panels/profiling.py:127 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:18 msgid "Request" msgstr "" #: panels/request.py:35 msgid "" msgstr "" #: panels/request.py:47 msgid "" msgstr "" #: panels/settings.py:20 msgid "Settings" msgstr "Налаштування" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/signals.py:53 msgid "Signals" msgstr "Сигнали" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:107 msgid "Static files" msgstr "" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Час" #: panels/timer.py:42 msgid "User CPU time" msgstr "" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "" #: panels/timer.py:43 msgid "System CPU time" msgstr "" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "" #: panels/timer.py:44 msgid "Total CPU time" msgstr "" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "" #: panels/timer.py:45 msgid "Elapsed time" msgstr "" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "" #: panels/timer.py:46 msgid "Context switches" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:25 msgid "Versions" msgstr "Версії" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "" #: panels/sql/panel.py:37 msgid "Idle" msgstr "" #: panels/sql/panel.py:38 msgid "Active" msgstr "" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "" #: panels/sql/panel.py:40 msgid "In error" msgstr "" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "" #: panels/sql/panel.py:105 msgid "SQL" msgstr "" #: panels/templates/panel.py:141 msgid "Templates" msgstr "Шаблони" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблони (оброблено %(num_templates)s)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "Сховати" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "Закрити" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Час (мс)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Тип" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Ключ" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Значення" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "Рівень" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "Повідомлення" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Місце" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "Повідомлень немає" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Змінна" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "Немає GET даних" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "Немає POST даних" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Сигнал" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "Отримувачі сигнала" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Запит" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "Подія" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Назад" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "База даних" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Помилка" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Шаблон" msgstr[1] "Шаблони" msgstr[2] "Шаблонів" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "Версія" django-debug-toolbar-1.9.1/debug_toolbar/locale/zh_CN/000077500000000000000000000000001320306665300225645ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/zh_CN/LC_MESSAGES/000077500000000000000000000000001320306665300243515ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo000066400000000000000000000206031320306665300261510ustar00rootroot00000000000000d J $  l7 N . ." Q c u  )     !&."=`Ff   $)17N?(  ' # (5:CRfw{  -  1 AL_o t~      . ; H Ubjs h /"P s5 &@ ' 6 BM\pu~   .8)5_!& / =IPW ^kry7) $+ 2<O_g?z? -2 9-Cqx    )0"7Zay8 !# ERY`s      (2 9Zjq^x  B cj|  'd k z  !    !! !'!.!@!D!K!R! Y! e!q!}S@Y])!,'9uj?(F1m+r=JyR5< i{\#GWPC-KQZp%VXN_cHdhk8[;2B^g :|*E T3 "$o>/wO0zt4&Mnfsq UI A.LaDxb76~el`v%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s message%(count)s messages%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsChannelCloseCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLevelLocationLocation:Log messagesLoggingMessageMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo messages loggedNo session dataNonePOST dataPathPerProfilingProvidingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: POT-Creation-Date: 2014-04-25 21:52+0200 PO-Revision-Date: 2014-04-25 19:53+0000 Last-Translator: Aymeric Augustin Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-debug-toolbar/language/zh_CN/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: zh_CN Plural-Forms: nplurals=1; plural=0; %(time).2f 毫秒内 %(cache_calls)d 次调用%(count)s 条消息%(num)s 个查询%(num_signals)d 个信号 %(num_receivers)d 个接收者1个信号 %(num_receivers)d 个接收者%(num_used)s 个文件被使用%(payload_count)s 个文件%(stime)0.3f 毫秒%(total)0.3f 毫秒%(total_time)0.3f 毫秒%(utime)0.3f 毫秒%(vcsw)d 主动, %(ivcsw)d 被动(前缀 %(prefix)s)(未知)<没有 view><不可用>功能活跃参数自动提交返回后端浏览器计时CPU: %(cum)0.2f 毫秒 (总耗时: %(total)0.2f 毫秒)缓存来自 %(count)d 个后端的缓存调用缓存命中缓存未命中调用调用频道关闭命令连接:Context processors上下文切换Cookies总的调用次数调用该函数及其内部调用其他函数花费的总时间当前面板的数据暂不可用。请刷新页面并重试。数据库针对下一个连续的请求禁用该功能耗时空集合针对下一个连续的请求启用该功能错误执行的 SQL 语句GET 请求数据HTTP 头隐藏隐藏工具栏空闲错误事务拦截重定向隔离级别键关键字参数级别位置位置:日志信息日志消息导航开始后的毫秒 (+长度)名称没有 GET 请求数据没有 POST 请求数据在处理这个请求期间没有记录到 SQL 查询。没有 cookies没有消息被记录没有 session 数据空POST 请求数据路径平均每次调用花费的时间性能分析提供查询读取已提交的读取未提交的接收者可重复读取请求请求头资源资源使用响应头SQLSQL explain 分析SQL 性能分析选中的 SQL 语句可序列化Session 数据设置项设置来自 %s 的设置显示工具栏信号信号由于 WSGI 的环境变量继承自 server,所以下面只显示了一些重要的子集。静态文件包含静态文件的应用静态文件路径静态文件静态文件 (%(num_found)s 个找到,%(num_used)s 个被使用)摘要系统 CPU 时间模板模板路径模板源:模板模板 (%(num_templates)s 个被渲染)Django Debug Toolbar 为了调试目的拦截了一个重定向到上面 URL 的请求。 您可以点击上面的链接继续执行重定向操作。时间时间(毫秒)时间线计时属性切换上下文调用该函数花费的总时间总的 CPU 时间总调用次数总耗时总共:%0.2f 毫秒事务状态:类型URL 名称未知用户 CPU 时间值变量版本版本View 函数View 信息WSGI 环境变量django-debug-toolbar-1.9.1/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po000066400000000000000000000376341320306665300261700ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # mozillazg , 2013-2014 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" "PO-Revision-Date: 2014-04-25 19:53+0000\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-debug-toolbar/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:11 msgid "Debug Toolbar" msgstr "" #: views.py:14 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "当前面板的数据暂不可用。请刷新页面并重试。" #: panels/cache.py:191 msgid "Cache" msgstr "缓存" #: panels/cache.py:196 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(time).2f 毫秒内 %(cache_calls)d 次调用" #: panels/cache.py:204 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "来自 %(count)d 个后端的缓存调用" #: panels/headers.py:35 msgid "Headers" msgstr "HTTP 头" #: panels/logging.py:64 msgid "Logging" msgstr "日志" #: panels/logging.py:70 #, python-format msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s 条消息" #: panels/logging.py:73 msgid "Log messages" msgstr "日志信息" #: panels/profiling.py:127 msgid "Profiling" msgstr "性能分析" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "拦截重定向" #: panels/request.py:18 msgid "Request" msgstr "请求" #: panels/request.py:35 msgid "" msgstr "<没有 view>" #: panels/request.py:47 msgid "" msgstr "<不可用>" #: panels/settings.py:20 msgid "Settings" msgstr "设置" #: panels/settings.py:23 #, python-format msgid "Settings from %s" msgstr "来自 %s 的设置" #: panels/signals.py:45 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "1个信号 %(num_receivers)d 个接收者" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_signals)d 个信号 %(num_receivers)d 个接收者" #: panels/signals.py:53 msgid "Signals" msgstr "信号" #: panels/staticfiles.py:89 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "静态文件 (%(num_found)s 个找到,%(num_used)s 个被使用)" #: panels/staticfiles.py:107 msgid "Static files" msgstr "静态文件" #: panels/staticfiles.py:112 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s 个文件被使用" #: panels/timer.py:23 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2f 毫秒 (总耗时: %(total)0.2f 毫秒)" #: panels/timer.py:28 #, python-format msgid "Total: %0.2fms" msgstr "总共:%0.2f 毫秒" #: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "时间" #: panels/timer.py:42 msgid "User CPU time" msgstr "用户 CPU 时间" #: panels/timer.py:42 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f 毫秒" #: panels/timer.py:43 msgid "System CPU time" msgstr "系统 CPU 时间" #: panels/timer.py:43 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f 毫秒" #: panels/timer.py:44 msgid "Total CPU time" msgstr "总的 CPU 时间" #: panels/timer.py:44 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f 毫秒" #: panels/timer.py:45 msgid "Elapsed time" msgstr "耗时" #: panels/timer.py:45 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f 毫秒" #: panels/timer.py:46 msgid "Context switches" msgstr "上下文切换" #: panels/timer.py:46 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d 主动, %(ivcsw)d 被动" #: panels/versions.py:25 msgid "Versions" msgstr "版本" #: panels/sql/panel.py:22 msgid "Autocommit" msgstr "自动提交" #: panels/sql/panel.py:23 msgid "Read uncommitted" msgstr "读取未提交的" #: panels/sql/panel.py:24 msgid "Read committed" msgstr "读取已提交的" #: panels/sql/panel.py:25 msgid "Repeatable read" msgstr "可重复读取" #: panels/sql/panel.py:26 msgid "Serializable" msgstr "可序列化" #: panels/sql/panel.py:37 msgid "Idle" msgstr "空闲" #: panels/sql/panel.py:38 msgid "Active" msgstr "活跃" #: panels/sql/panel.py:39 msgid "In transaction" msgstr "事务" #: panels/sql/panel.py:40 msgid "In error" msgstr "错误" #: panels/sql/panel.py:41 msgid "Unknown" msgstr "未知" #: panels/sql/panel.py:105 msgid "SQL" msgstr "SQL" #: panels/templates/panel.py:141 msgid "Templates" msgstr "模板" #: panels/templates/panel.py:146 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "模板 (%(num_templates)s 个被渲染)" #: templates/debug_toolbar/base.html:19 msgid "Hide toolbar" msgstr "隐藏工具栏" #: templates/debug_toolbar/base.html:19 msgid "Hide" msgstr "隐藏" #: templates/debug_toolbar/base.html:25 msgid "Disable for next and successive requests" msgstr "针对下一个连续的请求禁用该功能" #: templates/debug_toolbar/base.html:25 msgid "Enable for next and successive requests" msgstr "针对下一个连续的请求启用该功能" #: templates/debug_toolbar/base.html:47 msgid "Show toolbar" msgstr "显示工具栏" #: templates/debug_toolbar/base.html:53 msgid "Close" msgstr "关闭" #: templates/debug_toolbar/redirect.html:8 msgid "Location:" msgstr "位置:" #: templates/debug_toolbar/redirect.html:10 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar 为了调试目的拦截了一个重定向到上面 URL 的请求。 您可以点击上面的链接继续执行重定向操作。" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "摘要" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "总调用次数" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "总耗时" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "缓存命中" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "缓存未命中" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "命令" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "调用" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "时间(毫秒)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "类型" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "参数" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "关键字参数" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "后端" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "请求头" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "键" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/request.html:33 #: templates/debug_toolbar/panels/request.html:59 #: templates/debug_toolbar/panels/request.html:85 #: templates/debug_toolbar/panels/request.html:110 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "值" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "响应头" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI 环境变量" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "由于 WSGI 的环境变量继承自 server,所以下面只显示了一些重要的子集。" #: templates/debug_toolbar/panels/logging.html:6 msgid "Level" msgstr "级别" #: templates/debug_toolbar/panels/logging.html:8 msgid "Channel" msgstr "频道" #: templates/debug_toolbar/panels/logging.html:9 msgid "Message" msgstr "消息" #: templates/debug_toolbar/panels/logging.html:10 #: templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "位置" #: templates/debug_toolbar/panels/logging.html:26 msgid "No messages logged" msgstr "没有消息被记录" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "调用" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "调用该函数及其内部调用其他函数花费的总时间" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "平均每次调用花费的时间" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "调用该函数花费的总时间" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "总的调用次数" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View 信息" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View 函数" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL 名称" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:32 #: templates/debug_toolbar/panels/request.html:58 #: templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "变量" #: templates/debug_toolbar/panels/request.html:46 msgid "No cookies" msgstr "没有 cookies" #: templates/debug_toolbar/panels/request.html:50 msgid "Session data" msgstr "Session 数据" #: templates/debug_toolbar/panels/request.html:72 msgid "No session data" msgstr "没有 session 数据" #: templates/debug_toolbar/panels/request.html:76 msgid "GET data" msgstr "GET 请求数据" #: templates/debug_toolbar/panels/request.html:98 msgid "No GET data" msgstr "没有 GET 请求数据" #: templates/debug_toolbar/panels/request.html:102 msgid "POST data" msgstr "POST 请求数据" #: templates/debug_toolbar/panels/request.html:123 msgid "No POST data" msgstr "没有 POST 请求数据" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "设置项" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "信号" #: templates/debug_toolbar/panels/signals.html:6 msgid "Providing" msgstr "提供" #: templates/debug_toolbar/panels/signals.html:7 msgid "Receivers" msgstr "接收者" #: templates/debug_toolbar/panels/sql.html:7 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s 个查询" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "查询" #: templates/debug_toolbar/panels/sql.html:19 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "时间线" #: templates/debug_toolbar/panels/sql.html:21 msgid "Action" msgstr "功能" #: templates/debug_toolbar/panels/sql.html:64 msgid "Connection:" msgstr "连接:" #: templates/debug_toolbar/panels/sql.html:66 msgid "Isolation level:" msgstr "隔离级别" #: templates/debug_toolbar/panels/sql.html:69 msgid "Transaction status:" msgstr "事务状态:" #: templates/debug_toolbar/panels/sql.html:83 msgid "(unknown)" msgstr "(未知)" #: templates/debug_toolbar/panels/sql.html:92 msgid "No SQL queries were recorded during this request." msgstr "在处理这个请求期间没有记录到 SQL 查询。" #: templates/debug_toolbar/panels/sql_explain.html:3 #: templates/debug_toolbar/panels/sql_profile.html:3 #: templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "返回" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL explain 分析" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "执行的 SQL 语句" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "数据库" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL 性能分析" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "错误" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "选中的 SQL 语句" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "空集合" #: templates/debug_toolbar/panels/staticfiles.html:4 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "静态文件路径" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(前缀 %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:12 #: templates/debug_toolbar/panels/staticfiles.html:23 #: templates/debug_toolbar/panels/staticfiles.html:35 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:28 #: templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "空" #: templates/debug_toolbar/panels/staticfiles.html:15 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "包含静态文件的应用" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" msgstr[0] "静态文件" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s 个文件" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" msgstr "路径" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "模板源:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "模板路径" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "模板" #: templates/debug_toolbar/panels/templates.html:21 #: templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "切换上下文" #: templates/debug_toolbar/panels/templates.html:31 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context processors" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "资源使用" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "资源" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "浏览器计时" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "计时属性" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "导航开始后的毫秒 (+长度)" #: templates/debug_toolbar/panels/versions.html:5 msgid "Name" msgstr "名称" #: templates/debug_toolbar/panels/versions.html:6 msgid "Version" msgstr "版本" django-debug-toolbar-1.9.1/debug_toolbar/management/000077500000000000000000000000001320306665300224405ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/management/__init__.py000066400000000000000000000000001320306665300245370ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/management/commands/000077500000000000000000000000001320306665300242415ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/management/commands/__init__.py000066400000000000000000000000001320306665300263400ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/management/commands/debugsqlshell.py000066400000000000000000000015211320306665300274500ustar00rootroot00000000000000from __future__ import absolute_import, print_function, unicode_literals from time import time import sqlparse # 'debugsqlshell' is the same as the 'shell'. from django.core.management.commands.shell import Command # noqa from django.db.backends import utils as db_backends_utils class PrintQueryWrapper(db_backends_utils.CursorDebugWrapper): def execute(self, sql, params=()): start_time = time() try: return self.cursor.execute(sql, params) finally: raw_sql = self.db.ops.last_executed_query(self.cursor, sql, params) end_time = time() duration = (end_time - start_time) * 1000 formatted_sql = sqlparse.format(raw_sql, reindent=True) print('%s [%.2fms]' % (formatted_sql, duration)) db_backends_utils.CursorDebugWrapper = PrintQueryWrapper django-debug-toolbar-1.9.1/debug_toolbar/middleware.py000066400000000000000000000115151320306665300230160ustar00rootroot00000000000000""" Debug Toolbar middleware """ from __future__ import absolute_import, unicode_literals import re import threading from django.conf import settings from django.utils import six from django.utils.encoding import force_text from django.utils.lru_cache import lru_cache from django.utils.module_loading import import_string from debug_toolbar import settings as dt_settings from debug_toolbar.toolbar import DebugToolbar try: from django.utils.deprecation import MiddlewareMixin except ImportError: # Django < 1.10 # Works perfectly for everyone using MIDDLEWARE_CLASSES MiddlewareMixin = object _HTML_TYPES = ('text/html', 'application/xhtml+xml') def show_toolbar(request): """ Default function to determine whether to show the toolbar on a given page. """ if request.META.get('REMOTE_ADDR', None) not in settings.INTERNAL_IPS: return False return bool(settings.DEBUG) @lru_cache() def get_show_toolbar(): # If SHOW_TOOLBAR_CALLBACK is a string, which is the recommended # setup, resolve it to the corresponding callable. func_or_path = dt_settings.get_config()['SHOW_TOOLBAR_CALLBACK'] if isinstance(func_or_path, six.string_types): return import_string(func_or_path) else: return func_or_path class DebugToolbarMiddleware(MiddlewareMixin): """ Middleware to set up Debug Toolbar on incoming request and render toolbar on outgoing response. """ debug_toolbars = {} def process_request(self, request): # Decide whether the toolbar is active for this request. show_toolbar = get_show_toolbar() if not show_toolbar(request): return # Don't render the toolbar during AJAX requests. if request.is_ajax(): return toolbar = DebugToolbar(request) self.__class__.debug_toolbars[threading.current_thread().ident] = toolbar # Activate instrumentation ie. monkey-patch. for panel in toolbar.enabled_panels: panel.enable_instrumentation() # Run process_request methods of panels like Django middleware. response = None for panel in toolbar.enabled_panels: response = panel.process_request(request) if response: break return response def process_view(self, request, view_func, view_args, view_kwargs): toolbar = self.__class__.debug_toolbars.get(threading.current_thread().ident) if not toolbar: return # Run process_view methods of panels like Django middleware. response = None for panel in toolbar.enabled_panels: response = panel.process_view(request, view_func, view_args, view_kwargs) if response: break return response def process_response(self, request, response): toolbar = self.__class__.debug_toolbars.pop(threading.current_thread().ident, None) if not toolbar: return response # Run process_response methods of panels like Django middleware. for panel in reversed(toolbar.enabled_panels): new_response = panel.process_response(request, response) if new_response: response = new_response # Deactivate instrumentation ie. monkey-unpatch. This must run # regardless of the response. Keep 'return' clauses below. # (NB: Django's model for middleware doesn't guarantee anything.) for panel in reversed(toolbar.enabled_panels): panel.disable_instrumentation() # Check for responses where the toolbar can't be inserted. content_encoding = response.get('Content-Encoding', '') content_type = response.get('Content-Type', '').split(';')[0] if any((getattr(response, 'streaming', False), 'gzip' in content_encoding, content_type not in _HTML_TYPES)): return response # Collapse the toolbar by default if SHOW_COLLAPSED is set. if toolbar.config['SHOW_COLLAPSED'] and 'djdt' not in request.COOKIES: response.set_cookie('djdt', 'hide', 864000) # Insert the toolbar in the response. content = force_text(response.content, encoding=response.charset) insert_before = dt_settings.get_config()['INSERT_BEFORE'] pattern = re.escape(insert_before) bits = re.split(pattern, content, flags=re.IGNORECASE) if len(bits) > 1: # When the toolbar will be inserted for sure, generate the stats. for panel in reversed(toolbar.enabled_panels): panel.generate_stats(request, response) bits[-2] += toolbar.render_toolbar() response.content = insert_before.join(bits) if response.get('Content-Length', None): response['Content-Length'] = len(response.content) return response django-debug-toolbar-1.9.1/debug_toolbar/panels/000077500000000000000000000000001320306665300216065ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/panels/__init__.py000066400000000000000000000143721320306665300237260ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import warnings from django.template.loader import render_to_string from debug_toolbar import settings as dt_settings from debug_toolbar.utils import get_name_from_obj class Panel(object): """ Base class for panels. """ def __init__(self, toolbar): self.toolbar = toolbar # Private panel properties @property def panel_id(self): return self.__class__.__name__ @property def enabled(self): # Check to see if settings has a default value for it disabled_panels = dt_settings.get_config()['DISABLE_PANELS'] panel_path = get_name_from_obj(self) # Some panels such as the SQLPanel and TemplatesPanel exist in a # panel module, but can be disabled without panel in the path. # For that reason, replace .panel. in the path and check for that # value in the disabled panels as well. disable_panel = ( panel_path in disabled_panels or panel_path.replace('.panel.', '.') in disabled_panels) if disable_panel: default = 'off' else: default = 'on' # The user's cookies should override the default value return self.toolbar.request.COOKIES.get('djdt' + self.panel_id, default) == 'on' # Titles and content @property def nav_title(self): """ Title shown in the side bar. Defaults to :attr:`title`. """ return self.title @property def nav_subtitle(self): """ Subtitle shown in the side bar. Defaults to the empty string. """ return '' @property def has_content(self): """ ``True`` if the panel can be displayed in full screen, ``False`` if it's only shown in the side bar. Defaults to ``True``. """ return True @property def title(self): """ Title shown in the panel when it's displayed in full screen. Mandatory, unless the panel sets :attr:`has_content` to ``False``. """ raise NotImplementedError @property def template(self): """ Template used to render :attr:`content`. Mandatory, unless the panel sets :attr:`has_content` to ``False`` or overrides `attr`:content`. """ raise NotImplementedError @property def content(self): """ Content of the panel when it's displayed in full screen. By default this renders the template defined by :attr:`template`. Statistics stored with :meth:`record_stats` are available in the template's context. """ if self.has_content: return render_to_string(self.template, self.get_stats()) # URLs for panel-specific views @classmethod def get_urls(cls): """ Return URLpatterns, if the panel has its own views. """ return [] # Enable and disable (expensive) instrumentation, must be idempotent def enable_instrumentation(self): """ Enable instrumentation to gather data for this panel. This usually means monkey-patching (!) or registering signal receivers. Any instrumentation with a non-negligible effect on performance should be installed by this method rather than at import time. Unless the toolbar or this panel is disabled, this method will be called early in :class:`DebugToolbarMiddleware.process_request`. It should be idempotent. """ def disable_instrumentation(self): """ Disable instrumentation to gather data for this panel. This is the opposite of :meth:`enable_instrumentation`. Unless the toolbar or this panel is disabled, this method will be called late in :class:`DebugToolbarMiddleware.process_response`. It should be idempotent. """ # Store and retrieve stats (shared between panels for no good reason) def record_stats(self, stats): """ Store data gathered by the panel. ``stats`` is a :class:`dict`. Each call to ``record_stats`` updates the statistics dictionary. """ self.toolbar.stats.setdefault(self.panel_id, {}).update(stats) def get_stats(self): """ Access data stored by the panel. Returns a :class:`dict`. """ return self.toolbar.stats.get(self.panel_id, {}) # Standard middleware methods def process_request(self, request): """ Like process_request in Django's middleware. Write panel logic related to the request there. Save data with :meth:`record_stats`. """ def process_view(self, request, view_func, view_args, view_kwargs): """ Like process_view in Django's middleware. Write panel logic related to the view there. Save data with :meth:`record_stats`. """ def process_response(self, request, response): """ Like process_response in Django's middleware. This is similar to :meth:`generate_stats `, but will be executed on every request. It should be used when either the logic needs to be executed on every request or it needs to change the response entirely, such as :class:`RedirectsPanel`. Write panel logic related to the response there. Post-process data gathered while the view executed. Save data with :meth:`record_stats`. Return a response to overwrite the existing response. """ def generate_stats(self, request, response): """ Similar to :meth:`process_response `, but may not be executed on every request. This will only be called if the toolbar will be inserted into the request. Write panel logic related to the response there. Post-process data gathered while the view executed. Save data with :meth:`record_stats`. Does not return a value. """ # Backward-compatibility for 1.0, remove in 2.0. class DebugPanel(Panel): def __init__(self, *args, **kwargs): warnings.warn("DebugPanel was renamed to Panel.", DeprecationWarning) super(DebugPanel, self).__init__(*args, **kwargs) django-debug-toolbar-1.9.1/debug_toolbar/panels/cache.py000066400000000000000000000172241320306665300232310ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import inspect import sys import time from collections import OrderedDict import django from django.conf import settings from django.core import cache from django.core.cache import CacheHandler, caches as original_caches from django.core.cache.backends.base import BaseCache from django.dispatch import Signal from django.middleware import cache as middleware_cache from django.utils.translation import ugettext_lazy as _, ungettext from debug_toolbar import settings as dt_settings from debug_toolbar.panels import Panel from debug_toolbar.utils import ( get_stack, get_template_info, render_stacktrace, tidy_stacktrace, ) if django.VERSION[:2] < (1, 9): from django.core.cache import get_cache as original_get_cache cache_called = Signal(providing_args=[ "time_taken", "name", "return_value", "args", "kwargs", "trace"]) def send_signal(method): def wrapped(self, *args, **kwargs): t = time.time() value = method(self, *args, **kwargs) t = time.time() - t if dt_settings.get_config()['ENABLE_STACKTRACES']: stacktrace = tidy_stacktrace(reversed(get_stack())) else: stacktrace = [] template_info = get_template_info() cache_called.send(sender=self.__class__, time_taken=t, name=method.__name__, return_value=value, args=args, kwargs=kwargs, trace=stacktrace, template_info=template_info, backend=self.cache) return value return wrapped class CacheStatTracker(BaseCache): """A small class used to track cache calls.""" def __init__(self, cache): self.cache = cache def __repr__(self): return str("") % repr(self.cache) def _get_func_info(self): frame = sys._getframe(3) info = inspect.getframeinfo(frame) return (info[0], info[1], info[2], info[3]) def __contains__(self, key): return self.cache.__contains__(key) def __getattr__(self, name): return getattr(self.cache, name) @send_signal def add(self, *args, **kwargs): return self.cache.add(*args, **kwargs) @send_signal def get(self, *args, **kwargs): return self.cache.get(*args, **kwargs) @send_signal def set(self, *args, **kwargs): return self.cache.set(*args, **kwargs) @send_signal def delete(self, *args, **kwargs): return self.cache.delete(*args, **kwargs) @send_signal def clear(self, *args, **kwargs): return self.cache.clear(*args, **kwargs) @send_signal def has_key(self, *args, **kwargs): # Ignore flake8 rules for has_key since we need to support caches # that may be using has_key. return self.cache.has_key(*args, **kwargs) # noqa @send_signal def incr(self, *args, **kwargs): return self.cache.incr(*args, **kwargs) @send_signal def decr(self, *args, **kwargs): return self.cache.decr(*args, **kwargs) @send_signal def get_many(self, *args, **kwargs): return self.cache.get_many(*args, **kwargs) @send_signal def set_many(self, *args, **kwargs): self.cache.set_many(*args, **kwargs) @send_signal def delete_many(self, *args, **kwargs): self.cache.delete_many(*args, **kwargs) @send_signal def incr_version(self, *args, **kwargs): return self.cache.incr_version(*args, **kwargs) @send_signal def decr_version(self, *args, **kwargs): return self.cache.decr_version(*args, **kwargs) if django.VERSION[:2] < (1, 9): def get_cache(*args, **kwargs): return CacheStatTracker(original_get_cache(*args, **kwargs)) class CacheHandlerPatch(CacheHandler): def __getitem__(self, alias): actual_cache = super(CacheHandlerPatch, self).__getitem__(alias) return CacheStatTracker(actual_cache) # Must monkey patch the middleware's cache module as well in order to # cover per-view level caching. This needs to be monkey patched outside # of the enable_instrumentation method since the django's # decorator_from_middleware_with_args will store the cache from core.caches # when it wraps the view. if django.VERSION[:2] < (1, 9): middleware_cache.get_cache = get_cache middleware_cache.caches = CacheHandlerPatch() class CachePanel(Panel): """ Panel that displays the cache statistics. """ template = 'debug_toolbar/panels/cache.html' def __init__(self, *args, **kwargs): super(CachePanel, self).__init__(*args, **kwargs) self.total_time = 0 self.hits = 0 self.misses = 0 self.calls = [] self.counts = OrderedDict(( ('add', 0), ('get', 0), ('set', 0), ('delete', 0), ('clear', 0), ('get_many', 0), ('set_many', 0), ('delete_many', 0), ('has_key', 0), ('incr', 0), ('decr', 0), ('incr_version', 0), ('decr_version', 0), )) cache_called.connect(self._store_call_info) def _store_call_info(self, sender, name=None, time_taken=0, return_value=None, args=None, kwargs=None, trace=None, template_info=None, backend=None, **kw): if name == 'get': if return_value is None: self.misses += 1 else: self.hits += 1 elif name == 'get_many': for key, value in return_value.items(): if value is None: self.misses += 1 else: self.hits += 1 time_taken *= 1000 self.total_time += time_taken self.counts[name] += 1 self.calls.append({ 'time': time_taken, 'name': name, 'args': args, 'kwargs': kwargs, 'trace': render_stacktrace(trace), 'template_info': template_info, 'backend': backend }) # Implement the Panel API nav_title = _("Cache") @property def nav_subtitle(self): cache_calls = len(self.calls) return ungettext("%(cache_calls)d call in %(time).2fms", "%(cache_calls)d calls in %(time).2fms", cache_calls) % {'cache_calls': cache_calls, 'time': self.total_time} @property def title(self): count = len(getattr(settings, 'CACHES', ['default'])) return ungettext("Cache calls from %(count)d backend", "Cache calls from %(count)d backends", count) % dict(count=count) def enable_instrumentation(self): if django.VERSION[:2] < (1, 9): cache.get_cache = get_cache if isinstance(middleware_cache.caches, CacheHandlerPatch): cache.caches = middleware_cache.caches else: cache.caches = CacheHandlerPatch() def disable_instrumentation(self): if django.VERSION[:2] < (1, 9): cache.get_cache = original_get_cache cache.caches = original_caches # While it can be restored to the original, any views that were # wrapped with the cache_page decorator will continue to use a # monkey patched cache. middleware_cache.caches = original_caches def generate_stats(self, request, response): self.record_stats({ 'total_calls': len(self.calls), 'calls': self.calls, 'total_time': self.total_time, 'hits': self.hits, 'misses': self.misses, 'counts': self.counts, }) django-debug-toolbar-1.9.1/debug_toolbar/panels/headers.py000066400000000000000000000036061320306665300236000ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from collections import OrderedDict from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel class HeadersPanel(Panel): """ A panel to display HTTP headers. """ # List of environment variables we want to display ENVIRON_FILTER = set(( 'CONTENT_LENGTH', 'CONTENT_TYPE', 'DJANGO_SETTINGS_MODULE', 'GATEWAY_INTERFACE', 'QUERY_STRING', 'PATH_INFO', 'PYTHONPATH', 'REMOTE_ADDR', 'REMOTE_HOST', 'REQUEST_METHOD', 'SCRIPT_NAME', 'SERVER_NAME', 'SERVER_PORT', 'SERVER_PROTOCOL', 'SERVER_SOFTWARE', 'TZ', )) title = _("Headers") template = 'debug_toolbar/panels/headers.html' def process_request(self, request): wsgi_env = list(sorted(request.META.items())) self.request_headers = OrderedDict( (unmangle(k), v) for (k, v) in wsgi_env if is_http_header(k)) if 'Cookie' in self.request_headers: self.request_headers['Cookie'] = '=> see Request panel' self.environ = OrderedDict( (k, v) for (k, v) in wsgi_env if k in self.ENVIRON_FILTER) self.record_stats({ 'request_headers': self.request_headers, 'environ': self.environ, }) def generate_stats(self, request, response): self.response_headers = OrderedDict(sorted(response.items())) self.record_stats({ 'response_headers': self.response_headers, }) def is_http_header(wsgi_key): # The WSGI spec says that keys should be str objects in the environ dict, # but this isn't true in practice. See issues #449 and #482. return isinstance(wsgi_key, str) and wsgi_key.startswith('HTTP_') def unmangle(wsgi_key): return wsgi_key[5:].replace('_', '-').title() django-debug-toolbar-1.9.1/debug_toolbar/panels/logging.py000066400000000000000000000047231320306665300236140ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import datetime import logging from django.utils.translation import ugettext_lazy as _, ungettext from debug_toolbar.panels import Panel from debug_toolbar.utils import ThreadCollector try: import threading except ImportError: threading = None MESSAGE_IF_STRING_REPRESENTATION_INVALID = '[Could not get log message]' class LogCollector(ThreadCollector): def collect(self, item, thread=None): # Avoid logging SQL queries since they are already in the SQL panel # TODO: Make this check whether SQL panel is enabled if item.get('channel', '') == 'django.db.backends': return super(LogCollector, self).collect(item, thread) class ThreadTrackingHandler(logging.Handler): def __init__(self, collector): logging.Handler.__init__(self) self.collector = collector def emit(self, record): try: message = record.getMessage() except Exception: message = MESSAGE_IF_STRING_REPRESENTATION_INVALID record = { 'message': message, 'time': datetime.datetime.fromtimestamp(record.created), 'level': record.levelname, 'file': record.pathname, 'line': record.lineno, 'channel': record.name, } self.collector.collect(record) # We don't use enable/disable_instrumentation because logging is global. # We can't add thread-local logging handlers. Hopefully logging is cheap. collector = LogCollector() logging_handler = ThreadTrackingHandler(collector) logging.root.addHandler(logging_handler) class LoggingPanel(Panel): template = 'debug_toolbar/panels/logging.html' def __init__(self, *args, **kwargs): super(LoggingPanel, self).__init__(*args, **kwargs) self._records = {} nav_title = _("Logging") @property def nav_subtitle(self): records = self._records[threading.currentThread()] record_count = len(records) return ungettext("%(count)s message", "%(count)s messages", record_count) % {'count': record_count} title = _("Log messages") def process_request(self, request): collector.clear_collection() def generate_stats(self, request, response): records = collector.get_collection() self._records[threading.currentThread()] = records collector.clear_collection() self.record_stats({'records': records}) django-debug-toolbar-1.9.1/debug_toolbar/panels/profiling.py000066400000000000000000000132031320306665300241500ustar00rootroot00000000000000from __future__ import absolute_import, division, unicode_literals import cProfile import os from colorsys import hsv_to_rgb from pstats import Stats from django.utils import six from django.utils.html import format_html from django.utils.translation import ugettext_lazy as _ from debug_toolbar import settings as dt_settings from debug_toolbar.panels import Panel # Occasionally the disable method on the profiler is listed before # the actual view functions. This function call should be ignored as # it leads to an error within the tests. INVALID_PROFILER_FUNC = '_lsprof.Profiler' def contains_profiler(func_tuple): """Helper function that checks to see if the tuple contains the INVALID_PROFILE_FUNC in any string value of the tuple.""" has_profiler = False for value in func_tuple: if isinstance(value, six.string_types): has_profiler |= INVALID_PROFILER_FUNC in value return has_profiler class DjangoDebugToolbarStats(Stats): __root = None def get_root_func(self): if self.__root is None: for func, (cc, nc, tt, ct, callers) in self.stats.items(): if len(callers) == 0 and not contains_profiler(func): self.__root = func break return self.__root class FunctionCall(object): def __init__(self, statobj, func, depth=0, stats=None, id=0, parent_ids=[], hsv=(0, 0.5, 1)): self.statobj = statobj self.func = func if stats: self.stats = stats else: self.stats = statobj.stats[func][:4] self.depth = depth self.id = id self.parent_ids = parent_ids self.hsv = hsv def parent_classes(self): return self.parent_classes def background(self): r, g, b = hsv_to_rgb(*self.hsv) return 'rgb(%f%%,%f%%,%f%%)' % (r * 100, g * 100, b * 100) def func_std_string(self): # match what old profile produced func_name = self.func if func_name[:2] == ('~', 0): # special case for built-in functions name = func_name[2] if name.startswith('<') and name.endswith('>'): return '{%s}' % name[1:-1] else: return name else: file_name, line_num, method = self.func idx = file_name.find('/site-packages/') if idx > -1: file_name = file_name[(idx + 14):] file_path, file_name = file_name.rsplit(os.sep, 1) return format_html( '{0}/' '{1}' ' in {3}' '({2})', file_path, file_name, line_num, method) def subfuncs(self): i = 0 h, s, v = self.hsv count = len(self.statobj.all_callees[self.func]) for func, stats in self.statobj.all_callees[self.func].items(): i += 1 h1 = h + (i / count) / (self.depth + 1) if stats[3] == 0: s1 = 0 else: s1 = s * (stats[3] / self.stats[3]) yield FunctionCall(self.statobj, func, self.depth + 1, stats=stats, id=str(self.id) + '_' + str(i), parent_ids=self.parent_ids + [self.id], hsv=(h1, s1, 1)) def count(self): return self.stats[1] def tottime(self): return self.stats[2] def cumtime(self): cc, nc, tt, ct = self.stats return self.stats[3] def tottime_per_call(self): cc, nc, tt, ct = self.stats if nc == 0: return 0 return tt / nc def cumtime_per_call(self): cc, nc, tt, ct = self.stats if cc == 0: return 0 return ct / cc def indent(self): return 16 * self.depth class ProfilingPanel(Panel): """ Panel that displays profiling information. """ title = _("Profiling") template = 'debug_toolbar/panels/profiling.html' def process_view(self, request, view_func, view_args, view_kwargs): self.profiler = cProfile.Profile() args = (request,) + view_args return self.profiler.runcall(view_func, *args, **view_kwargs) def add_node(self, func_list, func, max_depth, cum_time=0.1): func_list.append(func) func.has_subfuncs = False if func.depth < max_depth: for subfunc in func.subfuncs(): if subfunc.stats[3] >= cum_time: func.has_subfuncs = True self.add_node(func_list, subfunc, max_depth, cum_time=cum_time) def generate_stats(self, request, response): if not hasattr(self, 'profiler'): return None # Could be delayed until the panel content is requested (perf. optim.) self.profiler.create_stats() self.stats = DjangoDebugToolbarStats(self.profiler) self.stats.calc_callees() root_func = self.stats.get_root_func() # Ensure root function exists before continuing with function call analysis if root_func: root = FunctionCall(self.stats, root_func, depth=0) func_list = [] self.add_node(func_list, root, dt_settings.get_config()['PROFILER_MAX_DEPTH'], root.stats[3] / 8) self.record_stats({'func_list': func_list}) django-debug-toolbar-1.9.1/debug_toolbar/panels/redirects.py000066400000000000000000000020721320306665300241450ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.template.response import SimpleTemplateResponse from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel class RedirectsPanel(Panel): """ Panel that intercepts redirects and displays a page with debug info. """ has_content = False nav_title = _("Intercept redirects") def process_response(self, request, response): if 300 <= int(response.status_code) < 400: redirect_to = response.get('Location', None) if redirect_to: status_line = '%s %s' % (response.status_code, response.reason_phrase) cookies = response.cookies context = {'redirect_to': redirect_to, 'status_line': status_line} # Using SimpleTemplateResponse avoids running global context processors. response = SimpleTemplateResponse('debug_toolbar/redirect.html', context) response.cookies = cookies response.render() return response django-debug-toolbar-1.9.1/debug_toolbar/panels/request.py000066400000000000000000000037761320306665300236650ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.http import Http404 from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.utils import get_name_from_obj try: from django.urls import resolve except ImportError: # Django < 1.10 pragma: no cover from django.core.urlresolvers import resolve class RequestPanel(Panel): """ A panel to display request variables (POST/GET, session, cookies). """ template = 'debug_toolbar/panels/request.html' title = _("Request") @property def nav_subtitle(self): """ Show abbreviated name of view function as subtitle """ view_func = self.get_stats().get('view_func', '') return view_func.rsplit('.', 1)[-1] def generate_stats(self, request, response): self.record_stats({ 'get': [(k, request.GET.getlist(k)) for k in sorted(request.GET)], 'post': [(k, request.POST.getlist(k)) for k in sorted(request.POST)], 'cookies': [(k, request.COOKIES.get(k)) for k in sorted(request.COOKIES)], }) view_info = { 'view_func': _(""), 'view_args': 'None', 'view_kwargs': 'None', 'view_urlname': 'None', } try: match = resolve(request.path) func, args, kwargs = match view_info['view_func'] = get_name_from_obj(func) view_info['view_args'] = args view_info['view_kwargs'] = kwargs view_info['view_urlname'] = getattr(match, 'url_name', _("")) except Http404: pass self.record_stats(view_info) if hasattr(request, 'session'): self.record_stats({ 'session': [(k, request.session.get(k)) for k in sorted(request.session.keys(), key=force_text)] }) django-debug-toolbar-1.9.1/debug_toolbar/panels/settings.py000066400000000000000000000014241320306665300240210ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from collections import OrderedDict from django.conf import settings from django.utils.translation import ugettext_lazy as _ from django.views.debug import get_safe_settings from debug_toolbar.panels import Panel class SettingsPanel(Panel): """ A panel to display all variables in django.conf.settings """ template = 'debug_toolbar/panels/settings.html' nav_title = _("Settings") def title(self): return _("Settings from %s") % settings.SETTINGS_MODULE def generate_stats(self, request, response): self.record_stats({ 'settings': OrderedDict(sorted(get_safe_settings().items(), key=lambda s: s[0])), }) django-debug-toolbar-1.9.1/debug_toolbar/panels/signals.py000066400000000000000000000066541320306665300236330ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import weakref from django.core.signals import ( got_request_exception, request_finished, request_started, ) from django.db.backends.signals import connection_created from django.db.models.signals import ( class_prepared, post_delete, post_init, post_migrate, post_save, pre_delete, pre_init, pre_save, ) from django.utils.module_loading import import_string from django.utils.translation import ugettext_lazy as _, ungettext from debug_toolbar.panels import Panel class SignalsPanel(Panel): template = 'debug_toolbar/panels/signals.html' SIGNALS = { 'request_started': request_started, 'request_finished': request_finished, 'got_request_exception': got_request_exception, 'connection_created': connection_created, 'class_prepared': class_prepared, 'pre_init': pre_init, 'post_init': post_init, 'pre_save': pre_save, 'post_save': post_save, 'pre_delete': pre_delete, 'post_delete': post_delete, 'post_migrate': post_migrate, } def nav_subtitle(self): signals = self.get_stats()['signals'] num_receivers = sum(len(s[2]) for s in signals) num_signals = len(signals) # here we have to handle a double count translation, hence the # hard coding of one signal if num_signals == 1: return ungettext("%(num_receivers)d receiver of 1 signal", "%(num_receivers)d receivers of 1 signal", num_receivers) % {'num_receivers': num_receivers} return ungettext("%(num_receivers)d receiver of %(num_signals)d signals", "%(num_receivers)d receivers of %(num_signals)d signals", num_receivers) % {'num_receivers': num_receivers, 'num_signals': num_signals} title = _("Signals") @property def signals(self): signals = self.SIGNALS.copy() for signal in self.toolbar.config['EXTRA_SIGNALS']: signal_name = signal.rsplit('.', 1)[-1] signals[signal_name] = import_string(signal) return signals def generate_stats(self, request, response): signals = [] for name, signal in sorted(self.signals.items(), key=lambda x: x[0]): receivers = [] for receiver in signal.receivers: receiver = receiver[1] if isinstance(receiver, weakref.ReferenceType): receiver = receiver() if receiver is None: continue receiver = getattr(receiver, '__wraps__', receiver) receiver_name = getattr(receiver, '__name__', str(receiver)) if getattr(receiver, '__self__', None) is not None: receiver_class_name = getattr(receiver.__self__, '__class__', type).__name__ text = "%s.%s" % (receiver_class_name, receiver_name) elif getattr(receiver, 'im_class', None) is not None: # Python 2 only receiver_class_name = receiver.im_class.__name__ text = "%s.%s" % (receiver_class_name, receiver_name) else: text = "%s" % receiver_name receivers.append(text) signals.append((name, signal, receivers)) self.record_stats({'signals': signals}) django-debug-toolbar-1.9.1/debug_toolbar/panels/sql/000077500000000000000000000000001320306665300224055ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/panels/sql/__init__.py000066400000000000000000000000741320306665300245170ustar00rootroot00000000000000from debug_toolbar.panels.sql.panel import SQLPanel # noqa django-debug-toolbar-1.9.1/debug_toolbar/panels/sql/forms.py000066400000000000000000000052501320306665300241070ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import hashlib import hmac import json from django import forms from django.conf import settings from django.core.exceptions import ValidationError from django.db import connections from django.utils.crypto import constant_time_compare from django.utils.encoding import force_bytes from django.utils.functional import cached_property from debug_toolbar.panels.sql.utils import reformat_sql class SQLSelectForm(forms.Form): """ Validate params sql: The sql statement with interpolated params raw_sql: The sql statement with placeholders params: JSON encoded parameter values duration: time for SQL to execute passed in from toolbar just for redisplay hash: the hash of (secret + sql + params) for tamper checking """ sql = forms.CharField() raw_sql = forms.CharField() params = forms.CharField() alias = forms.CharField(required=False, initial='default') duration = forms.FloatField() hash = forms.CharField() def __init__(self, *args, **kwargs): initial = kwargs.get('initial', None) if initial is not None: initial['hash'] = self.make_hash(initial) super(SQLSelectForm, self).__init__(*args, **kwargs) for name in self.fields: self.fields[name].widget = forms.HiddenInput() def clean_raw_sql(self): value = self.cleaned_data['raw_sql'] if not value.lower().strip().startswith('select'): raise ValidationError("Only 'select' queries are allowed.") return value def clean_params(self): value = self.cleaned_data['params'] try: return json.loads(value) except ValueError: raise ValidationError('Is not valid JSON') def clean_alias(self): value = self.cleaned_data['alias'] if value not in connections: raise ValidationError("Database alias '%s' not found" % value) return value def clean_hash(self): hash = self.cleaned_data['hash'] if not constant_time_compare(hash, self.make_hash(self.data)): raise ValidationError('Tamper alert') return hash def reformat_sql(self): return reformat_sql(self.cleaned_data['sql']) def make_hash(self, data): m = hmac.new(key=force_bytes(settings.SECRET_KEY), digestmod=hashlib.sha1) for item in [data['sql'], data['params']]: m.update(force_bytes(item)) return m.hexdigest() @property def connection(self): return connections[self.cleaned_data['alias']] @cached_property def cursor(self): return self.connection.cursor() django-debug-toolbar-1.9.1/debug_toolbar/panels/sql/panel.py000066400000000000000000000217111320306665300240600ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import uuid from collections import defaultdict from copy import copy from django.conf.urls import url from django.db import connections from django.utils.translation import ugettext_lazy as _, ungettext_lazy as __ from debug_toolbar.panels import Panel from debug_toolbar.panels.sql import views from debug_toolbar.panels.sql.forms import SQLSelectForm from debug_toolbar.panels.sql.tracking import unwrap_cursor, wrap_cursor from debug_toolbar.panels.sql.utils import ( contrasting_color_generator, reformat_sql, ) from debug_toolbar.utils import render_stacktrace def get_isolation_level_display(vendor, level): if vendor == 'postgresql': import psycopg2.extensions choices = { psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT: _("Autocommit"), psycopg2.extensions.ISOLATION_LEVEL_READ_UNCOMMITTED: _("Read uncommitted"), psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED: _("Read committed"), psycopg2.extensions.ISOLATION_LEVEL_REPEATABLE_READ: _("Repeatable read"), psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLE: _("Serializable"), } else: raise ValueError(vendor) return choices.get(level) def get_transaction_status_display(vendor, level): if vendor == 'postgresql': import psycopg2.extensions choices = { psycopg2.extensions.TRANSACTION_STATUS_IDLE: _("Idle"), psycopg2.extensions.TRANSACTION_STATUS_ACTIVE: _("Active"), psycopg2.extensions.TRANSACTION_STATUS_INTRANS: _("In transaction"), psycopg2.extensions.TRANSACTION_STATUS_INERROR: _("In error"), psycopg2.extensions.TRANSACTION_STATUS_UNKNOWN: _("Unknown"), } else: raise ValueError(vendor) return choices.get(level) class SQLPanel(Panel): """ Panel that displays information about the SQL queries run while processing the request. """ def __init__(self, *args, **kwargs): super(SQLPanel, self).__init__(*args, **kwargs) self._offset = {k: len(connections[k].queries) for k in connections} self._sql_time = 0 self._num_queries = 0 self._queries = [] self._databases = {} self._transaction_status = {} self._transaction_ids = {} def get_transaction_id(self, alias): if alias not in connections: return conn = connections[alias].connection if not conn: return if conn.vendor == 'postgresql': cur_status = conn.get_transaction_status() else: raise ValueError(conn.vendor) last_status = self._transaction_status.get(alias) self._transaction_status[alias] = cur_status if not cur_status: # No available state return None if cur_status != last_status: if cur_status: self._transaction_ids[alias] = uuid.uuid4().hex else: self._transaction_ids[alias] = None return self._transaction_ids[alias] def record(self, alias, **kwargs): self._queries.append((alias, kwargs)) if alias not in self._databases: self._databases[alias] = { 'time_spent': kwargs['duration'], 'num_queries': 1, } else: self._databases[alias]['time_spent'] += kwargs['duration'] self._databases[alias]['num_queries'] += 1 self._sql_time += kwargs['duration'] self._num_queries += 1 # Implement the Panel API nav_title = _("SQL") @property def nav_subtitle(self): return __("%d query in %.2fms", "%d queries in %.2fms", self._num_queries) % (self._num_queries, self._sql_time) @property def title(self): count = len(self._databases) return __('SQL queries from %(count)d connection', 'SQL queries from %(count)d connections', count) % {'count': count} template = 'debug_toolbar/panels/sql.html' @classmethod def get_urls(cls): return [ url(r'^sql_select/$', views.sql_select, name='sql_select'), url(r'^sql_explain/$', views.sql_explain, name='sql_explain'), url(r'^sql_profile/$', views.sql_profile, name='sql_profile'), ] def enable_instrumentation(self): # This is thread-safe because database connections are thread-local. for connection in connections.all(): wrap_cursor(connection, self) def disable_instrumentation(self): for connection in connections.all(): unwrap_cursor(connection) def generate_stats(self, request, response): colors = contrasting_color_generator() trace_colors = defaultdict(lambda: next(colors)) query_duplicates = defaultdict(lambda: defaultdict(int)) if self._queries: width_ratio_tally = 0 factor = int(256.0 / (len(self._databases) * 2.5)) for n, db in enumerate(self._databases.values()): rgb = [0, 0, 0] color = n % 3 rgb[color] = 256 - n // 3 * factor nn = color # XXX: pretty sure this is horrible after so many aliases while rgb[color] < factor: nc = min(256 - rgb[color], 256) rgb[color] += nc nn += 1 if nn > 2: nn = 0 rgb[nn] = nc db['rgb_color'] = rgb trans_ids = {} trans_id = None i = 0 for alias, query in self._queries: query_duplicates[alias][query["raw_sql"]] += 1 trans_id = query.get('trans_id') last_trans_id = trans_ids.get(alias) if trans_id != last_trans_id: if last_trans_id: self._queries[(i - 1)][1]['ends_trans'] = True trans_ids[alias] = trans_id if trans_id: query['starts_trans'] = True if trans_id: query['in_trans'] = True query['alias'] = alias if 'iso_level' in query: query['iso_level'] = get_isolation_level_display(query['vendor'], query['iso_level']) if 'trans_status' in query: query['trans_status'] = get_transaction_status_display(query['vendor'], query['trans_status']) query['form'] = SQLSelectForm(auto_id=None, initial=copy(query)) if query['sql']: query['sql'] = reformat_sql(query['sql']) query['rgb_color'] = self._databases[alias]['rgb_color'] try: query['width_ratio'] = (query['duration'] / self._sql_time) * 100 query['width_ratio_relative'] = ( 100.0 * query['width_ratio'] / (100.0 - width_ratio_tally)) except ZeroDivisionError: query['width_ratio'] = 0 query['width_ratio_relative'] = 0 query['start_offset'] = width_ratio_tally query['end_offset'] = query['width_ratio'] + query['start_offset'] width_ratio_tally += query['width_ratio'] query['stacktrace'] = render_stacktrace(query['stacktrace']) i += 1 query['trace_color'] = trace_colors[query['stacktrace']] if trans_id: self._queries[(i - 1)][1]['ends_trans'] = True # Queries are duplicates only if there's as least 2 of them. # Also, to hide queries, we need to give all the duplicate groups an id query_colors = contrasting_color_generator() query_duplicates = { alias: { query: (duplicate_count, next(query_colors)) for query, duplicate_count in queries.items() if duplicate_count >= 2 } for alias, queries in query_duplicates.items() } for alias, query in self._queries: try: duplicates_count, color = query_duplicates[alias][query["raw_sql"]] query["duplicate_count"] = duplicates_count query["duplicate_color"] = color except KeyError: pass for alias, alias_info in self._databases.items(): try: alias_info["duplicate_count"] = sum(e[0] for e in query_duplicates[alias].values()) except KeyError: pass self.record_stats({ 'databases': sorted(self._databases.items(), key=lambda x: -x[1]['time_spent']), 'queries': [q for a, q in self._queries], 'sql_time': self._sql_time, }) django-debug-toolbar-1.9.1/debug_toolbar/panels/sql/tracking.py000066400000000000000000000130571320306665300245670ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import json from threading import local from time import time from django.utils import six from django.utils.encoding import force_text from debug_toolbar import settings as dt_settings from debug_toolbar.utils import get_stack, get_template_info, tidy_stacktrace class SQLQueryTriggered(Exception): """Thrown when template panel triggers a query""" pass class ThreadLocalState(local): def __init__(self): self.enabled = True @property def Wrapper(self): if self.enabled: return NormalCursorWrapper return ExceptionCursorWrapper def recording(self, v): self.enabled = v state = ThreadLocalState() recording = state.recording # export function def wrap_cursor(connection, panel): if not hasattr(connection, '_djdt_cursor'): connection._djdt_cursor = connection.cursor def cursor(*args, **kwargs): # Per the DB API cursor() does not accept any arguments. There's # some code in the wild which does not follow that convention, # so we pass on the arguments even though it's not clean. # See: # https://github.com/jazzband/django-debug-toolbar/pull/615 # https://github.com/jazzband/django-debug-toolbar/pull/896 return state.Wrapper(connection._djdt_cursor(*args, **kwargs), connection, panel) connection.cursor = cursor return cursor def unwrap_cursor(connection): if hasattr(connection, '_djdt_cursor'): del connection._djdt_cursor del connection.cursor class ExceptionCursorWrapper(object): """ Wraps a cursor and raises an exception on any operation. Used in Templates panel. """ def __init__(self, cursor, db, logger): pass def __getattr__(self, attr): raise SQLQueryTriggered() class NormalCursorWrapper(object): """ Wraps a cursor and logs queries. """ def __init__(self, cursor, db, logger): self.cursor = cursor # Instance of a BaseDatabaseWrapper subclass self.db = db # logger must implement a ``record`` method self.logger = logger def _quote_expr(self, element): if isinstance(element, six.string_types): return "'%s'" % force_text(element).replace("'", "''") else: return repr(element) def _quote_params(self, params): if not params: return params if isinstance(params, dict): return {key: self._quote_expr(value) for key, value in params.items()} return [self._quote_expr(p) for p in params] def _decode(self, param): try: return force_text(param, strings_only=True) except UnicodeDecodeError: return '(encoded string)' def _record(self, method, sql, params): start_time = time() try: return method(sql, params) finally: stop_time = time() duration = (stop_time - start_time) * 1000 if dt_settings.get_config()['ENABLE_STACKTRACES']: stacktrace = tidy_stacktrace(reversed(get_stack())) else: stacktrace = [] _params = '' try: _params = json.dumps([self._decode(p) for p in params]) except Exception: pass # object not JSON serializable template_info = get_template_info() alias = getattr(self.db, 'alias', 'default') conn = self.db.connection vendor = getattr(conn, 'vendor', 'unknown') params = { 'vendor': vendor, 'alias': alias, 'sql': self.db.ops.last_executed_query( self.cursor, sql, self._quote_params(params)), 'duration': duration, 'raw_sql': sql, 'params': _params, 'stacktrace': stacktrace, 'start_time': start_time, 'stop_time': stop_time, 'is_slow': duration > dt_settings.get_config()['SQL_WARNING_THRESHOLD'], 'is_select': sql.lower().strip().startswith('select'), 'template_info': template_info, } if vendor == 'postgresql': # If an erroneous query was ran on the connection, it might # be in a state where checking isolation_level raises an # exception. try: iso_level = conn.isolation_level except conn.InternalError: iso_level = 'unknown' params.update({ 'trans_id': self.logger.get_transaction_id(alias), 'trans_status': conn.get_transaction_status(), 'iso_level': iso_level, 'encoding': conn.encoding, }) # We keep `sql` to maintain backwards compatibility self.logger.record(**params) def callproc(self, procname, params=None): return self._record(self.cursor.callproc, procname, params) def execute(self, sql, params=None): return self._record(self.cursor.execute, sql, params) def executemany(self, sql, param_list): return self._record(self.cursor.executemany, sql, param_list) def __getattr__(self, attr): return getattr(self.cursor, attr) def __iter__(self): return iter(self.cursor) def __enter__(self): return self def __exit__(self, type, value, traceback): self.close() django-debug-toolbar-1.9.1/debug_toolbar/panels/sql/utils.py000066400000000000000000000037031320306665300241220ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import re import sqlparse from django.utils.html import escape from sqlparse import tokens as T class BoldKeywordFilter: """sqlparse filter to bold SQL keywords""" def process(self, stream): """Process the token stream""" for token_type, value in stream: is_keyword = token_type in T.Keyword if is_keyword: yield T.Text, '' yield token_type, escape(value) if is_keyword: yield T.Text, '' def reformat_sql(sql): stack = sqlparse.engine.FilterStack() stack.preprocess.append(BoldKeywordFilter()) # add our custom filter stack.postprocess.append(sqlparse.filters.SerializerUnicode()) # tokens -> strings return swap_fields(''.join(stack.run(sql))) def swap_fields(sql): expr = r'SELECT (...........*?) FROM' subs = (r'SELECT ' r'••• ' r'\1 ' r'FROM') return re.sub(expr, subs, sql) def contrasting_color_generator(): """ Generate constrasting colors by varying most significant bit of RGB first, and then vary subsequent bits systematically. """ def rgb_to_hex(rgb): return '#%02x%02x%02x' % tuple(rgb) triples = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] n = 1 << 7 so_far = [[0, 0, 0]] while True: if n == 0: # This happens after 2**24 colours; presumably, never yield "#000000" # black copy_so_far = list(so_far) for triple in triples: for previous in copy_so_far: rgb = [n * triple[i] + previous[i] for i in range(3)] so_far.append(rgb) yield rgb_to_hex(rgb) n >>= 1 django-debug-toolbar-1.9.1/debug_toolbar/panels/sql/views.py000066400000000000000000000104401320306665300241130ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.http import HttpResponseBadRequest from django.template.response import SimpleTemplateResponse from django.views.decorators.csrf import csrf_exempt from debug_toolbar.decorators import require_show_toolbar from debug_toolbar.panels.sql.forms import SQLSelectForm @csrf_exempt @require_show_toolbar def sql_select(request): """Returns the output of the SQL SELECT statement""" form = SQLSelectForm(request.POST or None) if form.is_valid(): sql = form.cleaned_data['raw_sql'] params = form.cleaned_data['params'] cursor = form.cursor cursor.execute(sql, params) headers = [d[0] for d in cursor.description] result = cursor.fetchall() cursor.close() context = { 'result': result, 'sql': form.reformat_sql(), 'duration': form.cleaned_data['duration'], 'headers': headers, 'alias': form.cleaned_data['alias'], } # Using SimpleTemplateResponse avoids running global context processors. return SimpleTemplateResponse('debug_toolbar/panels/sql_select.html', context) return HttpResponseBadRequest('Form errors') @csrf_exempt @require_show_toolbar def sql_explain(request): """Returns the output of the SQL EXPLAIN on the given query""" form = SQLSelectForm(request.POST or None) if form.is_valid(): sql = form.cleaned_data['raw_sql'] params = form.cleaned_data['params'] vendor = form.connection.vendor cursor = form.cursor if vendor == 'sqlite': # SQLite's EXPLAIN dumps the low-level opcodes generated for a query; # EXPLAIN QUERY PLAN dumps a more human-readable summary # See https://www.sqlite.org/lang_explain.html for details cursor.execute("EXPLAIN QUERY PLAN %s" % (sql,), params) elif vendor == 'postgresql': cursor.execute("EXPLAIN ANALYZE %s" % (sql,), params) else: cursor.execute("EXPLAIN %s" % (sql,), params) headers = [d[0] for d in cursor.description] result = cursor.fetchall() cursor.close() context = { 'result': result, 'sql': form.reformat_sql(), 'duration': form.cleaned_data['duration'], 'headers': headers, 'alias': form.cleaned_data['alias'], } # Using SimpleTemplateResponse avoids running global context processors. return SimpleTemplateResponse('debug_toolbar/panels/sql_explain.html', context) return HttpResponseBadRequest('Form errors') @csrf_exempt @require_show_toolbar def sql_profile(request): """Returns the output of running the SQL and getting the profiling statistics""" form = SQLSelectForm(request.POST or None) if form.is_valid(): sql = form.cleaned_data['raw_sql'] params = form.cleaned_data['params'] cursor = form.cursor result = None headers = None result_error = None try: cursor.execute("SET PROFILING=1") # Enable profiling cursor.execute(sql, params) # Execute SELECT cursor.execute("SET PROFILING=0") # Disable profiling # The Query ID should always be 1 here but I'll subselect to get # the last one just in case... cursor.execute(""" SELECT * FROM information_schema.profiling WHERE query_id = ( SELECT query_id FROM information_schema.profiling ORDER BY query_id DESC LIMIT 1 ) """) headers = [d[0] for d in cursor.description] result = cursor.fetchall() except Exception: result_error = "Profiling is either not available or not supported by your database." cursor.close() context = { 'result': result, 'result_error': result_error, 'sql': form.reformat_sql(), 'duration': form.cleaned_data['duration'], 'headers': headers, 'alias': form.cleaned_data['alias'], } # Using SimpleTemplateResponse avoids running global context processors. return SimpleTemplateResponse('debug_toolbar/panels/sql_profile.html', context) return HttpResponseBadRequest('Form errors') django-debug-toolbar-1.9.1/debug_toolbar/panels/staticfiles.py000066400000000000000000000130171320306665300244740ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from collections import OrderedDict from os.path import join, normpath from django.conf import settings from django.contrib.staticfiles import finders, storage from django.contrib.staticfiles.templatetags import staticfiles from django.core.files.storage import get_storage_class from django.utils.encoding import python_2_unicode_compatible from django.utils.functional import LazyObject from django.utils.translation import ugettext_lazy as _, ungettext from debug_toolbar import panels from debug_toolbar.utils import ThreadCollector try: import threading except ImportError: threading = None @python_2_unicode_compatible class StaticFile(object): """ Representing the different properties of a static file. """ def __init__(self, path): self.path = path def __str__(self): return self.path def real_path(self): return finders.find(self.path) def url(self): return storage.staticfiles_storage.url(self.path) class FileCollector(ThreadCollector): def collect(self, path, thread=None): # handle the case of {% static "admin/" %} if path.endswith('/'): return super(FileCollector, self).collect(StaticFile(path), thread) collector = FileCollector() class DebugConfiguredStorage(LazyObject): """ A staticfiles storage class to be used for collecting which paths are resolved by using the {% static %} template tag (which uses the `url` method). """ def _setup(self): configured_storage_cls = get_storage_class(settings.STATICFILES_STORAGE) class DebugStaticFilesStorage(configured_storage_cls): def __init__(self, collector, *args, **kwargs): super(DebugStaticFilesStorage, self).__init__(*args, **kwargs) self.collector = collector def url(self, path): self.collector.collect(path) return super(DebugStaticFilesStorage, self).url(path) self._wrapped = DebugStaticFilesStorage(collector) _original_storage = storage.staticfiles_storage class StaticFilesPanel(panels.Panel): """ A panel to display the found staticfiles. """ name = 'Static files' template = 'debug_toolbar/panels/staticfiles.html' @property def title(self): return (_("Static files (%(num_found)s found, %(num_used)s used)") % {'num_found': self.num_found, 'num_used': self.num_used}) def __init__(self, *args, **kwargs): super(StaticFilesPanel, self).__init__(*args, **kwargs) self.num_found = 0 self._paths = {} def enable_instrumentation(self): storage.staticfiles_storage = staticfiles.staticfiles_storage = DebugConfiguredStorage() def disable_instrumentation(self): storage.staticfiles_storage = staticfiles.staticfiles_storage = _original_storage @property def num_used(self): return len(self._paths[threading.currentThread()]) nav_title = _('Static files') @property def nav_subtitle(self): num_used = self.num_used return ungettext("%(num_used)s file used", "%(num_used)s files used", num_used) % {'num_used': num_used} def process_request(self, request): collector.clear_collection() def generate_stats(self, request, response): used_paths = collector.get_collection() self._paths[threading.currentThread()] = used_paths self.record_stats({ 'num_found': self.num_found, 'num_used': self.num_used, 'staticfiles': used_paths, 'staticfiles_apps': self.get_staticfiles_apps(), 'staticfiles_dirs': self.get_staticfiles_dirs(), 'staticfiles_finders': self.get_staticfiles_finders(), }) def get_staticfiles_finders(self): """ Returns a sorted mapping between the finder path and the list of relative and file system paths which that finder was able to find. """ finders_mapping = OrderedDict() for finder in finders.get_finders(): for path, finder_storage in finder.list([]): if getattr(finder_storage, 'prefix', None): prefixed_path = join(finder_storage.prefix, path) else: prefixed_path = path finder_cls = finder.__class__ finder_path = '.'.join([finder_cls.__module__, finder_cls.__name__]) real_path = finder_storage.path(path) payload = (prefixed_path, real_path) finders_mapping.setdefault(finder_path, []).append(payload) self.num_found += 1 return finders_mapping def get_staticfiles_dirs(self): """ Returns a list of paths to inspect for additional static files """ dirs = [] for finder in finders.get_finders(): if isinstance(finder, finders.FileSystemFinder): dirs.extend(finder.locations) return [(prefix, normpath(dir)) for prefix, dir in dirs] def get_staticfiles_apps(self): """ Returns a list of app paths that have a static directory """ apps = [] for finder in finders.get_finders(): if isinstance(finder, finders.AppDirectoriesFinder): for app in finder.apps: if app not in apps: apps.append(app) return apps django-debug-toolbar-1.9.1/debug_toolbar/panels/templates/000077500000000000000000000000001320306665300236045ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/panels/templates/__init__.py000066400000000000000000000001101320306665300257050ustar00rootroot00000000000000from debug_toolbar.panels.templates.panel import TemplatesPanel # noqa django-debug-toolbar-1.9.1/debug_toolbar/panels/templates/panel.py000066400000000000000000000230271320306665300252610ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from collections import OrderedDict from contextlib import contextmanager from os.path import normpath from pprint import pformat from django import http from django.conf.urls import url from django.core import signing from django.db.models.query import QuerySet, RawQuerySet from django.template import RequestContext, Template from django.test.signals import template_rendered from django.test.utils import instrumented_test_render from django.utils import six from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.panels.sql.tracking import SQLQueryTriggered, recording from debug_toolbar.panels.templates import views # Monkey-patch to enable the template_rendered signal. The receiver returns # immediately when the panel is disabled to keep the overhead small. # Code taken and adapted from Simon Willison and Django Snippets: # https://www.djangosnippets.org/snippets/766/ if Template._render != instrumented_test_render: Template.original_render = Template._render Template._render = instrumented_test_render # Monkey-patch to store items added by template context processors. The # overhead is sufficiently small to justify enabling it unconditionally. @contextmanager def _request_context_bind_template(self, template): if self.template is not None: raise RuntimeError("Context is already bound to a template") self.template = template # Set context processors according to the template engine's settings. processors = (template.engine.template_context_processors + self._processors) self.context_processors = OrderedDict() updates = {} for processor in processors: name = '%s.%s' % (processor.__module__, processor.__name__) context = processor(self.request) self.context_processors[name] = context updates.update(context) self.dicts[self._processors_index] = updates try: yield finally: self.template = None # Unset context processors. self.dicts[self._processors_index] = {} RequestContext.bind_template = _request_context_bind_template class TemplatesPanel(Panel): """ A panel that lists all templates used during processing of a response. """ def __init__(self, *args, **kwargs): super(TemplatesPanel, self).__init__(*args, **kwargs) self.templates = [] # Refs GitHub issue #910 # Hold a series of seen dictionaries within Contexts. A dictionary is # considered seen if it is `in` this list, requiring that the __eq__ # for the dictionary matches. If *anything* in the dictionary is # different it is counted as a new layer. self.seen_layers = [] # Holds all dictionaries which have been prettified for output. # This should align with the seen_layers such that an index here is # the same as the index there. self.pformat_layers = [] def _store_template_info(self, sender, **kwargs): template, context = kwargs['template'], kwargs['context'] # Skip templates that we are generating through the debug toolbar. if (isinstance(template.name, six.string_types) and ( template.name.startswith('debug_toolbar/') or template.name.startswith( tuple(self.toolbar.config['SKIP_TEMPLATE_PREFIXES'])))): return context_list = [] for context_layer in context.dicts: if hasattr(context_layer, 'items') and context_layer: # Refs GitHub issue #910 # If we can find this layer in our pseudo-cache then find the # matching prettified version in the associated list. key_values = sorted(context_layer.items()) if key_values in self.seen_layers: index = self.seen_layers.index(key_values) pformatted = self.pformat_layers[index] context_list.append(pformatted) else: temp_layer = {} for key, value in context_layer.items(): # Replace any request elements - they have a large # unicode representation and the request data is # already made available from the Request panel. if isinstance(value, http.HttpRequest): temp_layer[key] = '<>' # Replace the debugging sql_queries element. The SQL # data is already made available from the SQL panel. elif key == 'sql_queries' and isinstance(value, list): temp_layer[key] = '<>' # Replace LANGUAGES, which is available in i18n context processor elif key == 'LANGUAGES' and isinstance(value, tuple): temp_layer[key] = '<>' # QuerySet would trigger the database: user can run the query from SQL Panel elif isinstance(value, (QuerySet, RawQuerySet)): model_name = "%s.%s" % ( value.model._meta.app_label, value.model.__name__) temp_layer[key] = '<<%s of %s>>' % ( value.__class__.__name__.lower(), model_name) else: try: recording(False) force_text(value) # this MAY trigger a db query except SQLQueryTriggered: temp_layer[key] = '<>' except UnicodeEncodeError: temp_layer[key] = '<>' except Exception: temp_layer[key] = '<>' else: temp_layer[key] = value finally: recording(True) # Refs GitHub issue #910 # If we've not seen the layer before then we will add it # so that if we see it again we can skip formatting it. self.seen_layers.append(key_values) # Note: this *ought* to be len(...) - 1 but let's be safe. index = self.seen_layers.index(key_values) try: pformatted = force_text(pformat(temp_layer)) except UnicodeEncodeError: pass else: # Note: this *ought* to be len(...) - 1 but let's be safe. self.pformat_layers.insert(index, pformatted) context_list.append(pformatted) kwargs['context'] = context_list kwargs['context_processors'] = getattr(context, 'context_processors', None) self.templates.append(kwargs) # Implement the Panel API nav_title = _("Templates") @property def title(self): num_templates = len(self.templates) return _("Templates (%(num_templates)s rendered)") % {'num_templates': num_templates} @property def nav_subtitle(self): if self.templates: return self.templates[0]['template'].name return '' template = 'debug_toolbar/panels/templates.html' @classmethod def get_urls(cls): return [ url(r'^template_source/$', views.template_source, name='template_source'), ] def enable_instrumentation(self): template_rendered.connect(self._store_template_info) def disable_instrumentation(self): template_rendered.disconnect(self._store_template_info) def generate_stats(self, request, response): template_context = [] for template_data in self.templates: info = {} # Clean up some info about templates template = template_data.get('template', None) if hasattr(template, 'origin') and template.origin and template.origin.name: template.origin_name = template.origin.name template.origin_hash = signing.dumps(template.origin.name) else: template.origin_name = _('No origin') template.origin_hash = '' info['template'] = template # Clean up context for better readability if self.toolbar.config['SHOW_TEMPLATE_CONTEXT']: context_list = template_data.get('context', []) info['context'] = '\n'.join(context_list) template_context.append(info) # Fetch context_processors/template_dirs from any template if self.templates: context_processors = self.templates[0]['context_processors'] template = self.templates[0]['template'] # django templates have the 'engine' attribute, while jinja templates use 'backend' engine_backend = getattr(template, 'engine', None) or getattr(template, 'backend') template_dirs = engine_backend.dirs else: context_processors = None template_dirs = [] self.record_stats({ 'templates': template_context, 'template_dirs': [normpath(x) for x in template_dirs], 'context_processors': context_processors, }) django-debug-toolbar-1.9.1/debug_toolbar/panels/templates/views.py000066400000000000000000000051221320306665300253130ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.core import signing from django.http import HttpResponseBadRequest from django.template import TemplateDoesNotExist from django.template.engine import Engine from django.template.response import SimpleTemplateResponse from django.utils.safestring import mark_safe from debug_toolbar.decorators import require_show_toolbar try: from django.template import Origin except ImportError: Origin = None @require_show_toolbar def template_source(request): """ Return the source of a template, syntax-highlighted by Pygments if it's available. """ template_origin_name = request.GET.get('template_origin', None) if template_origin_name is None: return HttpResponseBadRequest('"template_origin" key is required') try: template_origin_name = signing.loads(template_origin_name) except Exception: return HttpResponseBadRequest('"template_origin" is invalid') template_name = request.GET.get('template', template_origin_name) final_loaders = [] loaders = Engine.get_default().template_loaders for loader in loaders: if loader is not None: # When the loader has loaders associated with it, # append those loaders to the list. This occurs with # django.template.loaders.cached.Loader if hasattr(loader, 'loaders'): final_loaders += loader.loaders else: final_loaders.append(loader) for loader in final_loaders: if Origin: # django>=1.9 origin = Origin(template_origin_name) try: source = loader.get_contents(origin) break except TemplateDoesNotExist: pass else: # django<1.9 try: source, _ = loader.load_template_source(template_name) break except TemplateDoesNotExist: pass else: source = "Template Does Not Exist: %s" % (template_origin_name,) try: from pygments import highlight from pygments.lexers import HtmlDjangoLexer from pygments.formatters import HtmlFormatter source = highlight(source, HtmlDjangoLexer(), HtmlFormatter()) source = mark_safe(source) source.pygmentized = True except ImportError: pass # Using SimpleTemplateResponse avoids running global context processors. return SimpleTemplateResponse('debug_toolbar/panels/template_source.html', { 'source': source, 'template_name': template_name }) django-debug-toolbar-1.9.1/debug_toolbar/panels/timer.py000066400000000000000000000065511320306665300233070ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import time from django.template.loader import render_to_string from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel try: import resource # Not available on Win32 systems except ImportError: resource = None class TimerPanel(Panel): """ Panel that displays the time a response took in milliseconds. """ def nav_subtitle(self): stats = self.get_stats() if hasattr(self, '_start_rusage'): utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime return _("CPU: %(cum)0.2fms (%(total)0.2fms)") % { 'cum': (utime + stime) * 1000.0, 'total': stats['total_time'] } elif 'total_time' in stats: return _("Total: %0.2fms") % stats['total_time'] else: return '' has_content = resource is not None title = _("Time") template = 'debug_toolbar/panels/timer.html' @property def content(self): stats = self.get_stats() rows = ( (_("User CPU time"), _("%(utime)0.3f msec") % stats), (_("System CPU time"), _("%(stime)0.3f msec") % stats), (_("Total CPU time"), _("%(total)0.3f msec") % stats), (_("Elapsed time"), _("%(total_time)0.3f msec") % stats), (_("Context switches"), _("%(vcsw)d voluntary, %(ivcsw)d involuntary") % stats), ) return render_to_string(self.template, {'rows': rows}) def process_request(self, request): self._start_time = time.time() if self.has_content: self._start_rusage = resource.getrusage(resource.RUSAGE_SELF) def generate_stats(self, request, response): stats = {} if hasattr(self, '_start_time'): stats['total_time'] = (time.time() - self._start_time) * 1000 if hasattr(self, '_start_rusage'): self._end_rusage = resource.getrusage(resource.RUSAGE_SELF) stats['utime'] = 1000 * self._elapsed_ru('ru_utime') stats['stime'] = 1000 * self._elapsed_ru('ru_stime') stats['total'] = stats['utime'] + stats['stime'] stats['vcsw'] = self._elapsed_ru('ru_nvcsw') stats['ivcsw'] = self._elapsed_ru('ru_nivcsw') stats['minflt'] = self._elapsed_ru('ru_minflt') stats['majflt'] = self._elapsed_ru('ru_majflt') # these are documented as not meaningful under Linux. If you're running BSD # feel free to enable them, and add any others that I hadn't gotten to before # I noticed that I was getting nothing but zeroes and that the docs agreed. :-( # # stats['blkin'] = self._elapsed_ru('ru_inblock') # stats['blkout'] = self._elapsed_ru('ru_oublock') # stats['swap'] = self._elapsed_ru('ru_nswap') # stats['rss'] = self._end_rusage.ru_maxrss # stats['srss'] = self._end_rusage.ru_ixrss # stats['urss'] = self._end_rusage.ru_idrss # stats['usrss'] = self._end_rusage.ru_isrss self.record_stats(stats) def _elapsed_ru(self, name): return getattr(self._end_rusage, name) - getattr(self._start_rusage, name) django-debug-toolbar-1.9.1/debug_toolbar/panels/versions.py000066400000000000000000000037561320306665300240430ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import sys import django from django.apps import apps from django.utils.translation import ugettext_lazy as _ from debug_toolbar.panels import Panel class VersionsPanel(Panel): """ Shows versions of Python, Django, and installed apps if possible. """ @property def nav_subtitle(self): return 'Django %s' % django.get_version() title = _("Versions") template = 'debug_toolbar/panels/versions.html' def generate_stats(self, request, response): versions = [ ('Python', '', '%d.%d.%d' % sys.version_info[:3]), ('Django', '', self.get_app_version(django)), ] versions += list(self.gen_app_versions()) self.record_stats({ 'versions': sorted(versions, key=lambda v: v[0]), 'paths': sys.path, }) def gen_app_versions(self): for app_config in apps.get_app_configs(): name = app_config.verbose_name app = app_config.module version = self.get_app_version(app) if version: yield app.__name__, name, version def get_app_version(self, app): version = self.get_version_from_app(app) if isinstance(version, (list, tuple)): # We strip dots from the right because we do not want to show # trailing dots if there are empty elements in the list/tuple version = '.'.join(str(o) for o in version).rstrip('.') return version def get_version_from_app(self, app): if hasattr(app, 'get_version'): get_version = app.get_version if callable(get_version): try: return get_version() except TypeError: pass else: return get_version if hasattr(app, 'VERSION'): return app.VERSION if hasattr(app, '__version__'): return app.__version__ return django-debug-toolbar-1.9.1/debug_toolbar/settings.py000066400000000000000000000141641320306665300225440ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import warnings from django.conf import settings from django.utils import six from django.utils.lru_cache import lru_cache # Always import this module as follows: # from debug_toolbar import settings [as dt_settings] # Don't import directly CONFIG or PANELs, or you will miss changes performed # with override_settings in tests. CONFIG_DEFAULTS = { # Toolbar options 'DISABLE_PANELS': {'debug_toolbar.panels.redirects.RedirectsPanel'}, 'INSERT_BEFORE': '', 'JQUERY_URL': '//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js', 'RENDER_PANELS': None, 'RESULTS_CACHE_SIZE': 10, 'ROOT_TAG_EXTRA_ATTRS': '', 'SHOW_COLLAPSED': False, 'SHOW_TOOLBAR_CALLBACK': 'debug_toolbar.middleware.show_toolbar', # Panel options 'EXTRA_SIGNALS': [], 'ENABLE_STACKTRACES': True, 'HIDE_IN_STACKTRACES': ( 'socketserver' if six.PY3 else 'SocketServer', 'threading', 'wsgiref', 'debug_toolbar', 'django', ), 'PROFILER_MAX_DEPTH': 10, 'SHOW_TEMPLATE_CONTEXT': True, 'SKIP_TEMPLATE_PREFIXES': ( 'django/forms/widgets/', 'admin/widgets/', ), 'SQL_WARNING_THRESHOLD': 500, # milliseconds } @lru_cache() def get_config(): USER_CONFIG = getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {}) # Backward-compatibility for 1.0, remove in 2.0. _RENAMED_CONFIG = { 'RESULTS_STORE_SIZE': 'RESULTS_CACHE_SIZE', 'ROOT_TAG_ATTRS': 'ROOT_TAG_EXTRA_ATTRS', 'HIDDEN_STACKTRACE_MODULES': 'HIDE_IN_STACKTRACES' } for old_name, new_name in _RENAMED_CONFIG.items(): if old_name in USER_CONFIG: warnings.warn( "%r was renamed to %r. Update your DEBUG_TOOLBAR_CONFIG " "setting." % (old_name, new_name), DeprecationWarning) USER_CONFIG[new_name] = USER_CONFIG.pop(old_name) if 'HIDE_DJANGO_SQL' in USER_CONFIG: warnings.warn( "HIDE_DJANGO_SQL was removed. Update your " "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) USER_CONFIG.pop('HIDE_DJANGO_SQL') if 'TAG' in USER_CONFIG: warnings.warn( "TAG was replaced by INSERT_BEFORE. Update your " "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) USER_CONFIG['INSERT_BEFORE'] = '' % USER_CONFIG.pop('TAG') CONFIG = CONFIG_DEFAULTS.copy() CONFIG.update(USER_CONFIG) if 'INTERCEPT_REDIRECTS' in USER_CONFIG: warnings.warn( "INTERCEPT_REDIRECTS is deprecated. Please use the " "DISABLE_PANELS config in the " "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) if USER_CONFIG['INTERCEPT_REDIRECTS']: if 'debug_toolbar.panels.redirects.RedirectsPanel' \ in CONFIG['DISABLE_PANELS']: # RedirectsPanel should be enabled try: CONFIG['DISABLE_PANELS'].remove( 'debug_toolbar.panels.redirects.RedirectsPanel' ) except KeyError: # We wanted to remove it, but it didn't exist. This is fine pass elif 'debug_toolbar.panels.redirects.RedirectsPanel' \ not in CONFIG['DISABLE_PANELS']: # RedirectsPanel should be disabled CONFIG['DISABLE_PANELS'].add( 'debug_toolbar.panels.redirects.RedirectsPanel' ) return CONFIG PANELS_DEFAULTS = [ 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', ] @lru_cache() def get_panels(): try: PANELS = list(settings.DEBUG_TOOLBAR_PANELS) except AttributeError: PANELS = PANELS_DEFAULTS else: # Backward-compatibility for 1.0, remove in 2.0. _RENAMED_PANELS = { 'debug_toolbar.panels.version.VersionDebugPanel': 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerDebugPanel': 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings_vars.SettingsDebugPanel': 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeaderDebugPanel': 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request_vars.RequestVarsDebugPanel': 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLDebugPanel': 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.template.TemplateDebugPanel': 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.cache.CacheDebugPanel': 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalDebugPanel': 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logger.LoggingDebugPanel': 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.InterceptRedirectsDebugPanel': 'debug_toolbar.panels.redirects.RedirectsPanel', 'debug_toolbar.panels.profiling.ProfilingDebugPanel': 'debug_toolbar.panels.profiling.ProfilingPanel', } for index, old_panel in enumerate(PANELS): new_panel = _RENAMED_PANELS.get(old_panel) if new_panel is not None: warnings.warn( "%r was renamed to %r. Update your DEBUG_TOOLBAR_PANELS " "setting." % (old_panel, new_panel), DeprecationWarning) PANELS[index] = new_panel return PANELS django-debug-toolbar-1.9.1/debug_toolbar/static/000077500000000000000000000000001320306665300216135ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/000077500000000000000000000000001320306665300244235ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/css/000077500000000000000000000000001320306665300252135ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/css/print.css000066400000000000000000000000351320306665300270570ustar00rootroot00000000000000#djDebug { display:none; } django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/css/toolbar.css000066400000000000000000000475421320306665300274030ustar00rootroot00000000000000/* http://www.positioniseverything.net/easyclearing.html */ #djDebug .djdt-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } #djDebug .djdt-clearfix {display: inline-block;} /* Hides from IE-mac \*/ #djDebug .djdt-clearfix {display: block;} * html #djDebug .djdt-clearfix {height: 1%;} /* end hide from IE-mac */ /* Debug Toolbar CSS Reset, adapted from Eric Meyer's CSS Reset */ #djDebug {color:#000;background:#FFF;} #djDebug, #djDebug div, #djDebug span, #djDebug applet, #djDebug object, #djDebug iframe, #djDebug h1, #djDebug h2, #djDebug h3, #djDebug h4, #djDebug h5, #djDebug h6, #djDebug p, #djDebug blockquote, #djDebug pre, #djDebug a, #djDebug abbr, #djDebug acronym, #djDebug address, #djDebug big, #djDebug cite, #djDebug code, #djDebug del, #djDebug dfn, #djDebug em, #djDebug font, #djDebug img, #djDebug ins, #djDebug kbd, #djDebug q, #djDebug s, #djDebug samp, #djDebug small, #djDebug strike, #djDebug strong, #djDebug sub, #djDebug sup, #djDebug tt, #djDebug var, #djDebug b, #djDebug u, #djDebug i, #djDebug center, #djDebug dl, #djDebug dt, #djDebug dd, #djDebug ol, #djDebug ul, #djDebug li, #djDebug fieldset, #djDebug form, #djDebug label, #djDebug legend, #djDebug table, #djDebug caption, #djDebug tbody, #djDebug tfoot, #djDebug thead, #djDebug tr, #djDebug th, #djDebug td, #djDebug button { margin:0; padding:0; min-width:0; width:auto; border:0; outline:0; font-size:12px; line-height:1.5em; color:#000; vertical-align:baseline; background-color:transparent; font-family:sans-serif; text-align:left; text-shadow: none; white-space: normal; -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; } #djDebug button, #djDebug a.button { background-color: #eee; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eee), color-stop(100%, #cccccc)); background-image: -webkit-linear-gradient(top, #eee, #cccccc); background-image: -moz-linear-gradient(top, #eee, #cccccc); background-image: -ms-linear-gradient(top, #eee, #cccccc); background-image: -o-linear-gradient(top, #eee, #cccccc); background-image: linear-gradient(top, #eee, #cccccc); border: 1px solid #ccc; border-bottom: 1px solid #bbb; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; color: #333; line-height: 1; padding: 0 8px; text-align: center; text-shadow: 0 1px 0 #eee; } #djDebug button:hover, #djDebug a.button:hover { background-color: #ddd; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ddd), color-stop(100%, #bbb)); background-image: -webkit-linear-gradient(top, #ddd, #bbb); background-image: -moz-linear-gradient(top, #ddd, #bbb); background-image: -ms-linear-gradient(top, #ddd, #bbb); background-image: -o-linear-gradient(top, #ddd, #bbb); background-image: linear-gradient(top, #ddd, #bbb); border-color: #bbb; border-bottom-color: #999; cursor: pointer; text-shadow: 0 1px 0 #ddd; } #djDebug button:active, #djDebug a.button:active { border: 1px solid #aaa; border-bottom: 1px solid #888; -webkit-box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; -moz-box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; } #djDebug #djDebugToolbar { background-color:#111; width:200px; z-index:100000000; position:fixed; top:0; bottom:0; right:0; opacity:0.9; overflow-y: auto; } #djDebug #djDebugToolbar small { color:#999; } #djDebug #djDebugToolbar ul { margin:0; padding:0; list-style:none; } #djDebug #djDebugToolbar li { border-bottom:1px solid #222; color:#fff; display:block; font-weight:bold; float:none; margin:0; padding:0; position:relative; width:auto; } #djDebug #djDebugToolbar input[type=checkbox] { float: right; margin: 10px; } #djDebug #djDebugToolbar li>a, #djDebug #djDebugToolbar li>div.djdt-contentless { font-weight:normal; font-style:normal; text-decoration:none; display:block; font-size:16px; padding:10px 10px 5px 25px; color:#fff; } #djDebug #djDebugToolbar li>div.djdt-disabled { font-style: italic; color: #999; } #djDebug #djDebugToolbar li a:hover { color:#111; background-color:#ffc; } #djDebug #djDebugToolbar li.djdt-active { background: #333 no-repeat left center; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAQAAAAngNWGAAABe0lEQVR4AW2SO0tDQRCFz+bGJxEUrKzsBBsb/4DYiIWdECvB/6CCYGtp6QNRjJ1FihSCVpZGMIhYSBAfIGKRx70xyY3JbrKOk7DJLp7DXm7Il9nMmREYQgQeAI1W1/zZUhR9ZI9gjSZb0iHMRSPbE1QzhhF2jN4H6YdRCHaPvOTjdDb1jWECBhiJoC1tg6Kotbw9WkxBoIUGaqiiQs8fSCj+t9qAIL1nlg9fKgSGKKNEJ2RUMqh7QCDIr58k31AlrIiA0CqhDTQJtUFAqsTFxjV85FGAz1XrkDZodPewkih8IkdwCRWu2U6VerQ0O3OzuTSJ/k62JiIXJI2NL0wBjDiTseQHW8fnGY6myf3+Dz49x88+vjr9SoPaoG6lLteuCApMiu1otAWG/s7BXtYEzv3yZOyrc5nV3XTZjPAv7Jqp2AVf9+dOyx4EFCTqCAnimZB1z9X38fk05RblfVQE1LkR5a6vwCivruANV2ynjU5FHpIE+AsCnCuNfgGtjt1gZaIn2wAAAABJRU5ErkJggg=="); padding-left:10px; } #djDebug #djDebugToolbar li.djdt-active a:hover { color:#b36a60; background-color:transparent; } #djDebug #djDebugToolbar li small { font-size:12px; color:#999; font-style:normal; text-decoration:none; font-variant:small-caps; } #djDebug #djDebugToolbarHandle { position:fixed; background-color:#fff; border:1px solid #111; top:30px; right:0; z-index:100000000; opacity:0.75; } #djDebug #djShowToolBarButton { display:block; height:75px; width:30px; border-right:none; border-bottom:4px solid #fff; border-top:4px solid #fff; border-left:4px solid #fff; color:#fff; font-size:10px; font-weight:bold; text-decoration:none; text-align:center; text-indent:-999999px; background: #000 no-repeat left center; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABLCAIAAACN/FLOAAADOUlEQVR4Ae2WUWhSXxzHp5v+y4mGGkkEETIfIhyEUThaD0XlGg7qZTJdpGOzQSiVC9uWlCxsMmvW0k2WBDVJMzJWBAaG6ORfGZMexAd9EXzxwWFI9qB24K7DZUNRdlSC++H35P1yPpff/Z1zbCMgICAg2AECgUClUmk0msHBQRqN1jyxxWIp/6Wrq6s5UkKsVCrP1wCfz0csrpGlpaXWiFdXV1sjdrvdiMW5XG6jBoxG47801YTYbDZj1mKxyOPx2loLmUzmcDhcLpdKpTbDJxQKbTZbLBYrlUqw/+l02uVySSSShijpdDrYneWqhEIh0AOUVtDPcDhcroFkMslgMJCJTSZTuWasVisaK4vFyufzZRw+n89gMMjlcqlUqtfrvV4v/pMXCgU2m41ArFAo8EemWCzenhGJRGDE8LcnArHD4YArqtXqSjGZTAZjdrsdgRjMKlyRyWRWilEoFHDCYLFAIIBADHYt3K/Vk6lUCktGo1EE4kQigS2XzWbHqpLJZLBkPB5HIAavX66TSCSCQBwMBusV+/1+BGKPx1Ov2Ol0IhDrdLr1OtFqtTv3EjBYnWwuY0ux9jHI7eTGiu2Bm9/Ki9tr7deTl9+nhq6fIZFITRXDmns73hoxqJP9ggaKw78XPm88wirw04IXz6yMNFB8Z3kY//v+Q5x3yRns0fP/dc0TA/SOy9ijVz/06MXg+43q+0emL3T38LY8mn9/DRPPelSN+0NP2sOhgx1MoXbAHw/w9koUPYrJvqOn+Ih9h4UHb9uGXsfufi3Z4Ch9TM8aXaO9km6UJgiN/t8D9xjQVKlnoQnQA5RW0E9H+BYUVCkw2J2MXcjEatOlWqxY6axDyG6FYP4xfumnPs1Vw0Cf/MQ56TEw4WbvOP6TrxUWmOxOBGIwqHDRQG5eJD6yPSMQ8cCIwdiAsgeBGB4LoKTq05VifbLjMDZllyMQg1mFK9KZuyvFOijtX4qbDQenGwIx2LVwv1ZPfkgZsaQzOo1A7E1sHv3+7MOLY71V6lNmDku+id9DIAavD1tdY72ITCIQLwcn6hUv+m8gEIOrpl7xfecIAvEVnXhlfbquGtaebSMgICAgaBR/AF2yboPNdvDUAAAAAElFTkSuQmCC"); opacity:0.5; } #djDebug #djShowToolBarButton:hover { background-color:#111; border-top-color:#FFE761; border-left-color:#FFE761; border-bottom-color:#FFE761; cursor:move; opacity:1.0; } #djDebug code { display:block; font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace; font-size: 12px; white-space:pre; overflow:auto; } #djDebug .djDebugOdd { background-color:#f5f5f5; } #djDebug .djdt-panelContent { display:none; position:fixed; margin:0; top:0; right:200px; bottom:0; left:0px; background-color:#eee; color:#666; z-index:100000000; } #djDebug .djdt-panelContent > div { border-bottom:1px solid #ddd; } #djDebug .djDebugPanelTitle { position:absolute; background-color:#ffc; color:#666; padding-left:20px; top:0; right:0; left:0; height:50px; } #djDebug .djDebugPanelTitle code { display:inline; font-size:inherit; } #djDebug .djDebugPanelContent { position:absolute; top:50px; right:0; bottom:0; left:0; height:auto; padding:5px 0 0 20px; } #djDebug .djDebugPanelContent .djdt-loader { display:block; margin:80px auto; } #djDebug .djDebugPanelContent .djdt-scroll { height:100%; overflow:auto; display:block; padding:0 10px 0 0; } #djDebug h3 { font-size:24px; font-weight:normal; line-height:50px; } #djDebug h4 { font-size:20px; font-weight:bold; margin-top:0.8em; } #djDebug .djdt-panelContent table { border:1px solid #ccc; border-collapse:collapse; width:100%; background-color:#fff; display:table; margin-top:0.8em; overflow: auto; } #djDebug .djdt-panelContent tbody td, #djDebug .djdt-panelContent tbody th { vertical-align:top; padding:2px 3px; } #djDebug .djdt-panelContent tbody td.djdt-time { text-align: center; } #djDebug .djdt-panelContent thead th { padding:1px 6px 1px 3px; text-align:left; font-weight:bold; font-size:14px; white-space: nowrap; } #djDebug .djdt-panelContent tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; } #djDebug .djTemplateHideContextDiv { background-color:#fff; } /* #djDebug .djdt-panelContent p a:hover, #djDebug .djdt-panelContent dd a:hover { color:#111; background-color:#ffc; } #djDebug .djdt-panelContent p { padding:0 5px; } #djDebug .djdt-panelContent p, #djDebug .djdt-panelContent table, #djDebug .djdt-panelContent ol, #djDebug .djdt-panelContent ul, #djDebug .djdt-panelContent dl { margin:5px 0 15px; background-color:#fff; } #djDebug .djdt-panelContent table { clear:both; border:0; padding:0; margin:0; border-collapse:collapse; border-spacing:0; } #djDebug .djdt-panelContent table a { color:#000; padding:2px 4px; } #djDebug .djdt-panelContent table a:hover { background-color:#ffc; } #djDebug .djdt-panelContent table th { background-color:#333; font-weight:bold; color:#fff; padding:3px 7px 3px; text-align:left; cursor:pointer; } #djDebug .djdt-panelContent table td { padding:5px 10px; font-size:14px; background-color:#fff; color:#000; vertical-align:top; border:0; } #djDebug .djdt-panelContent table tr.djDebugOdd td { background-color:#eee; } */ #djDebug .djdt-panelContent .djDebugClose { display:block; position:absolute; top:4px; right:15px; height:40px; width:40px; background: no-repeat center center; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAQAAACQTsNJAAABuUlEQVR4Ab2WXeoaMRTFZxHz6pObcA0DeXUHhXktFl8LXYAPXYBLKhQGBOFqW3XS8YOW6vjHmnp6wWZyHU1maqHnQDAf/Ehu7twYhUQxdUixO/wr8ts3oeg9TQjCEx5R7SGvKCd4nPNsIyShD4QGf6QkBBkQWnrgg4zqS2fm01kbze3M3GFGjyBvCdLFqYRUySM1zLAOUXJ6dZAACcoPBOHkFpK5qY1BQBt5sExC0gAijEkriMuLfI9m8SqXNxbSd+QSbVSCnPtXyNjdCCoZ7PANF7C4/Y4tznASNzW+QqaP9lFcj4cLW4PY+vFepsSQ2Hbnp5vw2ShB231Cau72EkfUs53lC4R+YQkSXsBAiFdXc72IkupmDODDfKkhwKtdygUgHAuXw7gEIN7jCIQNsfc43sDuqlgsbC57A+u94q82nFVscv8Vy2Rbi72csGKQ+RPignvytGuZbPW0P6KNjvdpz97aIf3jLz/ArfuKXz9dCt7IojR9qihNAuUx33vL454grOqF+t2/F2rPk/H5pzaa2+Ynw3lIaOlh6BlVlDUCMlLND3pKhRdQUPof/1o4x9Qlxe6G/+T8BlqvQqkd4EyZAAAAAElFTkSuQmCC"); } #djDebug .djdt-panelContent .djDebugClose:hover { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACiUlEQVR4Ad2Yz2oTURSH+xCz7cqX6DMUZtudCxExigq2WhcKYtGFVLrwAboSKoVGxT+tJWpTa2lLTDsm6SSTjtZoIq0prf+2Hu8PcmHInJvJPYwuPPDBMDPn8DE5c+fcDEgjDENHMahwOwx2zg1IsE1wFXcVvoIM+J173L8hckrRUpAlLeSmITKsKNoKMHioJRUZU1DKjNmKTCUWDWpUL21RJbcAcIxz/chM9StyvVeh8rOHtH7nJi2dOc6Ba7gnSWY8ScQ1JVdfv6C1yQlegAH3+su5XjLDvUTKXNK77H0Ul4Bck0jZJJLhEry5GV1ULvNg1iSTiYlw64SfX0ShNEAtfp3pEhnhjJmekIJapqcyEhWZZt4OtuDqlXPUWHxKYXaGli+c1Ocpf/4E1Wfv0afcPK1dG+VyTW/TdFQk6Pdp7BfWSMdhtQIZSFDbe0s6DiqezVMJtIjTfXGnuv3b9Iib+RxF47C2Te3SJkUDsqZ81GZkHIgMdV+ora8YC62MnqbvH0Iyxa/WZ3pz+awxH7UZkSH9YaMolZfPdaJZZvd9XOJLU0sYQW1ucROJoCcOyh51x1G9ip4Ri1j9NLoxDaEbWPDTWDbrx/lHsZ740dilSKChBc1q+fp+3SyQjp/NBnoi1sB4KpLXl13QSo/n2GKFW1fpaKdG+8UNSEQbmPY2VulbWKfi5A0uFzUTFzR+ib/NFJSBWolLvKYd++i9WkhNxF9i35Y29/W9KB8DxDPJJU4EBP9wMPJFoyLmCetRUc8gPK5JRDOhIBOlJ9nE4Rn3yIdnwXYi2Crq7QSOU99OaGBNKTMu3XK63GQvADXcNDbhGcWeQAA5mf/ybwkOR3FM4XbAsSOt9wcLTn8FNtAKkQAAAABJRU5ErkJggg=="); } #djDebug .djdt-panelContent .djDebugClose.djDebugBack { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACBUlEQVR4Ad2Y0WriQBSGfYjc7tW+hM8g5HbfYMHbxcXbhT6AF30AH6cXvRCEttK0JgZi0qhQaRNtNWV2fuiADicZcxirdOCn45mccz4mMyczbXDbeDx2pH5IuRD6n7YGR3UdkPBSaiQlSoQxPOMeA+S3VIxENRXD1wZIS2rAANA1RCwuSAdBLKtTF6RnCur7fjGZTLZJkhQQ+rAdANM7FORfVaA0Td/zPBdlDWN4xgDTNYG4Zc7T6TQjASqA4jjOKmBaVSA3lNN8Pi8Es8GXBkEuGqTNh2DDtCkQvU5gal+FpYZYZJ3RQH5RxPqaWG82qmuw02uGyoHcuyB9anfowZ6el+I2jITellkOu9gWH5UwJbupvwvimWZDgVzdeWLohyqpAlF2zE7dWfEUiKMPBkGwNxt6QmjwEKik+Ltnz9ZvpTCITcA4AGnqA1EUreFkgrm+fwSEsuO3spfCIDYB0gRIi9gtlVsWSVRSAOzaMSOw4zVSDbGp4nZGIPxXg6TWXo39xarsjMV6LtuXLmiz2cx6QUNMuqAZSvxqtbJW4hHLVOKVFvpDSZK8HPmjt6C+vn9OcAz4S4FA3hcejEasoyKmlnFUVK+DklsFAl2c9vDMuE6EYbhR1wn0bV8nlEAtLKvLvXK62smeK8RwbVzC21IpAyCF77f8twQlR+onEkLow8aN9x+oYk85YNJqYQAAAABJRU5ErkJggg=="); } #djDebug .djdt-panelContent .djDebugClose.djDebugBack:hover { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACLElEQVR4Ad2YT8sSURTG/RCzbdWX8DMIs23XMrBlTLiTSIKKIqgP4C6KQAuKsLCycqGLRHNsXqck2giStIiiRdDtPtABuz0zNw+XkAYe3vHce57zY/7cOfetaI/VahVZHbOKIZz/ilU02jcBBW9YZVaGC2OYg7nhQU5ZrVlhj9bIDQFSs5ooAFzN4KUFSWASWMm+INe8pvnSvJ1PzaLfg3COmB8G3n8Jcq7MKH14z4yvXjCD0yepMIY5HpiGDyQuSj56+cSMrrQ4ABHmZi/6ZTC1MpCUJb3u3oa5SsjlIKjFQeosYda5JaZ6mLt3OAxquiBsncieP4ZRCMGLrjMuyAlG7D4To2Yi5/44eWZYDdTeBWmzt8M1W95sm09Z+kd8dv0S4maY1EthCt6m9i5ITq8GAcHx+cN7KSogEqdXx3NVcgGJ3MF3R29+MCMpiOPbx40Uxd/f4q8uNgth4E1gIoBU3YHleOgYcJjvX78AQuL4LfFCGHgTkCpAau7A4umj0nuNIlIUALtxXBEcuI0kF950cTsoEO2tQdGAtyb8w4rfiof1cF5fvqDN73dCL2jwpAuaf4m/fD7UEg8v7xIv2rqTsme9cB+9AX1btuzre0bdBuh7krMMBMr/YWOUaVpF9BP7t4rSg3DFvua5xRJF8wddb/OMOfrmWbGdyKcT2U7gPPh2QgRqE1gN7ZYzZp29Qim8QmzC61YbBcAGuf/hvyW4IqvjKAjhHDGt309H4mp9BS17eAAAAABJRU5ErkJggg=="); } #djDebug .djdt-panelContent dt, #djDebug .djdt-panelContent dd { display:block; } #djDebug .djdt-panelContent dt { margin-top:0.75em; } #djDebug .djdt-panelContent dd { margin-left:10px; } #djDebug a.toggleTemplate { padding:4px; background-color:#bbb; -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px; } #djDebug a.toggleTemplate:hover { padding:4px; background-color:#444; color:#ffe761; -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px; } #djDebug a.djTemplateShowContext, #djDebug a.djTemplateShowContext span.toggleArrow { color:#999; } #djDebug a.djTemplateShowContext:hover, #djDebug a.djTemplateShowContext:hover span.toggleArrow { color:#000; cursor:pointer; } #djDebug .djDebugSqlWrap { position:relative; } #djDebug .djDebugCollapsed { display: none; text-decoration: none; color: #333; } #djDebug .djDebugUncollapsed { color: #333; text-decoration: none; } #djDebug .djUnselected { display: none; } #djDebug tr.djHiddenByDefault { display: none; } #djDebug tr.djSelected { display: table-row; } #djDebug .djDebugSql { word-break:break-word; z-index:100000002; } #djDebug .djSQLDetailsDiv tbody th { text-align: left; } #djDebug .djSqlExplain td { white-space: pre; } #djDebug span.djDebugLineChart { background-color:#777; height:3px; position:absolute; bottom:0; top:0; left:0; display:block; z-index:1000000001; } #djDebug span.djDebugLineChartWarning { background-color:#900; } #djDebug .highlight { color:#000; } #djDebug .highlight .err { color:#000; } /* Error */ #djDebug .highlight .g { color:#000; } /* Generic */ #djDebug .highlight .k { color:#000; font-weight:bold } /* Keyword */ #djDebug .highlight .o { color:#000; } /* Operator */ #djDebug .highlight .n { color:#000; } /* Name */ #djDebug .highlight .mi { color:#000; font-weight:bold } /* Literal.Number.Integer */ #djDebug .highlight .l { color:#000; } /* Literal */ #djDebug .highlight .x { color:#000; } /* Other */ #djDebug .highlight .p { color:#000; } /* Punctuation */ #djDebug .highlight .m { color:#000; font-weight:bold } /* Literal.Number */ #djDebug .highlight .s { color:#333 } /* Literal.String */ #djDebug .highlight .w { color:#888888 } /* Text.Whitespace */ #djDebug .highlight .il { color:#000; font-weight:bold } /* Literal.Number.Integer.Long */ #djDebug .highlight .na { color:#333 } /* Name.Attribute */ #djDebug .highlight .nt { color:#000; font-weight:bold } /* Name.Tag */ #djDebug .highlight .nv { color:#333 } /* Name.Variable */ #djDebug .highlight .s2 { color:#333 } /* Literal.String.Double */ #djDebug .highlight .cp { color:#333 } /* Comment.Preproc */ #djDebug .djdt-timeline { width: 30%; } #djDebug .djDebugTimeline { position: relative; height: 100%; min-height: 100%; } #djDebug div.djDebugLineChart { position: absolute; left: 0; right: 0; top: 0; bottom: 0; vertical-align: middle; } #djDebug div.djDebugLineChart strong { text-indent: -10000em; display: block; font-weight: normal; vertical-align: middle; background-color:#ccc; } #djDebug div.djDebugLineChartWarning strong { background-color:#900; } #djDebug .djDebugInTransaction div.djDebugLineChart strong { background-color: #d3ff82; } #djDebug .djDebugStartTransaction div.djDebugLineChart strong { border-left: 1px solid #94b24d; } #djDebug .djDebugEndTransaction div.djDebugLineChart strong { border-right: 1px solid #94b24d; } #djDebug .djDebugHover div.djDebugLineChart strong { background-color: #000; } #djDebug .djDebugInTransaction.djDebugHover div.djDebugLineChart strong { background-color: #94b24d; } #djDebug .djdt-panelContent ul.djdt-stats { position: relative; list-style-type: none; } #djDebug .djdt-panelContent ul.djdt-stats li { width: 30%; float: left; } #djDebug .djdt-panelContent ul.djdt-stats li strong.djdt-label { display: block; } #djDebug .djdt-panelContent ul.djdt-stats li span.djdt-color { height: 12px; width: 3px; display: inline-block; } #djDebug .djdt-panelContent ul.djdt-stats li span.djdt-info { display: block; padding-left: 5px; } #djDebug .djdt-panelContent thead th { white-space: nowrap; } #djDebug .djDebugRowWarning .djdt-time { color: red; } #djdebug .djdt-panelContent table .djdt-toggle { width: 14px; padding-top: 3px; } #djDebug .djdt-panelContent table .djdt-actions { min-width: 70px; white-space: nowrap; } #djdebug .djdt-panelContent table .djdt-color { width: 3px; } #djdebug .djdt-panelContent table .djdt-color span { width: 3px; height: 12px; overflow: hidden; padding: 0; } #djDebug .djToggleSwitch { text-decoration: none; border: 1px solid #999; height: 12px; width: 12px; line-height: 12px; text-align: center; color: #777; display: inline-block; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF', endColorstr='#DCDCDC'); /* for IE */ background: -webkit-gradient(linear, left top, left bottom, from(#FFF), to(#DCDCDC)); /* for webkit browsers */ background:-moz-linear-gradient(center top , #FFFFFF 0pt, #DCDCDC 100%) repeat scroll 0 0 transparent; } #djDebug .djNoToggleSwitch { height: 14px; width: 14px; display: inline-block; } #djDebug .djSQLDetailsDiv { margin-top:0.8em; } #djDebug pre { white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS-3 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ color: #555; border:1px solid #ccc; border-collapse:collapse; background-color:#fff; display:block; overflow: auto; padding:2px 3px; margin-bottom: 3px; font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace; } #djDebug .djdt-stack span { color: #000; font-weight: bold; } #djDebug .djdt-stack span.djdt-path { color: #777; font-weight: normal; } #djDebug .djdt-stack span.djdt-code { font-weight: normal; } @media print { #djDebug { display: none !important; } } #djDebug .djdt-width-20 { width: 20%; } #djDebug .djdt-width-60 { width: 60%; } #djDebug .djdt-highlighted { background-color: lightgrey; } .djdt-hidden { display: none; } django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/img/000077500000000000000000000000001320306665300251775ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/img/ajax-loader.gif000066400000000000000000000006241320306665300300570ustar00rootroot00000000000000GIF89a+ ffffff!Created with ajaxload.info! ! NETSCAPE2.0,+ 2˖؃ V˅6XYf'}ޚ g-Iׇ.ij> 2L! ,+ =Ď acǬ|adʡJCJp,kͱ$eoX}N,bRǯ! ,+ =0acj[o yyԠ Lc6R50G,bR! ,+ @˖ؘ~eL4GQ*t'Ů6dC]+JvE`";django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/img/back.png000066400000000000000000000010761320306665300266110ustar00rootroot00000000000000PNG  IHDR"":G IDATxݘj@}վ v`ۅ>}Ҵ&bҨPim5ev~'st㙜s>&3'3mpx/A.͇`ô)N`j_Xd@~QXo6kkʁܻ }jw6ޖY0% fC\yb*QvNYA7zBhgo0M8iQd㷲 6H-[ITR1#5R vF W^Ūz.ۗ.hzACLJjVTCINp K@F"qTT[]̸NaQ m_'@-,˽rɞ+pm\R) %G'BƍbO9`jaIENDB`django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/img/back_hover.png000066400000000000000000000011451320306665300300110ustar00rootroot00000000000000PNG  IHDR"":G ,IDATxݘOQm՗3m2eLH".@ rDsl^$E>=37{c9hjY!U47oXeV cANYYa R(\I`Xɾ ׼ҼO͢߃p r(}xό^0'09$.J>zČ8f/e02%ކJ A,aֹ%zw8 j lȞ?Q3. F>f"8yfX i5[lOYG|vfKa ަ.HN{)* WsUrwGo~0#)Ǎ.6 aM`"T݁xp_B-Bx*@j{"Rq\$tq;(Aр&Êߊp^_wB/h |>//ںgp}[{F{ aciZE҃pžE]o9YȧNsl# @Ri4A`0rT^/ 6@P(GX,ޞD`'+J1Lcv*\dVQ(p`@ @ v-ܯՓT KFQD"-fǪdd<G _H$@ ~bSt"t:j;0Xl.cK1Ɗ큛ʋkדߧ!HMÚ{;1ÿ>o<*ӂϬ4P|gyCwuأW?G/t< zTCOáLvJ=ɾ}oۆ^~-(}L]n&Tg VOGT)0؝]jӥZXCn`1~>U@910f8Nb0p@n^$>=#؀ ӕb}06e#Y+ҙ+:(_ 1صpVO~H3:@MlËcUSfKC []cL"/'/o ^}xe}֞m# h]nvIENDB`django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/img/indicator.png000066400000000000000000000006641320306665300276670ustar00rootroot00000000000000PNG  IHDR'Ն{IDATxm;KCA'؈+`kiQEVF0XH bǽ1ɍn.^nȗ̙BVR}d`&[!E#T3vQvt6a-m=ZLAjBH(ڀ g_*(D'dT2{@ ȯ$P%* 4 A@5|QU6ht(|"Gp Nz4;s4N&"$/L8[>=>:Jڠn.׮ Lh^dstٌ/용_N$ ♐u4}TԹ宯( WlNE +~`e'IENDB`django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/000077500000000000000000000000001320306665300250375ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/jquery_existing.js000066400000000000000000000000351320306665300306240ustar00rootroot00000000000000var djdt = {jQuery: jQuery}; django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/jquery_post.js000066400000000000000000000001661320306665300277640ustar00rootroot00000000000000var djdt = {jQuery: jQuery.noConflict(true)}; if (window.define) { window.define.amd = _djdt_define_amd_backup; } django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/jquery_pre.js000066400000000000000000000002101320306665300275530ustar00rootroot00000000000000var _djdt_define_amd_backup; if (window.define) { _djdt_define_amd_backup = window.define.amd; window.define.amd = undefined; } django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/toolbar.js000066400000000000000000000303041320306665300270370ustar00rootroot00000000000000(function ($, publicAPI) { var djdt = { handleDragged: false, events: { ready: [] }, isReady: false, init: function() { $('#djDebug').show(); var current = null; $('#djDebugPanelList').on('click', 'li a', function() { if (!this.className) { return false; } current = $('#djDebug #' + this.className); if (current.is(':visible')) { $(document).trigger('close.djDebug'); $(this).parent().removeClass('djdt-active'); } else { $('.djdt-panelContent').hide(); // Hide any that are already open var inner = current.find('.djDebugPanelContent .djdt-scroll'), store_id = $('#djDebug').data('store-id'); if (store_id && inner.children().length === 0) { var ajax_data = { data: { store_id: store_id, panel_id: this.className }, type: 'GET', url: $('#djDebug').data('render-panel-url') }; $.ajax(ajax_data).done(function(data){ inner.prev().remove(); // Remove AJAX loader inner.html(data); }).fail(function(xhr){ var message = '

'+xhr.status+': '+xhr.statusText+'

'; $('#djDebugWindow').html(message).show(); }); } current.show(); $('#djDebugToolbar li').removeClass('djdt-active'); $(this).parent().addClass('djdt-active'); } return false; }); $('#djDebug').on('click', 'a.djDebugClose', function() { $(document).trigger('close.djDebug'); $('#djDebugToolbar li').removeClass('djdt-active'); return false; }); $('#djDebug').on('click', '.djDebugPanelButton input[type=checkbox]', function() { djdt.cookie.set($(this).attr('data-cookie'), $(this).prop('checked') ? 'on' : 'off', { path: '/', expires: 10 }); }); // Used by the SQL and template panels $('#djDebug').on('click', '.remoteCall', function() { var self = $(this); var name = self[0].tagName.toLowerCase(); var ajax_data = {}; if (name == 'button') { var form = self.parents('form:eq(0)'); ajax_data.url = self.attr('formaction'); if (form.length) { ajax_data.data = form.serialize(); ajax_data.type = form.attr('method') || 'POST'; } } if (name == 'a') { ajax_data.url = self.attr('href'); } $.ajax(ajax_data).done(function(data){ $('#djDebugWindow').html(data).show(); }).fail(function(xhr){ var message = '

'+xhr.status+': '+xhr.statusText+'

'; $('#djDebugWindow').html(message).show(); }); $('#djDebugWindow').on('click', 'a.djDebugBack', function() { $(this).parent().parent().hide(); return false; }); return false; }); // Used by the cache, profiling and SQL panels $('#djDebug').on('click', 'a.djToggleSwitch', function(e) { e.preventDefault(); var btn = $(this); var id = btn.attr('data-toggle-id'); var open_me = btn.text() == btn.attr('data-toggle-open'); if (id === '' || !id) { return; } var name = btn.attr('data-toggle-name'); btn.parents('.djDebugPanelContent').find('#' + name + '_' + id).find('.djDebugCollapsed').toggle(open_me); btn.parents('.djDebugPanelContent').find('#' + name + '_' + id).find('.djDebugUncollapsed').toggle(!open_me); $(this).parents('.djDebugPanelContent').find('.djToggleDetails_' + id).each(function(){ var $this = $(this); if (open_me) { $this.addClass('djSelected'); $this.removeClass('djUnselected'); btn.text(btn.attr('data-toggle-close')); $this.find('.djToggleSwitch').text(btn.text()); } else { $this.removeClass('djSelected'); $this.addClass('djUnselected'); btn.text(btn.attr('data-toggle-open')); $this.find('.djToggleSwitch').text(btn.text()); } }); return; }); $('#djHideToolBarButton').click(function() { djdt.hide_toolbar(true); return false; }); $('#djShowToolBarButton').click(function() { if (!djdt.handleDragged) { djdt.show_toolbar(); } return false; }); var handle = $('#djDebugToolbarHandle'); $('#djShowToolBarButton').on('mousedown', function (event) { var startPageY = event.pageY; var baseY = handle.offset().top - startPageY; var windowHeight = $(window).height(); $(document).on('mousemove.djDebug', function (event) { // Chrome can send spurious mousemove events, so don't do anything unless the // cursor really moved. Otherwise, it will be impossible to expand the toolbar // due to djdt.handleDragged being set to true. if (djdt.handleDragged || event.pageY != startPageY) { var top = baseY + event.clientY; if (top < 0) { top = 0; } else if (top + handle.height() > windowHeight) { top = windowHeight - handle.height(); } handle.css({top: top}); djdt.handleDragged = true; } }); return false; }); $(document).on('mouseup', function () { $(document).off('mousemove.djDebug'); if (djdt.handleDragged) { var top = handle.offset().top - window.pageYOffset; djdt.cookie.set('djdttop', top, { path: '/', expires: 10 }); setTimeout(function () { djdt.handleDragged = false; }, 10); return false; } }); $(document).bind('close.djDebug', function() { // If a sub-panel is open, close that if ($('#djDebugWindow').is(':visible')) { $('#djDebugWindow').hide(); return; } // If a panel is open, close that if ($('.djdt-panelContent').is(':visible')) { $('.djdt-panelContent').hide(); $('#djDebugToolbar li').removeClass('djdt-active'); return; } // Otherwise, just minimize the toolbar if ($('#djDebugToolbar').is(':visible')) { djdt.hide_toolbar(true); return; } }); if (djdt.cookie.get('djdt') == 'hide') { djdt.hide_toolbar(false); } else { djdt.show_toolbar(false); } $('#djDebug .djDebugHoverable').hover(function(){ $(this).addClass('djDebugHover'); }, function(){ $(this).removeClass('djDebugHover'); }); djdt.isReady = true; $.each(djdt.events.ready, function(_, callback){ callback(djdt); }); }, close: function() { $(document).trigger('close.djDebug'); return false; }, hide_toolbar: function(setCookie) { // close any sub panels $('#djDebugWindow').hide(); // close all panels $('.djdt-panelContent').hide(); $('#djDebugToolbar li').removeClass('djdt-active'); // finally close toolbar $('#djDebugToolbar').hide('fast'); handle = $('#djDebugToolbarHandle'); handle.show(); // set handle position var handleTop = djdt.cookie.get('djdttop'); if (handleTop) { handleTop = Math.min(handleTop, window.innerHeight - handle.outerHeight() - 10); handle.css({top: handleTop + 'px'}); } // Unbind keydown $(document).unbind('keydown.djDebug'); if (setCookie) { djdt.cookie.set('djdt', 'hide', { path: '/', expires: 10 }); } }, show_toolbar: function(animate) { // Set up keybindings $(document).bind('keydown.djDebug', function(e) { if (e.keyCode == 27) { djdt.close(); } }); $('#djDebugToolbarHandle').hide(); if (animate) { $('#djDebugToolbar').show('fast'); } else { $('#djDebugToolbar').show(); } djdt.cookie.set('djdt', 'show', { path: '/', expires: 10 }); }, ready: function(callback){ if (djdt.isReady) { callback(djdt); } else { djdt.events.ready.push(callback); } }, cookie: { get: function(key){ if (document.cookie.indexOf(key) === -1) return null; var cookieArray = document.cookie.split('; '), cookies = {}; cookieArray.forEach(function(e){ var parts = e.split('='); cookies[ parts[0] ] = parts[1]; }); return cookies[ key ]; }, set: function(key, value, options){ options = options || {}; if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setDate(t.getDate() + days); } document.cookie = [ encodeURIComponent(key) + '=' + String(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join(''); return value; } }, applyStyle: function(name) { $('#djDebug [data-' + name + ']').each(function() { var css = {}; css[name] = $(this).data(name); $(this).css(css); }); } }; $.extend(publicAPI, { show_toolbar: djdt.show_toolbar, hide_toolbar: djdt.hide_toolbar, close: djdt.close, cookie: djdt.cookie, applyStyle: djdt.applyStyle }); $(document).ready(djdt.init); })(djdt.jQuery, djdt); django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/toolbar.profiling.js000066400000000000000000000013171320306665300310310ustar00rootroot00000000000000(function ($) { function getSubcalls(row) { var id = row.attr('id'); return $('.djDebugProfileRow[id^="'+id+'_"]'); } function getDirectSubcalls(row) { var subcalls = getSubcalls(row); var depth = parseInt(row.attr('depth'), 10) + 1; return subcalls.filter('[depth='+depth+']'); } $('.djDebugProfileRow .djDebugProfileToggle').on('click', function(){ var row = $(this).closest('.djDebugProfileRow'); var subcalls = getSubcalls(row); if (subcalls.css('display') == 'none') { getDirectSubcalls(row).show(); } else { subcalls.hide(); } }); djdt.applyStyle('padding-left'); })(djdt.jQuery); django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/toolbar.sql.js000066400000000000000000000005411320306665300276350ustar00rootroot00000000000000(function ($) { $('#djDebug a.djDebugToggle').on('click', function(e) { e.preventDefault(); $(this).parent().find('.djDebugCollapsed').toggle(); $(this).parent().find('.djDebugUncollapsed').toggle(); }); djdt.applyStyle('background-color'); djdt.applyStyle('left'); djdt.applyStyle('width'); })(djdt.jQuery); django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/toolbar.template.js000066400000000000000000000005521320306665300306530ustar00rootroot00000000000000(function ($) { var uarr = String.fromCharCode(0x25b6), darr = String.fromCharCode(0x25bc); $('a.djTemplateShowContext').on('click', function() { var arrow = $(this).children('.toggleArrow'); arrow.html(arrow.html() == uarr ? darr : uarr); $(this).parent().next().toggle(); return false; }); })(djdt.jQuery); django-debug-toolbar-1.9.1/debug_toolbar/static/debug_toolbar/js/toolbar.timer.js000066400000000000000000000050761320306665300301660ustar00rootroot00000000000000(function ($) { // Browser timing remains hidden unless we can successfully access the performance object var perf = window.performance || window.msPerformance || window.webkitPerformance || window.mozPerformance; if (!perf) return; var rowCount = 0, timingOffset = perf.timing.navigationStart, timingEnd = perf.timing.loadEventEnd, totalTime = timingEnd - timingOffset; function getLeft(stat) { return ((perf.timing[stat] - timingOffset) / (totalTime)) * 100.0; } function getCSSWidth(stat, endStat) { var width = ((perf.timing[endStat] - perf.timing[stat]) / (totalTime)) * 100.0; // Calculate relative percent (same as sql panel logic) width = 100.0 * width / (100.0 - getLeft(stat)); return (width < 1) ? "2px" : width + "%"; } function addRow(stat, endStat) { rowCount++; var $row = $(''); if (endStat) { // Render a start through end bar $row.html('' + stat.replace('Start', '') + '' + '
 
' + '' + (perf.timing[stat] - timingOffset) + ' (+' + (perf.timing[endStat] - perf.timing[stat]) + ')'); $row.find('strong').css({width: getCSSWidth(stat, endStat)}); } else { // Render a point in time $row.html('' + stat + '' + '
 
' + '' + (perf.timing[stat] - timingOffset) + ''); $row.find('strong').css({width: 2}); } $row.find('djDebugLineChart').css({left: getLeft(stat) + '%'}); $('#djDebugBrowserTimingTableBody').append($row); } // This is a reasonably complete and ordered set of timing periods (2 params) and events (1 param) addRow('domainLookupStart', 'domainLookupEnd'); addRow('connectStart', 'connectEnd'); addRow('requestStart', 'responseEnd'); // There is no requestEnd addRow('responseStart', 'responseEnd'); addRow('domLoading', 'domComplete'); // Spans the events below addRow('domInteractive'); addRow('domContentLoadedEventStart', 'domContentLoadedEventEnd'); addRow('loadEventStart', 'loadEventEnd'); $('#djDebugBrowserTiming').css("display", "block"); })(djdt.jQuery); django-debug-toolbar-1.9.1/debug_toolbar/templates/000077500000000000000000000000001320306665300223225ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/000077500000000000000000000000001320306665300251325ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/base.html000066400000000000000000000057321320306665300267410ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %} {% if toolbar.config.JQUERY_URL %} {% else %} {% endif %}
«
{% for panel in toolbar.panels %} {% if panel.has_content and panel.enabled %}

{{ panel.title|safe }}

{% if toolbar.store_id %} loading
{% else %}
{{ panel.content }}
{% endif %}
{% endif %} {% endfor %}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/000077500000000000000000000000001320306665300264145ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/cache.html000066400000000000000000000032761320306665300303550ustar00rootroot00000000000000{% load i18n %}

{% trans "Summary" %}

{% trans "Total calls" %} {% trans "Total time" %} {% trans "Cache hits" %} {% trans "Cache misses" %}
{{ total_calls }} {{ total_time }} ms {{ hits }} {{ misses }}

{% trans "Commands" %}

{% for name in counts.keys %} {% endfor %} {% for value in counts.values %} {% endfor %}
{{ name }}
{{ value }}
{% if calls %}

{% trans "Calls" %}

{% for call in calls %} {% endfor %}
{% trans "Time (ms)" %} {% trans "Type" %} {% trans "Arguments" %} {% trans "Keyword arguments" %} {% trans "Backend" %}
+ {{ call.time|floatformat:"4" }} {{ call.name|escape }} {{ call.args|escape }} {{ call.kwargs|escape }} {{ call.backend }}
{{ call.trace }}
{% endif %} django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/headers.html000066400000000000000000000023041320306665300307140ustar00rootroot00000000000000{% load i18n %}

{% trans "Request headers" %}

{% for key, value in request_headers.items %} {% endfor %}
{% trans "Key" %} {% trans "Value" %}
{{ key|escape }} {{ value|escape }}

{% trans "Response headers" %}

{% for key, value in response_headers.items %} {% endfor %}
{% trans "Key" %} {% trans "Value" %}
{{ key|escape }} {{ value|escape }}

{% trans "WSGI environ" %}

{% trans "Since the WSGI environ inherits the environment of the server, only a significant subset is shown below." %}

{% for key, value in environ.items %} {% endfor %}
{% trans "Key" %} {% trans "Value" %}
{{ key|escape }} {{ value|escape }}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/logging.html000066400000000000000000000012621320306665300307310ustar00rootroot00000000000000{% load i18n %} {% if records %} {% for record in records %} {% endfor %}
{% trans "Level" %} {% trans "Time" %} {% trans "Channel" %} {% trans "Message" %} {% trans "Location" %}
{{ record.level }} {{ record.time|date:"h:i:s m/d/Y" }} {{ record.channel|default:"-" }} {{ record.message|linebreaksbr }} {{ record.file }}:{{ record.line }}
{% else %}

{% trans "No messages logged" %}.

{% endif %} django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/profiling.html000066400000000000000000000023661320306665300313020ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %} {% for call in func_list %} {% endfor %}
{% trans "Call" %} {% trans "CumTime" %} {% trans "Per" %} {% trans "TotTime" %} {% trans "Per" %} {% trans "Count" %}
{% if call.has_subfuncs %} - {% else %} {% endif %} {{ call.func_std_string }}
{{ call.cumtime|floatformat:3 }} {{ call.cumtime_per_call|floatformat:3 }} {{ call.tottime|floatformat:3 }} {{ call.tottime_per_call|floatformat:3 }} {{ call.count }}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/request.html000066400000000000000000000050621320306665300307750ustar00rootroot00000000000000{% load i18n %}

{% trans "View information" %}

{% trans "View function" %} {% trans "Arguments" %} {% trans "Keyword arguments" %} {% trans "URL name" %}
{{ view_func }} {{ view_args|pprint }} {{ view_kwargs|pprint }} {{ view_urlname }}
{% if cookies %}

{% trans "Cookies" %}

{% for key, value in cookies %} {% endfor %}
{% trans "Variable" %} {% trans "Value" %}
{{ key|pprint }} {{ value|pprint }}
{% else %}

{% trans "No cookies" %}

{% endif %} {% if session %}

{% trans "Session data" %}

{% for key, value in session %} {% endfor %}
{% trans "Variable" %} {% trans "Value" %}
{{ key|pprint }} {{ value|pprint }}
{% else %}

{% trans "No session data" %}

{% endif %} {% if get %}

{% trans "GET data" %}

{% for key, value in get %} {% endfor %}
{% trans "Variable" %} {% trans "Value" %}
{{ key|pprint }} {{ value|pprint }}
{% else %}

{% trans "No GET data" %}

{% endif %} {% if post %}

{% trans "POST data" %}

{% for key, value in post %} {% endfor %}
{% trans "Variable" %} {% trans "Value" %}
{{ key|pprint }} {{ value|pprint }}
{% else %}

{% trans "No POST data" %}

{% endif %} django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/settings.html000066400000000000000000000005261320306665300311450ustar00rootroot00000000000000{% load i18n %} {% for name, value in settings.items %} {% endfor %}
{% trans "Setting" %} {% trans "Value" %}
{{ name }} {{ value|pprint }}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/signals.html000066400000000000000000000006661320306665300307520ustar00rootroot00000000000000{% load i18n %} {% for name, signal, receivers in signals %} {% endfor %}
{% trans "Signal" %} {% trans "Providing" %} {% trans "Receivers" %}
{{ name|escape }} {{ signal.providing_args|join:", " }} {{ receivers|join:", " }}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/sql.html000066400000000000000000000107171320306665300301070ustar00rootroot00000000000000{% load i18n l10n %}{% load static from staticfiles %}
    {% for alias, info in databases %}
  •   {{ alias }} {{ info.time_spent|floatformat:"2" }} ms ({% blocktrans count info.num_queries as num %}{{ num }} query{% plural %}{{ num }} queries{% endblocktrans %} {% if info.duplicate_count %} {% blocktrans with dupes=info.duplicate_count %}including {{ dupes }} duplicates{% endblocktrans %} {% endif %})
  • {% endfor %}
{% if queries %} {% for query in queries %} {% endfor %}
  {% trans "Query" %} {% trans "Timeline" %} {% trans "Time (ms)" %} {% trans "Action" %}
  +
{{ query.sql|safe }}
{% if query.duplicate_count %}   {% blocktrans with dupes=query.duplicate_count %}Duplicated {{ dupes }} times.{% endblocktrans %} {% endif %}
{{ query.width_ratio }}%
{{ query.duration|floatformat:"2" }} {% if query.params %} {% if query.is_select %}
{{ query.form }} {% if query.vendor == 'mysql' %} {% endif %}
{% endif %} {% endif %}

{% trans "Connection:" %} {{ query.alias }}

{% if query.iso_level %}

{% trans "Isolation level:" %} {{ query.iso_level }}

{% endif %} {% if query.trans_status %}

{% trans "Transaction status:" %} {{ query.trans_status }}

{% endif %} {% if query.stacktrace %}
{{ query.stacktrace }}
{% endif %} {% if query.template_info %} {% for line in query.template_info.context %} {% endfor %}
{{ line.num }} {{ line.content }}

{{ query.template_info.name|default:_("(unknown)") }}

{% endif %}
{% else %}

{% trans "No SQL queries were recorded during this request." %}

{% endif %} django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html000066400000000000000000000016121320306665300316210ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}

{% trans "SQL explained" %}

{% trans "Executed SQL" %}
{{ sql|safe }}
{% trans "Time" %}
{{ duration }} ms
{% trans "Database" %}
{{ alias }}
{% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
{{ h|upper }}
{{ column|escape }}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html000066400000000000000000000020421320306665300316170ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}

{% trans "SQL profiled" %}

{% if result %}
{% trans "Executed SQL" %}
{{ sql|safe }}
{% trans "Time" %}
{{ duration }} ms
{% trans "Database" %}
{{ alias }}
{% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
{{ h|upper }}
{{ column|escape }}
{% else %}
{% trans "Error" %}
{{ result_error }}
{% endif %}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/sql_select.html000066400000000000000000000017271320306665300314470ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}

{% trans "SQL selected" %}

{% trans "Executed SQL" %}
{{ sql|safe }}
{% trans "Time" %}
{{ duration }} ms
{% trans "Database" %}
{{ alias }}
{% if result %} {% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
{{ h|upper }}
{{ column|escape }}
{% else %}

{% trans "Empty set" %}

{% endif %}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html000066400000000000000000000034311320306665300316150ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles%}

{% blocktrans count staticfiles_dirs|length as dirs_count %}Static file path{% plural %}Static file paths{% endblocktrans %}

{% if staticfiles_dirs %}
    {% for prefix, staticfiles_dir in staticfiles_dirs %}
  1. {{ staticfiles_dir }}{% if prefix %} {% blocktrans %}(prefix {{ prefix }}){% endblocktrans %}{% endif %}
  2. {% endfor %}
{% else %}

{% trans "None" %}

{% endif %}

{% blocktrans count staticfiles_apps|length as apps_count %}Static file app{% plural %}Static file apps{% endblocktrans %}

{% if staticfiles_apps %}
    {% for static_app in staticfiles_apps %}
  1. {{ static_app }}
  2. {% endfor %}
{% else %}

{% trans "None" %}

{% endif %}

{% blocktrans count staticfiles|length as staticfiles_count %}Static file{% plural %}Static files{% endblocktrans %}

{% if staticfiles %}
{% for staticfile in staticfiles %}
{{ staticfile }}
{{ staticfile.real_path }}
{% endfor %}
{% else %}

{% trans "None" %}

{% endif %} {% for finder, payload in staticfiles_finders.items %}

{{ finder }} ({% blocktrans count payload|length as payload_count %}{{ payload_count }} file{% plural %}{{ payload_count }} files{% endblocktrans %})

{% for path, real_path in payload %} {% endfor %}
{% trans 'Path' %} {% trans 'Location' %}
{{ path }} {{ real_path }}
{% endfor %} django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/template_source.html000066400000000000000000000005511320306665300324760ustar00rootroot00000000000000{% load i18n %}

{% trans "Template source:" %} {{ template_name }}

{% if not source.pygmentized %} {{ source }} {% else %} {{ source }} {% endif %}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/templates.html000066400000000000000000000035251320306665300313050ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}

{% blocktrans count template_dirs|length as template_count %}Template path{% plural %}Template paths{% endblocktrans %}

{% if template_dirs %}
    {% for template in template_dirs %}
  1. {{ template }}
  2. {% endfor %}
{% else %}

{% trans "None" %}

{% endif %}

{% blocktrans count templates|length as template_count %}Template{% plural %}Templates{% endblocktrans %}

{% if templates %}
{% for template in templates %}
{{ template.template.name|addslashes }}
{{ template.template.origin_name|addslashes }}
{% if template.context %}
{{ template.context }}
{% endif %} {% endfor %}
{% else %}

{% trans "None" %}

{% endif %}

{% blocktrans count context_processors|length as context_processors_count %}Context processor{% plural %}Context processors{% endblocktrans %}

{% if context_processors %}
{% for key, value in context_processors.items %}
{{ key|escape }}
{{ value|escape }}
{% endfor %}
{% else %}

{% trans "None" %}

{% endif %} django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/timer.html000066400000000000000000000021741320306665300304260ustar00rootroot00000000000000{% load i18n %}{% load static from staticfiles %}

{% trans "Resource usage" %}

{% for key, value in rows %} {% endfor %}
{% trans "Resource" %} {% trans "Value" %}
{{ key|escape }} {{ value|escape }}

{% trans "Browser timing" %}

{% trans "Timing attribute" %} {% trans "Timeline" %} {% trans "Milliseconds since navigation start (+length)" %}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/panels/versions.html000066400000000000000000000007651320306665300311620ustar00rootroot00000000000000{% load i18n %} {% for package, name, version in versions %} {% endfor %}
{% trans "Package" %} {% trans "Name" %} {% trans "Version" %}
{{ package }} {{ name }} {{ version }}
django-debug-toolbar-1.9.1/debug_toolbar/templates/debug_toolbar/redirect.html000066400000000000000000000007701320306665300276250ustar00rootroot00000000000000{% load i18n %}

{{ status_line }}

{% trans "Location:" %} {{ redirect_to }}

{% trans "The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal." %}

django-debug-toolbar-1.9.1/debug_toolbar/templatetags/000077500000000000000000000000001320306665300230165ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/templatetags/__init__.py000066400000000000000000000000001320306665300251150ustar00rootroot00000000000000django-debug-toolbar-1.9.1/debug_toolbar/toolbar.py000066400000000000000000000102421320306665300223370ustar00rootroot00000000000000""" The main DebugToolbar class that loads and renders the Toolbar. """ from __future__ import absolute_import, unicode_literals import uuid from collections import OrderedDict from django.apps import apps from django.conf.urls import url from django.core.exceptions import ImproperlyConfigured from django.template import TemplateSyntaxError from django.template.loader import render_to_string from django.utils.module_loading import import_string from debug_toolbar import settings as dt_settings class DebugToolbar(object): def __init__(self, request): self.request = request self.config = dt_settings.get_config().copy() self._panels = OrderedDict() for panel_class in self.get_panel_classes(): panel_instance = panel_class(self) self._panels[panel_instance.panel_id] = panel_instance self.stats = {} self.store_id = None # Manage panels @property def panels(self): """ Get a list of all available panels. """ return list(self._panels.values()) @property def enabled_panels(self): """ Get a list of panels enabled for the current request. """ return [panel for panel in self._panels.values() if panel.enabled] def get_panel_by_id(self, panel_id): """ Get the panel with the given id, which is the class name by default. """ return self._panels[panel_id] # Handle rendering the toolbar in HTML def render_toolbar(self): """ Renders the overall Toolbar with panels inside. """ if not self.should_render_panels(): self.store() try: context = {'toolbar': self} return render_to_string('debug_toolbar/base.html', context) except TemplateSyntaxError: if not apps.is_installed('django.contrib.staticfiles'): raise ImproperlyConfigured( "The debug toolbar requires the staticfiles contrib app. " "Add 'django.contrib.staticfiles' to INSTALLED_APPS and " "define STATIC_URL in your settings.") else: raise # Handle storing toolbars in memory and fetching them later on _store = OrderedDict() def should_render_panels(self): render_panels = self.config['RENDER_PANELS'] if render_panels is None: render_panels = self.request.META['wsgi.multiprocess'] return render_panels def store(self): self.store_id = uuid.uuid4().hex cls = type(self) cls._store[self.store_id] = self for _ in range(len(cls._store) - self.config['RESULTS_CACHE_SIZE']): try: # collections.OrderedDict cls._store.popitem(last=False) except TypeError: # django.utils.datastructures.SortedDict del cls._store[cls._store.keyOrder[0]] @classmethod def fetch(cls, store_id): return cls._store.get(store_id) # Manually implement class-level caching of panel classes and url patterns # because it's more obvious than going through an abstraction. _panel_classes = None @classmethod def get_panel_classes(cls): if cls._panel_classes is None: # Load panels in a temporary variable for thread safety. panel_classes = [ import_string(panel_path) for panel_path in dt_settings.get_panels() ] cls._panel_classes = panel_classes return cls._panel_classes _urlpatterns = None @classmethod def get_urls(cls): if cls._urlpatterns is None: from . import views # Load URLs in a temporary variable for thread safety. # Global URLs urlpatterns = [ url(r'^render_panel/$', views.render_panel, name='render_panel'), ] # Per-panel URLs for panel_class in cls.get_panel_classes(): urlpatterns += panel_class.get_urls() cls._urlpatterns = urlpatterns return cls._urlpatterns app_name = 'djdt' urlpatterns = DebugToolbar.get_urls() django-debug-toolbar-1.9.1/debug_toolbar/utils.py000066400000000000000000000230561320306665300220440ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import inspect import os.path import re import sys from importlib import import_module from itertools import chain import django from django.core.exceptions import ImproperlyConfigured from django.template import Node from django.utils import six from django.utils.encoding import force_text from django.utils.html import escape from django.utils.safestring import mark_safe from debug_toolbar import settings as dt_settings from debug_toolbar.compat import linebreak_iter try: import threading except ImportError: threading = None # Figure out some paths django_path = os.path.realpath(os.path.dirname(django.__file__)) def get_module_path(module_name): try: module = import_module(module_name) except ImportError as e: raise ImproperlyConfigured( 'Error importing HIDE_IN_STACKTRACES: %s' % (e,)) else: source_path = inspect.getsourcefile(module) if source_path.endswith('__init__.py'): source_path = os.path.dirname(source_path) return os.path.realpath(source_path) hidden_paths = [ get_module_path(module_name) for module_name in dt_settings.get_config()['HIDE_IN_STACKTRACES'] ] def omit_path(path): return any(path.startswith(hidden_path) for hidden_path in hidden_paths) def tidy_stacktrace(stack): """ Clean up stacktrace and remove all entries that: 1. Are part of Django (except contrib apps) 2. Are part of socketserver (used by Django's dev server) 3. Are the last entry (which is part of our stacktracing code) ``stack`` should be a list of frame tuples from ``inspect.stack()`` """ trace = [] for frame, path, line_no, func_name, text in (f[:5] for f in stack): if omit_path(os.path.realpath(path)): continue text = (''.join(force_text(t) for t in text)).strip() if text else '' trace.append((path, line_no, func_name, text)) return trace def render_stacktrace(trace): stacktrace = [] for frame in trace: params = (escape(v) for v in chain(frame[0].rsplit(os.path.sep, 1), frame[1:])) params_dict = {six.text_type(idx): v for idx, v in enumerate(params)} try: stacktrace.append('%(0)s/' '%(1)s' ' in %(3)s' '(%(2)s)\n' ' %(4)s' % params_dict) except KeyError: # This frame doesn't have the expected format, so skip it and move on to the next one continue return mark_safe('\n'.join(stacktrace)) def get_template_info(): template_info = None cur_frame = sys._getframe().f_back try: while cur_frame is not None: in_utils_module = cur_frame.f_code.co_filename.endswith( "/debug_toolbar/utils.py" ) is_get_template_context = ( cur_frame.f_code.co_name == get_template_context.__name__ ) if in_utils_module and is_get_template_context: # If the method in the stack trace is this one # then break from the loop as it's being check recursively. break elif cur_frame.f_code.co_name == 'render': node = cur_frame.f_locals['self'] context = cur_frame.f_locals['context'] if isinstance(node, Node): template_info = get_template_context(node, context) break cur_frame = cur_frame.f_back except Exception: pass del cur_frame return template_info def get_template_context(node, context, context_lines=3): source = getattr(node, 'source', None) # In Django 1.9 template Node does not have source property, Origin does # not reload method, so we extract contextual information from exception # info. if source: line, source_lines, name = get_template_source_from_source(source) else: line, source_lines, name = get_template_source_from_exception_info( node, context) debug_context = [] start = max(1, line - context_lines) end = line + 1 + context_lines for line_num, content in source_lines: if start <= line_num <= end: debug_context.append({ 'num': line_num, 'content': content, 'highlight': (line_num == line), }) return { 'name': name, 'context': debug_context, } def get_template_source_from_source(source): line = 0 upto = 0 source_lines = [] # before = during = after = "" origin, (start, end) = source template_source = origin.reload() for num, next in enumerate(linebreak_iter(template_source)): if start >= upto and end <= next: line = num # before = template_source[upto:start] # during = template_source[start:end] # after = template_source[end:next] source_lines.append((num, template_source[upto:next])) upto = next return line, source_lines, origin.name def get_template_source_from_exception_info(node, context): exception_info = context.template.get_exception_info( Exception('DDT'), node.token) line = exception_info['line'] source_lines = exception_info['source_lines'] name = exception_info['name'] return line, source_lines, name def get_name_from_obj(obj): if hasattr(obj, '__name__'): name = obj.__name__ elif hasattr(obj, '__class__') and hasattr(obj.__class__, '__name__'): name = obj.__class__.__name__ else: name = '' if hasattr(obj, '__module__'): module = obj.__module__ name = '%s.%s' % (module, name) return name def getframeinfo(frame, context=1): """ Get information about a frame or traceback object. A tuple of five things is returned: the filename, the line number of the current line, the function name, a list of lines of context from the source code, and the index of the current line within that list. The optional second argument specifies the number of lines of context to return, which are centered around the current line. This originally comes from ``inspect`` but is modified to handle issues with ``findsource()``. """ if inspect.istraceback(frame): lineno = frame.tb_lineno frame = frame.tb_frame else: lineno = frame.f_lineno if not inspect.isframe(frame): raise TypeError('arg is not a frame or traceback object') filename = inspect.getsourcefile(frame) or inspect.getfile(frame) if context > 0: start = lineno - 1 - context // 2 try: lines, lnum = inspect.findsource(frame) except Exception: # findsource raises platform-dependant exceptions first_lines = lines = index = None else: start = max(start, 1) start = max(0, min(start, len(lines) - context)) first_lines = lines[:2] lines = lines[start:(start + context)] index = lineno - 1 - start else: first_lines = lines = index = None # Code taken from Django's ExceptionReporter._get_lines_from_file if first_lines and isinstance(first_lines[0], bytes): encoding = 'ascii' for line in first_lines[:2]: # File coding may be specified. Match pattern from PEP-263 # (https://www.python.org/dev/peps/pep-0263/) match = re.search(br'coding[:=]\s*([-\w.]+)', line) if match: encoding = match.group(1).decode('ascii') break lines = [line.decode(encoding, 'replace') for line in lines] if hasattr(inspect, 'Traceback'): return inspect.Traceback(filename, lineno, frame.f_code.co_name, lines, index) else: return (filename, lineno, frame.f_code.co_name, lines, index) def get_stack(context=1): """ Get a list of records for a frame and all higher (calling) frames. Each record contains a frame object, filename, line number, function name, a list of lines of context, and index within the context. Modified version of ``inspect.stack()`` which calls our own ``getframeinfo()`` """ frame = sys._getframe(1) framelist = [] while frame: framelist.append((frame,) + getframeinfo(frame, context)) frame = frame.f_back return framelist class ThreadCollector(object): def __init__(self): if threading is None: raise NotImplementedError( "threading module is not available, " "this panel cannot be used without it") self.collections = {} # a dictionary that maps threads to collections def get_collection(self, thread=None): """ Returns a list of collected items for the provided thread, of if none is provided, returns a list for the current thread. """ if thread is None: thread = threading.currentThread() if thread not in self.collections: self.collections[thread] = [] return self.collections[thread] def clear_collection(self, thread=None): if thread is None: thread = threading.currentThread() if thread in self.collections: del self.collections[thread] def collect(self, item, thread=None): self.get_collection(thread).append(item) django-debug-toolbar-1.9.1/debug_toolbar/views.py000066400000000000000000000014101320306665300220270ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals from django.http import HttpResponse from django.utils.html import escape from django.utils.translation import ugettext as _ from debug_toolbar.decorators import require_show_toolbar from debug_toolbar.toolbar import DebugToolbar @require_show_toolbar def render_panel(request): """Render the contents of a panel""" toolbar = DebugToolbar.fetch(request.GET['store_id']) if toolbar is None: content = _("Data for this panel isn't available anymore. " "Please reload the page and retry.") content = "

%s

" % escape(content) else: panel = toolbar.get_panel_by_id(request.GET['panel_id']) content = panel.content return HttpResponse(content) django-debug-toolbar-1.9.1/docs/000077500000000000000000000000001320306665300164445ustar00rootroot00000000000000django-debug-toolbar-1.9.1/docs/Makefile000066400000000000000000000152321320306665300201070ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " xml to make Docutils-native XML files" @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/DjangoDebugToolbar.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/DjangoDebugToolbar.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/DjangoDebugToolbar" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/DjangoDebugToolbar" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." latexpdfja: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." xml: $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." django-debug-toolbar-1.9.1/docs/changes.rst000066400000000000000000000126621320306665300206150ustar00rootroot00000000000000Change log ========== UNRELEASED ---------- * Fix erroneous ``ContentNotRenderedError`` raised by the redirects panel. 1.9 --- This version is compatible with Django 2.0 and requires Django 1.8 or later. Bugfixes ~~~~~~~~ * The profiling panel now escapes reported data resulting in valid HTML. * Many minor cleanups and bugfixes. 1.8 --- This version is compatible with Django 1.11 and requires Django 1.8 or later. **Backwards incompatible changes** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ``debug_toolbar.middleware.show_toolbar`` (the default value of setting ``SHOW_TOOLBAR_CALLBACK``) no longer returns ``False`` for AJAX requests. This is to allow reusing the ``SHOW_TOOLBAR_CALLBACK`` function to verify access to panel views requested via AJAX. Projects defining a custom ``SHOW_TOOLBAR_CALLBACK`` should remove checks for AJAX requests in order to continue to allow access to these panels. Features ~~~~~~~~ * New decorator ``debug_toolbar.decorators.require_show_toolbar`` prevents unauthorized access to decorated views by checking ``SHOW_TOOLBAR_CALLBACK`` every request. Unauthorized access results in a 404. * The ``SKIP_TEMPLATE_PREFIXES`` setting allows skipping templates in the templates panel. Template-based form widgets' templates are skipped by default to avoid panel sizes going into hundreds of megabytes of HTML. Bugfixes ~~~~~~~~ * All views are now decorated with ``debug_toolbar.decorators.require_show_toolbar`` preventing unauthorized access. * The templates panel now reuses contexts' pretty printed version which makes the debug toolbar usable again with Django 1.11's template-based forms rendering. * Long SQL statements are now forcibly wrapped to fit on the screen. 1.7 --- Bugfixes ~~~~~~~~ * Recursive template extension is now understood. * Deprecation warnings were fixed. * The SQL panel uses HMAC instead of simple hashes to verify that SQL statements have not been changed. Also, the handling of bytes and text for hashing has been hardened. Also, a bug with Python's division handling has been fixed for improved Python 3 support. * An error with django-jinja has been fixed. * A few CSS classes have been prefixed with ``djdt-`` to avoid conflicting class names. 1.6 --- The debug toolbar was adopted by jazzband. Removed features ~~~~~~~~~~~~~~~~ * Support for automatic setup has been removed as it was frequently problematic. Installation now requires explicit setup. The ``DEBUG_TOOLBAR_PATCH_SETTINGS`` setting has also been removed as it is now unused. See the :doc:`installation documentation ` for details. Bugfixes ~~~~~~~~ * The ``DebugToolbarMiddleware`` now also supports Django 1.10's ``MIDDLEWARE`` setting. 1.5 --- This version is compatible with Django 1.10 and requires Django 1.8 or later. Support for Python 3.2 is dropped. Bugfixes ~~~~~~~~ * Restore compatibility with sqlparse ≥ 0.2.0. * Add compatibility with Bootstrap 4, Pure CSS, MDL, etc. * Improve compatibility with RequireJS / AMD. * Improve the UI slightly. * Fix invalid (X)HTML. 1.4 --- This version is compatible with Django 1.9 and requires Django 1.7 or later. New features ~~~~~~~~~~~~ * New panel method :meth:`debug_toolbar.panels.Panel.generate_stats` allows panels to only record stats when the toolbar is going to be inserted into the response. Bugfixes ~~~~~~~~ * Response time for requests of projects with numerous media files has been improved. 1.3 --- This is the first version compatible with Django 1.8. New features ~~~~~~~~~~~~ * A new panel is available: Template Profiler. * The ``SHOW_TOOLBAR_CALLBACK`` accepts a callable. * The toolbar now provides a :ref:`javascript-api`. Bugfixes ~~~~~~~~ * The toolbar handle cannot leave the visible area anymore when the toolbar is collapsed. * The root level logger is preserved. * The ``RESULTS_CACHE_SIZE`` setting is taken into account. * CSS classes are prefixed with ``djdt-`` to prevent name conflicts. * The private copy of jQuery no longer registers as an AMD module on sites that load RequireJS. 1.2 --- New features ~~~~~~~~~~~~ * The ``JQUERY_URL`` setting defines where the toolbar loads jQuery from. Bugfixes ~~~~~~~~ * The toolbar now always loads a private copy of jQuery in order to avoid using an incompatible version. It no longer attemps to integrate with AMD. This private copy is available in ``djdt.jQuery``. Third-party panels are encouraged to use it because it should be as stable as the toolbar itself. 1.1 --- This is the first version compatible with Django 1.7. New features ~~~~~~~~~~~~ * The SQL panel colors queries depending on the stack level. * The Profiler panel allows configuring the maximum depth. Bugfixes ~~~~~~~~ * Support languages where lowercase and uppercase strings may have different lengths. * Allow using cursor as context managers. * Make the SQL explain more helpful on SQLite. * Various JavaScript improvements. Deprecated features ~~~~~~~~~~~~~~~~~~~ * The ``INTERCEPT_REDIRECTS`` setting is superseded by the more generic ``DISABLE_PANELS``. 1.0 --- This is the first stable version of the Debug Toolbar! It includes many new features and performance improvements as well a few backwards-incompatible changes to make the toolbar easier to deploy, use, extend and maintain in the future. You're strongly encouraged to review the installation and configuration docs and redo the setup in your projects. Third-party panels will need to be updated to work with this version. django-debug-toolbar-1.9.1/docs/commands.rst000066400000000000000000000026241320306665300210030ustar00rootroot00000000000000Commands ======== The Debug Toolbar currently provides one Django management command. ``debugsqlshell`` ----------------- This command starts an interactive Python shell, like Django's built-in ``shell`` management command. In addition, each ORM call that results in a database query will be beautifully output in the shell. Here's an example:: >>> from page.models import Page >>> ### Lookup and use resulting in an extra query... >>> p = Page.objects.get(pk=1) SELECT "page_page"."id", "page_page"."number", "page_page"."template_id", "page_page"."description" FROM "page_page" WHERE "page_page"."id" = 1 >>> print p.template.name SELECT "page_template"."id", "page_template"."name", "page_template"."description" FROM "page_template" WHERE "page_template"."id" = 1 Home >>> ### Using select_related to avoid 2nd database call... >>> p = Page.objects.select_related('template').get(pk=1) SELECT "page_page"."id", "page_page"."number", "page_page"."template_id", "page_page"."description", "page_template"."id", "page_template"."name", "page_template"."description" FROM "page_page" INNER JOIN "page_template" ON ("page_page"."template_id" = "page_template"."id") WHERE "page_page"."id" = 1 >>> print p.template.name Home django-debug-toolbar-1.9.1/docs/conf.py000066400000000000000000000214371320306665300177520ustar00rootroot00000000000000# -*- coding: utf-8 -*- # # Django Debug Toolbar documentation build configuration file, created by # sphinx-quickstart on Sun Oct 27 13:18:25 2013. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import datetime import sys import os os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings' sys.path.append(os.path.dirname(os.path.dirname(__file__))) # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- 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.intersphinx', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Django Debug Toolbar' copyright = u'{}, Django Debug Toolbar developers and contributors' copyright = copyright.format(datetime.date.today().year) # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.9' # The full version, including alpha/beta/rc tags. release = '1.9' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all # documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False # -- 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 = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. #html_extra_path = [] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'DjangoDebugToolbardoc' # -- 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': '', } # 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 = [ ('index', 'DjangoDebugToolbar.tex', u'Django Debug Toolbar Documentation', u'Django Debug Toolbar developers and contributors', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'djangodebugtoolbar', u'Django Debug Toolbar Documentation', [u'Django Debug Toolbar developers and contributors'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- 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 = [ ('index', 'DjangoDebugToolbar', u'Django Debug Toolbar Documentation', u'Django Debug Toolbar developers and contributors', 'DjangoDebugToolbar', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = { 'https://docs.python.org/': None, 'https://docs.djangoproject.com/en/dev/': 'https://docs.djangoproject.com/en/dev/_objects/', } # -- Options for Read the Docs -------------------------------------------- RTD_NEW_THEME = True django-debug-toolbar-1.9.1/docs/configuration.rst000066400000000000000000000143721320306665300220540ustar00rootroot00000000000000Configuration ============= The debug toolbar provides two settings that you can add in your project's settings module to customize its behavior. .. note:: Do you really need a customized configuration? The debug toolbar ships with a default configuration that is considered sane for the vast majority of Django projects. Don't copy-paste blindly the default values shown below into you settings module! It's useless and it'll prevent you from taking advantage of better defaults that may be introduced in future releases. DEBUG_TOOLBAR_PANELS -------------------- This setting specifies the full Python path to each panel that you want included in the toolbar. It works like Django's ``MIDDLEWARE_CLASSES`` setting. The default value is:: DEBUG_TOOLBAR_PANELS = [ 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', ] This setting allows you to: * add built-in panels that aren't enabled by default, * add third-party panels, * remove built-in panels, * change the order of panels. DEBUG_TOOLBAR_CONFIG -------------------- This dictionary contains all other configuration options. Some apply to the toolbar itself, others are specific to some panels. Toolbar options ~~~~~~~~~~~~~~~ * ``DISABLE_PANELS`` Default: ``{'debug_toolbar.panels.redirects.RedirectsPanel'}`` This setting is a set of the full Python paths to each panel that you want disabled (but still displayed) by default. * ``INSERT_BEFORE`` Default: ``''`` The toolbar searches for this string in the HTML and inserts itself just before. * ``JQUERY_URL`` Default: ``'//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js'`` URL of the copy of jQuery that will be used by the toolbar. Set it to a locally-hosted version of jQuery for offline development. Make it empty to rely on a version of jQuery that already exists on every page of your site. * ``RENDER_PANELS`` Default: ``None`` If set to ``False``, the debug toolbar will keep the contents of panels in memory on the server and load them on demand. If set to ``True``, it will render panels inside every page. This may slow down page rendering but it's required on multi-process servers, for example if you deploy the toolbar in production (which isn't recommended). The default value of ``None`` tells the toolbar to automatically do the right thing depending on whether the WSGI container runs multiple processes. This setting allows you to force a different behavior if needed. * ``RESULTS_CACHE_SIZE`` Default: ``10`` The toolbar keeps up to this many results in memory. * ``ROOT_TAG_EXTRA_ATTRS`` Default: ``''`` This setting is injected in the root template div in order to avoid conflicts with client-side frameworks. For example, when using the debug toolbar with Angular.js, set this to ``'ng-non-bindable'`` or ``'class="ng-non-bindable"'``. * ``SHOW_COLLAPSED`` Default: ``False`` If changed to ``True``, the toolbar will be collapsed by default. * ``SHOW_TOOLBAR_CALLBACK`` Default: 'debug_toolbar.middleware.show_toolbar' This is the dotted path to a function used for determining whether the toolbar should show or not. The default checks are that ``DEBUG`` must be set to ``True`` and the IP of the request must be in ``INTERNAL_IPS``. You can provide your own function ``callback(request)`` which returns ``True`` or ``False``. For versions < 1.8, the callback should also return ``False`` for AJAX requests. Since version 1.8, AJAX requests are checked in the middleware, not the callback. This allows reusing the callback to verify access to panel views requested via AJAX. Panel options ~~~~~~~~~~~~~ * ``EXTRA_SIGNALS`` Default: ``[]`` Panel: signals A list of custom signals that might be in your project, defined as the Python path to the signal. * ``ENABLE_STACKTRACES`` Default: ``True`` Panels: cache, SQL If set to ``True``, this will show stacktraces for SQL queries and cache calls. Enabling stacktraces can increase the CPU time used when executing queries. * ``HIDE_IN_STACKTRACES`` Default: ``('socketserver', 'threading', 'wsgiref', 'debug_toolbar', 'django')``. The first value is ``socketserver`` on Python 3 and ``SocketServer`` on Python 2. Panels: cache, SQL Useful for eliminating server-related entries which can result in enormous DOM structures and toolbar rendering delays. * ``PROFILER_MAX_DEPTH`` Default: ``10`` Panel: profiling This setting affects the depth of function calls in the profiler's analysis. * ``SHOW_TEMPLATE_CONTEXT`` Default: ``True`` Panel: templates If set to ``True`` then a template's context will be included with it in the template debug panel. Turning this off is useful when you have large template contexts, or you have template contexts with lazy datastructures that you don't want to be evaluated. * ``SKIP_TEMPLATE_PREFIXES`` Default: ``('django/forms/widgets/', 'admin/widgets/')`` Panel: templates. Templates starting with those strings are skipped when collecting rendered templates and contexts. Template-based form widgets are skipped by default because the panel HTML can easily grow to hundreds of megabytes with many form fields and many options. * ``SQL_WARNING_THRESHOLD`` Default: ``500`` Panel: SQL The SQL panel highlights queries that took more that this amount of time, in milliseconds, to execute. Here's what a slightly customized toolbar configuration might look like:: # This example is unlikely to be appropriate for your project. CONFIG_DEFAULTS = { # Toolbar options 'RESULTS_CACHE_SIZE': 3, 'SHOW_COLLAPSED': True, # Panel options 'SQL_WARNING_THRESHOLD': 100, # milliseconds } django-debug-toolbar-1.9.1/docs/contributing.rst000066400000000000000000000072641320306665300217160ustar00rootroot00000000000000Contributing ============ .. image:: https://jazzband.co/static/img/jazzband.svg :target: https://jazzband.co/ :alt: Jazzband This is a `Jazzband `_ project. By contributing you agree to abide by the `Contributor Code of Conduct `_ and follow the `guidelines `_. Bug reports and feature requests -------------------------------- You can report bugs and request features in the `bug tracker `_. Please search the existing database for duplicates before filing an issue. Code ---- The code is available `on GitHub `_. Once you've obtained a checkout, you should create a virtualenv_ and install the libraries required for working on the Debug Toolbar:: $ pip install -r requirements_dev.txt .. _virtualenv: https://virtualenv.pypa.io/ You can run now run the example application:: $ DJANGO_SETTINGS_MODULE=example.settings django-admin migrate $ DJANGO_SETTINGS_MODULE=example.settings django-admin runserver For convenience, there's an alias for the second command:: $ make example Look at ``example/settings.py`` for running the example with another database than SQLite. Tests ----- Once you've set up a development environment as explained above, you can run the test suite for the versions of Django and Python installed in that environment:: $ make test You can enable coverage measurement during tests:: $ make coverage You can also run the test suite on all supported versions of Django and Python:: $ tox This is strongly recommended before committing changes to Python code. The test suite includes frontend tests written with Selenium. Since they're annoyingly slow, they're disabled by default. You can run them as follows:: $ make test_selenium or by setting the ``DJANGO_SELENIUM_TESTS`` environment variable:: $ DJANGO_SELENIUM_TESTS=true make test $ DJANGO_SELENIUM_TESTS=true make coverage $ DJANGO_SELENIUM_TESTS=true tox At this time, there isn't an easy way to test against databases other than SQLite. Style ----- Python code for the Django Debug Toolbar follows PEP8. Line length is limited to 100 characters. You can check for style violations with:: $ make flake8 Import style is enforce by isort. You can sort import automatically with:: $ make isort Patches ------- Please submit `pull requests `_! The Debug Toolbar includes a limited but growing test suite. If you fix a bug or add a feature code, please consider adding proper coverage in the test suite, especially if it has a chance for a regression. Translations ------------ Translation efforts are coordinated on `Transifex `_. Help translate the Debug Toolbar in your language! Mailing list ------------ This project doesn't have a mailing list at this time. If you wish to discuss a topic, please open an issue on GitHub. Making a release ---------------- Prior to a release, the English ``.po`` file must be updated with ``make translatable_strings`` and pushed to Transifex. Once translators have done their job, ``.po`` files must be downloaded with ``make update_translations``. The release itself requires the following steps: #. Bump version numbers in docs/conf.py, README.rst and setup.py and commit. #. Tag the new version. #. ``python setup.py sdist bdist_wheel upload``. #. Push the commit and the tag. #. Change the default version of the docs to point to the latest release: https://readthedocs.org/dashboard/django-debug-toolbar/versions/ django-debug-toolbar-1.9.1/docs/index.rst000066400000000000000000000002431320306665300203040ustar00rootroot00000000000000Django Debug Toolbar ==================== .. toctree:: :maxdepth: 2 installation configuration tips panels commands changes contributing django-debug-toolbar-1.9.1/docs/installation.rst000066400000000000000000000047551320306665300217120ustar00rootroot00000000000000Installation ============ Getting the code ---------------- The recommended way to install the Debug Toolbar is via pip_:: $ pip install django-debug-toolbar If you aren't familiar with pip, you may also obtain a copy of the ``debug_toolbar`` directory and add it to your Python path. .. _pip: https://pip.pypa.io/ To test an upcoming release, you can install the in-development version instead with the following command:: $ pip install -e git+https://github.com/jazzband/django-debug-toolbar.git#egg=django-debug-toolbar Prerequisites ------------- Make sure that ``'django.contrib.staticfiles'`` is `set up properly `_ and add ``'debug_toolbar'`` to your ``INSTALLED_APPS`` setting:: INSTALLED_APPS = [ # ... 'django.contrib.staticfiles', # ... 'debug_toolbar', ] STATIC_URL = '/static/' If you're upgrading from a previous version, you should review the :doc:`change log ` and look for specific upgrade instructions. URLconf ------- Add the Debug Toolbar's URLs to your project's URLconf as follows:: from django.conf import settings from django.conf.urls import include, url if settings.DEBUG: import debug_toolbar urlpatterns = [ url(r'^__debug__/', include(debug_toolbar.urls)), ] + urlpatterns This example uses the ``__debug__`` prefix, but you can use any prefix that doesn't clash with your application's URLs. Note the lack of quotes around ``debug_toolbar.urls``. Middleware ---------- The Debug Toolbar is mostly implemented in a middleware. Enable it in your settings module as follows:: MIDDLEWARE = [ # ... 'debug_toolbar.middleware.DebugToolbarMiddleware', # ... ] Old-style middleware:: MIDDLEWARE_CLASSES = [ # ... 'debug_toolbar.middleware.DebugToolbarMiddleware', # ... ] .. warning:: The order of ``MIDDLEWARE`` and ``MIDDLEWARE_CLASSES`` is important. You should include the Debug Toolbar middleware as early as possible in the list. However, it must come after any other middleware that encodes the response's content, such as :class:`~django.middleware.gzip.GZipMiddleware`. Internal IPs ------------ The Debug Toolbar is shown only if your IP is listed in the ``INTERNAL_IPS`` setting. (You can change this logic with the ``SHOW_TOOLBAR_CALLBACK`` option.) For local development, you should add ``'127.0.0.1'`` to ``INTERNAL_IPS``. django-debug-toolbar-1.9.1/docs/make.bat000066400000000000000000000151051320306665300200530ustar00rootroot00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . set I18NSPHINXOPTS=%SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. texinfo to make Texinfo files echo. gettext to make PO message catalogs echo. changes to make an overview over all changed/added/deprecated items echo. xml to make Docutils-native XML files echo. pseudoxml to make pseudoxml-XML files for display purposes echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) %SPHINXBUILD% 2> nul if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\DjangoDebugToolbar.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\DjangoDebugToolbar.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdf" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf cd %BUILDDIR%/.. echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdfja" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf-ja cd %BUILDDIR%/.. echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "texinfo" ( %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo if errorlevel 1 exit /b 1 echo. echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. goto end ) if "%1" == "gettext" ( %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale if errorlevel 1 exit /b 1 echo. echo.Build finished. The message catalogs are in %BUILDDIR%/locale. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) if "%1" == "xml" ( %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml if errorlevel 1 exit /b 1 echo. echo.Build finished. The XML files are in %BUILDDIR%/xml. goto end ) if "%1" == "pseudoxml" ( %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml if errorlevel 1 exit /b 1 echo. echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. goto end ) :end django-debug-toolbar-1.9.1/docs/panels.rst000066400000000000000000000237121320306665300204650ustar00rootroot00000000000000Panels ====== The Django Debug Toolbar ships with a series of built-in panels. In addition, several third-party panels are available. Default built-in panels ----------------------- The following panels are enabled by default. Version ~~~~~~~ Path: ``debug_toolbar.panels.versions.VersionsPanel`` Shows versions of Python, Django, and installed apps if possible. Timer ~~~~~ Path: ``debug_toolbar.panels.timer.TimerPanel`` Request timer. Settings ~~~~~~~~ Path: ``debug_toolbar.panels.settings.SettingsPanel`` A list of settings in settings.py. Headers ~~~~~~~ Path: ``debug_toolbar.panels.headers.HeadersPanel`` This panels shows the HTTP request and response headers, as well as a selection of values from the WSGI environment. Note that headers set by middleware placed before the debug toolbar middleware in ``MIDDLEWARE_CLASSES`` won't be visible in the panel. The WSGI server itself may also add response headers such as ``Date`` and ``Server``. Request ~~~~~~~ Path: ``debug_toolbar.panels.request.RequestPanel`` GET/POST/cookie/session variable display. SQL ~~~ Path: ``debug_toolbar.panels.sql.SQLPanel`` SQL queries including time to execute and links to EXPLAIN each query. Template ~~~~~~~~ Path: ``debug_toolbar.panels.templates.TemplatesPanel`` Templates and context used, and their template paths. Static files ~~~~~~~~~~~~ Path: ``debug_toolbar.panels.staticfiles.StaticFilesPanel`` Used static files and their locations (via the staticfiles finders). Cache ~~~~~ Path: ``debug_toolbar.panels.cache.CachePanel`` Cache queries. Is incompatible with Django's per-site caching. Signal ~~~~~~ Path: ``debug_toolbar.panels.signals.SignalsPanel`` List of signals, their args and receivers. Logging ~~~~~~~ Path: ``debug_toolbar.panels.logging.LoggingPanel`` Logging output via Python's built-in :mod:`logging` module. Redirects ~~~~~~~~~ Path: ``debug_toolbar.panels.redirects.RedirectsPanel`` When this panel is enabled, the debug toolbar will show an intermediate page upon redirect so you can view any debug information prior to redirecting. This page will provide a link to the redirect destination you can follow when ready. Since this behavior is annoying when you aren't debugging a redirect, this panel is included but inactive by default. You can activate it by default with the ``DISABLE_PANELS`` configuration option. Non-default built-in panels --------------------------- The following panels are disabled by default. You must add them to the ``DEBUG_TOOLBAR_PANELS`` setting to enable them. .. _profiling-panel: Profiling ~~~~~~~~~ Path: ``debug_toolbar.panels.profiling.ProfilingPanel`` Profiling information for the processing of the request. If the ``debug_toolbar.middleware.DebugToolbarMiddleware`` is first in ``MIDDLEWARE_CLASSES`` then the other middlewares' ``process_view`` methods will not be executed. This is because ``ProfilingPanel.process_view`` will return a ``HttpResponse`` which causes the other middlewares' ``process_view`` methods to be skipped. Note that the quick setup creates this situation, as it inserts ``DebugToolbarMiddleware`` first in ``MIDDLEWARE_CLASSES``. If you run into this issues, then you should either disable the ``ProfilingPanel`` or move ``DebugToolbarMiddleware`` to the end of ``MIDDLEWARE_CLASSES``. If you do the latter, then the debug toolbar won't track the execution of other middleware. Third-party panels ------------------ .. note:: Third-party panels aren't officially supported! The authors of the Django Debug Toolbar maintain a list of third-party panels, but they can't vouch for the quality of each of them. Please report bugs to their authors. If you'd like to add a panel to this list, please submit a pull request! Flamegraph ~~~~~~~~~~ URL: https://github.com/23andMe/djdt-flamegraph Path: ``djdt_flamegraph.FlamegraphPanel`` Generates a flame graph from your current request. Haystack ~~~~~~~~ URL: https://github.com/streeter/django-haystack-panel Path: ``haystack_panel.panel.HaystackDebugPanel`` See queries made by your Haystack_ backends. .. _Haystack: http://haystacksearch.org/ HTML Tidy/Validator ~~~~~~~~~~~~~~~~~~~ URL: https://github.com/joymax/django-dtpanel-htmltidy Path: ``debug_toolbar_htmltidy.panels.HTMLTidyDebugPanel`` HTML Tidy or HTML Validator is a custom panel that validates your HTML and displays warnings and errors. Inspector ~~~~~~~~~ URL: https://github.com/santiagobasulto/debug-inspector-panel Path: ``inspector_panel.panels.inspector.InspectorPanel`` Retrieves and displays information you specify using the ``debug`` statement. Inspector panel also logs to the console by default, but may be instructed not to. Line Profiler ~~~~~~~~~~~~~ URL: https://github.com/dmclain/django-debug-toolbar-line-profiler Path: ``debug_toolbar_line_profiler.panel.ProfilingPanel`` This package provides a profiling panel that incorporates output from line_profiler_. .. _line_profiler: https://github.com/rkern/line_profiler Memcache ~~~~~~~~ URL: https://github.com/ross/memcache-debug-panel Path: ``memcache_toolbar.panels.memcache.MemcachePanel`` or ``memcache_toolbar.panels.pylibmc.PylibmcPanel`` This panel tracks memcached usage. It currently supports both the pylibmc and memcache libraries. MongoDB ~~~~~~~ URL: https://github.com/hmarr/django-debug-toolbar-mongo Path: ``debug_toolbar_mongo.panel.MongoDebugPanel`` Adds MongoDB debugging information. Neo4j ~~~~~ URL: https://github.com/robinedwards/django-debug-toolbar-neo4j-panel Path: ``neo4j_panel.Neo4jPanel`` Trace neo4j rest API calls in your django application, this also works for neo4django and neo4jrestclient, support for py2neo is on its way. Pympler ~~~~~~~ URL: https://pythonhosted.org/Pympler/django.html Path: ``pympler.panels.MemoryPanel`` Shows process memory information (virtual size, resident set size) and model instances for the current request. Request History ~~~~~~~~~~~~~~~ URL: https://github.com/djsutho/django-debug-toolbar-request-history Path: ``ddt_request_history.panels.request_history.RequestHistoryPanel`` Switch between requests to view their stats. Also adds support for viewing stats for ajax requests. Sites ~~~~~ URL: https://github.com/elvard/django-sites-toolbar Path: ``sites_toolbar.panels.SitesDebugPanel`` Browse Sites registered in ``django.contrib.sites`` and switch between them. Useful to debug project when you use `django-dynamicsites `_ which sets SITE_ID dynamically. Template Profiler ~~~~~~~~~~~~~~~~~ URL: https://github.com/node13h/django-debug-toolbar-template-profiler Path: ``template_profiler_panel.panels.template.TemplateProfilerPanel`` Shows template render call duration and distribution on the timeline. Lightweight. Compatible with WSGI servers which reuse threads for multiple requests (Werkzeug). Template Timings ~~~~~~~~~~~~~~~~ URL: https://github.com/orf/django-debug-toolbar-template-timings Path: ``template_timings_panel.panels.TemplateTimings.TemplateTimings`` Displays template rendering times for your Django application. User ~~~~ URL: https://github.com/playfire/django-debug-toolbar-user-panel Path: ``debug_toolbar_user_panel.panels.UserPanel`` Easily switch between logged in users, see properties of current user. VCS Info ~~~~~~~~ URL: https://github.com/giginet/django-debug-toolbar-vcs-info Path: ``vcs_info_panel.panels.GitInfoPanel`` Displays VCS status (revision, branch, latest commit log and more) of your Django application. uWSGI Stats ~~~~~~~~~~~ URL: https://github.com/unbit/django-uwsgi Path: ``django_uwsgi.panels.UwsgiPanel`` Displays uWSGI stats (workers, applications, spooler jobs and more). API for third-party panels -------------------------- Third-party panels must subclass :class:`~debug_toolbar.panels.Panel`, according to the public API described below. Unless noted otherwise, all methods are optional. Panels can ship their own templates, static files and views. All views should be decorated with ``debug_toolbar.decorators.require_show_toolbar`` to prevent unauthorized access. There is no public CSS API at this time. .. autoclass:: debug_toolbar.panels.Panel(*args, **kwargs) .. autoattribute:: debug_toolbar.panels.Panel.nav_title .. autoattribute:: debug_toolbar.panels.Panel.nav_subtitle .. autoattribute:: debug_toolbar.panels.Panel.has_content .. autoattribute:: debug_toolbar.panels.Panel.title .. autoattribute:: debug_toolbar.panels.Panel.template .. autoattribute:: debug_toolbar.panels.Panel.content .. automethod:: debug_toolbar.panels.Panel.get_urls .. automethod:: debug_toolbar.panels.Panel.enable_instrumentation .. automethod:: debug_toolbar.panels.Panel.disable_instrumentation .. automethod:: debug_toolbar.panels.Panel.record_stats .. automethod:: debug_toolbar.panels.Panel.get_stats .. automethod:: debug_toolbar.panels.Panel.process_request .. automethod:: debug_toolbar.panels.Panel.process_view .. automethod:: debug_toolbar.panels.Panel.process_response .. automethod:: debug_toolbar.panels.Panel.generate_stats .. _javascript-api: JavaScript API ~~~~~~~~~~~~~~ Panel templates should include any JavaScript files they need. There are a few common methods available, as well as the toolbar's version of jQuery. .. js:function:: djdt.close Triggers the event to close any active panels. .. js:function:: djdt.cookie.get This is a helper function to fetch values stored in the cookies. :param string key: The key for the value to be fetched. .. js:function:: djdt.cookie.set This is a helper function to set a value stored in the cookies. :param string key: The key to be used. :param string value: The value to be set. :param Object options: The options for the value to be set. It should contain the properties ``expires`` and ``path``. .. js:function:: djdt.hide_toolbar Closes any panels and hides the toolbar. .. js:function:: djdt.jQuery This is the toolbar's version of jQuery. .. js:function:: djdt.show_toolbar Shows the toolbar. django-debug-toolbar-1.9.1/docs/tips.rst000066400000000000000000000076251320306665300201670ustar00rootroot00000000000000Tips ==== The toolbar isn't displayed! ---------------------------- The Debug Toolbar will only display when ``DEBUG = True`` in your project's settings. It will also only display if the mimetype of the response is either ``text/html`` or ``application/xhtml+xml`` and contains a closing ```` tag. Be aware of middleware ordering and other middleware that may intercept requests and return responses. Putting the debug toolbar middleware *after* the Flatpage middleware, for example, means the toolbar will not show up on flatpages. Middleware isn't working correctly ---------------------------------- Using the Debug Toolbar in its default configuration and with the profiling panel will cause middlewares after ``debug_toolbar.middleware.DebugToolbarMiddleware`` to not execute their ``process_view`` functions. This can be resolved by disabling the profiling panel or moving the ``DebugToolbarMiddleware`` to the end of ``MIDDLEWARE_CLASSES``. Read more about it at :ref:`ProfilingPanel ` Using the toolbar offline ------------------------- The Debug Toolbar loads the jQuery_ library from the Google Hosted Libraries CDN. Your browser will keep it in cache, allowing you to use the toolbar even if you disconnect from the Internet temporarily. If you want to use the Debug Toolbar without an Internet connection at all, or if you refuse to depend on Google's services, look at the ``JQUERY_URL`` configuration option. .. _jQuery: https://jquery.com/ Performance considerations -------------------------- The Debug Toolbar is designed to introduce as little overhead as possible in the rendering of pages. However, depending on your project, the overhead may become noticeable. In extreme cases, it can make development impractical. Here's a breakdown of the performance issues you can run into and their solutions. Problems ~~~~~~~~ The Debug Toolbar works in two phases. First, it gathers data while Django handles a request and stores this data in memory. Second, when you open a panel in the browser, it fetches the data on the server and displays it. If you're seeing excessive CPU or memory consumption while browsing your site, you must optimize the "gathering" phase. If displaying a panel is slow, you must optimize the "rendering" phase. Culprits ~~~~~~~~ The SQL panel may be the culprit if your view performs many SQL queries. You should attempt to minimize the number of SQL queries, but this isn't always possible, for instance if you're using a CMS and have disabled caching for development. The cache panel is very similar to the SQL panel, except it isn't always a bad practice to make many cache queries in a view. The template panel becomes slow if your views or context processors return large contexts and your templates have complex inheritance or inclusion schemes. Solutions ~~~~~~~~~ If the "gathering" phase is too slow, you can disable problematic panels temporarily by deselecting the checkbox at the top right of each panel. That change will apply to the next request. If you don't use some panels at all, you can remove them permanently by customizing the ``DEBUG_TOOLBAR_PANELS`` setting. By default, data gathered during the last 10 requests is kept in memory. This allows you to use the toolbar on a page even if you have browsed to a few other pages since you first loaded that page. You can reduce memory consumption by setting the ``RESULTS_CACHE_SIZE`` configuration option to a lower value. At worst, the toolbar will tell you that the data you're looking for isn't available anymore. If the "rendering" phase is too slow, refrain from clicking on problematic panels :) Or reduce the amount of data gathered and rendered by these panels by disabling some configuration options that are enabled by default: - ``ENABLE_STACKTRACES`` for the SQL and cache panels, - ``SHOW_TEMPLATE_CONTEXT`` for the template panel. Also, check ``SKIP_TEMPLATE_PREFIXES`` when you're using template-based form widgets. django-debug-toolbar-1.9.1/example/000077500000000000000000000000001320306665300171475ustar00rootroot00000000000000django-debug-toolbar-1.9.1/example/README.rst000066400000000000000000000014331320306665300206370ustar00rootroot00000000000000README ====== About ----- This sample project demonstrates how to use the debug toolbar. It is designed to run under the latest stable version of Django. It also provides a few test pages to ensure the debug toolbar doesn't interfere with common JavaScript frameworks. How to ------ The test project requires a working installation of Django:: $ pip install Django The following commands must be run from the root directory of a checkout of the debug toolbar, ie. the directory that contains ``example/``. Before running the example for the first time, you must create a database:: $ PYTHONPATH=. django-admin migrate --settings=example.settings Then you can use the following command to run the example:: $ PYTHONPATH=. django-admin runserver --settings=example.settings django-debug-toolbar-1.9.1/example/__init__.py000066400000000000000000000000001320306665300212460ustar00rootroot00000000000000django-debug-toolbar-1.9.1/example/django-debug-toolbar.png000066400000000000000000005153201320306665300236510ustar00rootroot00000000000000PNG  IHDR ؈bKGD pHYs%%IR$tIME ;/ ]IDATx]xGBqwwkqwO @pmW/;$Pڡivw|{fI"E6lx޽{a=zsW<<܏:10\Ц5WڕPj㋫WbCb-////////ߐ?_3G9sf$NNN޽m&^\sTSRRRRRRRRRRx8 "߹s u)L6u0 -gNwm{]/^>'V6zmOLSF|?\[?>~T f%x+5;?DOB}!/ߔ?ѣGqA:tHjJC0<Ĭk. G-J肹 syI{S~[cVX9_3/wgG)[\n`%< :Oj 0xn#~fS癘8̥K+'T~Bu3\^6LJ"Dڽ} sqR"1Ʃ'`rQic[{DwLz눈-Hѝ8yLQQFDX.;gs?op|u0D~_?+Mɓ'd,[,VXZP0IPPCm*(ŋX٪Tp_󳕭886vl3R .{!n_3s[=72~K`8Q`q軤 耫'1=BWz}1+sqS7sS_ۏmcb!_?+ yk6m݊%fb$Z 6QZAC|\0U-4_Ȉ88qg 2Բw [׮kgA̵3*ŐVO^Lݚ>ر ƱiE=DX3=j׮ykON]S?k먞iB?`q1ӎFg#1w`Lɠj|VNmjaИ7w&VMj_0{6 [܆ㆇ_,V"u[tvM%$+8 u0t߻86b9FfQfںi&LLB}靫6#T_M~x:^{{R>=YسgO+ Jz~X}uys":4Nj1CQ}hgZ8AIFXXnCޖxqs$^NoF5?0slzB] KlPB[ `]YcmM4Zyh ׫Cbjې2m͵'!$6 xFyVmz]6OIX8%طGNPH1MaƏ1~U*u08~8 S{ѨfWm>b&oepC\6g^fu qv73'Q8yz?IԷ#xq8a~%2ٿo?No vsvk9¢ȗ*f-ۡKN{lݼBdqCEvС-!VWhۮ%:v끖-[[)p lZ1 ԨZuSNX}Bqxji :uFдy;y7wh?vDazԣ?:iM7ƪHQp~}tDۢ~&XC tmzWh֬)֩3—-Ѣq#]vDVкmO\% g зK[Z5E~`3Tc)2 $iM а~=l"CNhegɲ%5jb{-% ilpC5o[uKwP~ᅯKBڵkk.AҩSݻAs$$!:"3ΚU^֯7NЌ5a xW,aKѡ(匽wyI<>\oWW]g滼E3 p7=w)nMf|i؝ӱqC1{chФzl%46)~=J˳NTkᗺ-v[8q,<}ұ1zAFulJkcpc~ӞDи>z {mpzarBLʹq߀d TPXa p3aЎQVr0{.԰$"tV"Z4i'" P^&x;<AgTXcYCO  Ƣfؼ<}qjF4] S?|t6ZɩglF_jc*Ǔ\ :~ap&bioagl9a##g`m`hvGEcI]9LxuԮڢ]L6/Dѱ`֠nͪhв;<і1'/3 DގĩM P7ZʩhK.P?jm-;"ܹ+^*]v ;vBɗBooG,2 ދ׭Zu# 4]u&S"(TQo" gR~+xmO|ڮ+o!p\NB˾:5+CW, $0'@t]ts$VP1tERF\b M^_Ppzi>5:\}k3W7~3{seW W?v8ک )#=:BuR>_L> Ag%R CUk`Tԭ]7D+FuhÅ_UqW*qgK{I!;%;ΊNG09j.Za!3q?a04kْU1BaN&du-CǞeay\0w 4UEKWcʕjFVP7l+#LlŒg+jƬa0hb*+B̼Md~l9nk=RC}1bmuI[J4G=u.pnt6|o2)؄>=[aFFNg`8cihܨ# xLV[O"iVz!Z5 uъfb̠kZ pR@7#Jb&%g0^JeŴ*)E`i1x=|fC5CPy/ZՊ;~b+ͺ7ƣD1Wst>^A &#irkꢭ2"Qy|0cx45.AB1V!yW'_jWK6D!d79C63s w筘`*>-r%?u'M8Ow[#ҟX[z/=@aOw |X BޱEpٜKiu[m\sk^i.^yWB}׾Қ)}b)L cU!ﻄ3ۖ>)?= 1~~3qHNM-ENv8uD 6ۤ5+Ff:0[c#V.}o z`Y DZ[з{'#ӡ^Nݥ)1'Ѯ={^!0%fXB&T]/uz`.,@ê RجUR g"5ׂ "d8IJ4~5m\ԁJ.o6) ]{njѥuCt6 H2h!3?Lf-Ju7"4#CVB)=MJf`kМV>:t鎉'@;u| B㌓0RMA fѪA6-ࠕ(ù\ߊf'R)6-; [VDG21n&z aY%3iQ_/ost 6mMXRL}0xRzӪ1}6i%h+F+KHoa$n 2~t军 .FV ڱqWΌw00QggLOƤцvsxh7Ksxb^1m.ơ +d`o$J8kQb,; Fo%I+-?aܹ֭@1[ 1~s$nz4FiE֢17u~n+ܸoN騡Fv-i …`<o1?1xb RmJL_l"?g.t}&d!=SLuSC)G'?3~2WWtZs;Kk_4z^?v:!`b:^ޏcøz|+ьMʎ2˘.LʪM"ݲJ<6G>c=VQb%{X0LU6pZ;ٞCNdNe{Cv "n:D=~B14m$"͛ 'RW>FtŐKJkM˿1)^1)ʢtmE}س@::D˛3 >XI6M;Eat  "02ھt:Z4&|^4xqQY>jdhVketmf/լX3#餀Of\y:EJhK2c%԰Jr!7Z۰94pva b{mZ5ô;.JМ`ř Yм(8f04oBg=ƐO7T_ѩI#XJ21y2DDLiW҂1Px %8P])c F{G)QpvH{-]ي-T'j.C;P~_~t+ނ頕.|R~b|=TEJ&hDk+C_K͛7cҥXzvBd37 &4zўxxx<^X7p<OW.ūy:rO׬A81llRDZeNX.K'#'ߦ4zpr 4'qVವ .žC'DDZ4oIqOeW/H)791v'gWЕL;оѺX; )/ۿn~U=a:0iar&Caq[1{$P΃DZwZtj%ws"}!ƄAp>ФU̜3ciEh٦8x fWED5m؁k68wu>~qWpͰ"tP(-̊Nn^,H⍻qvسk;OA0n)b1:1gZhݼFM_3O`聨KN 6!/0t_GW0 քL@ УSk#DCvkJc`ڭ5lY3i۰hB|x Ȅepsl 2 Ӭ}뗠wtḲ4Ct h׮'wE3gOBNгg/0wv/ D(gxs`wݨ:wnWgehغ<{ztl]oW5ufbm>pݸ|:z E+ gO>uVEЪ̾1j0;Gma`bMKgѣgSWZtb#t t\޽p⚓Psb"3Ţu:@8ٜ45^:IJ/٫7S|?8/ɟ}Ax#L.ajRP=1+˖ 9]YH\36|Y!XM̛lr[4<~iv_' k~at|ϕږP:'0W_sKl⓿ڲ|?&S_? '\j+WA"UH# ܠDg7ڷO(^|Aoܠ qeE>#8dʎAh(>lMܴw8/.ۏǥ/]qVEo;= h;v:Hs?m u]EyH|<=Dׯߠ<}oF܏\g{j~? o u ^-Cxpیe3q<II|tW喻Xpo'7Lr!cB{8f/Ah׸+I/oԶ ^p❊C.ݤv;:NYDd'OZeE;yP"76ӊ99}ZjddPi YΎt]D1s ]]pMx2dutbL>0G~cLƵ C6ɀŗΞIo[B> aƳ{M7vy)CLxT& ?Ύ̉?s$O=5x''?Nc@' v4My{kFg*P0 Z䧩:]Bm^k_?JZz}NE/ _L⯿)_uޱfo7߱fYTuΤVN]Mҫ?б{4)_OcUL3An?4~>M;Oɭ9ɡvEOhڵǪ퇉Pu ;\hW_g,ʹﺗ#f"4n>=|Dx\ƌ2zb' \3гS;>W= P~,'wOoQW%/WffwF[?QPQTV Pkw6nϓHL|`A P$F<ѫf S4?Ju||y)eyœXso/Oxy|ǰ[ޞmsB,_t:|ͫغ~ )Zp!֑[kʟWs2ozQ8Q?s$R WDx+ak-ak5 |⋧|aJ[ﯹx S;}Wj.A]Oƕ#1bג|HlI(}&7 &o__(;>jPIL}+$qppxLD vЫF/gJ8zy'|m'kj˗\z%?MPSOԦRRK"xO'?)OϿO,KKK9=T%LʵRhôz1/eWi秴AGϴHi.v(/9v |,U?O?O?!cNzc[JnwBi0seO|uoǶW;5'i>E;6KKKKK}򷷷M%x 9<$d$js%LOWyG]:j+[O꣗/c<4J] {mje_2_|3wbOBcRkNڼ뤕cD~k Ϋ&PҨӒQs\^Z =қ/owPCNk/NzRRs}Ol$T~|}KKKKKy$?%PKh666X|؃q8N}m.u:sڲԃG/s6_6u|e&mrVڢ}nNNR_VVV=%XCh1f+)vZ,{ gp^ 8o܄9⢍o.i^|mKL^9G;QXbP_i;a.z41S____˓7&~S%@e{/mڴIV6l *z׉ 9smԦsLJ- 3KrOϒ83YG>6“'OK<Ϟ= />{'= cǎZU([ԛoL<&Q>zʇ>6ӪWO`*e+땩V_b^r1W7kuޛKg.^+~/(Wզ^+jS0O^|ÕzuLmxکhRCIzjk}~&////ʟnϒ 3dp)\2׼+%̩i8-qxc+;1uѳƸ\xq(}Qj%8VTqLc8&~WX!v/x$2+Zs3Gj)֭[q19(++*ZVrSN.7|[mz^F68z?JhL6/1m^⃔%³$43g:o|rE`eC1/YN6Uⴜ<(yjq;Q]xܿ [!棁 0iP>&)Ν[*zvuzϔ7C}jUںi>SQ蕥:u:/squV?vG[7u=ڮWp)))))/_\! =W SҥK$g5X`?3ji9h<bH.(_,WWqa" :9Ug1{'MX!{ 5խ6sz=SmQQM(\"\;|2Ka&oӳhUr2'Ҵ|0%]ЩcGth:t@~zAG'@<2i>xh>:u]{&xK=^|MQ1cU%brYa|Շ?jh?zqy+qseG$22>6k\_J:uy*2&////e˟qIJ#y=\d8w $ 13*[6CtT&idRM1m27=EF#88Q4,;aާ~H8e%.‰0MqoUhӦ=vש1}6{xa"0ԃ(3єwT|1w7~ac. As7lrp0I AdLM{@h+vLp^a" GhSxhXhcB%\28D #s1wa" нckϒ)RG߉ ϛ0aḣbQhӺ!DD`צ7p) Х]s4i~G+O:5Dێ]0lX 2[CO15/0tMP#A s:@eEP=C+a!f.cxg0jPl{a:m)ȇˀ~1:  7eiWm\v͛iv0pz]l(-"JG дE)RLW'~^hحh͚5(>lF&M$su^L6>}Z|oU?ʽ:L^ZrWl^OK^X|]2㫫^Yz}O|rO____˗?s$m" ΄a…b#e&]N kB+YMNi9(}Iʩ=$HS96Nf{l dNbjoH*XL3a17NlӍJ6S7Aߣ| 1 CвFY|4j4BlmcFcX/JG+{أE(Ѩ'|CoH}RT SIKa;5n=F.AZˈ$BVqPDyho_5 )#ehжoT)R◎aW-Ȗi̇,%y~:AdΘɒ@ P27Mfm;7L 'MØ!]!E245!!N}$IdΖkUEj"2tG`(v,)C50OȐ ~{iGW!6so\ڃuƭ`A|aWC(Ø B65?bAzBR4M[pxP. (W& ?f-oɭȔCAQh~$65-:[vhRR͊D$T+Riϗ; aU (@#G> C #L5՛Rݑ0 |4OP(|58Q?S*<ϕ\X|ϴ?hzaJZkuz%:]^K_);1yjigN)Г2A%////_'O>Wv=b V8"##ڟYNNî rǢIHKoMbe;ޅoѱ(ܲBZg" /`q/@ɬ鐭H\u0Xy }ddNw"0WSad0hY&=J7 H7Zb# p9N= hS>g. GȔ'& NWP9SZiAfЋNKqѢt>hW]*JiHM2  a}b`}!E0d~{y#X` a|Hnl$i Y~qP9;_ˊH&#1Kx吿F'8 u{_%vu8azS}g`Akߐ̖ġ5DR删zk҄dE!H4 t ! |kF$.zZۗ Y[omG툯Ճ^?(͵G\____˕?M=OBf0i8p@(|BPf +r O 'UN<A߽ ЪVy|CŠޭLwᒥкM+ԯWM ‡Fm'^pF s&mkN٧ez?7ud 89yTHdUYRzË싾-*:zAPב= }W!PK{Ca{Hp kGРA==)ٽC+CE3a Kz4*M+AepnchF3rho2@_CL{#n'`(Ț:0P[B|ѮN|gl:i냫a1t\/ЏQS0 8w0TYh"Itp޿x0~~V V|.qUg07Bw'=I=\P_^g0nIO`G@B+|τ *͓MQVaOe3e)A W)ϵyPWڢmyiC ujT[Gs}d=zeK/ԃ+~&x?Wv|OoTYPaR<$fVS9IBCp^>bHE&$z1}oвy ή-94dsqTˑirb/"advbhw,5?,CUu YX1l_0S|K|Oxɓ!ӤRq|G,wWdXsROb+vPHZmp+7.*=}*8aJ6PH2)vBu Ś}ܤh>`*<|Ge#CqP" G֌@dߣeOp5!hOM$Nd(v؎̂KQu(c3R٬]4lB_?Vp=0Npq!uPbk{0$qRCjm4VUȬijlhEQϱ8s(-$R:R}JM  ![(ָ7\h pwu-O_q'g'{_Oи  ]P~gϞ-7ݒVK= avVIaU} G".KP>i_GZW_{W3m2?|S[m8CI'%GQ[ S~^kۣ7si{!^\HB?/XH 6O܀Oh5&Z=#NNiUaTm۴DB)gwލӧPY`e_{{{ V *yEvm\~}gO;8p <+M;`̱߿? %݂ISh1C'xjDXab[Ć DU[w?(n^4̢ĮCǰit,ݴ Q#Dșk8XJ+b-p~!`w8Ǝc㪣;Bpp#}g(Vm< V cr]oZa1OCGÑ7p6vC  ; [9H|X;(C  ]/Vi,xo(oƒǤүׁ*6*튋 q!mhW9 Ai lɊ5޺6g#qy s3u0 4mPPh;םg/_ի[h^:R%Oj-+7rշ6~Eh;nX;olt$mK3-WeȈiܳ9~[BcI7?>WcԷڶWӬirʹѭKgk ڝl@k\? 3WWWL8Qi+D| P?kj(G%O|hU+㲟J|m{l^)GF5+yô}O_g:kF[:osJ2\n׷ھ wIv~zP0aSX񷷷 0(帜3i6]|8GjPG <+;F|^i`v 1(VSxULG׼*HKpSyWgg_&(a|=|9::_^Y9strPGg:)e+ϕj룾WWگ[/NJmRH9+(u׶[)GOrPJjW/////uȟB~38aN^kY)ʈ޽J;_{٦/~>|e~(`w۷/5<W)i\s^nF]^~ | uiI[ %_ں(R-S[u>_W2ղdheKOھTM____˖?پ}$/ bO`1\賳Ŀ^ݻwoggueg3ϔ| /߫93YzܸqbKW:^FQCy_FJ\%RwsqqS>y*לN_azr1OzrPRզ^뮕:+m&]EcǾ:u6 i+򒐐*>v8q0C4U0<>LiӦ BQ6E0MӦM38LMt\.K$&ߏ)?i?.Կԟ.i 󪫄Dl̘1_$v;n4trT:{'FƀnIHH|U9oJ0lM>>/˓G^bGG:VBBBΞ;"ɓ/|;|j8{ 2Xw7@2Q\ ."gVDqwϣDRȐ5;2f!!! {N~/$aoDJ/M RN# 各ABBBBBBBI$$$aABB I$$$aI$$$a䀶rvƻ?]+x冗 5?0A I$$$$$$$x}q#oܽGE" k~arN+ $ V=S1 FhhBBarNy|ABB جoHHY`'<%aABBBBBB+!<})LBC'  yq$ ZyKg9i%)/^.*HYI ,<~M> XX(#**oƽ{qKy>~7I$$τ~_]8ubnMɕ?'B9tgO.Ć cjXl:6#(,^s4#>Ȩx goA9ܾ{~E28{-pud/]7I>HH|fHOx f<|x/_7o;|8p\S<$ 9!kvLzY",c1[HH|+ѳMYd˜?HoIB)~YgA^p>pז_ȕ=R`#I$6iRN9- ǐn8B%v7֘12eJVkn@۲ BfӘկ>rd̀tiS²fs?*U9 G+I}sfWo'ABtp~]i0ܿ->?8pZm~\Ƌ>#?DDѡ` sƐ5cШ1hѰȋjͺb(]̂s!s@1l*dY_Ͽ08l/V('OE QӪQ8gɿVeȒkl‘#PۤH! +_~)s }Lgbvd*" `D"rxMDT/DArݡ"?fɌJm:"2튻Q:k*:.Կױw`4nXL‹7_ !rɈ> lbC}&^G8 <> \&oQ\i-Ji,i\D='6Bμ G2`\uP5Wn-V.ymR^?gg~T:ӟYH9r֍=O^dϕGՓU)g!yO]AH~Z~J)(W/RNODx Y1hP\wه5EZ}h_iS|c(+_1?dY0R"087˲=0|lOBrߓ/s5}p/E[d( ?< Ԇ8~WfJg%ݐb,[|?Nk aD0dc 茆2?, EF0n.EnR4; m6 EѸfJYIe%PwEaD*d D1k6f4W$ܟ$BFʗr:37[X"DPr' LoĜ+iMeGlpn@[uDh e:,?<0ZVm ?ݛy٤zq'5BjEvmq3aP;:k]L z=~GUNuѩ91`w~t]Y;M3-%t5wIdo'ql̝ Fdq/gS?; SI? M<މ1#;+8.>G%$>3A&EJWq֧| DGJef&MT8nvYΖ;r#Yȃpxyr0 C3\$G4"P2P43 ,;zL{)" yr@ѦC{2_* LdTIkL5ӧLD6hwrL"`i:cE-EfϝfьxJdVLf{<1M6 gcu~_6!ȓO(OJ|󼱟=<6#]GV%XOyf/'|bꚧɨY HAț/~E!"p!yc=e6*>7G80y*yW B a%#Ls̏,gyFHF&V-5^6iUcxgR xt}+?m@Vj,ctip6<q 7`T'N,>yC cpYe]1~Rol޻w.sU7he%N[ȇlY358;lU-Jqw#Ж 2; 3|uSWI*nX/4K;=F Fr"uH@A}ӭQ*pz8+rd_{ΙwoKg°m1pP'.m?nj?!ψW1l4u =Jjuq]1v\7\? IqtNue:eH&ڧƧlW`DmК { ?g.vx}L'`bZ67_(8v@`1a|=X6{cѕ~| ر>xHpv5-&<_p1M%sC쯶_B]Ю.2!!^sm8O*3{/tyR dKBaI+p) (+xrKCap'*Q\1uB<Zy /as~7W+N (hXZ b1o^ȅEXT "%PX1ȕ8{m+dJgIiT9Ly,\&pOvR RFϕlB)˜/`ni,2]ɗOū+(L eyH.4EAA8NJ 3*`ai*P&"R3wn3R0/ 0Lc;  `A'ʆ~Ysƫ$9YNsVpaѾovOߥHE;6O-Pkp x1潹1] J~Ƃq3R"~d]`{h2|1dLêg' dn4Nn,S'3^C: |'زHl1klC|]RESXᵻIqm5 yw%5s|jM^Do{+Lgjfsd9 &R*h۫}LϛfzFA}gfL^0 kXmh־. wߚ’~U;ST\p7pfN&DŽѮ~`D--Sj|&!)>SGo7Tٱ|P4@5&HF?g˃{{bRt?{)͑UYRDݖmx/b)c/1}L~c|[T O^/쯴_BX ;V睐ٳXJ|Ϟ{ cib,_)++Y߸Eؾ~9WFZ]k4UNX"O)KBϕW |&%۠jPC"+y R_RV6>ȀPY89V y\m \_L 䡐P@dSfIg͊B g12ґG䙟 E=i=I%e?\9͑Fy Z>jGʤԧKwׄVLUZĽŴ#ͷQ6jjGִ>-+F_ך)M56G#[!ڔg3edC `8+jV,id¡>PAYN-J!]JBr StHSwװvq{@ZiEg(ZTw+IHVh~Jp'u4hԶ&N~=!㏆49hUcej$)~Hɒ@"43tF s0f?wEJL e0/15-l_I+)}W/!5Gb'/_QyѣGbܿ_$aՇ: /8@sٟ\a^<)H7/#  3gI V ZRFάDBYH8AJI?y?^ Dx qU axwsd?;mRE#S(R ]ZaֲjWo~Ƕy/_~1_Aw8=@x (Mv %+;q&Zwj)J*)rޅ3- 3z3*j&ꁢ2 `e6?) ^0P,xr@(|(QΕ7qR<[X0I0(yRfF`Ɍ Kю*VG+yug 2aV8bavi C|y# L塬 _LK?ߘf%J/>a񰾾w/Mpblý!gTBQ;abH*gѯq "VxԔwhСZI#B~弆Ť?0Ï4ߑvTcSWqǗ}1ʦ׏o\vvǏ09P?cR% /=̍CΖ2 0Λ;a&& fI,r6p_R{퉾~=ћV/lG|&I1G:G#1gCa:$űogK$_šp\rhW]Qd$h_a<"ҲqsPLQa`S6}Ჳo2/y3IR\ߤ1妴y 47"X2>mNʯ͊W X.@3& 쏠G,T!*G8=,9 ͝'y='f&j2w> L*B0C0Br|9, "}b- iӧe>~<pz!SB):eQH֮I~s{lV`f_8Oi0J SV5x֨7V{ 5 RvL=}fI_:-飣1GR@1_Řqq7>ȍ3,0TRl689 C a(b0p<x"h %)˖u2yXωA31GjE۪ah[+O9ss0z@v\% <¨q)V ^# 6'y܂Ν9N~;r(z" gnga{j;ʗ.*fL7$1QP8f5$rƺVlĦBp̾\12+2+H4*XR6&aE=qm>q"$2`= AE\sB%gsNʊHv#Īs+L"PR"wJI<2&Z.ZaPMʰ?8[Xj2%"c4*oQF587y6Df$0V'b3q2w,aP{uNjwq1DAMK:7O' O8zXLA ""BNq 7/E<"EZ,>=fv$ V~EٙJ׀ 9UVd]S)԰9mf?;AM gӤA-az$3+U%b[U0! q?.bH" z<:*٫73(je ucԘksl &1~Ӡ퐿P,Zhe%?o.it$YoaFD9 đ]kТHyoKhӢP(QM3?+N1zۇ*AϪ{ &*gjW *3PfG悪PGf C?!i [ӳ^>39b"s@beD15R$ 0RsT D5CyNz[ f߽NFR9μߢQ4{h(%A>z$*&0<'߇ 3MiiӇɓRG13o*eSS~2ax>WgtߋRO̙3~T!2eLKV3636gv4UTڰCQS:M*csrM-cҙY#v2HNʕŰp.NI0@j?3xT2p8+RqjR^ا>4vh/~aP7 :/[~cDg C8;ybjaxkQc/[ :n3$\5>'?ík$ M 2J000O>L2B7(F{vrXgƟ> c(x&Iʷs9 u˖5+y ]&۪&6vz ʣՈ~ ׎/oQ zZhf1bglB2t0\0d!Π,95 2-/ &M hXrjW,i:AYAb([73I3 [>θmq[WnʊzOuY53kߴhsL{lL] 1̓7O[6,z*N!onf$6(VϷ6p]'f Jێ: -d/_TQ)Q<+ި)i>fx˳%-+0b<*3nJ LʇԧɄ0V?NNtu8[~{[XK814c8yp! Ŷi}CZclryȜ!-ۀ~&NV kڂ2=Lۥ4㣐ax czTekAї8!gl|f]AV 䏫 ; K0{l08gU7'%0nDcGg7|t#î>U!M: joچp{ 99m<dy3Z;>pvۏ߄3]W|yǔA gRU|ŧ1ZIϙ?b˲,LɴaHqKX'0IKЧ mMv YSQl!dcֺ"߄v6XdOMFҖbEPƘMqo:|ރZ#gΜV9pΡrj 1 i

!V礠5(>ÃН(303s2).ړлm; 1[b&0nj+A~*PxK애wv8y8kv/&bQ1rH+?jNuH=i'}& a]ń^Do9G'оr.I^탫V_ap >ZVvq59GsԻgLh{K-AA]>M%G)S$ r[ՄU坏x$Wg}Gh@?U5G>?riKLe@)|){Lxr-X'%2v8|=$q/0~w䴛7S 8g/|)SP*w*[ 59l/etN-:98ož(7 )oǟʾT|ֈ\Æf}m;A[3~HE֨s+2gݱqԱ ďYio\obvIbRIY%a+ s17yqVl;6e-NfQVH}m.rItvYȄI%''"AQBlsK^K g@%Ct?˻Uusl!SdHS&v978u}VMT\L[}^3$OJ6r8f[_a0jpH['%9뗫Gкagݻ%]9sǞ+tanVM{<%%]>~LJ !nS== >kA9 L&8w:g@"0|&V&2eϙ8 œLs6좓ެ>KV`kNŨMP4~΍29 D1%z Бغe8Ur#䑝.aH6 4-ѤImlسm4NmXɰo9aʂ-#MotapȒ[bPVM5' 1=E'~4mT\(LV -zyY4E*L^36IRw.aj,,U7~ ]شrJ08[ Ƿ"fYCm | -{0IkTJ`'iM~ap{ѱa5+}B{pm'6.9 Uh@'Gԯ0pjPsG-8{l6Z).a׬?0|s>pF54|gs-RF&:/ ĿÏ؎όUszi8/3JF(gĿ0^hߠR&tB4.]*$`n'*U,qކ^M:!9($5nydTRJ;#PH d,RaaifvFyGD;r&wH.8+SV+S9LZ?|O" "Tj%P&b! y ;GTv8ɒ'G!mjî1)ӦG#逗&ῢzVRQ0FH\NiҦOm $`8t@\NLCiMu˘)=~Δ)/Lf&8^Y"eWK*iC18@JyA+ݏ u&Q1s&L]6lIMmUw03*!&S-m7"gOO{>ϜB);6K̳#t}>qX#̑EِABk& F'Gggx:W*9~FQBitk6DpE㉨y".r:fx F,r)yDͱ|4xƥ'> &gP30mz_̜/^L6kvu2a ݏsUY<)saGs)0}z4BѦ]}y ~L녝V՟*u݈ Z%Plzh'+{Acҡ5nca ߟmcбu5T(_+@60ih 9_>܄獕?5-x^U  6nd+q ̞ۏn퉉w'x/VVM+QrѼML%_G>&/i&vyÂٽxtD?p͔G_<>t8~!lX1;EFѴE- o!K2§['M$Yqd"+0gjo,ݾH>S\ő_'a62]F>|L9KH|xSO2 ҬHNފ<8/eK !-3[;{Y A9xqƜ0 :pF ;ֱN5'Ή&CbK9ڽ3k؂5{[U8} /ǫFE?Lm= ;L\_q#y?D]wƊf.>ًkGΜks"ecoPB?kg|xÙ=ȯa; s^×o_m׿p_,_@ޘ=o@5Tg\]AB #9?\\ǖc|jY4_Jݿf|rƞSO_[*+ G q0q9ve}$a% ]0ABBBB?u.ArM"ipff5?3|3 $ Gsw+ӑ0eXl:i[y[I,p^C$aH%a;WZ%$$$$$n$35?qGHyp^ )6awT@;_~ #/yJ !!!!!![5'nXX0ķ"p\Ni9w~ .EHHH((Z ABBBBBB"B;m-_e#I`bk~a?!o ޸q])SʕPTR0HHHHHHH[Y!~Jg S#_38Vj׮J3QfU%$$b`ii) D|"b 5kV%_HHHP`AI$$$$$$$ۻJ !! $ 0HHHHHHHHH !! $ 0HHHHHHHHSV*8ABB"0HHHHHHHHPVU" (!! $ uAEO>S$$$$$$$$Kx\A?|* GZ(TXPDEHHHHHHHHpv(Qzu)Ir=pXd=?ƣG$$$$$$$$Sx PF I$z-ZUMۡYUo<"sɆY<&%0x) iHCѲ}?̘9}۶DB,m SMAu%iס/rua7s2ES1e&(QVg (0IPHDA4HHHHHHH [,VweJ)JL|!(WG%PV#>^ bUx-VIZH%_H,ߏwQh8 [.JLpZ,[ιc"02$$^ /0 @`SA#Z, cyQPD>yW0m]d!BARLJ~1M81iJh{8}ژ 3%1Ez[h1R>u]9ܲ֗(^4-އ wP ZM:=&c>{jYJ6;q .+'A=ϟi/3xBzAxn|$ LV Rz?' ȏW f||,1fx\ލ%,`!oSfƼs0l@OT*WBS4l>=n6f"& |:1n2-^9K(Zh[uѻOoԭQQ_%JWĀcx,^8zC⅑x6[VQ1FLu#bR"X9U0g|,\F B "$vck{V:!cz[2y5w'&S<};m)DF?6B/X4Sĝ+?:2{nN"ʻwtGg!!!!!!!W1 _n=%̒l&$KQfq2G:~#̑^cA7~IR"#;yo^kЩ)`.kxn>x'p] ?^y?~o#nV,X2c k[޼}W=P|iT ܃8:Qx Q}7R(LVW'/+5޽} #h]șraZap{WPZA hG{p0P9Ϟ=v *eA2mMϟ͞UxubҠ̜'nzJy%Pӧ<9n-T^!ذpnVnx\MIHHHHHHy$2ic|GhUnƳ^hW2Zn6,c'EW:lDRt A<WNLrf^>CѯOX_q;ZU+W͟or"%ez5>^֧0z< b TFrܱdL^w1[}Tmt$ &DA#qMA1 +O}/ۇq>fm9J-c8V-^4{:B U~N%[㺣 $bڃ{?A( INEPBMu ޾Qܣ&,H6\ tQ6\8eK Ů86[2ǒ_S8cʕ(cEO^J)!SbֵhZ+ C:=;Q~ݛ "2"nL<=B]ϣA{^mC7 zO?~ eJBͦqn%XJeVuČU8'}{8~LJ`M9M?ET#g^dJ2jY9 fFڴ.mjR\Ô͑2yR|(DȅK׹~J?ëӥG:`3FwCMSl62 m!K9z82 2.g/pJHHHHHHw¢(--݁uT͑@QBU\u\5 x6FvjL޽ܑH'B1zVxN EҹcXО|20,'EY)c8@c/~n" wFra#D &vӤ Vo 7/?<~\Nz;WL@bc%UT7nF:q=?px/Ȫ3@ (9 ~&°w dJ2-{!7\-nbpJH"㎎пO~F0A?OylaX$;$q/ˏ$ RGe-]^W/8mJ.p5 h'C:|X"G PR Bhd7m6fMʕ*zZ3x9AӇWX2/XfZaq,!.PbI+oڨ+XKhظ;0Ԥ-a`Ӧ:`%ܶʕ-`x=F2LJ2}K3HHN&@l`g4,JŞ-ˑ)wȘZ;sN4nxH<{F('17ZZe"90 V~ĪÊݨ*q gP(h)Z$ 03E! qE4&ln8hIzgaj(W N\M ;{Xv&0_(C$H&1tRj-8ySE{a0$ETf4{_?YCQb9TYێ_6Dj`o0,5'-q\;UB)*}~.)- W0B~a,> Ui+םi1ERatdd19 k 6N|b7I+!<"Z 05ɒ$EAM*#i Xw shO$uB8\DÊ:!Lvz8?x$?0334_~܊x"C9ԪX0K&KUw'xxo(r"ebM#ad8ԭH _/߃u; N~m앆D{ }N۩n. շ}I*MQvшʋژ0^y`$O$>En8gx7\:%ӳ$ q>&"|вVi|ͷ:Ҧه >/Z$V},, ؎۱e*/C- ٕ/PGp{Ax.@:<ǏŁltl$06T;Q/_0*@({g0R&!!!!!!! ×INSz&';)}u I$>iYE|7o^ɓ? n?_ʕ+Ap<79%aA/b%]$Ν?6[9s&$ 0;I>0( zϕ I$$$$$$$$$aڝj2YՉps+yEI-9+ u\K !!!!!!! $ WS5:o>nQ'TW@0V9CxGԤB I Vm7]ec\}ȗc" P)qvD{%ΪjɡY! P/SOBM8aV.OUmg{{gϞ}C$$$$$$$ab|3+<eKQҟ@AvʙLϗi!-a#_/ocY[- ZXƤV7Xyic[$HvW$0hwRR%ޗO?Bh?<<<4:o!K~4ܝakk`<~bTԟa4x e?,^b;XW8+DX&_]Pf%A1/RHi}8O8ܺ ع$Ԗ"CӘ,DcѤ.dRk`t3؞؊ꥋ#3Z_Z㒽w B3qW=SN+ =^ UktrE gp*Tugzbt(Z0ʔ."cA[<7Nl[gnRrABBBBBI>g 0nGFS!e@mc2)*h4Iqz.PhۗZ2CBdWE L>bF|[Nܿ_3^ӧF(R:P1ZfDaH:hc8<2xEa+Ed4<~#Q2Otf9 aߢ򕬊㗮a H2% {ܪ6';Tϟ=?*u{#8\;փo~{kBdaQ()Pbml?{]9=vLE+vrW+ZU)K)!hI#9ϟ }/7.<9a1liSƨ {} CZP^?8x(_(7LX [7W6,{.1StfL/c b CBBBBB0hLGf%_ d6YZ?0 YViWf;[2vzTHLTNHV91:=+y$aL\ 7oG=q%8b\ȖN+3\>/oU {$0\?$Ul;ܺz`ݲ=ɄPm^ =GGQZϱqt/To^Ѷr>,Q#L=q3L^< DJ x>v}'5^9:H '#pB1t~<ՐbԴ & L F.?ۧ sƟ\[MF3aMX?Q?<=Ёʚ;ufb.U ̛6ôy q 8{Pw}I$$$$$$a ]J-t }zF>}}ѽKGT\+ۤJ x*VVS/Nb%Ph׮7R%)7v|)-On*>j%eSsyiHmUے8MY]=C$=Frf9]:b/ NŨ^Q DL_>q΋p5ZX*Xnv5mb#t Ҋ!7ho Qqoܾ'1v`'sKh ^ Ո& ^ZT,QDm,?fCn0h` 8z΃ntoh[_ anG?NvG%+GnS xL,0$$$$$$a )m-;vcMXz5֬]mw`咹hZf,Ehb(^XL(QL Ha%N2^Ti+WLKʟJ,%ʖ-#ҘkѢP&Xj-": hc(߸ ֯j}QIC"Vx/m/DBAӠ&VQ~p]:y:;g8u:rʃ֮ /@>E+s ^>{3!:~Ajp <{pJ! 0! dOvZ aN30ry g#W\8ln)=D`D`7>}g1{Hk..wM+ w]Ѣ|n;Ӵ2Q~P(NX'DD,1z)XX9 b9~cD+܉! i fheb> c.D@D4Fcn6Y>Ѥ,BȖ5:["kdD> ߷9DPj|'p7G21^U OڸdJUUEahsnG!m=o15;6C܅5nـ|9UAX0c j(_: ''?t^&!!!!! ?EZ0a؆ZEP.>#chSP--[X:g<ʕ,J1o>;%Be1fr+Fb4AZVX~){b O0 ;wqy:tn mk7a)ѥ357c!(CR+ϠA?e&کK, Ghۢ15ifڢ+[UP2A$+c*JڰƮݢݍbH+%vwb]kw+& K;r眉3w%_'yxw\QorL'L(iT8r1 W0 vd ,h<.) ]bޜppak;kGDL|};7Е\V,\cp>laubqaX<fp]p~s@}HU@_XQ#1b VEHDLhOl.^bm< l(v6I7;~4n#{江;'œlÈ(I|a11M*=Fec9hwT"v-z( D6mA>7aoWξ0-1Ҡԉ|҂_SXK,tBYCV_6h+WapMÊHtF6ŤXbڵIa0b6#ѺZzaPmO =6s3+60ښj\g!`ׄ$<9L49S.XIr2i,|)O,=IzB{*FJ)yI^b~(oCtt4JMbL5ӡ~Df8c*5MI%S(!C8^^XƗ?$IY6G Ic**<ݷbIJ,iZhŴk VetoM(NpY4-1%ehm(&0Mп>zKǺAh̪" yNm\+V`5شy+\o0ܒL06o0m{V"ٓ#9X %nsǎ-./uz^qp^-;w5)BXa9Dlt`S@" d+1gbEhTzܑz6pvqÚ3ю"/ ڂ0Pmz1f,,,1v(tj#iQ163w ! / i}a0}IӠ"Mֱ[ޞ~sLDaU 1ڛ4 wWjK(dG,\sfMLj})њj9XfzE t(ILY p4ԠUѱ{?NEq k-I&nAa([eI}S5MMDjluO'P*W7KSQ)MiiiASCLٞKX܈TSUA C@, BO$ ?' 5(Wa`dD@@4 |!F)J _COhCQ6a/AaA@@@@@@@[# r JŠoY>,,BYĿ66X@@@@@@@K# %AA0b$o KI1((*Bv qqq( Ed&|m\&Rb> !%y מDH4Rr E6  <<\@@@@@@@"L&aIY Cş0*" DEiH℁ 3:|MR>iS`7.0*@N+! Ϟ=Cvv6G|G|G|G|ԇ"L&)+ah߾=TUU? TTT$BI)*v #(PۦLX]F$cmSrU"ۮ$[I[YڶBcH¿">ڥVo/^Ghڴ)7oYЬY3@]$4v>M%n u-42VAiHƧM߬ۏmԒ+ovL*} hCKK_sjkk >#>#>#>mOi|3)H4 *_a`0o>T R(mGX߅~dK#Wm ßҿ?O|G|G|G|> a|dШ04.R%3<vzqPT,pUoGd|> Qv'bx8Ms"=x|<{p ‘#GJ0_y\fAp\y96}ħWGv:.ơÇK>:^ލKLktb3{ڹ3o!V#pa~oy?}QoI='{[! Lg~$+(Ir/pò0+cd@^s<AaY ?G+~{[:0Ta$>>f`D#|Q|yTP~` X{XOۊaW!XUfxlw!Qrʘq V_Xٛ7HJ\ )d&7 ޾EJR38oMN.+ɥ>:|!m,M"J 1b9̰u'k-~07WrdgӋ8 -7'IHϢ˦HKғSN}92AbzN*m)%#5--2c'P)XJ:cGE斖tXc+8qأzC\\}$%%矏 ~dey(r$gĽ} ^뎮7oJIHNIۥ1$m&߾ARBbcc iQ4h+3EYyKǘwC:Z&v$&Xh>ϡN Z%8/]FsߙLIb C/0deeߧ}]D ~MD2#)#|xGwbQaRTr&8x '[C[=l #k!O=1g-ª лO,^6&sD@To#LqV8iqN8cFaDӱu!L,x*v:r2N_8)Щc{<{O53m9gD-Щko8tGp|z {]0E1a. m՘!hӦ zm"  i6z-[@WmII"50jY`9Fr} ćb-l&cܧ;:tI]01N;b$}2}GwǁS9h0AT=[ L:LEѹ{_8oى=]1owt ˨4PHVMm6{r]K,Xt/ta̷0u H2}_|'^ރ북~;4ן ƍ_?֓c{]?KlX0*Z5o;m CbHKa?y<&\[voncF00MF@ " fa1NTy+}p? >@ j5+!{jӽP< wJ?2u WNcT..彨AյqrSxw 5+ǟ`]5Q7[/<Ԩ~ WK ,`?dC\n-\LMdo?YWD222# KV3|rv&¢0jNu9a=sHZD 2o`#% 3a܉ Ǩà!H*+Ƕai< P_7*|+#ܾf ך8us|žLH|kv1$NY0l%$)YgĤh i>iHxuubs+Mb1?[M W |`E?3e1e_Nvu0w*GI!e 9  @JwI̢9tcHyO$>ayMNU~n}L{>S7xtf3V} x㢏gb>,/c}  a8 +juU^bX+Hc7'ӭqHpAKh@Z>bj7K)A2_movԮDձvy<<65g9_Z6yDbl$R:IwAq7B#P s-N3pykȒ/4AJsUP 3\ƫ'QڨRc>6׼[>,5EG@ (e C:E3NU?fc+= hԴ'r;ګFmPP~ Nba3Tp;IV*6G~߿?  Ar+Hn( >=<'WUw"&1u)E:}-ɝs#3'a& n D)Y LyT5qANJv:Ix'wA <C$)0%'! oT釶&P+YIm}Cáظ,߼T6C6 ׍P~ν0zPDصj&_{j6wo@zy} 85= m}.?^#W>p]s,{89 K9ZJ*NX Nn߃3>@>BbǐQ|U8aI{;әLwc^K ÀqSs̚v8yrM˜Nm_He"5MȐ H}0Ľ~6UC֭ЪUkhi mFe"`y?<(H!Oaҥ7RĊwDʅ1\THs&/U7(ҽs@Z*z"Im,1A__ , U&FUPW $ ™1ŖP`3TkI ÏnIھe^V(jhL26Ch?U0eWaަsW~ϻdYY$E@h)% ݏoh8)a`Lr+,IHxp{X:s&T$ֈ˘;'B8q!6؏&WS(smQA; C!&'EL2KI&VsZ$՟+VA?Q0꣇ [_D6=/ٜDI灴ŮF(#sV(Jv: =Xo7ׇoh" c5JÄ9azK΋҆_n'TKI~D.0u4n% ځLXcSs2ŨJ5N`2Erd;ELt4ZM>'ƽP2hu EF)= F i~aK)9U aܹ)o5E-3:oOI C+ci6,)saVsBY-JGѫGo7C} 4F[2KR2)9:SorĄX?P299(ꢙ^[TrMq5dlzkuۡS'}h;$R[i!Oԩ.HJӫjZL؃! /nB-m7x"Pc%gE-PL(OG>)PLYxbc99W&'LSUtFg!FkB^? Dk̵2eYjhiNzЛo=Oo?ݣiX8w&i<ƲȫaLVVϟ#*Wflv 29: Z:wv2H@*v}8-Q {هLRuŶ;.K?zPXT F";̬6 82Hm?x\KlS$*,]D0uZdyMUV4O KPB6mP w tj֨vd::6lOCf|,*`mּ^IڻqǎotmgP? :5-,1.jVkUG[OyG&5M<!Ӿ\\LgffsLa2 (Q0 )0ޯu|?/zfFZ]|͙BΉLK`/4/ uE}q>rLxl<ƒH!:.I"gg!2nݼKࡏ?R(@Q"e(OГ% zs 4r\S% C"(JlX<2M I؊忣o')>AdXZ "$R#&p$Ez2ݸM/_y'.8dU3\+W?(:29\ D!WQLQHgɾ^܇&UC02JxXJb^ 17l"q)sQ+>d0Pj$YL3f`bƌ鰛0S0֨/Ti(;!UUĬ;q?ܥĎ*׃sqY"Qۓ6EnhJ@s6=4/n 9 FI@@@[cc16x.mg%o8 .H &|-AAA^.fb_+T 0,ar5'A|Lp utzB(q샺% o 7#6* ~zRI@@@[[O#h$&%m'#.61HE  p1+WesDI\;cXb9]b4$I,;/LLb9(8ʼnJ:‡' KwRD0 w{o jjt-84|yUI 6NrrҿXK`oI`72l z͉_! Lk d5,i.4n,-~ /Il†{铋ϣIrzXv66ρ7 'Oߜ(JIBL}$a`I9ð M0,Ev@VΝK6!"!'' yJ}HE3Ot|%-;or3phzL8"% ^GfIyc+`ڸ ֭aÆhР~ߍ~?g|v?Cũlv;}Mfdal} Ǖ_ݬ[L" Cb[ FM0,iRa8ԥ|8UK͌ǢIFhLZŸMkLFpݡBIU|6+sj MdJU0PߟiX6l[-.m؀i&J_$ۿDCj3s5Nę\\|1[9(٘8ۙ /V^+C& E>0mV*t)0)a NY&)kc'Hz>͸ZBT=ˤ8,?O%3x=9_DC@8q4&S#&7`yC򭐓 ԫW߀ 22 Q~ ѨqQo F45ӈ곺u' 9y4HgfNr̷6CJ o˴"y1:+KX,<%J})('`ÁsF1e,{_~ll ϥa4 K$H'&RPO!O^2 HR'2HD*kXdNyMFxUѢU[t>Ht]nchպ=iLvZY I@l~]x{{`dZۯ aaa|xY]`s[|[! $).&5H0Ew9#yY2j'"2 c" ogц 1r:èo{@j/1)*lCހ}&|EF&2nL/]+//+!Fc"7~$(01RZ?'(uKݿ@GH BJ}TuwKBkcc0wv6Ƀ B={=ܼy꼗mX|`%++VqCi!k,奍]c/|>{+~9,̄qvo}`AkETTwG```/_rZٳgx!7^7+c>ej z>?Xܲ9fsmIRZkXmZj^y %PN=j7É~ yB> -0dB$C98vz ^Qrç0P010!_D^ངA85Lԫ 14 GZf7n aPRfS DR_jT94#b_a`ݸ)x3Ygϼ4=kc޽q_5, ؾ[0=}۷nCEk%WSSPPTVZ0%$ iɉD_H$m/TDFRለGxxJH$P|NZ ^x[^7u_BJT욱ё|SSE""2iE+Vbi~b_r~D8(SB<'iiLtNEE$VIS0K3޾k[VE"&̈́Q&p,s<| x[6e' wAނ mem'"<4ܐ\!Kuُ;LtdTt>X߾k' zDsqXyIH΁ׁe' MIPvm4TPIEOMky5-%2 #PnD$ #5;AN % JLx4d JZ`N&ϤH;@X`?HS0䇂%_<+f%B3Pz9o9I4  7<}YoS̷ٺ)a0YZth-[DѼ9Y3+>/q:l·J =ޝ:H붐%ؚ}W)q6Bch(5jժ O_\EmѬV[͚S1xUbSW#1ͤڴхnfh 8C ֿ8跃 < E&c^u4\糁6.߄$d$EcJ(Cצm7|_⯟{a@|^{D鹢~z6-ibòpZ i 6QAanhqp|8_B$!#WߧMIK)VX ̏ܽf+LÍq+>xM BVV6"_? q? 4"H 繰=#f['/ Ou W!4&/i-[a٧˂\8&Coׯ/0gz1 )pr$@?:w#2N-KHFFAϘ< 6v <0ڊ.S6Ͻ1f\Omldv_5aoXl5̲` `4"qXp:6W䄡~cy5ss%Ԧ2YL6+hv:Z\(i3nͻX4MH+QK5s=|ciT5Ibq?IFR aP+7W*Ԉ4jX@0EB|faxl_0/L ^[rCJrelwTl^<|_-a=}:6OߕJ Y7T*T]h׮-Rx= pY0_ifnHXE9:5*_*Y+]ێ?tt;tSHhQ*U0p`h)6(z{w:hҰ./\ tx]Eg%d3 nY3;UGn⬻#0ҭ:o iLcbyݼ~.׀$D+_*c J.qzΏ݊}z^\QbECx\ٙ)ph1gaFXDBz܉iQQz}غVCjJ15-8#8wzzh L+>#$2vA_bl~SN?MFX?nFbu~('TR,o߈/ۇgiicɒ[jj*;`"]u^tUw@A$-̞l$5@^SHQ٫z郾}{BaeTҚ[Oa =iyӄ0-[CpC=adrW.$q8:tS^OM{fzIYQw4"^c8-܄p"~W" )plExzWl77ƍؾ(ø@̏1~GI%~dD8JCO ש6l Hg9wff9ԩMH@Ɉ(@,BP\1CfSZРr¿ MN=*g$-HK$5-#q2fB73U/0i*]:a`կ/11_$+1j'AۛH>j㑘4"0_>䈕o  EzyUIҷC:Ջyd7|ŠپNI@Sb0yLw"fn>FB[ÚlP!8@0xRHWVbJh }s" i ]WT{\%#̉C Fu$S  Ű4ߗ#&8#GEpyJ*_bro'>.WxjF3\z@IԸycg91tM0{ ^ayk99 LR{tCi> }N|~z:& Ss_P# Tٍd{08NIF'sOCS"2nΙs38bkjێ"61ĂboۈIabj]hHMklXq>6ֽGؐpY6#G` q"I}'i g댵wVzjۆDLLm;BbIS+4#l डD^Ƿ0vF v8wˇB:ߏ cCa&6'c@4ThZgzZh5~Ce-FL$&: yMt 6\߻5{P[Ͽ0a +B 7OmE~.1)kgi}Xl C:q^F&qA?J+2" zC()S*H00$fSb%^R h,ߑzǴi<!`Ty+i:ŜkP|49KBUEm;,fHڴUE>;/<" CZBrPh;/"Ueɼ:eV?b> 3Qwh9iԸPX*9aT&['[Dy:|aK׮ZK7sMdrp>1T8|99sj+I v [`djKu_-NѮac-G+^ǠI*.6KW0EK85Ƙ~9t\a_OFtR)QqՀV67>Nj'Xr%<͠K} _ F1t|øSXfݹb+2As^[{w-$u]7dmv^l!©޾HWi; " ;M8= |> f29a4c8σk6Z;/d^Aώtz^BF~x3ct'n]g>E{^&;Ws{,fX |W )s8a+p$$0mZ顟zKЯ,wى״sn"Ai{o. L/0gH 7^7.%z8*a`&X0| ;  =̐ ,% oe=9ӱ`R[nwEHپNQd'22 O}9YD/ձ|u숊d[ߺHA5\=_):ҕ4F)/$Jvwn\kT}$Iʶi5("93;߼۴r4 ÄJz NpGٝ4u ٨N ۧ1vh? 7 oR4 k%,\=wc8|2H4 LӢ޼+&a83h)C~}x|j3 ƋDNv!VAkԅܶq%4bWWK! |yBv:3zבI@T=V7%4 qduazRUBuho0BOuu_/tVR-\ _~x_nhgpR\~…vN\@)BRKuduh;v w<}D =׷o_j UC4Э8L$8 瘕(%u?# kcb+n1([ia0 3ps4ɈMB}Xr%ª KLx`L9: Adbz4[z|iÓ'ha<գxMBq!un;,ݰgsmGC&5bz}'0j(sA e폽VV_LC> QdU58,܂פIa!}iY."bT\zk,`sBa +6Ro‰cGrS,h_F}ؾ{PŞHݰ4 BMo}zҪuX\'Kml*o?i-8|<%gà"Jn^$}k)p}5]\厯/Rlמ0zK_ߜ QxȘ"aG CU^5S[:Y19re ;."߃r`=/AKZ] ]ɇE)JK‘uP̖j+w'o#U.~&-E== UIW ߝ3- Oh?L6ͭ(Faɽ~4{zq؎Zp=h" 4pK)MNm܆-0sId3'$,]0\ yyM'AN =7Z#"!T{^ȿNսѨ[Qh;y>7nߥp~lq/Icp*x0fp74UÉkwpg7a978l<4~"?解q3<ů'whی#J$Z^ڸ!t] H@!s(Dx=GDCX՘7=+-r>M?iZqK貀' ٘7sixk3 )\95E3aw$JVdZ5|^)xKZsk 0°n ,8 # ,r4+ }%5IXYLYƜ7QoI!5\(_]zDNϒ@4T=гgуRhJmŷu #m҃ ֬D]h{OIݮ0a|17R$ qm"AR C*" EA„aP " 5Z"0& Vv͑fL/ST U, ESH5蔯R ?0"Sڿ{V ܖvhT"a{8r4X6/Sjz=0ԯ[Tdznse<(5I6eQQUc+o^גnY:4{YҕSh$[vիa<$gxXoD>UNCcZg#Wm@97g &@­yurK"򮹐cva$># |J^`, (կKRPu`ulH') CVE>ÎvWF;.KZ!믥 ^i/o*OI}=xH}")ld $ 5JZӥ!ڷkz vt8}ϏHo i;?ٷQ<hI~ +߱eӴT(rT<}ȒIxX߬Tش$طl eUtkGAc&wo "ڤi?c <ܝnۖt|J0/2DyhxǍ-3%kMԞ.QI6?F2vϳ\n4hiGAH.m%srId?zdSP&6ҎJc\g_00᛽@|JƷaR }Ȝ~(7=}sx8Y;<>yV|I~G_}Q 2^? ذu|26޾ᣬv%O3+ٸu/vgw 4d^;7͋5_}^c66 '''YA>0744  //)ؾ" y*lf:!'x |MFc% /^C@ "yiۃBE[K%Q4inݹ˗/}Emrc)t\Ջ,/.-9,80Kߞ[$ZI9|%&KbOtQtL/T* b!R>(s\~AY$2ƢqF074f6^y˛ <|,!  MRB61Q8L~~>0prN*^wA&ji=m۶~w|<ŋIaC"_}:]s˓b.Ɂ;_ I3Z?K..e-g嫈8hq;$4r0|iLۜR9Id=C>=o"+{=W Ob|33ٳDr"._)=peĽg:=yvsz(we닽>|X02Lcfd/ /Saa>}͇|\^z)M;Dѭ|~(<'2Rycs,00"X؃+" }GV3$JC^$RK3nQ3BJ%6}>Гd}sT"EJ/4)8J;y+[eO~Y8f~ Y͑QZB;_Z"VQڍaN9 LG "e:5yJI0o|,X ÊxPyxy/1%KkYMaEK*ya`+ L"!1T ġ LP?+O>8a`e_/-+gw}|pMKkӗE&gұ3p o+SK@ەV@NTa\QDb)zϩSpܹ2갺B`::%'=s< sIiH69/OPHތ,"V hsa{BY{}. lLll̼70> }7O.ؘ\9#Xd:L K2;6R>! {XMH40dr^.> N~tX&(Sa:QH!V%Nd!S \ مI+ccq >$3# Uy:C~7NSn  5c{ #1xH 45_WFb\lH *-gPt@AL;wfZjr^]ÀvlURF!PV@ѶMK^p)DpolBBcBG]U"ZiKcneM|{bѹ=Uyy6ʷeHa~;ׇrɾUZW>PTRVѷ__tlz7i3jZiimA2= ASzBeZ޵x |cVTRֹaݚ5s&Xnh>L 0۷{y -YE˝n+m9% O]+gP&Xj%1d(UTTp$֮uQvaj  $Vд)Td^;†}MJw] cfLd.]bLo\]J[%k\(|G$;X SgpD40ĒR,_ &k6ԟKYOo1s49B؞2C/:#22gꨠ0zIpn\me˖hѢ97'4k=pnZϷ|~;Pdg$a|hO3G`D.  ]nH: M4> к]2A2F[6m3ՙ|5NFh"Se:1 r,# 8a0jUtªsNG #0sbl\@ J+U18Q\Y{wsǸуXI]7aX]h3VZCNU0y ޱC{~rPlF!}`?{1v77 9_+̀ȌjeX9M "b0t &MǺ0LANQ #i^V/M5?6o0]U H=z` V! L&v2_DB FX}+sռ]?4f8{vc$SBHؽg'm7BCn3hH,Xጥ]TVi460I"`^ߕ#kSrheh \J?CQsjU-,Cnނ^QfK¹Mc9T\zmѮ][%;= pY0ι9mX]u#;ZSxLPڶoTo: A 4I@@@@@" ʚCdeks2/J3? |Mk0v FŸp%3O S;LtXVÊn$a ׀7-4K 0Po O.^m=v'u+&-$1u0pQcRСEXxK0&&\m<0i<4UЦuDc B"áCH:0 }/BlgZW8YtLt0 pAxEXh)V/_zad:-9ƌ Xrf89`԰AD 9jKwˑx;Xk7Ŭj%+AX1ڣ#22>= eZjJ Gsļ۳3|,<]M%Ai["21kX6+bj$ I^ðjj,#M y^LhuX`&DNm%&&ZAq2gtA> *TqehP*:A_*wDPMV fl0qD}?ji$[a aoomn0 ;>}clY<~- mIb@NbZv)N 9 /ߜI2I>Zp&I\$S܇-+0g_拠&WфB:܏4#߈6f`n>Lr~C`8fL4wHBsS1fAB2,]V=4qXjouDz%KbZxxxrvg,pƙ´yK`7 Q߼.cSLEnD F@YA0돵.1vDVfciQp@_2YWQ$b},!~+h(phlMboJj%s4&IR3=llܰhrt+7rFӢ9S0i6fٍ#i7d6t8im;t a0Hz^24Mc$QN&UQ[FE:*p^= kׁRh֫v2: 'PF%|OR*'j o+T2**VzC'!")ʴ_*zV?bZhmErEcN:Bk n4wf̷z K0r@/ų&`h%-0Cala 1u1,MN&Ө5V4 Z +Lה9|0ih'ohRt׭2|y]Iz.e> B\u>S{]*dD&My<5OO%@$s :IvZ2B=خCIDIO>anܼ{z^o@p3b K$nf of8dLaU]ama`»A!5ga…1Ձ $+sρ1t EARyזhy`g1Z7dfm1dQL]Ԭm(ѣѾM"%iL9ƺMBbN#GA. %hUwЛ)KܦӦ=FK'^oF{ӔOWJF6CChնaܹ4OS0h4Kv7cУ*?1hMID 33"07.T4( G`:sDj$ZR4eYyCz06Gcsfl5% `2i $uM%Ijژ8m͘H9 e }ڠ*v,rF4D&JBSNM9너xI`B[ X\3JjN:]jqDz <-\ds̜xާ="[-Ey=F-i5kք,, i (~VwsC1{-kHBe_ y;0h޶̟]CPa B|R2s9M_JRAM%ei)I D`P)[sb\${/! " %JPx)Q9D}B`PiH{oȇA*xQS MHK&',4-*U8̬JGG4;_0IӐ5bNƥhKfBz!#](2 eA4jDy,rh~ jA-$7BKƍMx&qB!P8F$)E D m&QRUhLdQNr 9mپ.gBAA]|fAFFl `:4.o1ľɔ!r3!!>1qyu&#:*rE~RD"eVd{Bl,bc59uR/1~yKi $> %H;/Ks~pz#6yc1sXz&`Odf>Ȥ̏<|^EypiJ߷ eĎ|aCqa@e#G6z&؀SqJO¦%S1mZlX6N!мk|?Yiؿz.;q'|)Vcм|~о}{.~|v pt-~̵K!+#[BXSf0y,cdegp%zs}rTP\;[AR4 )))A/O&1,٪s4I[Lil/'K󕖖QmLgߒJ:c~ت>pwZj* Y[ap]CX%m}#a8XTζegkѲ1|y;Nvf '`YXik3)2"ǚ~ޱkJ+$yl?J0#dsAb&C!! U!F~{Tk#߹9i΋  axz聦My͚5㙈Y_\T' L 14#1q: [Xs 9$TzޅI`=3IH7 Ož'LB˘b7M~8r.RHp z|ֺ`0mVƙHhDJB mKSS:fuغSfN#yn =+Lyv09c-lp<$\= -H41*MDq1r(Zꂀ8dRxZ5ߺn-|^!3= c1r(Z/BHMذa=V/1cFi Gα3'l@/M'.٩p8 'mK+e|\fǺz1n .y4*,eRK/gfH^bHBl ,cj Cx9|!)aX}99: SgåǯWahcZOcWa+H#3{y3ZY6^#%+XZfq 4 BVo]%f5Rbj] 5 q3<6]`h(ծ wbj ׆n_Z4N?'IwԪZ -ax4SfwsG'`4CFaԐ>W'`O°4Z aЮ9hwG/WK8cPhsgcA'4õF  lHKh1{dR(6).xvL察BO 5\2/M݀QX8{Zˡ]O3'sT"u_ߪd3|nns$f-sEd|aJiWn97aÖc>V2Ea0oj[{k&-9IÊ΁=|W!ټJ@@@N}P r#0deg`|kȷ<&;&% ;5)K8_Ƒ!@~%°M#S[8!8> rp/&MT=iW0 ,A|*ib_@ u4O?D[',ڇBBaZ[ hnpsxd>t=Xo]2 Fd+,Y2 jcަx y`q̝Lr}MTQXfU]]F>=>t1lbd2l<qׯ0DD} [CQ^u>Q> '$LSrp~*uлlB8Yt9}3f6=:&jYo]L@`vڒٹ-T)<;v w<}D =C߾}Ѫ&4zµ՟'rQVHgٯXC<g'lÞ߀2\VG3 LFljrӸP4>XIqgF*Eۧ/zB1l=.E418k]@ش~,;ʉ-ijˏCA6~ YQqF!EΡB{x= {ax!j⇟+V|72Qv7mE=M6kn8<]pEOFGj ۻ!u0 _# i:#0*)_͏C> VۡEPi%s*(ȶS6qdԇ~c;W@YH0xBq縛0\1sId" -B9\fZAm': OG Nې]:aHI=kyN Ѩ[H_}Oōwu '<4ܹu֭DOC1n=(ܾu}4pM &7;4{:vF[Ma4v2ҲNByf0v$q,5:Shs\^d LiWqm\z[q7ߺ^dhi΍bob '#^D 0{lot2bga0n~30a$4yO ؆۷ ص\%,v=``v`HÐ[V`ĉ4iR>&;cܯC0&Idqc>5:n@I,2Aڴd4`?QfK ! 8o57Tm؏Ч}p. /*l*v0ɨ4ZY; ˣŀq8{ȅHmLYe~;L$FNZL+ˡ{hmLuY}؞iE{*8tqaިP-kCX\롸u}I9`o]25he`iw4/ùFaX)ado"0! yQ@Xlrm\6jMCP9Mf3px5FXeKkaһir0cl!`df~w=N_ ٺb/nwFsHޫa`Q~iľ~-ЪXA=+BK[9 OZH.;~am^_D%$]55UGKtfШh8ϛ9JLq8iq9֗tU}IK4Bg"¨߱eӔ\E =yH"^؉NCJ{tRAeQ03K;qhaþ+ufSd.E-E#2duゟ dgMH+ Z,1}zG$iSX  O~24nLrAa{h QG3u:tp h% !Ad^r#Wa+rp$J*Wg? As<~p.]݇> 8."{wǶmV[YOO+/^48>~`ܾyoBPpxrWqe<|ƙ΅RXZN ]K% 62aٓwEJM+yؾ/xރBŖ6@b<ի)R+1((4VvSD>W\]D%r BRB,E +r_5vlR\0lݺ W|XIrT@E9 kWq}$$ԫ o'pXyфdĵ1iJ! LcY9A@esn(HVLp-۞9(F `lH+3hLI< /-&BmcNqMG B#9r>xV3KƵXrSD c޼ؼ$d_gSbmJ)f>@~Ƒw秔sPZy󌂰!<-KcA1s.xD&XOԖ7ÐzhҴ>caY@@@mGB9ũWRlXИ#8 ClI):_D,P,P@yACB)V_>7Q딜lUx@ݧ$bubBy,-,0~w;r]*o.Y##}F|vtA# ȓ/Cci(H i +)qb!̕>LDk'l5AJKff' I[(!]RH"C@@@@$&q>ah CF!oY9y! 40 OyRXwEAa1i,ߞa-4 m(+Uks z5-fhױd;fw4hKfI*0-EE,I,j?P&`p?ޯu|27v Um He*zE (`䠰eKԗڬ Mkfۡ9;/=j״ MA"㓜?E *k3~yJ@@@00Nsa=8]`h8-0叐&vc a;ZBMη&f؉sn=l\gg9)G_ M( HGtL,%zΣQ",_Vp9y)I iELl|~^Eb|_'6sfǔɏ)QJD>"$P4ʅDU C>wEwh'rvi<}welWM؍-WC;xO9_z)NO^ڂ0j-O]RU&h%ƆuLM0 k ,6 ]1a榦W!-+>b4QR0%NL i)B^VKVDk} Nvajj%k6#H]h ;{{388iܻw*%ىh"_? q? `=h(.<( 'Nj ƅ:2=F cp`*1N?G9(Sq&Z;N"%t+#yzzLoD"R~ʡlGoCHJ|P_D"?V΅Ք0wdMkb̨mfo$xůhMA`ԨxQa u*ڭCm.k0d/8 3{CMI._cLրk͑XU9YPlL@XR.^\-4 K7KќL̜xBpj+xB;^C5oKZ_VڿzWÞDO 5tge;f8~ןC4t^22?a+ FFFdh%L6y'!Ӡ ØaQ^viOŇ<ŨNPxá06Jd ffѵ 1oB,7F}X_e9saDBQwDQFކ1w/[93oeN%y]X'ނ +Y!a8~ a(JH0w -pu,_낍H[`2V}M %X#ϤHCs{=AOm  -:7|~@Tl4~ej?ӧr 6lpƪE3z ی=0r,ZN^(s:6ۏE>f'-ߣp4Cbx=˘Bڂ4v 8r.RI@~|'Nd[[mg7Nնh w|Cw.A&qe%moa1&X!d8#>&GC[+nSϼv>Ԥ"tn k5j㨔0a襦 `X%칀WX`=U C'D|`ll 4 wPlZ6Zmp/%r!dg.8K!)xzJINjjRvhԯW U(؈@,Y0 EJFB_Em,KZJ'o"U;T6Sno^} h#GC k0t0D ښP+M.I& s"fp&mt,-0SVBjb,ؾʹiRr[d3<,(qxCMorsw#ɻ~xqZ7׀ML3D'Ũ7o :9&M[`룓ҐC #82wOmG -u 7篢[-:d#ޡ#sS)!9`h6N\~M @3IJ~\%03CɂQq ϣU4Zxh"dR Z=~ ϳTɝӜo9sO-%FuCaqW*78 ܁VoZt聻~`~[%o&R:x-cѮ<^uH+vRS-{'V}1k< :u+29ʕ˷c@Z!2)?h|<=]|k{]ި!3hoܼ&/ٜYw+aAOdT0< I@jr<^| ݀svukV Z`@h(gqD~ FD>~l[1_yF܋4GCF3$?ÀVM`1w; Dw;V<b9ٙLVr)h7-) 3{Vf8vK'R+"[aFd?p/ |4B-uVCoaK8+%5=`ӱu9*" &] fNl [ D@T"ѼGʰiV;0X?r9k>&Y[ќ:ЙHLI H}a29713#$)vFPdp~0IRi]}Rbp%lt^G[ jʊLTb2sư)k&LF^urHpq8MHHA䋻3e:v脫^ 6-4a5{%2Y)8q`+黠"ܦw2gGj[Pp^ Sbh&L~adǗviG GvMo8nѢ),|oRHINUT9nDprq}&;΋hf!FL=\ @B6k,5a!0=ЌlNsft#Ц6Z{!f"* (].ڭBJf.p\[ VGSto}.sHFG=U\9 cڑk,) Ay*^MX\EJn7HWb2&1y~ddv МHS#2Z@#~Jy Ӿmy`dαPo?Oyٴ}r3 2840mK f&6l9V8NQFAE~A֡q}8=GNѸw07Úo5&ϠQ0Uc4{{*lםf gܧBQ+\ R~r]9zJs1ҺgХ*hhԠ1l:WUKD? [| eMZ%6$΃.Q\۽^Q]Y$3F6xd+pC8Y?Fx[y)DƾC0BDL[X4-urmy7g5"}[ԉ]@@@@f߮P8x!1Ȣ${&62hiP=4m7}I {PSS%aPl%[g.G֟oo3 UNȆmoAZzDBwMJV O6TY",1/Apf&`'!0Җ,"Gx@PL:ZhR ָ`ÊP U^eLh..D\&֭\xSnlLCUU V/xݠa0iu7wOlB{xx|AyX clɞQJnG# val'MГV5NZZu|=%imgI|0 +L$:z9f%p.O@cw}qcV-:uG>}ѳG4&ݎV_eOD%Q{7ˮ}譣I \0gؼfn$KZ;x:. Hw%;,]7~W-z#86lKiɗGV ' &>Ci >AnhS~C|w>bdILH4M-4郭ՊLH{x|dժ`填\+s d`>i,q$,i* ?K丐=9Vو w)F:'/xK~z_|/^$\kwM~,X3AD$ihEKZ?7n i,7jR z1z;H'8,GDKyx oWu칊"=yax5BxRPBnY!%$+,_ ɧ!per<CK>xq7*uĹW1n(l9M4%{cѤa9rVeb%HIlܡ!% ;)Múu038a02 aГ'C_0a,+4QGzzkV{U#Av xy?+A#n DjBZtG]y1 L"!2 cRqyq!*-xFzr3|*nܾ /[8qh?l?j3S0״'rPFЋ fEJ?.xLL]xqnWo=$c8z:RIgLzdheQwRjnK~f8۹(u­iKIZF.]? vt ɱ/ac@Ez1Rc0J~"\9a 䤸~fꙣ%!0CLr}1gk"y,t/2EY h5AyiuY=)jlup <%}봸`"-ajV; 8a:yn;Xԩ% 'Zue8k֭zK")@S9F[NE`|NX@OGq}>w`UdmwݲPI);QV}̽\I8}pĜ;+]ҸxPHf;pf#&L/F3BA_U HEuV',]/K l}+ma2AOL`z}}s70!F0tS0gvNFf)O0v`rG Z&#`≫{A,v_s"7VqS&qhbg!d4#CFDvCD: &Ilj0t0HM VÏWMoN_yYG+, )RoƷ|㙭-={PؒiLfXEv^cbg=Ȅ1V:N'X!>#)*+c+_5p̼81a^0tfB$]*40knō(N?x]&C =tk, D±5QŹt Z+`ʊxvy' 2?iDb88;E> 8a@/Rql|4n-G/b8Ejq"kg=xc= a`NǷZU>~غpUW2c&kH5}_S$dщz0:I 7E|;o Q)s'gsO΀{7@{栩lΏѣ:q9Ei*?0dj+w.7A8L*et&6$9Rz֐!(1O4ohBWGص(6֪# dteJȾ# AWѮm YC,^!с6&cb/#;v)sKv`B1Qd(Dq_ՠ$Rg$ Ext]F̢10N:<030oGف %vi: t+1 H*Ik"MV EШ sv! +v0aHnK/^MkMuuei^sAQ(8GQt wǤR?n,w&0XM+ XdTsk|u~|!& g,I7Eё(ZT{6Xpu54q5LL+O[ufתAd1=*-V{ӇP¸<%-χqpppp{juS(3VGFh׮:t쎥;N"(Ѱp1qn2ӁQ{l?qLЦ<,V [A5$z@)v.$˴`"u$ vء#_sf^:G~q`.`{GBD:Ecvlѡp' -{sw Ç^dHCdd r!}vN Omp+7Odd D#B~&&!6!QțpDъvr , r\L$S3%g%f d-c'ĄHЧ|CBB`AlB)tsc'G㕓_VtDDF |'*&={zf TICFDD #+G=862%18_HO [[;{Q9X8Ξ4¸ Nqq; :>E\' @N,[u0! NCx~#yQ8!.Z|v]>$R[5_95˶cbiuƜG!nc"=/W8*gf6 򅝝\ܽ+gfZtqCT\ ]a`mŒD%-cY@q%e%e"ߐI 0.!6u[7(+)Wd(R ib4i lIc(;QLIv-" $<Q`}(Q;M:Dy+Y FStTZVԁˑ(p Q7'(]⮊E±W<^iX^X-o*΋O2/Ev}>F9 *R]PPԅ]cAyvy*Mtnq~j +_gAg=y~k߇ڮ6j^\VW泠.?YHZc,p3!}p1L3LT&$0B_~t :g:ذ0=~}묠Mv3NX|֯\s(ܵ946:PX|>4IKFCLGpM?qkE4iFI1m_X سL^u' kvJܥ09\$ocQCC nHfIdƪ"*W4ڢ>B]:kM6lKN% :5s@TIUd2|(D4lE܉Ž+S^{G9! V"9׶ӇE&dcc8Y8ilP988888a\xZWs¤2Kw8q*bS8-_Rε\焁N~OuGXfܤ )L|Vpp ' 3a`»Zh! )ᤡ:w@_JڷG7#,?|N8a?0|$aPDѬy PihFeCmJby_i@~vKLOeIQ2Z:5℡ζբT_!L~}UfSk?9jtODk9/CC7wl+0ah q04o!-NJrhN,##Y9yତ(ڧP]Q~L4 B=0,GdDFFV;A$o3m@Xd4%lUܶ4Hxt"sSt%]XE_攄e9wmKu*h\ d-h]S朵%Ot>de{R>mɵQA#/7I>.+OMNLHMq/%-r#dQ8n9S 5HME*OOKE 0q,+`ܼƋwJ22~s$%&#$dSdz33(i]*ݿ?f^3=MNA{?`S?D>rpppp% R0ANN Qh&hMdՒQ2b4#$T# d_Gh+B-rP]ֶ~)T /"8RbQnsAf,)퓕 LoT2q}U' B_LKCº(1Pv1&ȳ{%Ksع"mh^j:kN<%eJOV1bms{qR.PGحtt>Q$l\4ZZ0_ )eCn-ڣoNLz]W&zcJ(? G6-ƒ{RXo؋ʱ=1m \e, '.P;#2ccۢ,l0a\cw$?˕t&X,31l13~"JsyjXQ&jFp2`O y5v-Ix1jղ|9ADX.>*$I,Z͖hd}2$P+QiZͮB,qEĨʱJAJ-$ 2~ ϴ"3)jWQrLN^B梕yqHYFU b!^Dj\)PyR/bQ~W01bǙBӊLʏW?& %! L!:L UBrl>zA)"SsDVyYb8ȍ2M_t~nѴfة:wn?~OuƐi[N+.91i loӗ##_LC!J_sVwQvغ4-˒$ 备%# lռQD,g! tOr(S#KVPrQ$![Xh?77W|=!;;[u)m?wV*.>[ϼD&/B"8*:seRfYhh[t4¹+SSw]%^ pe7 O[ѮesECy8މS!gy} /BV^{R>wU|3KII>YMqߩM˭y(k vMMybT뗞CN8888a0| UZEg-[o.hDju چ`552f2U C 1aJ^q!+/v ЮTA`V& AJ2)eYR-D v"\#)SfAZV;5i&r'NF92B1}9s|H7*/=3 `4ĤO`_CG'IM@&=\"Vvb}+.A3΁V/]m9%킘ss惝qʤ2NBjfqp>usgL8z2rƯiq1l~9-6,Äqc1;y)ɭ]h$3+-m 0~?yCCaa>|_?ռ0q8¹30v8̚.>5 E~N:n\< A~gcq4xG{9`˞8w'Ms:N3wl`NV0խ7i>l.G sF%-g0b6N~Af:I|h#V>XXlfw0qxY)[{p =v0:˹sq2WJ[/H`:e X-Ynh? 6* ,⇟~ilz[CJa$8888a'; xa՜Lg+(IXLvևT4 q&(W0TX$ݲ {-\Q0 ]yYt7 SAIs4hj 'l6`ҕ;ͥ3՜ n-\yԞ s Q^/EGzaYPD~s]sV\ڪ0h@#2: F]w!4/ۙ`Q7n6GiοGk =sL72hk:||nJ8` ^I4E|i[+BbJ u&M#z G G?ǵ|nYѽ{,˷CϤΛ Jhm,BRpd:|h eN_kfVG/>8wp s6Š11qݣ_`9cᕞ8q1~$`:H[8Qcas 23<.Hpppp$}4ab.-+)3h=bf9yyV$(w>LgθUah.3|',>/sj_ՏiF\Lx Dmc5}U5IR`u䅬hZ04`PAî\Qz~Y0Wi[LH*00h̫W0̑hud|K0~T:DM`|۠)=濠`[o?fV CX *՛1|3z%! 9$͜ro698?<xJJKr:t$6 X\:Gl\,^> CUe#-Dr+tÂ_\`hM?q(<dzS\+gׯ_ QAM&[St,B8`d1tу!-;/h\xesJ8 'dh$TP2 ;OI SXCd.|%cx0yRr ;B4 I)xp+B%[fr5klsspppPa011#55?%AҒ>>< *傜Ć.;e*#R<%>_tLp%AER"ᒍA B] )Qt"TE.о//-#'鋡!-P,#dkU* _/$QY-F #*IK)%`:Ʈ /[!(ROv ?GH{?٥z~h U"ٶOiH>DaV@ 8z*hn?V CVbFvT§a8rϵaShtnRzka`!2OmTР:')%zkh/ٹ !]TTCn$fv1^z.8o3T[w`.U\ 'Hl_a`7Ы8V=/,[_IqsZY.S*)G8x8[eZmjb@͡sRr$q0k 1htt_=Ue8 Luqf.wЬOCJBӯooQEIDId  +I ퟋ֝G 8![_ D8a0;aC(,}׵Þ$C]`Ҷ%VN pfL"69՞D2\BíW`S{y ]f^zA[[!ѡ*ZBu45YkAC]UXhmz~۶TGhsX=Ͷ$貕Vm%*/j]Z_5kb?֏﫦y\G6ڲcZU׬nLU< Ǟŏyvο00sWwɴ/_G2Pۯ@| vQ$$.H wC]EO0@txB:Lƍ%v4D.}Rr}}e@EM{=eyL$;~;g|~ IqOp';.$sD)YPRZ e8qd7Hs0 ()}q2k79: _ 0o #@%,FZz2 ǂUy~πgH0曮̐|G{MhK*Ν 0b)b⢱a\^bd#[H*7! j88888a{GIOpdfs%ӛp bNs$I EBR91g"<&>$S8H!3p]9YYx}::WO_ZUP2z388FB:JpI:uNۈK!ވ`>{#v t{;{#'/_3>~W5[Ii?YONjxgϞᵧݧ\aՍ#-^vDFWecADl웋KO/!j'Dz:bc@j'B&D⹳8YiO #.2abR<!BFj|ilkN8888aiɯj@I DBosTHNV-+e+!Ljlz*wbf%cuɱmm#'bތ)I6Af$dmd$Xf-֭['ڵkm'o? Ʉz5TZ./EVt9L*1m׺b^P=~*ݻ*ilYY cgmߗ@ܾ|Y. =[lUGۯy|88888a{ӿ"YN8Kd"|vJuDN~ \:93`f6]BtJ{FFVOu _//bs(GAA-s],$ \ルނX[&@-0VP' 0pp ' $ D˳ *qN88888888sՑSBe_YJNBFJ\ +a 8aNXRrh&]T" tNsN8LZA^]-ZP}uN~O럹88888AFVͥ0W2p 5S5%նh֦0 ))YϜ#r^n.rh] !% tyy՜ j 9) ARМOsrrDbk!8ⰧtgQaeOjiBEEV}s6m[2oyy˫>;!b\OhrIн,r$DzsDc*>s!9ٔsC7.a`# rDeтȃ2' AV70ACЧH}:v.hܦ'Z3OI0|dTp?~";a򤉘0N^GrF 3X/SMi1'UQn(]2-J"ņxb+L<3᲍-2sjpqbZ\"%~KíӇ`a:9+7@ptJ y `05k_!;}WkNvnfj,Nө1e9Ԭ*6qdzL?M-puĄza:+L27/\;9?91mw I"?Ă4p%6j&<t/4Ä hnNj59p1nX,\I)" ϜgX\DviqXa6N=F% r 25R<eP;7sQ( kO4xE': ׈TxM5{YPV> jj_Bkp Ф,M%AsXo4nFTKtS^{XLVr0rrDK7B߹鱰1u, ꢋfR8ij!@/ٶ?7Ƃw)9KGvBI6SCIy"=.B,EC-4k+P[cUSLcיIYOD&0lTL5 7g[P$ -qL7 )-{EF*<}ԧmq VsDdFaƨhS-,FF=#4>>OOAS{ŔPnGF;Sn`"-ޘ;ڪr4DmU:9T"zTv}ueЎ~'CE![|܇QKY0sgBEcJC1]3N~q 6Px)8?0B AYYIMY8WJFd$E -e^0%}_]\ p.ƫŗ#e8j]Ơvm8a(' q8.#bhPk'29zv/CCENA1rSc0iڏcAZ-8g7΂.g&D4~@Mp|졯 N0i%yUu&g&rtg!ss{tN1 1wl ؒ jDve$CQ\Z;toO!#%+&^>R m*]]a># V ISa:#N]B!!9v6^YksZ: Kff8yY~ݼ!/-g %=7e( bŅyqUepb%R^(--DNdqX ~[S귆3_vYB^x'ObwxaDTx=3[rva<Cލ=iQ>hŻn9888ᄁZ3bl3j {9a`dsXl& eF#)(̒ʝ:= aPVRAz Չ+ţB\}ɰ,Ct)gbjMahZMN ڷm$cHIi*3!-)kW_@mނg(!A5+1c{ɰ08̑U >vW I'{ ?'!ut-9)I&# OZR4ln $*~|Te#KŶ""ףC5n* g=x %$Xgb(Ht[H_(j͛wJ|0 '$ gWWCE2h@ ~;#zy^G{mULލB^9m#02WO6^Y8k Zi`kap#ҳD+# wøp}%;uhp}i^"+b t8"xyc@n %Oڢ*?R_MЪ"0iĴ!GZS+3A:==Cpܮ!rssl('tn' hg4 H! [0Fbvp ʲbe(9 tA DIS$1탼ppLY 9Y" Wرv0DsӨJ8(;9`:%Wz7>VOk,2°pyxfUgtgѦd4j k_1,\&M\3&oB3+ c*3 "ӝ-JF}psdg$aΘ9i>Rsł4ٴ]" "aΑwdg!9% YƝKG*CKv,ᇥNjsezHM =>dΙNʭuj g6訊Y}մѐGSŗ "Toa`OjNEi=ݣeB*-uiKj 𗟰-id&-08h iKJH^b.!#ueajuqQ~0ݓVVFmа4nThD6hyYeL>at,tAq 2AfUW =W !"[`~h$`S #cI5W~@=ypd1d -6Lґ]I 8C3°aVsUM0ú ~*L9mɜI"+q>x9i7cݚ7l ڨ;5 5`:n7o( 0s :Ƃ%+iF,'dF[#L< zĠv ߅ƐS~&lٲ ̀@>ϥ.*+4j dPLF/ 3sPBE?s*t5UF7C|zN>ؿ|"[r̔^ʊrahv+l-V' l&ƌא8NYaOEn~prr3£E{ =3yzf/1jJD2)FRL^QN CJLLP28tR3sEu tTTn+60sx2MrySۻ@E;$VB<޲R8\@>*x!]0y!"Lc}~f LD?(E\ [)`GO5<}ȉmRqZ4о0=uK5Ti9Ź=;:|v-o9)`;[ CgCNQpmh]W~vOX@&Y] ǿ0Da ZN^^B|6 aj%:}R=3L{N-i1|xĊPovNvz_MdZcM/%d!K0ȓ#FV:/擆fAg"8.̞ 9ְv$Kw*T*uk 0gYa[)bǐ7T:Ax(\{#%8^98a-H7{7/CwvhIncUA8˯n΄XG5oglޅ7] fͰl^cbg=l?a8L?w!ٽ7Ɣ[7OAVہlrSsfc'^|$Yrb1?1vp<Ľ{p=xII9=> w'A mNDdJ&\ƺC$l@>~_'# ˀ{7@,!:\9'A-t1dZ"Xo9ją ڶ8yjc H'po{lذQ18x~%v@sh >k :zLō;!*w_w;&&9M?E&8@*8y|]1>=SqLM5= S>alq$aL'qQ;v 'N%°j-hA,¢? o pxnx[G ~ۊpnd'`l=nTn_"E8s>'jg<PZaΜy8x-Q5hKa6)Ckٳ ,7 $Lkgc72u*}#tp>?‹ ]p;g}q1 sP)!z솙7♳;R39%cɣ FbH*,$VCHhluzǑ#={`!v7g3GF}I+} C\SVpa͢pX;6%s)SS`Is:°=MGD*B!sXSMځ7#!@Ƥظmݺ.n/%DHң0sPXo97Vk$? &X*([.†O׷dǏ }=~ ?B31%v}M5Yd^xe%#N݇YGBZ5k?*k^~%j)qgᩰ+У0a1 6mQ uZv !L k1)!{r$i>} Da *Qkif@|-EU.(x *G~ ZwUPqk\LJ毠c2gu57,&`̴͔0k8888ECf QʓJ|0l&8?񁷗'qt1מy ~rǃ"h&f e[Y4^;O IQ%,7@iY!_M7 `i1R0-u9ew5"LR7o-T),,ǟeP~t9H= Go`BI8߈e L ϝ9888!Wr %' 44Qշ utCHkY0GhkA۠#GQV C_[Ѻ($j6~`e%V'&\ܻ zӅ!0o0h 9!zI6c>Eayd! ۵!VGz9)wtOK[ v~L% mgGl (6L[9%ߋ+AFRr)_F,,GvFIIh0tH=! T( 6k-2ȉ!' !3tP A&7a`9.يBˋۧP2ЉV.BCoF9a}aAvbFtNf)08_ =j&PRHd)'S`Wz=GPD)+Fh,W_{[N\)2) zu皙PiW( w$e(GV00YeqNAàm(}SLQ spbBsgN8a7 CFm+Akhܻ :ȣϰqp p{gar K@/{_Vg'Xt.FMkwcmt>t\<֋cvS0/"e-'شl.tZ BQoۺRR87AHPcq}"+A&9bRQ=]a"A00aByFg!rM̿9B+VY4))i MM-Bo֔*Q8Mv(̸:d(a*KA&BvB\GWڑ鐚x -G9t>5 yQZY46Ejzr5A(ZV CM_e,dad\7AH$g;uXYh D$H( Dj::~8]=4a(.%^x^x+ EA h$u 'MB9$dBDdhT^xϗ#!!k /pgjH@)Ց'j^x _~ WW? }/|Ly@4I w6es߯a`@QDfĎ+6(&)*r!IX]͐}?'*-L``B>^>#sexJ>tfGDDT2^P~sln#tu'riA` 1$q!O(0mV,-?bťKXgeuXJiQÃ[IlHLJF8ζs󋪵f)+.BBL Rqb_S4(}w\z\'~WE!c.)>er;e%H 'BdlJI;y٢O?g)+;oV<JW]G+Nx7ޔ"';G}%eo$ / ۷oc+XLexjj*4D{^A?[ڏFl|bILLcNB|p $W|u#5%QQHLJ5aXa=+׉0ܼySb'\! sYC^R86͞ M?FMa4hY0Dx?F_}=܉7A.!,?Fv'Tgy5 V+izhg \^a>BR hO: a(LhF_BKPN&lp;lO/E})ٻ7zt6/iLbm!.zdž9a*?~ϾQ\9#:u>,sS8|=>Z@Dja{tp4[1q[:Vem!VsVa"M{Cgՠx捀JR3zjw;7W}D /5i uVSиyxӐnÔE-Z(`& 'O`Jês\Ler;WǐD+A/0z@OL _8,> =g_$'%yIH$a; X6}A<m?:5{aص 9Ç [za5&vHOLk\KF폃7_6l aPRc3s Hnܸ! QPP B^<]Wi??;թ0Ҵ/}֜y(dP۝Z@bԜB) k+77O /NZO>EM1 j_ !̉<F>ŏڸjM&:v:rh$ WOeⰥ)> &.8 ;;'eUL޾-#\ָͤb6j8E0) /_rlSȥ{XHoO~VMW?c($s\۷ ?~) (e"X7[B+oqfl|Uk|Saxsae}G.<#<:cLfၓ/Rsl|x7x" 3 N^DJJ pIpKѪ?>0x%CNxć #4mFWD \XO鉶!" 2a5X ~~72~K4ѡwNZ_JbbbKӽS֣;N?|-2S@a6  )uظf%,-iAx"."KFaÈMLp```5P.HLiiȬ 0*/Gضe+ၞp~g3" 3 \ČX"I/ _cX|= a|V8ӸnedifFF!<,g/w_|іp&?}e㑈xK D&As<|N#ghLۡEcU>oq?wO/3q~0n݈ RgBRx`n""AhaE 7aNA]>ɥ3ߣsX0{iK} ^{a[ᾛsV7äaݡ܁8622~[L"e4~ELz=sظd<|z-d /hbfX+5h 0H36\컳}?.Ed M00~&~qt1xT?9#&1fb5&/#_OaXwQqu! a`Z?>> 6Xrܿ{0 g9nO#fLZ^ˬfKns.܉0lO% ܇ca 죜tiuEPWD́zɂ]e ȳsع cvDßg~}%7"u&$f &G?|^~?t$]~04k`䕻G+ VXSXzηopn@j|EmcîE۴'CW]m :}P50ƨ@駟CibKI"/ 6$_͗_.}q| FFyuyFęCo 3@K\=1l,4mF]ZI1=$?=7nS鍔3x 0@,"Jb@3k]b#ǍCi,d0k"":XT$ l_9~ DP " 0[ET|'ԕCϾ#qVC4f$F`q1c%a_yru9-"3HMMV{VFس1.{ׯ x:}Kf!-ź"$&AsY E@xh^9]1V~&!}g{72 .L(K.. k é5 OHHB(VW %r&G>nHb& /8!l:}bdT˷!=Q^`:fM_ߘLrز8]+W.3'rBNiiӮ,`Z@ϾC7j?~ 8?94ŷ?7g06[)F τ"m?ֈgԾҿJYͤ:—Ea0 aF,6 [&,fH+xApC$Dx?`<~ZBkn|iF`"*F?P4F4Ѧ|#0khwL:N 8aWG! I諥 %1<"$ճKWZs_ ؊'޹ֳ`le&N¤I1~?G/RҨ,ZsaLK\]0 *2 YaȄpv!9Op^WEy ::@cb 3] {ǂal?HDaXg#7m:52Y՜|aE> ?56gTf_- oq}l|IYHo4n eŸx#]gh>QKf8 W>h/IKB5n=|ayzRZxxeZueDLYTyV" E3֦KCHa JU"h4 W)"E{Cq ̚E5Q +Caf=]pɘ1+cT9a% %qEcĊhq,b3Kv`xCp|* ;Ξ"$DylhXډ5K-{L<|Hf=/)>Ξ=Of/xHXޏ`]T# l_]1ZcӖ78JDB2a4 ]DJdZrD) %Fov°Dil-a;jع,[Op aO9I )6IrD*8;V ÛB?qahcVK0| ( q1vH\=C~Z?DVTE}Ƥ[. CTлWo?xIUG0jE>A{=uq$3$T-G~KaQFahdψοńb4(K25|1 a&3|GfKY2'֐ gQf77?5g?;+2I*NՋ˭ݐiKO_i4j8Jӫ{BZA33hDRXS1fXa84 ߫aH s| Xڃ@wX_6mOc-Q42Ϻ Mz^VsAM ^tY.5e9+}nWL㄁^~U~t&Y2 PpM{g+J;\}NZaۛ0hUSz#,!% ̉9~!!xtteخޡ 6kǶ>p\_bϺ6Ol`=m,WE SXӪ[}Fqp%z'ܹD`pqqR=| ^9;cp! a0ƌcԫ#6c Ju -aۂek ,q> X1AlT.<vc\V6`,1Mfzr`|u#TYfhڤ h_KxS:D|q? N/BWSUTiSoaҍR+LM0C&>z:C*|k[Bgi,|1a)ʊƌPk":UwuRRXD}vJ-ȔqDnc nN4VBʑS,$!EuM8FEjѠ.Eg"&1Ӣ}1OG(TFrp3\Xr+UwDΆb $;L`uΑMyޒ:E0]$f(+.є%Sm5ѕv51_8Mʚi:j5h2 }LֲI;g \Ch 4K=k$^~E tBk `-yO^Yo )EZ&L@եEU~~osDg0}#k;&'ܯH5p;K?\}iqjA?x$y X$IzyyU# l_]D\'E=ƌ=1|_|@~ph3g.bְֳ }`b8)OıϨ_o% YȐ(3՗@2= JܩF؏7K" j34$a"#sG5e1 ?.pu@t|26;E!V(Dv9|H٫oHR_'!/gfIA>m36O{=GX/\KW\ЗlӲrBJ̯CW/fxҳ剄 QdIsU%?Nx@;NLICr~{'%7a`= L ?ox_$lpD0~ {{x&3aDWǾY0}Ȑ PIOаPPPP >VwW89 8$!tLjB{ZD002R%P~ EE"b&|3AGOXi<<<c+%ʿ|>>& ꉥ[/!3cgsVN]_Gr$heeD1aP$Oܦ@,?03m[Dj =zT'sYNxNx[-Q[]g lLB K;A9fsB D@9 aCF|Aca(+i`p*VФ\sYI ' 07)ȾSUQ[WS=R\.'9l_]u5stti<\D_Ml\W'-m3# #ާ /0os ?0 /IQ|Bïk/Ե$̌ ,$&&z \vfWY-E 22}ɒH@I \(^x撓#LG^NA`y*:13AE3$svR㄁^x^xK88( zh*0 / /0p_BFTۢYnZr *eHOr" q"?7#7_Ȣs2"\4 23,7 Y B~gRK n2 =z9xBp[XT,w¼<2$+yͣ+JQVR$ܣJKQ`|-)y^8aߋVԡo`O2t2]иMOHgL8a1SaqرZZzX ]:ŔvE]$F07t? )p9```}}}K_ Mav 0fV#0e!-KNrzz:3YE$c\SyLá.jP6gGB޻KG߄1?8sᥣ8k3G!X̢*-́ 0}L0/C~kt2{;e .Å1H)S.6:v岼T5a>Xy;ZE/(=jcg)ictoޔ"հP[y}k?2í3ao 2kU{\AZnIEHtzL@3zt;7W}uEkHc0o /pAk3ᤂh,WcD*nH,{b>Z1h&}ǣu-Nޕ[40kCUGTGǿC M~&0Q Ɂ>~SS<2aIr) 5㦖KsQXӷXĒҲ9Å>BjCJf6o ұt(\y +8`!t|x ft)-Xa;q xh-\> VxsKPl۴S&OƢޙ s}]#=Dd&6Ycʤ>sl|x7X͘ifw"R~af"Nٍ+j"lۼ C[ɵYH缩u$͑'E}Me?{ӧzjBkh7<0x+Bl]JrKP / ' jFNe˖aҥ`h!F XrE(((Ю +ţB\}ɰ,Ct)gbjMp[kӳ CyqًN.HVuФi \4/*x움hh{4Pl 9`XL|_IC}HUEKhҗ,bkkhf#6#4ne`8r>L0|jz9>1(}`c3<W2M_BX[ BVB,bSg쑍PhX<{ +fߣ3ٳ-= JM>'G,b4ᩅ""9{Z[=ްurSr`io1RҰqId*fҢ6m!pils ޯ`*|Swhe<"p&4k &LԱѢ01زx<|z-+JMFpP𡨈daHOAD'hME0 /pQPQi UM}KeBw(% } 2RLsӖ$dGƪV Vu`ՆkJ"°xy0>qxZ~(] CŒ텎jo,42qpJ4m +v@D㑘[('h{|/Ͽ_~?|ASc az/Pݷߠ㸅$b_ A_͗_^'$}B~oWEUY^&r$捻l9#`b m MFj$Fth O6ϒَZe1勰|(:j.ʳche0CѻmaMĜF5nA ő{CSиTd'c+]0vFgY)XODTp,/,,ߪ&R OmI !; ?LX{mzMF`8rN5plw|ŏPj9Z7oBYUI#}7P6Ξ «7ݠ>~aLLe}.. L4m5̱VWXtÈ0| ] ⊨: l={XOrMYBDa;БBɇa- gO =\iEax.ގLk!\L=&hHښ~cРA0jm9z_uK †+/%..C$>(cr<}}OP#a / ' 0838K|Mo?#h@6*JBݰ fXa֭]#Dga~dZ7nj#Ч_?Lf.AU-FMcAC]UT*R0&H`Щ7,YA$f#/ %CKǔyZv[ &υ79Ec r-_A,֞>lШM(@Cn0{'`2\ C>+LB>]oBcb_bp^à?t;PПbakؼVƗoe(~SN>:RFF GV/ Zq68t>Ca3J[y b aXt0%MDw@ ώ.7τP$d ^l5y#9,9xcM1p yOln{a(#jm<=\ѽ")~0axWo`YZZJw0 /p@^A G|n!z ]O^Cjv>JzzzƘ_/Yi$s4lZ: 0'0 3? 0PPPF2H4~04L'"'<9yvj'wcM G .aO)֞~ yIb˵W8^eK ~KBWX*{` ,R' 7)" "P9J8J%ɮɄo } \@[ ' #[C` L@iAއ9y-okb&䕾 ̞6-ÕHBYA V͝9W# 9i5zw$i9(#^x1VSano1.vNj,Ed ie \; rM~+%9bVx+돡ZjP| rѬY34mM4/Rt%^ e)),xMB|R 2ll]e!cm4Ѹqc(?.DR{i@GFApAU"1P"VlFAq>v 9m7,l< oqe5F.A{3dP>;CN%4uлO M;1sz4@th\M@B;&1VUI/v EV?Fwv W[B)3?Ov}|ĐHs6`˶ТqufWZQ뵁Ao8&0# ' j=k=-X$_E{֐^{\w  _l0( ֳ.U3FbC`d7R;B?Zq/}lm>-4ϢwZI8u }0mN P SMB ێ\0ec)T X-1a93[Ǐ }=~,i3}G̡&B(8>}7bԐ~P#giM}cEV?'M.PA^CC<3Jf T`Gd!3KUNxRV;&rh,s~ڳ $ / oażB[@[gfKjDTZ!-nfRP_xB<c%4-{[-RAQL԰bU+@FD&Iq6`ܩtN7>&^^~£eqI{A#( Ż@fN>-RAjL&(I0- j#k=)}ߡG} A>" ' / ' aⰤЩleA}yrtL~zH#?Q}@GG::$ĮG~l,vDfh(+ faH yI>ZBD&5:LDfM,pH.]=mmRF]CYGcf[֭DoA&B6Ȉ$0cja\9i1007}!Sr$Nm)8"'aI30ƌWBdb>k2ȉ!' --- o4E`~p橍sPhcƓB'6H߀4 qM ޒ/0R / /ߘ0\FiN< 7 H+v> V5 "9Wp|b]1a`WRƮ3wQHYDjF9eؾŸh`ۉGLCx$\ OfJ=|(ːw$Q;x`ڴjNL2RdN.)|., 0p9[$%* aU9a^x^xᄡA*lJں}:hVʤ̜;mbnfM[k8u宐݇QzHLL4):5osz /O<{7Q"X3LȄ')?[89͘3s!v؊! mDNԼr4m:7??KlG0oHf٨U0t޲GQ?9 9a^x^xÂ`C߅!Y)Ehڬe{n m-Q|y99222BhF:(gC۶hӺ5yK3# -y9H-T w±JI@P%gXm QAZfi搦4(RTCOAUEJEQQA0Reƥ /iiij[J9a|HHً98888888 0YH)" ͛,Zh.nWfhFD!+-EǛӹr5Lعn@ dIXP$On-L:Ңԇ ψi=`Bռ-9Ya 9ZH;ޢ_jKD8XYP9888(((\qpu`IA$;JfaZ6BZVVU1g^aHLʂ4ҤI`Bۯ)FDmEI`AT|a`UrR!C cJUӂk8aߏTsD?mu ahN+ $pɊWdhh_L"dm`hh@&J)`u[A 1h.!PqAA(44 oAF &"ͅ7cyhN~7PXX?HLjs>dv;k8ʉf9;!..c6U 0H {p/)U4k&@J_1E^i'xȈMD mVa`cf2ȍYFX '!29aF؇-!CzV NNNVDR\Th+1xT!Q\(W6y9Kg'8;B@H$ry^RO;7Io\\,W2he(7=-)Y;4 6o);gfsA4 ĹEްqnn>{ X AAAV4D^;?iGKߎHF ط|cNB|ܐ\!Fc^.{F'1)nS@ }sdH,Hr7}ЙE^bd`$%D-̃-%!49%KW觅ĬHN0uj.1Gf%Eypd&BJlv$_QKWˉnQ;' 7Z@z@=ʖX4  7n~}`D6#|<5?6~є<E )DXvУ0a,S"Kޤ^D^ב[XTi=}t%hwK(.)FL7VOTsK4WPi[AH7hKI Kk0,<(!5luƾkp_=ֿ: wY+|3Spp%ڨ4AO)M,zqY(JEzt`ء 1gga^_Ly~lZ%`ްy^W'8/WՊH+Åxod$9q+fOƞ+v4̎" 'Nb4NglSאּ O/Ƣ{%O )iɓ'|<\EfNޟ~=B+[INNRL5 Ā1|Tqգp^D" u jǾuJ î؍1#Gbر=  # ,JE3wjn`s\.8ahZT o@&A"sr}%! PbJT8ߓkAR,p; ƄMJPZZZe_έ0zPj3f_g]|I= AP|:D÷[ȸ:vۣ{A#: taWX.B4m=w7QOBxNŻv'T'9U >m[JtԃQ }!}{Rn&BFAfOW2]v:ȈvTⱶvNxxJrJ֣tiLbF`gizdž:v"&_~}UDfz"f 5o`%AwCsɐ\WqavϙI3W`|SE"mAAxXsPg|R/5Cg,ENq,S =Vs+uRؘflm3(tsW-('}s|ۨ&;``+y>rR1uX,}f#{bDf PPǻGa)ƤCheRO1 uQWѾh5ψ.h$EͤTq矮i`Cf*4lžފhE=FɳW xbǠS!d3ӛDMeGzvmFjSS[)8A> î}qa>L8t/BXt c1E~bB. O;o8Pl.\{?Zi +%ׯ r_dJٹNu@sR0oRO;,?v>.%H01xt5abI"^YIA.|'F!*ax}M~ 4-8VP 3s"[{O&=v!lx9CG-4jsO=VTw$|ZT?))9UMȬ/3;GlTe⤥9Tp /yy"5nXEYE =<`4^ec"?c+>Lq~Rŧh 0kX{|U=jI+y8_ _caXeP f`B0X̹G²s,Z0'O5 ٸsN\|zE݆ۧKW_ Mѧ lXk cFx0*H3VYTS u{wmk`$mС}رa![..\ݧ#34! .D|)cڬXDu--bOù50u EUf"?֞^)|ψ0L |D^ҿɓ'pQ\9t 0|Zכ>`\=?} ENȢu^HOQmn۶NDշ?AK%[Opf 7BK5(} kE@PT'9}Bj|(FFb % 3e>h>ұ?Q7/# 8v[ߡ#zͶ &?c.dl(>}MZ3f4q[%C#}6dtIܽd9n,oER OYs ~lyIZ c}1칇`{h'ȫcƜyU*F]p+l}%N;SїէQ4%qOw[hr-!r3ou-K& ZYr ln $*;v&*bUǿLl@!Ē b9<ȹ7bpŘI3ez ̗0;:P0}ucgt\}}½{@Og3733tF.=ar-YF.ݰ]a7"4uJ@O! yp5Aºeꊠ;qūaLK3g?}>K4T""1K>~}'|GH* ҵfLp{} 9ptcj^2Qpb4i|Sz TUѡZ-%S%ޑwd3t5Ж|(>| FyAᅢr1IL<|IU 4 _~[vp}p | @|zhbz-|^!N}.6żɬ@ nDV< FmT" c 9gff#5. ;׬=ccqZMH~4Sń!?"#.L[NE+>p IAYQ֘DaH̯JlFڀ''WB& S [ M!u)iPP ` <`.3QX{ᥛ WƼw!DvG 9Ia݁{(*-C<[TWŒ3d_MN9rw#%۪b^Ab(H?^dn.?4* {kR7u}״5;! 0tzyhѻ`,t~8 C{W"svv뉋wbhX=:}Ez07ƀA]/€YDQ` uгHܡw{kVC4f$F`q1c%a_y:`bb"GjjjT[G1ʞŏyvߗ00[DFB

ݽ -ź9;eujD&;qG8k )"j#zO :<ʿXb\G\ίܑ%JF>jfdK̫^JiR}& $Wb`>xĐU.r:F N5cL58 /{uΟٳgpsd4 LӢs/h> \u4K(GHBfhh"hn=g#|װv_/kbj2x7@CEaEO&:Gvk#TAx&w! |/|d؎ ZJ-B ﱅSоTV1k\\o.c-R0\dMpPZ*zў],"V񜞁aZfVj*&<@(r!4=I7w- awpd 2 Aޡb1]+EvOa07ęO@fif\:V6CD d#' Oъ_ H;ױz:bX:cI4i2Ə^襻Xj> @ u}"pxLgw"~B}SPE5u-X?(Ҥ0̓ňtԆ~W,1t1m } Pq9fsk #۷o_Q}? ,v% !,h ǟ}sNu}Y`_Ro7}:=th!h#bsع5a; ͇@. IЌKBًR;{LYAƏ hDf[ٻ *6v(vctآ& vwwҝݍߙEJuC?<w9gΝ;_ >0h4>aU! 41dzMNM]_Avq e҉' QqS[.D"-@ (kSN2؃j4BH I6X:XL\޹miǑp lޠ_N Y)ZP+W0yA7w-[|8y 8FD:ZFA0;[r1'Ɲǎ󌂢o$)@+v#X Vcg<u@, 5(e$9ގ¸&H)& ,k, %DeS,\n0:54gDi>=sudХҋ!w"QSp"תyy[ahڴTk?o]vt gNxJUlh*'n.&umiv +,È! +SDo=6.mOy8zKG̰ c=|);d-w, , !!{fFQ#{x?m".%='3Xe1p=,|Ny2wU?#Bػd=t 'N's\`>{ ..Xd< cgЖN,aPh+wP vpqqJ*~.BI\Xŗ h7#FTIR88ʓϽoIΟ?/xKg? ÙpSqX[֧: $yBoZ6o"Ԯ](zc++ѡuc4k M4AQl?3Mx5D7%#<||umڴxÆ k^NEdQxiPlҠjQ@M ;n]qhY,lΐ^A_ RF{tbS'R: v1XESK СesZBy+v""Of"N{㘍)Z4hiA2UPa`kuy B==F 2][C{*8=E -=Pa20`\]vTd&\ncB9# WB[TTT LVG>zHѶeLFWct ħ >nCƖ=zJb,J3v EU-;Hw a}`p/I1Mљ֧[Tt=&C4aFN8?8۳BQ1Lq%8|> NؙPP9#UHAEFV{@E%um>00᛽@b*;&'2azh(AEUvkJFA~غ**ԀyVn8 @?0Vq**e ǡ6P"Ej T0q1،`{6%N[1:8x4(yhikAkg5ܝp4! t.YED8H.sT0|}UfZy^ҡ!T~>BfCALC'' Aan$z8Sљ BÐ!h+;,V/!$OO 'ǐe%e#(}pɵi$93/3{pU/>cAPP\x\cA ŕ?ܷxʷ;_j-^V뫸O/O|Q5+h)Z_e]JW+wYXV* n܊ND;W 3 #zle @*_RA0\~/=c\H䄁㣿2+[ ?' سU Lg,˄ĄgbX b&|3Aݧxi<<<*sK4%_Wx8? y,xLL 3t@50|wAe A@ms tB7)z/q|VH$ey&޽[%_\XZxiP+aa:Xn|CJHbp[2߫0pUg 36'67+& bq\m/_z>6glKa04ð2Vnao-# OʟJg)KEDd( >Q{"9a?nB.,]܅]}lC2 W!͓1[ķNpP" "#9a&xQ\|>b #!XN8`HEA_fPϗ`Ĥ>l+ u0bDF#)p08a>X[f]\k k;pi Y,a0YN8,*r~ ǿ.,vG>B$n. Xz }!;_" ,P_ o98888888y0Y$*aL@LFi`gIp*^1Fv,#G%d1_$ ,o|7ژ, ^e(?4FܓFgfɅeQL L,ˠ92hUR1Jo|W7md,XvoGOZO+iJotTEhEօ#N7M1a*>mo; f;7!ekDMVv`Y9m婽(Wc/>c d>8D)c^E+x${NѢ4֗Ujd/É ƷicBLUj6|;߾ݍYmpppq!eiF>Ն#"">vS|Eskfk֘F*@{.oۍ.+8uV.2p8*clF9npv76\qPTVǢzbh(+r_0c厳\Epz;P3\:Rà7{k! 6KǏ>`3gXeڲ>ׅTp)<^^ AZN{MJA>ҐVxp}+p޷_!#-b4'0o I0D&uq"_iYx_zN]E$VXq2(īoʞ+$ĄӃU˘Dϓ;9Yde)3+oߕ\+ 74Nyx o߼FvV`_y%)N8afݻO߽}77o*χCnb8͝Pn]k 5kp^~b2&}V﹁"^|sɖ+ӯz= mvLH 6DKNbdF yзhb׷.fa& 0heVI8d|QC|":GvnF-[ZIGKfllZ}R" ^z`(a]է/B|fi G,Ų ,h?~_w >]ݹVFW0ctܸ SYs COl1f{bL6 V""AMk7c ,{QV6 Uɉ U5ub줙8zb>/پr!:K>NJ\<ut0iҤL0ƦCJ'sCw:]Zf Wŧ~D_5,^q~k\= #C]G<ٻ"ܱw̛3 VKpCdWyp`G `,d&a?F1fz)@~%lN:t4: F6qѯ[C@%;3i}EgÄ|6ǯ?Td;瑱ӠJ/ēVc5Ԭ݊Ҙ é0(h5"OXp}D߁)? e!M^wԿ~NKО娆J3c>h!ݪjڳpL z s06W'G6CRWh0nP=D/W8~ZuAgL̘2 k|Igb޸!B;. c{85k﫡eqH)(5Ӈ v.4´Y+Q^(h!|W&1nr0#hy}[OQ\愁J6{G9ziٲvhzڢ0ocm+ hѮ3`4N> Ws4bKcH$zcLPq߿3>J 7}H@yI`qD ʟCJ WYΕC 4v텝-lm +za5&"a?!>%Z<I_ lu0r,4 . 1>I ´p䒓Beh()`͞K;*qseXs2!=hBc!a?H;].3HSBnn84L&bxl&ҥKy}ly!0<~?kTJ^\O~)Yq$*aH ͹k$2)%Wv\ <>l}=4mҀEDmѴ۶{k?Ĉm8,,b?f Ŗ ⶓ/׸{$N\W>~w.a@6hۥ7ݸVPUƦu0ct,\A5N[ ! Ȋîu; Mp7{[gwNd}C:|ɹxY,ZHZ[-{bL_MrN*asD~66\x;Wf/780aVcjMKpruCtB T?& Cm@Hwb,%!|04# C&`l-֬#sk'[p-usW$hO.0̲>p{x zid)xQ2 ". ftjr3* QVز'OcGq#]'#N #e$Bp|b `+hZWHAd{?7!F̝PZ>zw?k#4* & DΐYMz!Ƀ8x&>n#7=Bٸ:![ ɰ U Yi@؂\.c@g" {8h6\ #Tu`:W@u:uM;wĭ~EQ}b*莑C{!$'tkcLo;6#?Sfm4Bc ^oA0 ' -a;f9]fo{$k@n!ӻe9ش 3HOcc-ܵwqrul{{O!&&N76z4Ķq#xzPx:Ĵ1ʘ;֯x -XOaXqU! a`?..XBi]۷nQ-ܼy .tehN1{0#fk +<,`\LFas' = ,U[a`.I 8ċy{ 8qV-ԉ:P HBk,]өc ʰ= Wl>9amgq2ീEXf{ }Ugb)\ -q"|;#b]̕8g+_w@WL?L ka@f:'LRFjÏ?&-Zw2:?U?ڵN:Y7 l .|04o\KpYзVh+9J*:Ԙc֢}P8bБSmK DI7Ogit?gU 6S zN0|*^ETQEV}GѠw?f._ۼT썟j7ƙDv0EnR8w6Fwj1s0YC4@^S!YK{z

w2ZgdaPsMU P!iT#t&Yx/,$ɭ 5m Ǜ"<) A0@ AQzsM*{q3c^~[]ޅ׈zl`&n … 8w,n>t'dn`na y)~V.##:} B^R45C-pۙ, :CPQ ݿmFѪu{,|Z6@ Cl^:Z -J;JFVCK"°PD(X0XFYA{)rވǬ 0R~0kGxm`ܽ2=@BRÈ/q!2=J)7TC@n* m9X0pPE垒0}d߃h3/3Kpi>ZxEϓwpbҳڭ+(wBs;L6'A`C___!]hiG+ ^~dsoOܹv+,`X8lAfL ]2ii5u,2+ Y81ɩ "_v.~BSPP\Y=I9H0˃8UQQ"k0F O, >֡*`kKèz#>k 8LVka(0wd p32w0`sl:_ ]|zto CiXd޼W/cUع0n;dڰ" o3`5g,:ta9C0,\qTIL+81 ̷r(MU" .a詉 f:ۊT]0~#Fk&;kx a8I JÚF19y~fLʤgTea<0k2ml}X}7fRļFMcxeabk@NS~sIK BVʝڢ~σh{+X9:b" J3-`fd2AHda8fId{0 W7BGC(<$S'?z8_R8Ple%m =%՚1 :$31О4Ξ"D~ CѰXCqlyHn=((?In`e\,@W>>>WlVc5|#@T1XjU&̻$ gxp~:Cc`Y4[է%;biĂQfaP5!5 ۶ tŸh@nW2`u2wo(Xru;(f+/v+LN}P0~\xaZAxC_:T(, ,eBBBq>6sǽGxjYwcn(J5p{0Oa?w"SXZFw9&18q 1>{ ..Xd< cgЖp!,aPhH Gv4b\aА*ͅ]| a``řV+Mnm=$x%x:aD2%AD@KNJIhO.KpJ1ҳӷ!^%7H85hP܏VܘjE8R 8Irߩl-@ɍ% UxKg? Ùp,}e}>ÐF3&U Bk_l8pVpq>myhִ) h$3<x3:޴xƍCCZԷY㍨ނs7MZӨ)&=tZwqZ_[\X 30K :uc*:_V`B$:K$Wc)̊& ,t{0E8CYZ6l?5Z=:lDg\S|4гWo?zz_$ MHuFAC0bf/]'h#oD m`qNO<.(xY##7f9ڶA=0ˎ_8ۂR/3;u>iiꎩJI#zu0\q !'ɟx ' DbHHHAJB*S%*vn9z352c`:IRRRdy\zNuxnzwn(B{I WF܄ZĄ0#+;&'TQTjPVրn妤%TT5uC%0 H*?WUe Auh ȽW*8{wlXi=}"^Ծc1ghW!7-(+)a_ LÁK_% ݋' $a(iJ\{J/6T0x "S轝A r{?"9+11UM,(!HS)(g*eO) iũ ';\Oң}JXRkJ"5ԅh.twd? 3-P d FXxD*K›b¼,#We"+q+?N2ؗU"(NNGznA9eQLkOB7#2eDTUULi£z5ݿT=%RRI32K<\<] JzTY94A}ɇ853)I(xE \ܼ~rӓF'Ec{XEFf>9a3MyeINlg䴒gH=[=bJ~U=nt:00a*\tu=~?/^@q@Y>um2;@D!0 ~U ٞ'? Fi܀2l.~%44/)x-%zn.prvApH8BkLjB{WZA 8}Y ZX×Z@mF+c H)wsk kCi,zFRlW[`4::)H#cih/?G :gT؍Z"J<"UF \' ̼Y1JE~0oO\k~X78a_MƞTԇ ̂2!1ٗu~@ؾ9/GQ3_<_34huRпxlJ  a$ss~ WǀQlgICUYjU9E,^w,kOc\C~įC ;sDx/ܾzvw򳓰~`.[;v+5PV#"…kN)^r=;,&lX%7nݻw֖ᄁo|' |TŴdB8M`srww 7?w׃/=˷aK֘5[?KҨP7 1222Rl@yI#?+X>b")mJWNivG ُJgD.7YUʦ(/'צ8mA[]IÈ"p ֜0i`Ob}&e/ʪe}J7NlSO>$\v b-&9l_UWuΕsttY<^Uqg.-O"f9|0&O,XWB`-[,X}=q(S۲4,q|o|79ʏ)DJXQF[U$l;w/r * #̋aB40$i+K888aƷ얝-L`y7}W,Xf eR.g`V1N7o|)a(8 1ݒ8aOA~~*,d/! ,c2&bt<N8888*4k`,]5mgI:ߪ^Ǘ$ܿ5eIbAZ˒ C(]us_HE! _mπls_G#+d*?_!ekW&Ϭ̙3T}Ȃ-Yj>Ȗ\8O)(2TAg}Yq''ͥ4(kSسJx2*_B3;((H R OVm/JGc^wGUa1`cU=O|\L ay"M_)I"ABbRllVYL~>009ˡ *B ,90DDTh쑕66/M& Dxcm)4|0\t$w> qs֧2 l][.6j  8dyz~#'}za x ;1 m2Zp'P^ܷ/l;EFСU 4h-Ic\! AޢeY9]x%VY##! Hc2ɀTrKu/bAAa!2#w9uhAkYGXVzjbS2 ƀ!qOHm Mº*OY*y[g;{"Xى܂J-Ƽl9՛<ۼK"-/)"瀩˘>i{%-' =@υ"$DfjƔ(-ҎYRdv_ icb[ob)jO|UaPUS*N 6CHA+bH 1' qUZ|-AQVKt/[ ֟K Ĭ@ȁ$ _Jaȁ,2 &1B1aA+4Rv pw%pE(5@n0~n -ڲ> N 8\K\%a½a=+!0wQTD')4X:}w'[0^GaL;hR{i'{Onbh?ШN<@j2Өc|]|_;Lq?11]ȭ/#+g抓LPe4 Ci=BȌ+:Ad'`ANE=9;!\rpr"{4< ~A3f@|~f?K_Q# cؚ΂Y,c]%ô0W@kй+̣{,Oȅxz d:FN=qU5ӃX`)0\ ϠĢ .6m CJagzEbJSL< 3 =W+/'Ol"=gbQD3kKv*.Ů#`A~6[~4{_ 0ppP5.1),dдQ&JÇڽ"R=tmv]8Wt|N0\v a4B< N7FG"-=MpE | q# ps+W b#p<"2s*OkOU'$ZK-ED\*2J̵.6m؈k\٣+ؼe;8<ǹ#v8zV/_Bb'/"FLPUދO<Y ƍ'SDKgYKpa.#E& -!  (]adwRp}MUsq%AS2%6\&h}~" yXj2A`v4>u@HDrIH ~ i}/Rb-$ G 5P$,Bknn6M'V'[mJ Er"?Sz&p?a7^r8: Ù3bQ$ev9" 1z ebD!~;ێÇ8u6Ҳ:0v |M/?n>Ez@mg 'zĉ Zzv]59cT'H Mzh#a(,ŭ{%8j] %.@Xf%ƌ f,@*gQnLT.A?F{+0Djb(iOG1b2 +uwbߧ+Eg?z%,ˎnb2]{ce!{ХP0s]V[wdmj7Dؽ V V.WD,88- l+mGV! C%Ŀ$q_LabOzN 00~&~ 1GtjG@sLl۽= O6Fugc])" !26J1T l_UEK(57q-"ܼy .tehN1{g)a#fk`YyX.b$ŽNAE {.Banń!/ U)2ȄL3%Lt좄!xSz2y2X& Wp0\t\zD/6{Gap|c:>QH}ƚhӍMP85Rtr0m{}b; 2]@`))ж/P7CjοCXƟGTdn] v{hrl0Ua߷͆-ؾ};vڍ{bŐAbR , YXi,jcyyWVfS1ܭPWܖW#&a2SEmY;e";J9+];7U{Z[7bJusRm=6 ѣ 9ߎεd|().nrCd]:SRR0|"2B=s6,_VΝ;a{8B:kT%\vbGwam &A+"~mgpjo}ɸgO2% D. N?X/ $k3g݇R W#ֆd5#Ľ*9iZ"4a zou%%̷F>q6 :B[1^ L[~VoۋS'OctsDfiGb,=tlj? gpc!faHj#fach3D?r^ i +! Afj,kNJ4k9a)xOa/T  IsO1 J&<19U' "E8{ک۽ڵai?|1qp;4lrc@etC.pY"f,'0T5.>A*iGJR\>}I@Sgt)fMC_04,=iGR/IB'\s0hP}6 3dR@tLDZRUM?sc=#AvyU0خpv!'g A8DGR:ꃈ$K <Sź7gx=+<}rO0:@X̃1[o06Ӱc,2Cp=!bI$Db,Jܐ"3v4,Ya6a󦍰0"Tr!+kGc<7A mX-^Ք,@U6e͜U+-I0g.Ԃ5$nي-7G\ gbeZ4EB"46sN y%UܼW-iMgN|S;;Kɂ0Л8ӍpA,"1v,YV`;Hy,X54XBt]Z:f nJ.v`B2#0˄ Yd޼W/cUع0n;dڰA3#-HvS;gtMMaàHflj&_48}]ķ$uc҉@)0tWGh`ͤNG} ny  0h4>Bi\c.rDˤ}Onp ]A6~aUQ4<^eDՠillB zudCs%Rӎ#(h7h/ASsBV$Pr ax/nm o߄Rp%YP03Sq# 0"il""0 Q#A, p\޾}{'^e{z/o7j G3X*ܕ>gqED@}f |!@GC!)mSg7py]a&IJ b&~ !8i9%gO[P\|""Ӊ0p ß h=a((ȅ=%7l̢~1ݵ#oػ<30 b\)}EY.^{Ywl(Ye9q /ܞa*3Oa?w"S+j '+c8q8Kpqq"IP;6Xmw=fQ DC\PX=SRSwJDU.+a 9 }{}{`EB7K)djܼ ZdQj.i c9زmtKX],oݶ3I/_R4VPY34u{nN k}J\V- ]"f!{:G" D>aJ{l}t AUai%_mt;\X65KIb"%;r4f-m&0u5M/Xj#޴\ 4f`7Y*#va1IHfН40?^~3-bcOuH( lD1]Q=W'WCh֬6i&~ gV Ǜ&7jnJFx&zu ۴i @b%2(g oMbuPb4lYbN*=-뷂͙<@⃠҅wU)SBY@=:[ʓ$ ntx)I ֥в9]K-Bm4o%y+v""Of"N{㘍)Z4hiA2UPa`kuy B=M=" $$:JKYR l(lנ]0!Mf0&MGZ1a8Nu͑O.JE֕`F.Y6E6ѩkw !p/ס#;=;vtxQ- 'LiI) ރpցjAZO ,0|O`~.JA̞ǗGO;CxT.hN7:c棔-uG&|w#hYl@e`DŽㄠ ߻^pP!G].5`M4U6[ >}D}=`cn?U~\=' l_UCmD26_`cݱY\۞M~SC}YbO +tȫ[1% k ;=i8p!?5fk b=b,[MV3I9нj3VZ!lI$U-]ع MgtǨVBb[l#uoYn 5/\C`miAI`,f6ڲնbPYE4صg/vډm`6oƐ>jJ Vشf)La7O0[+X~,;82:| 01[Aߊ1b -DuˏAqJi4~۽(DRm6bMؾu&hh5oDkgN<o/ ޹}+]R!(]mL1113 34$GTȌ~04xR|=)aөLe )0$fZʎG8t2UK*ɹғ =,9K(SK!RDžRZԿ0" 5ܥցR& I8ՅzedăU,“Gz6ҲF#yS״E*EZyٹNop&+rO PU:WS8"u.})ED4 K(qbgȇR9ROX,ғԄёHϤZ9Y`OSK^)qQx@3q4}rp_̪3k+IgϐRI*c2( zF=wP2?E曹T?|GÛ2-@V9: /\Q̜|;@D!PrW;ӳa`ر*͙!@7 /`aa@"`[N. GcQ 2Ruck_ F IPkYr\g̬tĄrn aeq3)PzL)6hwIZ0lߵK-L1gY΅Uh%# ۱ VVXRo]m 2b}:e!9sh 챵\[G*! 5k(FaEX DZDB8l' # D)px" fމI*c^;,EʪXt5~!Bw8.ϢUz!VS/XܟLi6LHZ4UsM`u|Lq ÿKy$كKR~# ȴ_Xegxq-&TWĦe/ĚG|]S~ɺUMP*旬s~YRU ݿq+V, bU;,}Peoe;pgKR7U]HO1a`kV$2 ,}bu~@ؾ9/GQ3_<\,)1CC6!%SÿxL/ݧ*7O`d eEZur59Rs) ̏+9ˌ5{xɍlR D1 $/0"JjXa;VX̆Y!2w%mՒs$(6Yv]1KRBv' ج߈FB,}ں  fƛ8c@0е*mafضuU7YS#&&/YUQR$"re4UjL֟O1 v$OLo8@1 M@S]Pȗ5c#,c3L" ͱazi)aa"N0PI0ԮkPBb'){͛7q*e}X_.q|0Taj"pp5oR=|!i&91^1a`3Gm{^9fkM$Q6# I= kl`\a`e`BwXqSirYK" { ^i 5rYX{woB J^JlqP!ׯ^%Kb)aْE:i@%^APJbb8S&R`*s,`؅ՋiM+=agjMcٓ`FddM)4n>v A|lIq;`2Mf ̽H 6w`]XFIօlEK-t#28m"d<ںe# uk"S ;ٲʊ<#ץ0164(`z̟ +"AՔj%rpppp WV؅\(YmJ 1!4a|9;:9ÇdB:/9'[c֥o%S\\)FbR rktڵt1,,a՘@V%1ofI)WcU69 rz4,Ñ957] Vu”0&ZaHPΝu0u!fL%X 5(ٜ\C0?ZJb1sa S`~<qGBD &N+K1F s&:QdKA̋ -ı˜e8~,04Fy;.KWLxtT1f<̭c͚5BF3c"bTQ{!O888 # \׀ }U`d2R]~N0bR R[[*ak̍%>Xy΅LEBEc9 W ȗ+&FYB?PcXEGɊ|te|?^e}Hgk"_kv&]u9j=ܹE,WΣي_/a"0w\X≜Ekŷ8\˷N888a&N*8aOp?c/Y>BԋTvLJ+ _P-]\xNOw rKbr2~@,bK2Eedac˵INMR{"*PVhʏ'$% * vABb2!B<)T/"/_D 3GX ҹʳfDRr ]G:i̜OB XzRJUK  _wN))HKMArJZZT " GBVck ' 0pPAۚ O6ME:uPQS U;N/,B(NU|o>C'uOPͧw`>ۯpo~PPĶ'¼ 1GԷ__ C^=!? qؽ##C2 QYCrӱs|{!$w"6XgTxbsA.[ ^0~2DQjN0x ۍɆVOHl3k!*G')s}PQտ{y[gThf"Xى\QvV!ρ(L1}$<Rp!N88a!bHǐ՜j}.}h礼\~rpCu4kX kT)P";HA} ǥ㎭9jX ZDڍv5a0l#!ÆaȐ!wWp0o/gڨ}Kиݸ ; -}ۣڏl%拄"EcLݿ"06,"J'"*q ~q=zH ~Ůqy0 K Y4 d)(WM\ dY:Bs%.DBm,Sp%3mt^ 0` C!|`T8q4{k0^ HC[O\rKbcllaa DŽQ(pGmss*Ptl!&&Sl%9D?01QX.Dpppp ' 0Ӹ[iH>t,\o> [Й1o)&L%- >oWڨYn{~sہ4ҮǽD*d%^h꘷<ӄ5\rRanjby{zH#%9,&{b;aZ>0@cԀ[ϊل! 0o3Y֢ΏߡII/%P]vCiذich ፍ7•㬞5uxCS<}| *]xr5i q=dd؝)+5Gv{AfZ+O}te#? 'O{"4WL:sM⾋/-D6G(*4.]w!<8Bݸ&u}й+#kȦ~n),L8s,Op8۷3MLʕ}cde\6cx6 eB.ⶣRqv f@w ڲ!)JcQ,4Gnjpe.|OsڝQ.!Ikg7Cn+AFfY$~rcr!,,ajj 70Kmx{e ,%Ds_;{,Iu咥0J⌽/\ARZ1_T8y!V1Pt ֢1J+Zه#-{E%@ lFëϦ;n"d4},ڴn$Q:z2fPmē@Hzc?70s2mތ}.Q;dMIQ1] g*l_@ J3 ZiبPL)l2%jd)J cުt b8E]vg(64e .JUmt;Fo?M^Qٸm#j+s}H6^@nf"5VfЙ6o5!k M%Jq=nރ*' 0pp C9mvnZ+kҸD ;y>;^GFO~hذj׬AzML\EdJ" fȥLCE&2plm%_vڄZƞ Y\f4FC4_? 궗a\c Cq_I`[.jת)X#jAJ~v*6'ʨerfQo62(73[ gcW]-Ii)\*! WW\kΓB{,X^#: EZ' ~Dau0? ;ЪeS;Q/qa9{ /mGV] N‹н0z/nDV=ɭ*YPsM(w/{O:Y~ g@_3 C^YE aG 7A`K=ێ|m`NDQ\JdƌՙxrZ%tkvhV7qkr/ xz6n?1q(X$$s)hh afD*k"<[H z.]p^d tTGӄa[Y°`M$`ڵm]c4#{a++UU(*"f6'| %Y@|I_?kָ,aH}6ErZ"v-C{%$:c8Wмi=tD.M5fZι}$% [2|,|ӄϮhx,|]hF ^=~½C}myYuEok/%}޼F'WѢYyֵ@\z.8ppppU.r| s+װ N$A/3(a'NQѸ6pW H iO:SHf~q -I4`Hlq C=#kׯ9Fw5`01 ~%'!53#uk%X qۯ!~W]>wDm0l);٣+]!ndE x h-K# {5H J̈E'0a!0P^ƫoa눏 "X.q{vtm1Gp=<{O~ػ_cWd]aMט4B7z䒔O悋@wh!G;rZ?w#Ν8xŮd."°$E rD(ݽ1_gWw a`a#"[cF'kh p 2sxN>0&qpNJJv/2r\{>Y"(`h$^1dF.{)i{H@nL b \H.Gl_skh]q,IܦC;#vG_oua片(*cQR(Ccd<  "{)h[ nGaj ʒ 4(Dw=ׄ_֞CN3OJ[O"48MP^cX￉H_k6 &ZPA$,I%by*È&ʔV^غr~!-] : ]S4!1`os;VFDRFq%dP0]OD`يHp_5GڷC1J^Æʠ&qhKN4\~4;!H!r2j+7BWnn`7hF!XPD)E߃yUv EnG;aа2+=DKOL!M{G L,zcyd֥!=:wFG]Tcq </zT08MdePN04s$T:ZZ88888aH1RwؑH3C84ؽ')))܋sRJqpqr(q)yaG#$4 HA4)e*='ǖ/0:OF&Uf|)(5!4xYjlqcc Jɦ>dV Gzfvᅋ3z$#.%N3ӒqёE @bSg*fgg">GE8|Cs^+#cGRDR{ AV`_O3We"[t,]CnI/9YZNFZr,|||xh׃ݛ;֞{y|;E8888&III$H PNl_~ﻸ^ +iS^|<> zUt|@gV[.}~ \Xc/M&`ccUV`8pҲ*[\$N4’wTr;F+s]'l L./KqK/ݖZ!\w~yppppps 7@8ٔ2N8aN8aN8aN CeY}>teyKY[|?4>0]͇3CWzh 'ULD0pM ұ' *HCll,3*LOI;={N]Vr/ O"arb@.Rh}2iZ%jZJ2)_WYHJN:4dP&BzJ R@Zj SҐCERb"d˩pTvmIȦ:I IT"&"+lۜLw[ 4v.׉=)FxalNCgIieҹ3R___DDF#[' 0p|k#vTtgN ۡw>jMvאGDSGi[.4o sq 0dI;(& af9XDjf-I.cqΞ|>'3 Ώ+0RXiu?tSݘlhCa^&YzްVkw#2FSR9*/ S;`ڤx2O% ^,;JS>}ЧO_ +#(2֩O}2}6*>xyE -*6FSЮyS{ۨ)dT&S2.t*E&hH߽TMcĥr ' _$%+# Ѽ(R0EaA._jժ^d jNj DE3}vC`5RI(zw@_Y%) C?zrv (cFcS0ԑm ˄lVa8;;hX~6vq0vw5H+]*^F*((}A9Q,:_n!-f)aV6oE%__\m:goD?ũ( }t^ P,j/ofxňG*,fb<]A@8w=dp%dlN.Ќ_k60b`4[ |oPvK 4C!"}xថƳ@eD]5HB@LBtFcH888888at2A^Q J:2 ?zȢI7yJ<&qPJ0H $.O嗟Pq\r  %GxBY>j퍫O+8\(ΰD0CBP7^'ahPW5X7`&]t&{6_9yzН W;l\;]Af yY0>c{lжQm[N8h% )S`jAq60 6<ؔ,x0Ҳ-+M1u$0\Ε'W` gbQDf"->v7013U> 7NyJ)Y"8Y,cn$'E#I N3`j*0DP0hVõנ[ObJ+FI8Q;']ݟQiW<=;s$0щi&YOR]T&J½aLÕ fAxt> ׇD?5xLVN8a Б6_LWd*|RIpHЬwd<ˌhNP-Lw~%!1#>I!+r%N gWD'$#> #G,0@* O׀_Hfiɠ1p @vm 0Vjr#Zm6ɝ# ("Y@yZZr(P9--eϦeZ8A[7}wHΦX;TC.cv99t21) CljLc֘z}pCFڵQPo4~>UaZO1ůL1^pZwE%){%RvsMxb,ZRcfCNawIt5ͬ`.UH`Hԩn:8IY׸5#5 ztE׮ )5}g򳟊YQk8~$F woΚ"Z0e}j (, 召CyɈ Ċ=j?M#$# daPC\t@L^ǛO1 S!9rql+DLj bpk i :WODЮ M草ۡaPTU*dtCnJwFiª@-%1н\8 ^x2C Scג[bQ(Y2B3Tߓ]0ԤjqޑY'PȺ ?/? m4ppt%- 0|º CM 9޾}ׯ_ )^|~?=; ahjs'4># ZuvO@N `$>1h< Ľ7X*T`meΠK0vGz~}??+e©:uv_1}b܂[$y@_kTo= BR tHYر $ƶD$ ?^H PmH [0M$b!i&Ld7av0&"bAa?!zA°{$)/&o*C8xұ&hXG4lߗp8AHX,^DhiA@ND3a:ՠel&,ɨ͂?2kԣKЖdcc88888a;R`x6mڄ6`{0ݵ7nf[RR^$Q*AuHvCm~II FB{K- yX9{,~蓼'/|6CeXLD~7Ol$]Z .&cÄ;b¸&H)& vf?ja`vl% ou %&ݵ ]?-"cz<5o֮c@w'PѺVp,|0`m l6Kω撤ԭ+?|sӽ ۡ9z p M)KR&m9 #)KRMԀ=*(*ɒTYkW0ZI?fBPs.0g9MEQa+`kբBf:fSzQ:tAzN>0pppppP% ۶iM)g#*1Oпo7m۶x0^ut(0n,^M0B7ab5֮]yFCt7'Oy6hcڵXm cQ ń! a`$ rZaULntNI 'HM9tHs y1Xbgt ] bo(,\,61Y[]X_.1a09].3HSBnn84< &bxlWsP)-=Dg!Psἀ@iˎ~}v I:{ѳ\z:Ovzm_ZvZBV=aHh $pCD>!Ez 1hӾVl/sޛ~Rs&CUT-gmz`'8f˩0 Gں*u8̝&> :$n+n=zb?KRF?C=%蒒0v;cJp?7-Cd- P, 1=ڑKSQ<ᱛ)7ob{OP3X,d FBr|CQIQXc< )4a!~ :MiYsV%U"rp#{Ȧ1o߾GH e;"[9p{tB$Y)xD"!z!d9q粙9kN`86GM0icÅs=o0o' eG!,<\eq QLǓFR=]aO>N\(%5<O?jBUaMi[ `7Ofc񁃃B=&U/f +e  qOHIGl\BIgex(^9Cȑ#p'N_E,=$JP~B58jq^N|<;<*֩>C y|!<*N b9ٙ~ShQeKC3;e(Pl/Ou>fS0#QlMĂ|FJBCJ)} f6 wptBPX$rK #yqprxO8Y" E1xNU^]7{I]9@Q;mB[ks|7-_ -79Gvͺͤ LGaF  HN^Υ0?_@ZkPjq _en aۣm gwXo:f-cxW&b$ei%ط <;ʈHK6ڸ\:~]Ȼ3!Dg6hC?p?KːA"`ԀT~8x̋CFi{Ы'f/فBWe:w톞}c4N!m?~K7>l^R]sM1EΝBޔ%2Uq'M5gv/}ѥ;5^Cv;2'' _VuΒ Ƽxϣ3,ǿMJz;m+OO#urufUQE0| G@a^`GWA}rc35 M4Q"l^1mپ=PL2Jq:tl' kGTVkyj" Qb1b$"*|8sO 08jN!C֭a|3-mY޽dp {]Ow01q͌10g>d37|D΍ X *x F)ha;T>* α߇)R,'9a! zb GR`ooxx `@ZWޮ]{a|zcWEP -G':Zw8e %1H6쿌ꓓ <} mAOxM͟uwwӣ":wEv1-PD޾yG(CeVN+3h)y4#!Y|} ' :abmk޹܂zO>g {0Vi0 m$ ot~zt1m'ަol ,vI ?GP,d'ảۧ7:SB5n Ծń\޽/Mn*V>?hm؆[R0^eV)@]CS

6-1zP4{s W@Q )yhS )k!eK} #0XOAMPf@&OԛCY )Kjfi4sJL$"=SFRF>@"S==Pl,oƀ}j%`\;&Gې ,';(`lG]ыRLy`=,~5!++L`.? &|̈́a|fF\(* r{sP e(ՉJ)Uѵf܊m°|_c°ʡOc+,@$g  6@`2 <cw^BQGjZeuLoY0a y9x|n75tpE(^^ 3 5&S46BNkdÉz!5^<\?BZ80Wd&|UbRS*+K .#=ipv?'n|Up'QК۶b|qК`;bV1^;m4&>O]W 7ضHٸKLеS  ;J g8{&S.eO=b6[ܽwVY;®#g ?* {EL@dGӵg_- GOa|q!WP?JR1aǿ&0k# P^}BFFzt5NHJk%*׾rȢ"kg)8>:CӾD8ۯ 0BGӾNGnY4Wѭ[7Hu!C޵0?'zEџtp0x_"+3WH@X1mMnNtvU%T *[ٹ>52\#  V 4u^`AŜ0p CiHw\ ' 0|ڵN888888888aN888888888aN888888888a" L℁N88888888*aÆ QNHKK B]?ޥ~0ppppppp(((W^ӧ߂޽{gϞףG^{p- - c8x aY888aN888aN888aN888888888a[$ Tc'N888888888a(O:mhu:Hw愁7HJVF$yQ8a;vLaWԂ CGhM=OI0pppppppppDq}8'e*"S O[D ݇f=м$;1 _#a@!Ek゚?g7%.,۩K&R) t) KLI̙\bI4nXhbCD3܏ۏChu6 DDDD/Z`0q凜 Zサ˛ꐑ aŹH7?Oq/2tVcLJ3BUJbg;.ss; Vj-e 3}*luGVPp56ۅ]Gs=%WV\*^`'<A_}tĭ[ ?'[{ PPPl\PV]DTvtÎhn,U+wzːSVnK ۏZQ܅octl>-g1#nXAխFc@DDD*kGzH޽HMEhD֡{AީσZ\^Q-b者4 sSk`0oԗAoJ^\]/wƦ 56:|~7;A;e?s{0-MO`]6_}Tj4FE_cRAV""")0 :pFQS,Cb"N|PCi7JK¼7pGoOn;m1C_:Νm(KDH\]-׋='Zqf•{`ioHnem {'ُ{`òyUX+ׯbA~hIr~$0 S\܀3W+Ս.qErxAݻōڰ("-0Lx _a>f!bdZ@?00p-Ij'0Lnx{vnGs"dϚ`ĈbB@x;zþcF\(FH-ܽz97js>o@ ծw{q>ϙѣ<ʼnKRwz(+Ƭ"=wrNMBAD,lsJt$ubڥ Ctuc†\X22f/W5Fc[@8m\ی8T4Z}w![['>l8ۃ!Ј5t7V;'#腛l*GO›6+C_O7^nuo b;F9 >.*ūnt8}+^Hot҉;⠅/ m?u{ZBop^^V6Q 33se\G(tUo-IP2-۫H-Y$&=waQ#qyADªLXբUaO :#*+>5ḇpqrFobŨe pa`˪N/ņs]އcϕ>Z[/=H/?Z.JDDDB1_aĈҧ^~EuغcU@-V&zJ11Rx77CGp=p =gupVJs L(ðܺt=L  sFW78XC'V^K 3&F<50ܸx 1t蜘ݍC{wb֭ضmmwf;<0tϴb'밠$Μ)0w vQێ^'/by03d` """zq0Xb\$-n@JTX i`!LLX#vњsWۀE C*I~aI8t{Ѓ p`n|~#م ')0|xBh$JLNIؠ@l?&CΞGѣG8ݟm@=j=g[>wm4+; ~WZ_;ʠ;|BD(CcDžcw0}=7.`zɃ-IeU-^Dđ*&Lk1rl{ 3C@y=3/M1X_bqu Exߋ!R|ҩ]p˪zOv.=Պ;/ځ㜟 z 0Ԭ-feAy@`6N^RSܾ|Ŗ'?w$9ݸ{bVNwn];wVK;-I DDDD/geVb㴨la;N~{ O_+ R!\QQׂ[6cIY؄ɳ"dŶ5-Ӳ`;6bɧfUe(/ F >'5qA۳ +ixnrfn!&I,"Q[W >b8=2ž ep}g X8t䘸# b-Fkم5ص~1|f&{?cib` """ziԚd΂A쑠dᕂ*s-Mr KXQ1ji% K1WZlʦVJrKh:UJ<2cm>Q)&;8VONãH7=oRL>_rBLv Ј{5=PĄԟ =k~a_9'沐g` """b`b 101000101000100010001010101010101010101010|`0}d0}o*cqK DDDD/_`0_n{Sq Vsc;^Rk4` /P,XԀ&,]ڄpdARAɡj C#,;#1gOdd?@oX30!.)s U XҲ3a!3EՋQ]k(LŞ(5v(EYQ.HLL1~ Fr(0".15% @=D#ƌ9_S&!:n*8J2x|qU ARib8:9"x>`bx>ZZ!Hb4T"91Fct݉!~pōHA\\疠mX DDDD/g9܃м3E`sB ZsX# a+ H ځvVP1 5va``xq V=.Yp0>"P=L'L Q^PWѨTFF#lD(JN b$cf"l5*ۏu ši ssCfA*E@$b` """zT0?M-  zz( (Ћ?? %p#4 15.# 6?HHFҥ! ?' 1amԀk"z?]Pm l'QW}g` """b` AѼlLiZcv"ԖgOUP",z(h Z4p\ f#::Z:6fr$F:^>"+XřЩh'G QF%`gWaJܲI0uE)1 ;2٨zdD=iҳ~j!oZ|QԂ?m <Żb8 @}4SgrN rK%B}#* rkPB&^F\Zj3 efVzi>E̩b>C!1Z+1Z!9p] ђ5^ ǭFbnyg%A#&>% #dJd#a%FJ-3 rE AYu=Z,BF2xh#S`U"FK17's 1P2deedz1G\'>"f棱iIF$$EU) w $by 2R1-}675cF|XehHX)>)32%bŦEK҆yxiI1p Cݒ(-(&kU^ gLD< `zLg4+-Kf#X艽^!0fㅵRq!QOBR B(GD=|LHNNBlIHEX4!~2\V$VQ WH-G'^HAs0ybZ<}C5-5!jJX#%\%i`T@.mfN˦V+V0zFfO7|=i0| * ycG^o!6fh&pڭb`36pMV ?t tM,O3=/t_E?i10<?k DDD@ O\{eӦMo޼4c^{ïDFF6 CREATE DATABASE debug_toolbar; # mysql> GRANT ALL PRIVILEGES ON debug_toolbar.* TO 'debug_toolbar'@'localhost'; DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'debug_toolbar', 'USER': 'debug_toolbar', } } # django-debug-toolbar DEBUG_TOOLBAR_PANELS = [ 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', 'debug_toolbar.panels.profiling.ProfilingPanel', ] STATICFILES_DIRS = [os.path.join(BASE_DIR, 'example', 'static')] django-debug-toolbar-1.9.1/example/static/000077500000000000000000000000001320306665300204365ustar00rootroot00000000000000django-debug-toolbar-1.9.1/example/static/test.css000066400000000000000000000000321320306665300221220ustar00rootroot00000000000000body { color: green; }django-debug-toolbar-1.9.1/example/templates/000077500000000000000000000000001320306665300211455ustar00rootroot00000000000000django-debug-toolbar-1.9.1/example/templates/index.html000066400000000000000000000007641320306665300231510ustar00rootroot00000000000000{% load cache %} Index of Tests

Index of Tests

{% cache 10 index_cache %}

Django Admin

{% endcache %} django-debug-toolbar-1.9.1/example/templates/jquery/000077500000000000000000000000001320306665300224645ustar00rootroot00000000000000django-debug-toolbar-1.9.1/example/templates/jquery/index.html000066400000000000000000000010441320306665300244600ustar00rootroot00000000000000 jQuery Test

jQuery Test

If you see this, jQuery is working.

django-debug-toolbar-1.9.1/example/templates/mootools/000077500000000000000000000000001320306665300230205ustar00rootroot00000000000000django-debug-toolbar-1.9.1/example/templates/mootools/index.html000066400000000000000000000010151320306665300250120ustar00rootroot00000000000000 MooTools Test

MooTools Test

If you see this, MooTools is working.

django-debug-toolbar-1.9.1/example/templates/prototype/000077500000000000000000000000001320306665300232125ustar00rootroot00000000000000django-debug-toolbar-1.9.1/example/templates/prototype/index.html000066400000000000000000000010161320306665300252050ustar00rootroot00000000000000 Prototype Test

Prototype Test

If you see this, Prototype is working.

django-debug-toolbar-1.9.1/example/urls.py000066400000000000000000000012321320306665300205040ustar00rootroot00000000000000from django.conf import settings from django.conf.urls import include, url from django.contrib import admin from django.views.generic import TemplateView urlpatterns = [ url(r'^$', TemplateView.as_view(template_name='index.html')), url(r'^jquery/$', TemplateView.as_view(template_name='jquery/index.html')), url(r'^mootools/$', TemplateView.as_view(template_name='mootools/index.html')), url(r'^prototype/$', TemplateView.as_view(template_name='prototype/index.html')), url(r'^admin/', include(admin.site.urls)), ] if settings.DEBUG: import debug_toolbar urlpatterns += [ url(r'^__debug__/', include(debug_toolbar.urls)), ] django-debug-toolbar-1.9.1/example/wsgi.py000066400000000000000000000003201320306665300204650ustar00rootroot00000000000000"""WSGI config for example project.""" import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings") application = get_wsgi_application() django-debug-toolbar-1.9.1/requirements_dev.txt000066400000000000000000000003171320306665300216370ustar00rootroot00000000000000# The debug toolbar itself -e . # Runtime dependencies Django sqlparse django_jinja # Testing coverage flake8 html5lib isort selenium tox # Documentation Sphinx # Other tools transifex-client wheel django-debug-toolbar-1.9.1/setup.cfg000066400000000000000000000005571320306665300173440ustar00rootroot00000000000000[egg_info] tag_svn_revision = false [flake8] ignore = W601 ; # noqa doesn't silence this one max-line-length = 100 [isort] combine_as_imports = true default_section = THIRDPARTY include_trailing_comma = true known_first_party = debug_toolbar multi_line_output = 5 not_skip = __init__.py [bdist_wheel] universal = 1 [metadata] license-file = LICENSE django-debug-toolbar-1.9.1/setup.py000077500000000000000000000033411320306665300172320ustar00rootroot00000000000000#!/usr/bin/env python from io import open from setuptools import find_packages, setup setup( name='django-debug-toolbar', version='1.9.1', description='A configurable set of panels that display various debug ' 'information about the current request/response.', long_description=open('README.rst', encoding='utf-8').read(), author='Rob Hudson', author_email='rob@cogit8.org', url='https://github.com/jazzband/django-debug-toolbar', download_url='https://pypi.python.org/pypi/django-debug-toolbar', license='BSD', packages=find_packages(exclude=('tests.*', 'tests', 'example')), install_requires=[ 'Django>=1.8', 'sqlparse>=0.2.0', ], include_package_data=True, zip_safe=False, # because we're including static files classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', 'Framework :: Django', 'Framework :: Django :: 1.8', 'Framework :: Django :: 1.9', 'Framework :: Django :: 1.10', 'Framework :: Django :: 1.11', 'Framework :: Django :: 2.0', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Topic :: Software Development :: Libraries :: Python Modules', ], ) django-debug-toolbar-1.9.1/tests/000077500000000000000000000000001320306665300166565ustar00rootroot00000000000000django-debug-toolbar-1.9.1/tests/__init__.py000066400000000000000000000014511320306665300207700ustar00rootroot00000000000000# Refresh the debug toolbar's configuration when overriding settings. from django.dispatch import receiver from django.test.signals import setting_changed from debug_toolbar import settings as dt_settings from debug_toolbar.toolbar import DebugToolbar @receiver(setting_changed) def update_toolbar_config(**kwargs): if kwargs['setting'] == 'DEBUG_TOOLBAR_CONFIG': dt_settings.get_config.cache_clear() # This doesn't account for deprecated configuration options. @receiver(setting_changed) def update_toolbar_panels(**kwargs): if kwargs['setting'] == 'DEBUG_TOOLBAR_PANELS': dt_settings.get_panels.cache_clear() DebugToolbar._panel_classes = None # Not implemented: invalidate debug_toolbar.urls. # This doesn't account for deprecated panel names. django-debug-toolbar-1.9.1/tests/additional_static/000077500000000000000000000000001320306665300223355ustar00rootroot00000000000000django-debug-toolbar-1.9.1/tests/additional_static/base.css000066400000000000000000000000321320306665300237540ustar00rootroot00000000000000body { color: green; }django-debug-toolbar-1.9.1/tests/base.py000066400000000000000000000024011320306665300201370ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import threading import html5lib from django.http import HttpResponse from django.test import RequestFactory, TestCase from debug_toolbar.middleware import DebugToolbarMiddleware from debug_toolbar.toolbar import DebugToolbar rf = RequestFactory() class BaseTestCase(TestCase): def setUp(self): request = rf.get('/') response = HttpResponse() toolbar = DebugToolbar(request) DebugToolbarMiddleware.debug_toolbars[threading.current_thread().ident] = toolbar self.request = request self.response = response self.toolbar = toolbar self.toolbar.stats = {} def assertValidHTML(self, content, msg=None): parser = html5lib.HTMLParser() parser.parseFragment(self.panel.content) if parser.errors: default_msg = ['Content is invalid HTML:'] lines = content.split('\n') for position, errorcode, datavars in parser.errors: default_msg.append(' %s' % html5lib.constants.E[errorcode] % datavars) default_msg.append(' %s' % lines[position[0] - 1]) msg = self._formatMessage(msg, '\n'.join(default_msg)) raise self.failureException(msg) django-debug-toolbar-1.9.1/tests/commands/000077500000000000000000000000001320306665300204575ustar00rootroot00000000000000django-debug-toolbar-1.9.1/tests/commands/__init__.py000066400000000000000000000000001320306665300225560ustar00rootroot00000000000000django-debug-toolbar-1.9.1/tests/commands/test_debugsqlshell.py000066400000000000000000000022671320306665300247350ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import sys from django.contrib.auth.models import User from django.core import management from django.db.backends import utils as db_backends_utils from django.test import TestCase from django.test.utils import override_settings from django.utils import six @override_settings(DEBUG=True) class DebugSQLShellTestCase(TestCase): def setUp(self): self.original_cursor_wrapper = db_backends_utils.CursorDebugWrapper # Since debugsqlshell monkey-patches django.db.backends.utils, we can # test it simply by loading it, without executing it. But we have to # undo the monkey-patch on exit. command_name = 'debugsqlshell' app_name = management.get_commands()[command_name] management.load_command_class(app_name, command_name) def tearDown(self): db_backends_utils.CursorDebugWrapper = self.original_cursor_wrapper def test_command(self): original_stdout, sys.stdout = sys.stdout, six.StringIO() try: User.objects.count() self.assertIn("SELECT COUNT", sys.stdout.getvalue()) finally: sys.stdout = original_stdout django-debug-toolbar-1.9.1/tests/context_processors.py000066400000000000000000000000701320306665300231730ustar00rootroot00000000000000def broken(request): request.non_existing_attribute django-debug-toolbar-1.9.1/tests/loaders.py000066400000000000000000000012421320306665300206600ustar00rootroot00000000000000import django from django.contrib.auth.models import User from django.template.loaders.app_directories import Loader class LoaderWithSQL(Loader): if django.VERSION[:2] >= (1, 9): def get_template(self, *args, **kwargs): # Force the template loader to run some SQL. Simulates a CMS. User.objects.all().count() return super(LoaderWithSQL, self).get_template(*args, **kwargs) else: def load_template(self, *args, **kwargs): # Force the template loader to run some SQL. Simulates a CMS. User.objects.all().count() return super(LoaderWithSQL, self).load_template(*args, **kwargs) django-debug-toolbar-1.9.1/tests/middleware.py000066400000000000000000000002711320306665300213450ustar00rootroot00000000000000def simple_middleware(get_response): """ Used to test Django 1.10 compatibility. """ def middleware(request): return get_response(request) return middleware django-debug-toolbar-1.9.1/tests/models.py000066400000000000000000000003551320306665300205160ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.utils import six class NonAsciiRepr(object): def __repr__(self): return 'nôt åscíì' if six.PY3 else 'nôt åscíì'.encode('utf-8') django-debug-toolbar-1.9.1/tests/panels/000077500000000000000000000000001320306665300201405ustar00rootroot00000000000000django-debug-toolbar-1.9.1/tests/panels/__init__.py000066400000000000000000000000001320306665300222370ustar00rootroot00000000000000django-debug-toolbar-1.9.1/tests/panels/test_cache.py000066400000000000000000000032521320306665300226160ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.core import cache from ..base import BaseTestCase class CachePanelTestCase(BaseTestCase): def setUp(self): super(CachePanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('CachePanel') self.panel.enable_instrumentation() def tearDown(self): self.panel.disable_instrumentation() super(CachePanelTestCase, self).tearDown() def test_recording(self): self.assertEqual(len(self.panel.calls), 0) cache.cache.set('foo', 'bar') cache.cache.get('foo') cache.cache.delete('foo') # Verify that the cache has a valid clear method. cache.cache.clear() self.assertEqual(len(self.panel.calls), 4) def test_recording_caches(self): self.assertEqual(len(self.panel.calls), 0) default_cache = cache.caches[cache.DEFAULT_CACHE_ALIAS] second_cache = cache.caches['second'] default_cache.set('foo', 'bar') second_cache.get('foo') self.assertEqual(len(self.panel.calls), 2) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_response. """ cache.cache.get('café') self.panel.process_response(self.request, self.response) # ensure the panel does not have content yet. self.assertNotIn('café', self.panel.content) self.panel.generate_stats(self.request, self.response) # ensure the panel renders correctly. self.assertIn('café', self.panel.content) self.assertValidHTML(self.panel.content) django-debug-toolbar-1.9.1/tests/panels/test_logging.py000066400000000000000000000052471320306665300232070ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals import logging from debug_toolbar.panels.logging import ( MESSAGE_IF_STRING_REPRESENTATION_INVALID, collector, ) from ..base import BaseTestCase class LoggingPanelTestCase(BaseTestCase): def setUp(self): super(LoggingPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('LoggingPanel') self.logger = logging.getLogger(__name__) collector.clear_collection() # Assume the root logger has been configured with level=DEBUG. # Previously DDT forcefully set this itself to 0 (NOTSET). logging.root.setLevel(logging.DEBUG) def test_happy_case(self): self.logger.info('Nothing to see here, move along!') self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) records = self.panel.get_stats()['records'] self.assertEqual(1, len(records)) self.assertEqual('Nothing to see here, move along!', records[0]['message']) def test_formatting(self): self.logger.info('There are %d %s', 5, 'apples') self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) records = self.panel.get_stats()['records'] self.assertEqual(1, len(records)) self.assertEqual('There are 5 apples', records[0]['message']) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_response. """ self.logger.info('café') self.panel.process_response(self.request, self.response) # ensure the panel does not have content yet. self.assertNotIn('café', self.panel.content) self.panel.generate_stats(self.request, self.response) # ensure the panel renders correctly. self.assertIn('café', self.panel.content) self.assertValidHTML(self.panel.content) def test_failing_formatting(self): class BadClass(object): def __str__(self): raise Exception('Please not stringify me!') # should not raise exception, but fail silently self.logger.debug('This class is misbehaving: %s', BadClass()) self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) records = self.panel.get_stats()['records'] self.assertEqual(1, len(records)) self.assertEqual(MESSAGE_IF_STRING_REPRESENTATION_INVALID, records[0]['message']) django-debug-toolbar-1.9.1/tests/panels/test_profiling.py000066400000000000000000000065151320306665300235510ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import unittest from django.contrib.auth.models import User from django.db import IntegrityError, transaction from django.test import TestCase from django.test.utils import override_settings from django.utils import six from ..base import BaseTestCase from ..views import listcomp_view, regular_view @override_settings(DEBUG_TOOLBAR_PANELS=['debug_toolbar.panels.profiling.ProfilingPanel']) class ProfilingPanelTestCase(BaseTestCase): def setUp(self): super(ProfilingPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('ProfilingPanel') def test_regular_view(self): self.panel.process_view(self.request, regular_view, ('profiling',), {}) self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) self.assertIn('func_list', self.panel.get_stats()) self.assertIn('regular_view', self.panel.content) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_response. """ self.panel.process_view(self.request, regular_view, ('profiling',), {}) self.panel.process_response(self.request, self.response) # ensure the panel does not have content yet. self.assertNotIn('regular_view', self.panel.content) self.panel.generate_stats(self.request, self.response) # ensure the panel renders correctly. self.assertIn('regular_view', self.panel.content) self.assertValidHTML(self.panel.content) @unittest.skipIf(six.PY2, 'list comprehension not listed on Python 2') def test_listcomp_escaped(self): self.panel.process_view(self.request, listcomp_view, (), {}) self.panel.generate_stats(self.request, self.response) self.assertNotIn('', self.panel.content) self.assertIn('<listcomp>', self.panel.content) def test_generate_stats_no_profiler(self): """ Test generating stats with no profiler. """ self.assertIsNone(self.panel.generate_stats(self.request, self.response)) def test_generate_stats_no_root_func(self): """ Test generating stats using profiler without root function. """ self.panel.process_view(self.request, regular_view, ('profiling',), {}) self.panel.process_response(self.request, self.response) self.panel.profiler.clear() self.panel.profiler.enable() self.panel.profiler.disable() self.panel.generate_stats(self.request, self.response) self.assertNotIn('func_list', self.panel.get_stats()) @override_settings(DEBUG=True, DEBUG_TOOLBAR_PANELS=['debug_toolbar.panels.profiling.ProfilingPanel']) class ProfilingPanelIntegrationTestCase(TestCase): def test_view_executed_once(self): self.assertEqual(User.objects.count(), 0) response = self.client.get('/new_user/') self.assertContains(response, 'Profiling') self.assertEqual(User.objects.count(), 1) with self.assertRaises(IntegrityError): with transaction.atomic(): response = self.client.get('/new_user/') self.assertEqual(User.objects.count(), 1) django-debug-toolbar-1.9.1/tests/panels/test_redirects.py000066400000000000000000000060371320306665300235430ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import copy from django.conf import settings from django.http import HttpResponse from ..base import BaseTestCase class RedirectsPanelTestCase(BaseTestCase): def setUp(self): super(RedirectsPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('RedirectsPanel') def test_regular_response(self): response = self.panel.process_response(self.request, self.response) self.assertTrue(response is self.response) def test_not_a_redirect(self): redirect = HttpResponse(status=304) # not modified response = self.panel.process_response(self.request, redirect) self.assertTrue(response is redirect) def test_redirect(self): redirect = HttpResponse(status=302) redirect['Location'] = 'http://somewhere/else/' response = self.panel.process_response(self.request, redirect) self.assertFalse(response is redirect) try: self.assertContains(response, '302 Found') except AssertionError: # Django < 1.9 self.assertContains(response, '302 FOUND') self.assertContains(response, 'http://somewhere/else/') def test_redirect_with_broken_context_processor(self): TEMPLATES = copy.deepcopy(settings.TEMPLATES) TEMPLATES[1]['OPTIONS']['context_processors'] = ['tests.context_processors.broken'] with self.settings(TEMPLATES=TEMPLATES): redirect = HttpResponse(status=302) redirect['Location'] = 'http://somewhere/else/' response = self.panel.process_response(self.request, redirect) self.assertFalse(response is redirect) try: self.assertContains(response, '302 Found') except AssertionError: # Django < 1.9 self.assertContains(response, '302 FOUND') self.assertContains(response, 'http://somewhere/else/') def test_unknown_status_code(self): redirect = HttpResponse(status=369) redirect['Location'] = 'http://somewhere/else/' response = self.panel.process_response(self.request, redirect) try: self.assertContains(response, '369 Unknown Status Code') except AssertionError: # Django < 1.9 self.assertContains(response, '369 UNKNOWN STATUS CODE') def test_unknown_status_code_with_reason(self): redirect = HttpResponse(status=369, reason='Look Ma!') redirect['Location'] = 'http://somewhere/else/' response = self.panel.process_response(self.request, redirect) self.assertContains(response, '369 Look Ma!') def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_response. """ redirect = HttpResponse(status=304) response = self.panel.process_response(self.request, redirect) self.assertIsNotNone(response) response = self.panel.generate_stats(self.request, redirect) self.assertIsNone(response) django-debug-toolbar-1.9.1/tests/panels/test_request.py000066400000000000000000000035051320306665300232440ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.utils import six from ..base import BaseTestCase class RequestPanelTestCase(BaseTestCase): def setUp(self): super(RequestPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('RequestPanel') def test_non_ascii_session(self): self.request.session = {'où': 'où'} if not six.PY3: self.request.session['là'.encode('utf-8')] = 'là'.encode('utf-8') self.panel.process_request(self.request) self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) content = self.panel.content if six.PY3: self.assertIn('où', content) else: self.assertIn('o\\xf9', content) self.assertIn('l\\xc3\\xa0', content) def test_object_with_non_ascii_repr_in_request_params(self): self.request.path = '/non_ascii_request/' self.panel.process_request(self.request) self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) self.assertIn('nôt åscíì', self.panel.content) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_response. """ self.request.path = '/non_ascii_request/' self.panel.process_response(self.request, self.response) # ensure the panel does not have content yet. self.assertNotIn('nôt åscíì', self.panel.content) self.panel.generate_stats(self.request, self.response) # ensure the panel renders correctly. self.assertIn('nôt åscíì', self.panel.content) self.assertValidHTML(self.panel.content) django-debug-toolbar-1.9.1/tests/panels/test_sql.py000066400000000000000000000115031320306665300223500ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals import unittest from django.contrib.auth.models import User from django.db import connection from django.db.utils import DatabaseError from django.shortcuts import render from django.test.utils import override_settings from ..base import BaseTestCase class SQLPanelTestCase(BaseTestCase): def setUp(self): super(SQLPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('SQLPanel') self.panel.enable_instrumentation() def tearDown(self): self.panel.disable_instrumentation() super(SQLPanelTestCase, self).tearDown() def test_disabled(self): config = { 'DISABLE_PANELS': {'debug_toolbar.panels.sql.SQLPanel'} } self.assertTrue(self.panel.enabled) with self.settings(DEBUG_TOOLBAR_CONFIG=config): self.assertFalse(self.panel.enabled) def test_recording(self): self.assertEqual(len(self.panel._queries), 0) list(User.objects.all()) # ensure query was logged self.assertEqual(len(self.panel._queries), 1) query = self.panel._queries[0] self.assertEqual(query[0], 'default') self.assertTrue('sql' in query[1]) self.assertTrue('duration' in query[1]) self.assertTrue('stacktrace' in query[1]) # ensure the stacktrace is populated self.assertTrue(len(query[1]['stacktrace']) > 0) def test_non_ascii_query(self): self.assertEqual(len(self.panel._queries), 0) # non-ASCII text query list(User.objects.extra(where=["username = 'apéro'"])) self.assertEqual(len(self.panel._queries), 1) # non-ASCII text parameters list(User.objects.filter(username='thé')) self.assertEqual(len(self.panel._queries), 2) # non-ASCII bytes parameters list(User.objects.filter(username='café'.encode('utf-8'))) self.assertEqual(len(self.panel._queries), 3) self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) # ensure the panel renders correctly self.assertIn('café', self.panel.content) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_response. """ list(User.objects.filter(username='café'.encode('utf-8'))) self.panel.process_response(self.request, self.response) # ensure the panel does not have content yet. self.assertNotIn('café', self.panel.content) self.panel.generate_stats(self.request, self.response) # ensure the panel renders correctly. self.assertIn('café', self.panel.content) self.assertValidHTML(self.panel.content) @unittest.skipUnless(connection.vendor == 'postgresql', 'Test valid only on PostgreSQL') def test_erroneous_query(self): """ Test that an error in the query isn't swallowed by the middleware. """ try: connection.cursor().execute("erroneous query") except DatabaseError as e: self.assertTrue('erroneous query' in str(e)) def test_disable_stacktraces(self): self.assertEqual(len(self.panel._queries), 0) with self.settings(DEBUG_TOOLBAR_CONFIG={'ENABLE_STACKTRACES': False}): list(User.objects.all()) # ensure query was logged self.assertEqual(len(self.panel._queries), 1) query = self.panel._queries[0] self.assertEqual(query[0], 'default') self.assertTrue('sql' in query[1]) self.assertTrue('duration' in query[1]) self.assertTrue('stacktrace' in query[1]) # ensure the stacktrace is empty self.assertEqual([], query[1]['stacktrace']) @override_settings(DEBUG=True, TEMPLATES=[{ 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'OPTIONS': {'debug': True, 'loaders': ['tests.loaders.LoaderWithSQL']}, }]) def test_regression_infinite_recursion(self): """ Test case for when the template loader runs a SQL query that causes an infinite recursion in the SQL panel. """ self.assertEqual(len(self.panel._queries), 0) render(self.request, "basic.html", {}) # Two queries are logged because the loader runs SQL every time a # template is loaded and basic.html extends base.html. self.assertEqual(len(self.panel._queries), 2) query = self.panel._queries[0] self.assertEqual(query[0], 'default') self.assertTrue('sql' in query[1]) self.assertTrue('duration' in query[1]) self.assertTrue('stacktrace' in query[1]) # ensure the stacktrace is populated self.assertTrue(len(query[1]['stacktrace']) > 0) django-debug-toolbar-1.9.1/tests/panels/test_staticfiles.py000066400000000000000000000036031320306665300240650ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.contrib.staticfiles import finders from ..base import BaseTestCase class StaticFilesPanelTestCase(BaseTestCase): def setUp(self): super(StaticFilesPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('StaticFilesPanel') def test_default_case(self): self.panel.process_request(self.request) self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) self.assertIn('django.contrib.staticfiles.finders.' 'AppDirectoriesFinder', self.panel.content) self.assertIn('django.contrib.staticfiles.finders.' 'FileSystemFinder (2 files)', self.panel.content) self.assertEqual(self.panel.num_used, 0) self.assertNotEqual(self.panel.num_found, 0) self.assertEqual(self.panel.get_staticfiles_apps(), ['django.contrib.admin', 'debug_toolbar']) self.assertEqual(self.panel.get_staticfiles_dirs(), finders.FileSystemFinder().locations) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_response. """ self.panel.process_request(self.request) self.panel.process_response(self.request, self.response) # ensure the panel does not have content yet. self.assertNotIn('django.contrib.staticfiles.finders.' 'AppDirectoriesFinder', self.panel.content) self.panel.generate_stats(self.request, self.response) # ensure the panel renders correctly. self.assertIn('django.contrib.staticfiles.finders.' 'AppDirectoriesFinder', self.panel.content) self.assertValidHTML(self.panel.content) django-debug-toolbar-1.9.1/tests/panels/test_template.py000066400000000000000000000071501320306665300233670ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.contrib.auth.models import User from django.template import Context, RequestContext, Template from django.test import TestCase, override_settings from ..base import BaseTestCase from ..models import NonAsciiRepr class TemplatesPanelTestCase(BaseTestCase): def setUp(self): super(TemplatesPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('TemplatesPanel') self.panel.enable_instrumentation() self.sql_panel = self.toolbar.get_panel_by_id('SQLPanel') self.sql_panel.enable_instrumentation() def tearDown(self): self.sql_panel.disable_instrumentation() self.panel.disable_instrumentation() super(TemplatesPanelTestCase, self).tearDown() def test_queryset_hook(self): t = Template("No context variables here!") c = Context({ 'queryset': User.objects.all(), 'deep_queryset': { 'queryset': User.objects.all(), } }) t.render(c) # ensure the query was NOT logged self.assertEqual(len(self.sql_panel._queries), 0) ctx = self.panel.templates[0]['context'][1] self.assertIn('<>', ctx) self.assertIn('<>', ctx) def test_object_with_non_ascii_repr_in_context(self): self.panel.process_request(self.request) t = Template("{{ object }}") c = Context({'object': NonAsciiRepr()}) t.render(c) self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) self.assertIn('nôt åscíì', self.panel.content) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_response. """ t = Template("{{ object }}") c = Context({'object': NonAsciiRepr()}) t.render(c) self.panel.process_response(self.request, self.response) # ensure the panel does not have content yet. self.assertNotIn('nôt åscíì', self.panel.content) self.panel.generate_stats(self.request, self.response) # ensure the panel renders correctly. self.assertIn('nôt åscíì', self.panel.content) self.assertValidHTML(self.panel.content) def test_custom_context_processor(self): self.panel.process_request(self.request) t = Template("{{ content }}") c = RequestContext(self.request, processors=[context_processor]) t.render(c) self.panel.process_response(self.request, self.response) self.panel.generate_stats(self.request, self.response) self.assertIn('tests.panels.test_template.context_processor', self.panel.content) def test_disabled(self): config = { 'DISABLE_PANELS': {'debug_toolbar.panels.templates.TemplatesPanel'} } self.assertTrue(self.panel.enabled) with self.settings(DEBUG_TOOLBAR_CONFIG=config): self.assertFalse(self.panel.enabled) @override_settings(DEBUG=True, DEBUG_TOOLBAR_PANELS=['debug_toolbar.panels.templates.TemplatesPanel']) class JinjaTemplateTestCase(TestCase): def test_django_jinja2(self): r = self.client.get('/regular_jinja/foobar/') self.assertContains(r, 'Test for foobar (Jinja)') self.assertContains(r, '

Templates (1 rendered)

') self.assertContains(r, 'jinja2/basic.jinja') def context_processor(request): return {'content': 'set by processor'} django-debug-toolbar-1.9.1/tests/panels/test_versions.py000066400000000000000000000026731320306665300234310ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from collections import namedtuple from ..base import BaseTestCase version_info_t = namedtuple('version_info_t', ( 'major', 'minor', 'micro', 'releaselevel', 'serial', )) class VersionsPanelTestCase(BaseTestCase): def setUp(self): super(VersionsPanelTestCase, self).setUp() self.panel = self.toolbar.get_panel_by_id('VersionsPanel') def test_app_version_from_get_version_fn(self): class FakeApp: def get_version(self): return version_info_t(1, 2, 3, '', '') self.assertEqual(self.panel.get_app_version(FakeApp()), '1.2.3') def test_incompatible_app_version_fn(self): class FakeApp: def get_version(self, some_other_arg): # This should be ignored by the get_version_from_app return version_info_t(0, 0, 0, '', '') VERSION = version_info_t(1, 2, 3, '', '') self.assertEqual(self.panel.get_app_version(FakeApp()), '1.2.3') def test_app_version_from_VERSION(self): class FakeApp: VERSION = version_info_t(1, 2, 3, '', '') self.assertEqual(self.panel.get_app_version(FakeApp()), '1.2.3') def test_app_version_from_underscore_version(self): class FakeApp: __version__ = version_info_t(1, 2, 3, '', '') self.assertEqual(self.panel.get_app_version(FakeApp()), '1.2.3') django-debug-toolbar-1.9.1/tests/settings.py000066400000000000000000000050201320306665300210650ustar00rootroot00000000000000"""Django settings for tests.""" import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # Quick-start development settings - unsuitable for production SECRET_KEY = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' INTERNAL_IPS = ['127.0.0.1'] LOGGING_CONFIG = None # avoids spurious output in tests # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'debug_toolbar', 'django_jinja', 'tests', ] MEDIA_URL = '/media/' # Avoids https://code.djangoproject.com/ticket/21451 MIDDLEWARE = [ 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] # Django < 1.10 MIDDLEWARE_CLASSES = MIDDLEWARE ROOT_URLCONF = 'tests.urls' TEMPLATES = [ { 'NAME': 'jinja2', 'BACKEND': 'django_jinja.backend.Jinja2', 'APP_DIRS': True, 'DIRS': [os.path.join(BASE_DIR, 'tests', 'templates', 'jinja2')], }, { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] STATIC_ROOT = os.path.join(BASE_DIR, 'tests', 'static') STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'tests', 'additional_static'), ("prefix", os.path.join(BASE_DIR, 'tests', 'additional_static')), ] # Cache and database CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', }, 'second': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', }, } DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', } } # Debug Toolbar configuration DEBUG_TOOLBAR_CONFIG = { # Django's test client sets wsgi.multiprocess to True inappropriately 'RENDER_PANELS': False, } django-debug-toolbar-1.9.1/tests/templates/000077500000000000000000000000001320306665300206545ustar00rootroot00000000000000django-debug-toolbar-1.9.1/tests/templates/base.html000066400000000000000000000002261320306665300224540ustar00rootroot00000000000000 {{ title }} {% block content %}{% endblock %} django-debug-toolbar-1.9.1/tests/templates/basic.html000066400000000000000000000001201320306665300226140ustar00rootroot00000000000000{% extends "base.html" %} {% block content %}Test for {{ title }}{% endblock %} django-debug-toolbar-1.9.1/tests/templates/jinja2/000077500000000000000000000000001320306665300220315ustar00rootroot00000000000000django-debug-toolbar-1.9.1/tests/templates/jinja2/basic.jinja000066400000000000000000000001301320306665300241210ustar00rootroot00000000000000{% extends 'base.html' %} {% block content %}Test for {{ title }} (Jinja){% endblock %} django-debug-toolbar-1.9.1/tests/test_integration.py000066400000000000000000000362171320306665300226230ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals import os import unittest from xml.etree import ElementTree as ET import django from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.core import signing from django.core.checks import Error, run_checks from django.template.loader import get_template from django.test import RequestFactory, TestCase from django.test.utils import override_settings from debug_toolbar.middleware import DebugToolbarMiddleware, show_toolbar from debug_toolbar.toolbar import DebugToolbar from .base import BaseTestCase from .views import regular_view try: from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.support.wait import WebDriverWait except ImportError: webdriver = None rf = RequestFactory() @override_settings(DEBUG=True) class DebugToolbarTestCase(BaseTestCase): def test_show_toolbar(self): self.assertTrue(show_toolbar(self.request)) def test_show_toolbar_DEBUG(self): with self.settings(DEBUG=False): self.assertFalse(show_toolbar(self.request)) def test_show_toolbar_INTERNAL_IPS(self): with self.settings(INTERNAL_IPS=[]): self.assertFalse(show_toolbar(self.request)) def _resolve_stats(self, path): # takes stats from Request panel self.request.path = path panel = self.toolbar.get_panel_by_id('RequestPanel') panel.process_request(self.request) panel.process_response(self.request, self.response) panel.generate_stats(self.request, self.response) return panel.get_stats() def test_url_resolving_positional(self): stats = self._resolve_stats('/resolving1/a/b/') self.assertEqual(stats['view_urlname'], 'positional-resolving') self.assertEqual(stats['view_func'], 'tests.views.resolving_view') self.assertEqual(stats['view_args'], ('a', 'b')) self.assertEqual(stats['view_kwargs'], {}) def test_url_resolving_named(self): stats = self._resolve_stats('/resolving2/a/b/') self.assertEqual(stats['view_args'], ()) self.assertEqual(stats['view_kwargs'], {'arg1': 'a', 'arg2': 'b'}) def test_url_resolving_mixed(self): stats = self._resolve_stats('/resolving3/a/') self.assertEqual(stats['view_args'], ('a',)) self.assertEqual(stats['view_kwargs'], {'arg2': 'default'}) def test_url_resolving_bad(self): stats = self._resolve_stats('/non-existing-url/') self.assertEqual(stats['view_urlname'], 'None') self.assertEqual(stats['view_args'], 'None') self.assertEqual(stats['view_kwargs'], 'None') self.assertEqual(stats['view_func'], '') # Django doesn't guarantee that process_request, process_view and # process_response always get called in this order. def test_middleware_view_only(self): DebugToolbarMiddleware().process_view(self.request, regular_view, ('title',), {}) def test_middleware_response_only(self): DebugToolbarMiddleware().process_response(self.request, self.response) def test_middleware_response_insertion(self): resp = regular_view(self.request, "İ") DebugToolbarMiddleware().process_response(self.request, resp) # check toolbar insertion before "" self.assertContains(resp, '\n') def test_cache_page(self): self.client.get('/cached_view/') self.assertEqual( len(self.toolbar.get_panel_by_id('CachePanel').calls), 3) self.client.get('/cached_view/') self.assertEqual( len(self.toolbar.get_panel_by_id('CachePanel').calls), 5) @override_settings(DEBUG=True) class DebugToolbarIntegrationTestCase(TestCase): def test_middleware(self): response = self.client.get('/execute_sql/') self.assertEqual(response.status_code, 200) @override_settings(DEFAULT_CHARSET='iso-8859-1') def test_non_utf8_charset(self): response = self.client.get('/regular/ASCII/') self.assertContains(response, 'ASCII') # template self.assertContains(response, 'djDebug') # toolbar response = self.client.get('/regular/LÀTÍN/') self.assertContains(response, 'LÀTÍN') # template self.assertContains(response, 'djDebug') # toolbar def test_xml_validation(self): response = self.client.get('/regular/XML/') ET.fromstring(response.content) # shouldn't raise ParseError def test_render_panel_checks_show_toolbar(self): toolbar = DebugToolbar(None) toolbar.store() url = '/__debug__/render_panel/' data = {'store_id': toolbar.store_id, 'panel_id': 'VersionsPanel'} response = self.client.get(url, data) self.assertEqual(response.status_code, 200) response = self.client.get(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) with self.settings(INTERNAL_IPS=[]): response = self.client.get(url, data) self.assertEqual(response.status_code, 404) response = self.client.get(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 404) def test_template_source_checks_show_toolbar(self): template = get_template('basic.html') url = '/__debug__/template_source/' data = { 'template': template.template.name, 'template_origin': signing.dumps(template.template.origin.name) } response = self.client.get(url, data) self.assertEqual(response.status_code, 200) response = self.client.get(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) with self.settings(INTERNAL_IPS=[]): response = self.client.get(url, data) self.assertEqual(response.status_code, 404) response = self.client.get(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 404) def test_sql_select_checks_show_toolbar(self): url = '/__debug__/sql_select/' data = { 'sql': 'SELECT * FROM auth_user', 'raw_sql': 'SELECT * FROM auth_user', 'params': '{}', 'alias': 'default', 'duration': '0', 'hash': '6e12daa636b8c9a8be993307135458f90a877606', } response = self.client.post(url, data) self.assertEqual(response.status_code, 200) response = self.client.post(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) with self.settings(INTERNAL_IPS=[]): response = self.client.post(url, data) self.assertEqual(response.status_code, 404) response = self.client.post(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 404) def test_sql_explain_checks_show_toolbar(self): url = '/__debug__/sql_explain/' data = { 'sql': 'SELECT * FROM auth_user', 'raw_sql': 'SELECT * FROM auth_user', 'params': '{}', 'alias': 'default', 'duration': '0', 'hash': '6e12daa636b8c9a8be993307135458f90a877606', } response = self.client.post(url, data) self.assertEqual(response.status_code, 200) response = self.client.post(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) with self.settings(INTERNAL_IPS=[]): response = self.client.post(url, data) self.assertEqual(response.status_code, 404) response = self.client.post(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 404) def test_sql_profile_checks_show_toolbar(self): url = '/__debug__/sql_profile/' data = { 'sql': 'SELECT * FROM auth_user', 'raw_sql': 'SELECT * FROM auth_user', 'params': '{}', 'alias': 'default', 'duration': '0', 'hash': '6e12daa636b8c9a8be993307135458f90a877606', } response = self.client.post(url, data) self.assertEqual(response.status_code, 200) response = self.client.post(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) with self.settings(INTERNAL_IPS=[]): response = self.client.post(url, data) self.assertEqual(response.status_code, 404) response = self.client.post(url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 404) @override_settings(DEBUG_TOOLBAR_CONFIG={'RENDER_PANELS': True}) def test_data_store_id_not_rendered_when_none(self): url = '/regular/basic/' response = self.client.get(url) self.assertIn(b'id="djDebug"', response.content) self.assertNotIn(b'data-store-id', response.content) def test_view_returns_template_response(self): response = self.client.get('/template_response/basic/') self.assertEqual(response.status_code, 200) @override_settings(DEBUG_TOOLBAR_CONFIG={'DISABLE_PANELS': set()}) def test_incercept_redirects(self): response = self.client.get('/redirect/') self.assertEqual(response.status_code, 200) # Link to LOCATION header. self.assertIn(b'href="/regular/redirect/"', response.content) @unittest.skipIf(webdriver is None, "selenium isn't installed") @unittest.skipUnless('DJANGO_SELENIUM_TESTS' in os.environ, "selenium tests not requested") @override_settings(DEBUG=True) class DebugToolbarLiveTestCase(StaticLiveServerTestCase): @classmethod def setUpClass(cls): super(DebugToolbarLiveTestCase, cls).setUpClass() cls.selenium = webdriver.Firefox() @classmethod def tearDownClass(cls): cls.selenium.quit() super(DebugToolbarLiveTestCase, cls).tearDownClass() def test_basic(self): self.selenium.get(self.live_server_url + '/regular/basic/') version_panel = self.selenium.find_element_by_id('VersionsPanel') # Versions panel isn't loaded with self.assertRaises(NoSuchElementException): version_panel.find_element_by_tag_name('table') # Click to show the versions panel self.selenium.find_element_by_class_name('VersionsPanel').click() # Version panel loads table = WebDriverWait(self.selenium, timeout=10).until( lambda selenium: version_panel.find_element_by_tag_name('table')) self.assertIn("Name", table.text) self.assertIn("Version", table.text) @override_settings(DEBUG_TOOLBAR_CONFIG={ 'DISABLE_PANELS': {'debug_toolbar.panels.redirects.RedirectsPanel'} }) def test_basic_jinja(self): self.selenium.get(self.live_server_url + '/regular_jinja/basic') template_panel = self.selenium.find_element_by_id('TemplatesPanel') # Click to show the template panel self.selenium.find_element_by_class_name('TemplatesPanel').click() self.assertIn('Templates (1 rendered)', template_panel.text) self.assertIn('jinja2/basic.jinja', template_panel.text) @override_settings(DEBUG_TOOLBAR_CONFIG={'RESULTS_CACHE_SIZE': 0}) def test_expired_store(self): self.selenium.get(self.live_server_url + '/regular/basic/') version_panel = self.selenium.find_element_by_id('VersionsPanel') # Click to show the version panel self.selenium.find_element_by_class_name('VersionsPanel').click() # Version panel doesn't loads error = WebDriverWait(self.selenium, timeout=10).until( lambda selenium: version_panel.find_element_by_tag_name('p')) self.assertIn("Data for this panel isn't available anymore.", error.text) @override_settings(DEBUG=True, TEMPLATES=[{ 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'OPTIONS': {'loaders': [( 'django.template.loaders.cached.Loader', ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ) )]}, }]) def test_django_cached_template_loader(self): self.selenium.get(self.live_server_url + '/regular/basic/') version_panel = self.selenium.find_element_by_id('TemplatesPanel') # Click to show the versions panel self.selenium.find_element_by_class_name('TemplatesPanel').click() # Version panel loads trigger = WebDriverWait(self.selenium, timeout=10).until( lambda selenium: version_panel.find_element_by_css_selector( '.remoteCall')) trigger.click() # Verify the code is displayed WebDriverWait(self.selenium, timeout=10).until( lambda selenium: self.selenium.find_element_by_css_selector( '#djDebugWindow code')) @override_settings(DEBUG=True) class DebugToolbarSystemChecksTestCase(BaseTestCase): @override_settings( MIDDLEWARE=None, MIDDLEWARE_CLASSES=[ 'django.middleware.gzip.GZipMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', ] ) def test_check_good_configuration(self): messages = run_checks() self.assertEqual(messages, []) @override_settings(MIDDLEWARE=None, MIDDLEWARE_CLASSES=[]) def test_check_missing_middleware_error(self): messages = run_checks() self.assertEqual( messages, [ Error( "debug_toolbar.middleware.DebugToolbarMiddleware is " "missing from MIDDLEWARE_CLASSES.", hint="Add debug_toolbar.middleware.DebugToolbarMiddleware " "to MIDDLEWARE_CLASSES.", ), ] ) @override_settings( MIDDLEWARE=None, MIDDLEWARE_CLASSES=[ 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.gzip.GZipMiddleware', ] ) def test_check_gzip_middleware_error(self): messages = run_checks() self.assertEqual( messages, [ Error( "debug_toolbar.middleware.DebugToolbarMiddleware occurs " "before django.middleware.gzip.GZipMiddleware in " "MIDDLEWARE_CLASSES.", hint="Move debug_toolbar.middleware.DebugToolbarMiddleware " "to after django.middleware.gzip.GZipMiddleware in " "MIDDLEWARE_CLASSES.", ), ] ) @override_settings( MIDDLEWARE=[ 'debug_toolbar.middleware.DebugToolbarMiddleware', 'tests.middleware.simple_middleware', ], MIDDLEWARE_CLASSES=None ) def test_middleware_factory_functions_supported(self): messages = run_checks() if django.VERSION[:2] < (1, 10) or django.VERSION[:2] >= (2, 0): self.assertEqual(messages, []) else: self.assertEqual(messages[0].id, '1_10.W001') django-debug-toolbar-1.9.1/tests/test_utils.py000066400000000000000000000011351320306665300214270ustar00rootroot00000000000000from __future__ import absolute_import, unicode_literals import unittest from debug_toolbar.utils import get_name_from_obj class GetNameFromObjTestCase(unittest.TestCase): def test_func(self): def x(): return 1 res = get_name_from_obj(x) self.assertEqual(res, 'tests.test_utils.x') def test_lambda(self): res = get_name_from_obj(lambda: 1) self.assertEqual(res, 'tests.test_utils.') def test_class(self): class A: pass res = get_name_from_obj(A) self.assertEqual(res, 'tests.test_utils.A') django-debug-toolbar-1.9.1/tests/urls.py000066400000000000000000000017151320306665300202210ustar00rootroot00000000000000# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.conf.urls import include, url import debug_toolbar from . import views from .models import NonAsciiRepr urlpatterns = [ url(r'^resolving1/(.+)/(.+)/$', views.resolving_view, name='positional-resolving'), url(r'^resolving2/(?P.+)/(?P.+)/$', views.resolving_view), url(r'^resolving3/(.+)/$', views.resolving_view, {'arg2': 'default'}), url(r'^regular/(?P.*)/$', views.regular_view), url(r'^template_response/(?P<title>.*)/$', views.template_response_view), url(r'^regular_jinja/(?P<title>.*)/$', views.regular_jinjia_view), url(r'^non_ascii_request/$', views.regular_view, {'title': NonAsciiRepr()}), url(r'^new_user/$', views.new_user), url(r'^execute_sql/$', views.execute_sql), url(r'^cached_view/$', views.cached_view), url(r'^redirect/$', views.redirect_view), url(r'^__debug__/', include(debug_toolbar.urls)), ] ���������������������������������������������������django-debug-toolbar-1.9.1/tests/views.py�����������������������������������������������������������0000664�0000000�0000000�00000002433�13203066653�0020367�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# coding: utf-8 from __future__ import absolute_import, unicode_literals from django.contrib.auth.models import User from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render from django.template.response import TemplateResponse from django.views.decorators.cache import cache_page def execute_sql(request): list(User.objects.all()) return HttpResponse() def regular_view(request, title): return render(request, 'basic.html', {'title': title}) def template_response_view(request, title): return TemplateResponse(request, 'basic.html', {'title': title}) def new_user(request, username='joe'): User.objects.create_user(username=username) return render(request, 'basic.html', {'title': 'new user'}) def resolving_view(request, arg1, arg2): # see test_url_resolving in tests.py return HttpResponse() @cache_page(60) def cached_view(request): return HttpResponse() def regular_jinjia_view(request, title): return render(request, 'jinja2/basic.jinja', {'title': title}) def listcomp_view(request): lst = [i for i in range(50000) if i % 2 == 0] return render(request, 'basic.html', {'title': 'List comprehension', 'lst': lst}) def redirect_view(request): return HttpResponseRedirect('/regular/redirect/') �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������django-debug-toolbar-1.9.1/tox.ini������������������������������������������������������������������0000664�0000000�0000000�00000001367�13203066653�0017036�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[tox] envlist = py{27,33,34}-dj18, py{27,34,35}-dj{19,110,111}, py36-dj111 py{35,36}-dj20 flake8, isort, readme [testenv] deps = dj18: Django>=1.8,<1.9 dj19: Django>=1.9,<1.10 dj110: Django>=1.10,<1.11 dj111: Django>=1.11,<2.0 dj20: Django==2.0b1 coverage django_jinja html5lib selenium<4.0 sqlparse setenv = PYTHONPATH = {toxinidir} whitelist_externals = make pip_pre = True usedevelop = true commands = make coverage TEST_ARGS='{posargs:tests}' [testenv:flake8] commands = make flake8 deps = flake8 [testenv:isort] commands = make isort_check_only deps = isort [testenv:jshint] commands = make jshint [testenv:readme] commands = python setup.py check -r -s deps = readme_renderer �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������